AVR32 UC3 Bootloader Verständnisfragen

OP #1360065
Lesenswert?

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.
#1360096
Lesenswert?

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
OP #1361208
Lesenswert?

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...

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