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

Compilera AVR-GCC tools i linux

En kort beskrivning med länkar till hur man kompilerar
GCC
binutils
libc-avr (ja, den finns i 2.0 under download)
gdb
avrdude
för AVR micro controllers. Grunden kommer från denna länk.

Ladda först ned GCC, ex. 7.2.
Ladda ned binutils. ex. 2.28.1 
Ladda ned avr-libc. ex. 2.0.0
Kopiera dessa filer till en katalog och packa upp dem.
Set path och env ….