Bootloader Fragen

Gast #6069375
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 #6069404
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.
Gast #6069442
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
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

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.