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ß
Schuhlader schrieb: > das Hauptprogramm startet Nöö, das ist nicht der Sinn und der Zweck dieser Einrichtung.
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.
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.
Schuhlader schrieb: > Warum ist er nicht ganz am Anfang im Flash. Ist er bei den neuen Atmegas/Attinys. Dafür muss man jetzt eine Fuse setzen, ab wo die App beginnt, damit die Interrupttabelle richtig angesprungen wird.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.