Forum: Mikrocontroller und Digitale Elektronik Simple Frage zum Bootloader?


von BootloaderHeini (Gast)


Lesenswert?

Hallo
ich habe mal ne simple (doofe) Frage zu einem Bootloader bei den 
Atmegas. Klar der Bootloader erlaubt es ein Programm über die serielle 
Schnittstelle zu flashen.
Falls man aber zwischendurch mit dem AVRISP ein Programm drauf flasht 
(Ohne Bootloader) geht dann der Bootloader verloren oder ist der 
geschützt?

Oder muß man den Bootloader mit jedem AVRISP flashen den Bootloader mit 
draufladen?

MfG
Rainer

Ps: Ich frage aus Unsicherheit, da ich einen Modul mit Bootloader habe, 
von dem ich aber keine SOURCE habe. Ich kann aber derzeit nur mit dem 
AVRISP flashen
------also Entschuldigung für die Frage----------

von Weingut P. (weinbauer)


Lesenswert?

Du kannst im Programmiermodul des AVR-Studio einstellen ob vor dem 
flashen
ein "erase device" durchgeführt wird oder nicht.
Bei einem erase wird der Loader gelöscht, ohne nicht, es sei denn Dein 
Programm ist so groß, dass es bis in den Loaderbereich hinein schreibt, 
dann wird dieser überschrieben.

---- wer nicht fragt bleibt dumm :o))) -------------

von holger (Gast)


Lesenswert?

>Ps: Ich frage aus Unsicherheit, da ich einen Modul mit Bootloader habe,
>von dem ich aber keine SOURCE habe. Ich kann aber derzeit nur mit dem
>AVRISP flashen

Na, dann flashst du halt mit dem Bootloader. Dazu ist der da.
Oder du nimmst den Chip mit Bootloader raus und ersetzt
den durch einen neuen Chip ohne Bootloader.

von Thomas E. (thomase)


Lesenswert?

Fhutdhb Ufzjjuz schrieb:
> Du kannst im Programmiermodul des AVR-Studio einstellen ob vor dem
> flashen ein "erase device" durchgeführt wird oder nicht.

Blödsinn!

Sicher kann man das einstellen. Aber wenn ein Programm drin ist, muß das 
vorher gelöscht werden.

Flash kann man nicht überschreiben!

Wenn zudem noch die Lockbits gesetzt sind, geht ohne Löschen gar nichts.
Sind diese jedoch nicht gesetzt, kann man den Flash auslesen und den 
Bootloader sichern.

Ansonsten: siehe holger.

mfg.

von Jürgen W. (juergen_w) Benutzerseite


Lesenswert?

Thomas Eckmann schrieb:
> Blödsinn!
>
> Sicher kann man das einstellen. Aber wenn ein Programm drin ist, muß das
> vorher gelöscht werden.
>
> Flash kann man nicht überschreiben!

Seit wann ? Ich habe den Haken bei Erase Device fast nie gesetzt und 
überschreibe den Flash einfach. Geht.

Grüsse

von womisa (Gast)


Lesenswert?

Hallo,


mmmmhhhh ...meine Verunsicherung wird größer.....

Warum:

- Ich bin der Meinung (d.h. ich weiß es nicht), dass man vor dem flashen 
löschen muß, da sonst nur additiv geschrieben werden kann. Gelöscht ist 
ja alles FF Hex und wenn mal ein Bit auf 0 geflasht ist kann es durchs 
flaschen nicht gelöscht werden...Bisheriger Kenntnisstand es muß deshalb 
vorher gelöscht werden wenn man nicht hinter das vorherige Programm 
schreibt. Ist das FALSCH?

- Wenn man vorher löschen angklickt hat wird der Bootloader gelöscht 
oder kann man den schützen?

>>Oder du nimmst den Chip mit Bootloader raus und ersetzt
>>den durch einen neuen Chip ohne Bootloader.


das ist bei einem gelöteten AU Gehäuse nicht so einfach...sonst hätte 
ich das natürlich gemacht?

Kann jemand zu Klärung beitragen?

Frage: Kann man ein Programm mit AVRISP flashen ohne den Bootloader zu 
löschen, so dass dieser auch immer wieder geflaht werden muß?

MfG
Rainer

von Oliver J. (skriptkiddy)


Lesenswert?

Jürgen W. schrieb:
> Seit wann ? Ich habe den Haken bei Erase Device fast nie gesetzt und
> überschreibe den Flash einfach. Geht.

Na dann viel Glück......

von holger (Gast)


Lesenswert?

>Frage: Kann man ein Programm mit AVRISP flashen ohne den Bootloader zu
>löschen, so dass dieser auch immer wieder geflaht werden muß?

Ja, solange du kein Chip Erase benutzt. Wie bereits oben gesagt
kannst du flashen ohne den Booloader zu löschen wenn die
Lockbits nicht gesetzt sind. Wenn die Lockbits gesetzt sind
hast du ein Problem.

So, und nochmal: Wieso benutzt du den Bootloader nicht.
Du brauchst kein ISP wenn der Bootloader drin ist.

von Thomas E. (thomase)


Lesenswert?

Jürgen W. schrieb:
> Seit wann ? Ich habe den Haken bei Erase Device fast nie gesetzt und
> überschreibe den Flash einfach. Geht.

Ja ja.

Aber nur wenn auch das "Verify"-Häkchen nicht gesetzt ist.

Sonst gibt es nämlich einen Fehlermeldung.


Eine Frage an die Knobler und Statistiker:

Wie oft muß man durchschnittlich, ohne vorher zu löschen, flashen, bis 
alle Speicherstellen 0x00 enthalten?

mfg.

von Jürgen W. (juergen_w) Benutzerseite


Lesenswert?

Skript Kiddy schrieb:
> Na dann viel Glück......

Ich sagte ja, fast nie. Bei der Programmentwicklung ist es schneller und 
außerdem schonender für den MC. Wenn man den Controller X-mal flasht, 
wieso sollte man da jedesmal alle Bytes auf $ff setzen ? Ausserdem wird 
bei einem Chip Erase das Eeprom mitgelöscht wenn die EESAVE Fuse nicht 
gesetzt ist.

Meiner Meinung reicht einmal Chip Erase & Verify. Wenn die Software 
fertig ist.

von NichtwirklichWissender (Gast)


Lesenswert?

Flashs werden Sektorweise gelöscht. Der Bootloader belegt je nach größe 
einen oder mehere Sektoren.
Die größe des Bootloader wird vor dem flashen eingestellt und muss mit 
der größe des Bootloaders harmonieren.
Beim Löschen des Flashes werden die Sektoren für den Bootloader nicht 
gelöscht.
 das ganze hängt auch noch vom dem Device ab.

von Andreas (Gast)


Lesenswert?

BootloaderHeini schrieb:
> Klar der Bootloader erlaubt es ein Programm über die serielle
> Schnittstelle zu flashen.

Nein.
Ein Bootloader dient dazu, Programmcode in den Flash zu schreiben, so 
dass dieser ausgeführt werden kann.
- Ob dafür die serielle oder eine andere Schnittstelle benutzt wird, 
hängt vom jeweiligen Bootloader ab.
- Das Protokoll, mit dem der Programmcode an den Bootloader übertragen 
werden muss, ist nicht festgelegt.
- Die Methode, wie vom Anwendungsprogramm in den Bootloader gesprungen 
wird, um neuen Programmcode hochzuladen, ist nicht festgelegt.
- Die Bedingung, die bestimmt, ob und wann der Bootloader das neu 
geflashte Anwendungsprogramm aufruft, ist nicht festgelegt.
- Wo genau der Bootloader im Flash liegt, ist nicht festgelegt, auch 
wenn die meisten Bootloader am Ende des Flashspeichers liegen: Zwingend 
notwendig ist das nicht. Es ist auch möglich, dass der Bootloader zwar 
am Ende des Flashspeichers liegt, wegen seines Umfangs aber zusätzlich 
Bereiche im Flash belegt, die normalerweise für das Anwendungsprogramm 
vorgesehen sind.

Wie Du siehtst: Wenn Du keine detaillierten Informationen über die 
Funktionsweise des Bootloaders in Deinem Chip hast, ist er für Dich 
ohnehin nutzlos. In dem Fall kannst Du hin getrost überschreiben, bzw. 
Durch einen eigenen Bootloader ersetzen.

von Thomas E. (thomase)


Lesenswert?

Jürgen W. schrieb:
> Meiner Meinung reicht einmal Chip Erase & Verify. Wenn die Software
> fertig ist.

Also nie.
Weil auf diese Weise wirst du deine Software nie testen können.

Jürgen W. schrieb:
> wieso sollte man da jedesmal alle Bytes auf $ff setzen ?

Damit sie man wieder auf null setzen oder so lassen kann.

Wie soll denn sonst eine "1" an eine Speicherstelle kommen, die eine "0" 
beinhaltet?

Beim Brennen eines Flash werden nur "Nullen" geschrieben. Die "Einsen" 
werden so gelassen, wie sie sind. Das funktioniert aber nur dann, wenn 
vorher überall "Einsen" stehen.

Kein Wunder, daß deine Programme nie laufen.

mfg.

von Charly B. (charly)


Lesenswert?

i kann das auch bestaetigen, Flash muss vor dem
neuproggen geloescht werden denn man kann nur
bits auf 0 proggen, daher werden beim loeschen
alle auf 1 gesetzt

@B-Heini:
ist der Chip 'gelockt' oder nicht ?

@Andreas:
genau richtig, und noch vieles mehr ist moeglich....
(i arbeite z.B. mit einem Bootloader ueber 1Wire)

vlG
Charly

von Thomas E. (thomase)


Lesenswert?

Andreas schrieb:
>> Klar der Bootloader erlaubt es ein Programm über die serielle
>> Schnittstelle zu flashen.
>
> Nein.

Hmm???

Andreas schrieb:
> Ein Bootloader dient dazu, Programmcode in den Flash zu schreiben, so
> dass dieser ausgeführt werden kann.

Aha!

Und was macht ein ISP?
Der schreibt also keinen Programmcode in den Flash, den man nachher 
ausführen kann.

Man lernt ja nie aus.

mfg.

von Andreas (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Man lernt ja nie aus.

Wenn Du einen Satz weiter gelesen hättest, hättest Du tatsächlich etwas 
lernen können: Nämlich, dass sich das "Nein" auf die Worte "serielle 
Schnittstelle" bezog. ;)

von Jürgen W. (juergen_w) Benutzerseite


Lesenswert?

Thomas Eckmann schrieb:
> Beim Brennen eines Flash werden nur "Nullen" geschrieben. Die "Einsen"
> werden so gelassen, wie sie sind. Das funktioniert aber nur dann, wenn
> vorher überall "Einsen" stehen.

Und genau das macht meine Brennsoftware im AVR-Studio. Nur anstatt den 
kompletten Flash vorher mit FFs zu beschreiben, wird nur die benötigte 
Page vor dem neu-beschreiben gelöscht.

Thomas Eckmann schrieb:
> Kein Wunder, daß deine Programme nie laufen.

Sag mal muss das wirklich sein ?
Reagierst du immer so, wenn jemand anders arbeitet als du ?

Erst behauptest du der Flash lässt sich nicht überschreiben.
Dann sagst du es geht doch ohne Verify.
Dann wirst du beleidigend.

Was kommt als nächstes ?


Naja, ich bin dann mal weg.

von BootloaderHeini (Gast)


Lesenswert?

Hallo

nochmal zum Löschen vor dem flashen. Im UseresGuide steht:

Device
A full chip erase is performed by pressing the Erase Device button. The 
check boxes specifies options for subsequent programming: a chip-erase 
can be performed before memory programing operations, and memory 
programming can be automatically verified.

..muß man jetzt zwingend vorher löschen oder nicht?

Also ich habe bisher immer vorher gelöscht.


>dass sich das "Nein" auf die Worte "serielle
>Schnittstelle" bezog. ;)

..zwei Pins die Softwaremäßig wie ne serielle Schnittstelle bedient 
werden ist zwar kein Hardware-Uart aber doch seriell. Oder ist das 
falsch?

....okok.. 1-Wire oder sowas....SD-Card..Netzwerk...etc..naja man lernt 
halt dazu....

von Stefan E. (sternst)


Lesenswert?

Jürgen W. schrieb:
> Und genau das macht meine Brennsoftware im AVR-Studio. Nur anstatt den
> kompletten Flash vorher mit FFs zu beschreiben, wird nur die benötigte
> Page vor dem neu-beschreiben gelöscht.

Jetzt musst du uns nur noch mitteilen, welchen AVR-Controller du 
benutzt. Ich kenne nämlich keinen, bei dem über die 
Programmier-Schnittstelle ein Löschen einzelner Pages möglich wäre, aber 
ich würde mich gerne eines besseren belehren lassen.

von holger (Gast)


Lesenswert?

>..muß man jetzt zwingend vorher löschen oder nicht?

Das kommt auf die Lockbits an. Sind die jetzt
bei deinem scheiss Controller gesetzt oder nicht?
Wenn die gesetzt sind wirst du den löschen müssen wenn du
ISP programmieren möchtest.

Was ist das überhaupt für ein Board? Und nochmal:
WARUM BENUTZT DU DEN BOOTLOADER NICHT?
Watum gibts du darauf kein Antwort?

Wenn du nur mal ein bisschen ISP ausprobieren möchtest
dann klopp dein Board in die Ecke und kauf dir nen
leeren AVR. Da kannst du dann üben.

von Oliver J. (skriptkiddy)


Lesenswert?

Jürgen W. schrieb:
> Und genau das macht meine Brennsoftware im AVR-Studio. Nur anstatt den
> kompletten Flash vorher mit FFs zu beschreiben, wird nur die benötigte
> Page vor dem neu-beschreiben gelöscht.
Das wäre mir neu.
1
Before new contents can be written to the Flash Program Memory, the memory
2
has to be erased. Without erasing, it is only possible to program bits in
3
Flash memory to zero, not selectively setting a bit to one. Erasing the 
4
memory is performed with the “Chip Erase” command. This command will erase
5
all memory contents, both Flash Program Memory and EEPROM.
(Quelle: AVR910 )

Was für einen AVR verwendest du?

von Jürgen W. (juergen_w) Benutzerseite


Lesenswert?

Skript Kiddy schrieb:
> Was für einen AVR verwendest du?

Im Moment einen m48.
Gerade nochmal mit Verify probiert. Meckert nur, wenn der Code kleiner 
wird als der vorhergehende. Ist ja auch klar, da dann noch Reste vom 
alten Code dahinter steht.
Ich hatte den Chip Erase Haken aber auch schon an anderen AVRs aus. Ging 
immer ohne Problem.

Einfach mal probieren.

von Jürgen W. (juergen_w) Benutzerseite


Lesenswert?

Skript Kiddy schrieb:
> Quelle: AVR910

Naja, einen AT90S hab ich gerade nicht zur Hand.

von Stefan E. (sternst)


Lesenswert?

Jürgen W. schrieb:
> Im Moment einen m48.

Aber auch bei dem ist ein Löschen einzelner Pages über die 
Programmier-Schnittstelle nicht möglich.

von Thomas E. (thomase)


Lesenswert?

Jürgen W. schrieb:
> Erst behauptest du der Flash lässt sich nicht überschreiben.
>
> Dann sagst du es geht doch ohne Verify.

Habe ich nie behauptet. Ohne bekommst du keine Fehlermeldung, daß das 
schief gegangen ist.

> Dann wirst du beleidigend.

Wenn man ohne zu löschen ein Programm überbrennt, kann das nicht laufen.
Und wenn doch, dann glaubst du das nur.

Was ist daran beleidigend?

> Was kommt als nächstes ?

Jürgen W. schrieb:
> Und genau das macht meine Brennsoftware im AVR-Studio. Nur anstatt den
> kompletten Flash vorher mit FFs zu beschreiben, wird nur die benötigte
> Page vor dem neu-beschreiben gelöscht.

Was ist denn das für eine Software?

Und wo kommt die plötzlich her? Weiter oben hast du noch behauptet, daß 
du einfach überbrennst und nur, wenn alles fertig ist, wird vorher 
gelöscht.

Und wieseo löscht diese Software, obwohl das Häkchen zum vorher Löschen 
nicht gesetzt ist?

Ich denke mal, du befindest dich in einem riesengroßen Irrtum.

Jürgen W. schrieb:
> Im Moment einen m48.
> Gerade nochmal mit Verify probiert. Meckert nur, wenn der Code kleiner
> wird als der vorhergehende. Ist ja auch klar, da dann noch Reste vom
> alten Code dahinter steht.
> Ich hatte den Chip Erase Haken aber auch schon an anderen AVRs aus. Ging
> immer ohne Problem.
>
> Einfach mal probieren.

Auch wenn du gleich wieder beleidigt bist.

DAS IST ABSOLUTER SCHWACHSINN!!!

mfg.

von Oliver J. (skriptkiddy)


Lesenswert?

Stefan Ernst schrieb:
> Aber auch bei dem ist ein Löschen einzelner Pages über die
> Programmier-Schnittstelle nicht möglich.

Dachte ich bis eben auch. Hab mal ein paar Datenblätter aufgeschlagen. 
Den hinweis auf ein "Chiperase must be performed before..." hab ich nur 
bei Flashen über JTAG und Parallel Programming gefunden. Sollte es etwa 
doch so sein, wie es Jürgen schildert?

von BootloaderHeini (Gast)


Lesenswert?

Hallo

@Holger

>Was ist das überhaupt für ein Board? Und nochmal:
>WARUM BENUTZT DU DEN BOOTLOADER NICHT?
>Watum gibts du darauf kein Antwort?

..derzeit habe ich (noch) keinen Levelconverter 5V To RS232 und deshalb 
noch mit dem AVRISP
Später wird der dann über Bluetooth geflasht. Board ist ein 
BCA8-BTM-328. Bisher hatte ich nur mit Atmega8 und Atmega32/64 ohne 
Bootloader gespielt.

Die Lockbits sind =0xEF
LB=No memory lock features enabled
BLBO= No lock on SPM and LPM in Application Section
BLB1= SPM prohibited in Boot Section

..was das letzendlich bedeuted ist mir (noch) unklar...ich lern ja noch 
und versuche das zu erforschen.

...>>>scheiss Controller<<< das ist kein sch... Controller der ist schon 
OK

Aber das hat doch mit der Ausgangsfrage nichts zu tun!

Ich hatte gedacht, dass das ne einfache Frage ist. Aber wenn sich da die 
Experten schon uneinig streiten....

von Stefan E. (sternst)


Lesenswert?

Skript Kiddy schrieb:
> Stefan Ernst schrieb:
>> Aber auch bei dem ist ein Löschen einzelner Pages über die
>> Programmier-Schnittstelle nicht möglich.
>
> Dachte ich bis eben auch. Hab mal ein paar Datenblätter aufgeschlagen.
> Den hinweis auf ein "Chiperase must be performed before..." hab ich nur
> bei Flashen über JTAG und Parallel Programming gefunden. Sollte es etwa
> doch so sein, wie es Jürgen schildert?

Bei den Programmier-Befehlen gibt es aber kein Page-Erase, sondern nur 
ein Chip-Erase.

von Andreas (Gast)


Lesenswert?

BootloaderHeini schrieb:
> Ich hatte gedacht, dass das ne einfache Frage ist. Aber wenn sich da die
> Experten schon uneinig streiten....

Es ist ja auch eine einfache Frage und von den Experten hast Du auch 
identische Antworten bekommen. ;)

von Charly B. (charly)


Lesenswert?

BootloaderHeini schrieb:

> Die Lockbits sind =0xEF
> LB=No memory lock features enabled
> BLBO= No lock on SPM and LPM in Application Section
> BLB1= SPM prohibited in Boot Section
dh. der Chip ist 'gelockt' , kein auslesen via isp
aber mit einem eigenen Programm koenntest du den
Bootloader auslesen, das muss aber zuerst per Bootloader
rein.

zur einfachen Frage: Andreas hat absolut recht, die Experten
sind sich einig, nur sind hier leider auch DUMMSCHWAETZER
unterwegs die nur nonsens u./o. beleidigungen von sich geben,
wenn du aber laenger hier bist lenrst du die auch kennen &
lieben ;)

vlG
Charly

von BootloaderHeini (Gast)


Lesenswert?

Hallo,

zunächst mal Danke für die Antworten

@Charly das kann nicht ganz stimmen. Ich kann mit dem AVRISP den 
Atmega328P mit den oben gezeigten Fuses auslesen in einen HEX File und 
da kann ich unten das Programm erkennen:

:100000000C94340018950000189500001895000015
:10001000189500001895000018950000189500002C
:10002000189500001895000018950000189500001C
:10003000189500001895000018950000189500000C
......


und oben den Bootloader:

....
:107BD000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5
:107BE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5
:107BF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95
:107C00001AB884E08BB94A99ECC01124C1ECD1E0D8
:107C10001FBE8FEF98E09EBF8DBF1092C50089E117
:107C20008093C4001092C00088E18093C10086E078
:107C30008093C20082E40E94F53E83E40E94F53EF8
:107C400081E40E94F53E88E30E94F53E81E10E94B6
:107C5000F53E1092C001EE24FF248701AA24BB2424
.....

Ich konnte für mich (!) aus den Antworten noch nicht ergkennen ob ich 
den Bootloader irgendwie bei einem ERASE schützen kann vor dem flashen 
eines Programms im unteren Teil mit dem AVRISP. So dass der Bootloader 
weiterverwendet werden kann.

Die Randbedingungen sind halt, dass ich via AVRIP und über Bluetooth 
alternative flashen will. Aber das sollte man hinnehmen und nicht 
diskutieren.


Vielen Dank
Rainer

von Thomas E. (thomase)


Lesenswert?

BootloaderHeini schrieb:
> Die Randbedingungen sind halt, dass ich via AVRIP und über Bluetooth
> alternative flashen will. Aber das sollte man hinnehmen und nicht
> diskutieren.

Wenn du mit ISP programmierst, dann muß der Flash vorher gelöscht werden 
und der Bootloader ist Geschichte.

Darüber muß man nicht diskutieren. Auch wenn einige das meinen.

Wenn du den Bootloader erhalten willst, lädts du ihn herunter und 
sicherst ihn. Sofern das geht (Lockbits). Dann kannst du ihn nach deinen 
ISP-Experimenten wieder mit ISP draufspielen.

Beides zusammen mit fliegendem Wechsel geht nicht. Das mußt du jetzt 
hinnehmen. Es sei denn, du schreibst dir einen Bootloader, der die 
Application Section auf Knopfdruck löscht. Dann kannst du  diesen Teil 
des Flash neu beschreiben, ohne vorher per Chip Erase alles zu löschen. 
Das partielle, alse Page-weise, Löschen geht nur per Bootloader und 
nicht per ISP. Da geht nur alles oder nichts.

mfg.

von Stefan E. (sternst)


Lesenswert?

Weitere Alternative:
Im Makefile für die Applikation die HEX-File-Generierung um eine Zeile 
ergänzen, in der ein weiteres HEX-File erzeugt wird, und zwar eine 
Kombination von Applikation- und Bootloader-HEX-File. Siehe dazu 
srec_cat.

von Charly B. (charly)


Lesenswert?

BootloaderHeini schrieb:
> Hallo,
>
> zunächst mal Danke für die Antworten
>
> @Charly das kann nicht ganz stimmen. Ich kann mit dem AVRISP den
> Atmega328P mit den oben gezeigten Fuses auslesen in einen HEX File und
> da kann ich unten das Programm erkennen:

100000Sorry, mein FEHLER, ich hab das No in LB=No memory lock 
features enabled uebersehen, dann ist aber alles doch supereinfach,
Chip auslesen, Datei sichern und bei bedarf wieder reinproggen,
oder den bootloader aus der datei extracten und einzeln o.
mit der eigenen Soft zusammen reinproggen.

vlG
Charly

von Thomas E. (thomase)


Lesenswert?

Stefan Ernst schrieb:
> Applikation- und Bootloader-HEX-File.

Das könnte man noch weiter ausbauen, indem man aus dem 
Bootloader-Hexfile die Binärdaten extrahiert, diese als Konstante in ein 
Headerfile packt und eine entsprechende Section einrichtet.

Wenn dann die Headerdatei in die Anwendung gepackt wird, kopiert man den 
Bootloader automatisch hinein.

mfg.

von BootloaderHeini (Gast)


Lesenswert?

Hallo

>Wenn du mit ISP programmierst, dann muß der Flash vorher gelöscht werden
>und der Bootloader ist Geschichte.

Das deckt sich mit meiner bisher gemachten Einstellung /Erfahrung. Durch 
die Beiträge oben war ich aber etwas unsicher geworden....
Natürlich habe ich erst mal Alles ausgelesen und gesichert.

Das mit dem Bootloder wird mir so langsam klarer, dank der Beiträge. Ich 
muß aber erstmal auch den Bootloader verstehen. Es handelt sich um den 
KAVR ( http://sourceforge.net/projects/kavr/files/ )

Sehe jetzt etwas weiter in die Ferne...

Vielen Dank
Rainer

von Stefan E. (sternst)


Lesenswert?

Thomas Eckmann schrieb:
> Das könnte man noch weiter ausbauen,

Und was soll der Vorteil dieses "Ausbaus" sein? Das Endergebnis ist das 
gleiche, nur der Weg ist viel komplizierter. Und bei meinem einfachen 
Weg hat man den zusätzlichen Vorteil immer beide HEX-Files zu haben, das 
mit und das ohne enthaltenen Bootloader. Bedenke, dass man das ohne ja 
auch braucht, nämlich dann, wenn über den Bootloader geflasht werden 
soll.

von Thomas E. (thomase)


Lesenswert?

BootloaderHeini schrieb:
> Ich muß aber erstmal auch den Bootloader verstehen.

Zum Allgemeinverständnis:

http://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung

mfg.

von Thomas E. (thomase)


Lesenswert?

Stefan Ernst schrieb:
> Und was soll der Vorteil dieses "Ausbaus" sein?

Meine Güte, das wäre eine weitere Möglichkeit.

Brauchst dich nicht gleich auf den Schlips getreten fühlen. Hat doch 
keiner gesagt, daß dein Vorschlag nichts taugt.

mfg.

von Stefan E. (sternst)


Lesenswert?

Thomas Eckmann schrieb:
> Stefan Ernst schrieb:
>> Und was soll der Vorteil dieses "Ausbaus" sein?
>
> Meine Güte, das wäre eine weitere Möglichkeit.
>
> Brauchst dich nicht gleich auf den Schlips getreten fühlen. Hat doch
> keiner gesagt, daß dein Vorschlag nichts taugt.

Ich fühle mich nicht auf den Schlips getreten. Ich fragte mich nur, 
warum man jemanden, der eh schon verwirrt ist, einen weiteren, 
komplizierteren Vorschlag macht, und ihm über den Terminus "Ausbau" auch 
noch suggeriert, dass der irgendwie besser wäre, als die bisher 
gemachten Vorschläge. Mich hat lediglich interessiert, worin dieses 
"besser" besteht. Kann ja auch sein, dass dein Vorschlag Aspekte hat, 
die ich nicht sehe.

von Thomas E. (thomase)


Lesenswert?

Stefan Ernst schrieb:
> und ihm über den Terminus "Ausbau" auch noch suggeriert, dass der
> irgendwie besser wäre, als die bisher gemachten Vorschläge.

Irgendwie hast du ein Problem, was.

Also, erstmal habe ich keine Wertung meines oder der anderen Vorschläge 
vorgenommen.
Deiner ist natürlich der Beste. Im makefile rumzueditieren ist ja auch 
ein Klacks. 2 Hexfiles zu mergen ist nicht ganz so elegant aber auch 
verdammt gut.

Meine Scheißidee, entschuldige bitte, daß du mich darauf gebracht hast 
und ich das somit als Ausbau deiner Idee bezeichnet habe, ist natürlich 
überhaupt nicht zu gebrauchen. Ich ziehe meinen Vorschlag hiermit 
zurück.

Nachdem man einmal auf dem PC das Bootloader-Hexfile in Binärdaten 
umgewandelt hat, diese Daten als Konstante in eine Headerdatei gepackt 
hat und dann mit 2 Schrägstrichen am Anfang seines Codes entscheiden 
kann, ob der Bootloader mit rein soll oder nicht, bringt man natürlich 
auch fortgeschrittene Programmierer an den Rand ihrer Fähigkeiten oder 
womöglich des Wahnsinns.

Und der Compiler meckert auch noch rum, wenn der Anwendungscode den 
Bootloadercode überschreibt. Böser Compiler.
Das kann man sich natürlich alles ersparen.

mfg.

PS:
const char bootloaderdaten[]  _attribute_ ((section (".bootload"))) = 
{<Binärdaten des Bootloaders>};

von Stefan E. (sternst)


Lesenswert?

Thomas Eckmann schrieb:
> Irgendwie hast du ein Problem, was.

Du bist ja echt lustig. Du bist derjenige, der auf die persönliche Ebene 
geht, unsachlich wird und übertrieben reagiert, weil ich es gewagt habe, 
leise Kritik an deinem Vorschlag zu üben (unnötig kompliziert, ohne dass 
das einen Vorteil bringt), und dann soll ich derjenige sein, der sich 
auf den Schlips getreten fühlt, oder ein Problem hat?

Den Rest kommentiere ich mal nicht weiter, sonst eskaliert das nur noch 
mehr.

Nur noch einen kleinen Hinweis an BootloaderHeini:
srec_cat meldet natürlich auch einen Fehler, wenn es Überschneidungen 
bei den beiden HEX-Files gibt.

von BootloaderHeini (Gast)


Lesenswert?

Hallo

na lasst es gut sein!

>>jemanden, der eh schon verwirrt ist

Ichweiße aber zurück, dass ich "VERWIRRT" bin.....eher der Wahrheit auf 
der Spur....

@Stefan
>>Siehe dazu srec_cat.

wo finde ich dafür ne Erklärung/Referenz?

Danke
Rainer

von Stefan E. (sternst)


Lesenswert?

BootloaderHeini schrieb:
>>>jemanden, der eh schon verwirrt ist
>
> Ichweiße aber zurück, dass ich "VERWIRRT" bin.....eher der Wahrheit auf
> der Spur....

Sorry ;-)

BootloaderHeini schrieb:
>>>Siehe dazu srec_cat.
>
> wo finde ich dafür ne Erklärung/Referenz?

http://linux.die.net/man/1/srec_cat
oder wenn du WinAVR installierst hast auch auf deiner Festplatte unter
WinAVR-XXXXXX\doc\srecord\srecord-X.XX.pdf

In deinem Fall sieht der Aufruf in etwa so aus:
1
srec_cat app.hex -Intel boot.hex -Intel -Output app_boot.hex -Intel

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.