AVR Bootloader

Lite info om bootloader för AVR (Atmega 328p)

För att kompilera en bootloader behöver man ändra lite i Linkern för att det skall generera hex-filer med rätt adress. Default börjar programmet på adress 0x0, men bootloader ligger i slutet av minnet.
Atmel skriver minnes adresser i word inte byte, vilket kan göra detta lite krångligt.

Linkern behöver följande parameter:
-Wl,-section-start=.text=0x7c00
Där adressen är skriven i byte (tror jag)
För att översätta detta har jag gjort en liten lathund:


GCC använder Byte, medans Atmen använder Word.

Size WAddress WAddress dec WAdress B
512FE00650247F00
1024FC00645127E00
2048F800634887C00
4096F000614407800


-Wl,-section-start=.text=0x7E00 är ok för 256 bootloader

Debug av bootloader ser inte ut att fungera ?? kollar vidare.

Använd -g3 och (stabs + gdb extention), -O0 (no optimization).