Ich bastel gerade an einem Bootloader für den AVR32 UC3 (A1512) in C. Ich habe das Projekt erstmal ganz normal angelegt und hab mir aus dem Framework die nötigen Komponenten dazu gepackt. In der main() wird das binary gelesen und an eine beliebige Flash-Adresse geschrieben (funzt probehalber). Jetzt gehts es los: Wie vermittle ich meinem Bootloader-Projekt, dass es sich im Bootloader-Bereich befinden soll (macht das der Compiler oder der Linker und wenn ja wie)? Wie vermittle ich dem Controller, dass er erst den Bootloader starten soll? Liegt der Bootloader ab Adresse 0x80000000? Wo sind die Resetvektoren, muss ich die in meiner eigentlichen Applikation irgendwie behandeln? Irgendwie bin leicht verwirrt, da hackt es bei mir noch wissenstechnisch.
hi, zu frage 1: das macht der linker. musst dazu den entsprechenden teil in die bootloader-section legen. schau mal hier im forum oder in der hilfe, wie man sowas macht. zu frage 2: da gibts nen fuse-bit für, iirc. zu frage 3: siehe doku mcu. die resetvektoren werden für den fall des bootloader-starts dann auch ab dort erwartet. für die eigentliche applikation wird das ja so hin gelinkt. gruß kosmo
Danke, für die schnelle Antwort. Habs jetzt kapiert (glaub ich) und folgendermaßen gemacht: Bootloader (BL) ist ein normales Projekt, das die max. BL-Größe (hier 64K) nicht überschreitet. Nach BL-Start wird auf BL-Kondition geprüft, sonst Sprung an die Apllikationsstartadresse. Applikation ist ebenfalls ein normales Projekt. Dazu Trampoline mit der Größe des Bootloaders eingebunden (Siehe AVR32 UC3 USB DFU Bootloader Dokument von Atmel) Nur hab ich jetzt mit der Größe des Bootloaders noch ein Problem, das aber in einem anderen Thread...
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.