Bootloader Fragen

Gast #6069375
Lesenswert?

Hallo,

ich habe noch einige Verständnisfragen über Bootloader speziell im 
AVR-Bereich.

Der Bootloader ist ja ein kleines Programm, das das Hauptprogramm 
startet und noch ein paar andere Aufaben erfüllt. Warum ist es so, dass 
der Bootloader immer am Ende des Flashs gespeichert wird, obwohl er als 
allererstes ausgeführt wird? Warum ist er nicht ganz am Anfang im Flash.

Desweiteren muss man bei vielen AtMegas usw. eine Fuse setzen, damit der 
Bootloader aktiv wird. Warum ist das nötig, und wäre dies auch noch 
nötig wenn der Bootloader nicht am Ende, sondern am Anfang des Flashs 
gespeichet wäre?

Gruß
Gast #6069442
Lesenswert?

Der Bootloader ist aus zwei Gründen am Ende des Flash Speichers:

a) Weil am Anfang die Interrupt-Vektor Tabelle des Anwendungsprogrammes 
liegen muss.

b) Damit das Anwendungsprogramm nicht speziell für den Bootloader 
angepasst werden muss.

Die Fuse sagt dem Mikrocontroller, dass er nach einem Reset nicht mit 
dem Anwendungsprogramm an Adresse 0 starten soll, sondern mit dem 
Bootloader, der irgendwo weit hinten liegt.
Gast #6069572
Lesenswert?

Karl M. schrieb:

> Schuhlader schrieb:
>> Desweiteren muss man bei vielen AtMegas usw. eine Fuse setzen, damit der
>> Bootloader aktiv wird. Warum ist das nötig?
>
> Bei Allen Atmega und Attiny.
> Um bei Start die Interrupttabelle und somit alle Einsprung-Vektoren im
> Programm-Bereich des Bootloaders zu legen.

So ein Unsinn.

Der Bootloader muss nur bei den Megas am Ende des Speichers liegen. Der 
Grund dafür ist, dass die Atmegas halt einen speziellen Bootladerbereich 
besitzen, der inbesondere eine ganz wesentliche Eigenschaft hat: NUR 
Code, der hier residiert, KANN überhaupt schreibend auf den Flash 
zugreifen. Das ist der eigentliche Knackpunkt. Die zusätzliche 
Vektortabelle zu Beginn eben dieses Bootladerbereichs ist mehr Folge als 
Ursache diese Sachverhalts.

Bei Tinys sieht das anders aus, die haben keinen Bootladerbereich. Man 
kann das auch so sehen: der gesamte Flash ist Bootloaderbereich, 
jedenfalls wenn das entsprechende Fusebit gesetzt ist. Weil das so ist, 
gibt's hier halt auch keine zweite Vektortabelle.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren