Hallo,
ich schaffe es einfach nicht, mit AVRDUDE (5.10) nen Bootloader für nen
xMega32A4 (AU 1131) zu flashen.
Beim xMega32 liegt die Startadresse des bootloaders ja bei 0x8000,
entsprechend hab ich dem Linker auch "-Wl,--section-start=.text=0x8000"
mitgegeben. Das Hexfile muss auch funktionieren, denn ich habs mit Atmel
Studio 6 geflasht und es ging.
Ich vermute das AVRDUDE die Adressen ab 0x8000 einfach ignoriert, wenn
man mit:
1 | avrdude -px32a4 -cavrisp2 -Pusb -V -D -Uflash:w:bootloader.hex:i
|
flasht.
Es gibt aber die Option boot:
1 | avrdude -px32a4 -cavrisp2 -Pusb -V -D -Uboot:w:bootloader.hex:i
|
nur sagt er mir dann :
1 | avrdude: ERROR: address 0x8010 out of range at line 1 of bootloader.hex
|
Er will nämlich als Startadresse 0x0000 für die bootsektion. Ich kann
aber nicht einfach das --section-start=.text=0x8000 weglassen, weil dann
natürlich nichts mehr geht.
Man müsste die Adressen im Hexfile nach dem Kompilieren ändern (-0x8000)
und dann mit boot in den richtigen Speicher schreiben, aber das kanns ja
nicht sein.
Ich hab auch schon versucht AVRDUDE zu überlisten und hab in der
avrdude.conf beim x32a4 die Flashgröße von 0x9000 auf 0xA000 gesetzt, in
der Hoffnung, dass er dann schreibt, aber macht er nicht.
Aber mir fällt auch grade ein, dass 0x9000 ja auch gereicht hätte...
Jemand ne Idee?
Gruß,
Michi