Hallo, habe Probleme beim Brennen des Bootloaders mit dem avrdude Version 5.10. Der MCU ist ein ATXMega256a3b. Der Bootloader wird mit -Wl,-section-start=.text=0x40000 gelinkt daher ist der Offset im HEX File 0x40000 was beim Brennen zu einen "out of range" Fehler führt. Habe den Offset mit "srec_cat.exe bootloader.hex -intel -offset -0x40000 -o boot.hex -intel --address-length=2 --line-length=44" aus dem HEX File entfernt. Avrdude beklagt sich jetzt nicht mehr, die Bootloader Sektion bleibt aber nach dem Programmieren leer. Wie kann ich den Bootloader mit dem avrdude Brennen? Gruss
http://savannah.nongnu.org/bugs/?28744 Du könntest aus dem Hexfile (mit Offset) ein raw binary File machen und das raw binary File brennen.
dude schrieb: > Habe den Offset mit "srec_cat.exe bootloader.hex -intel -offset -0x40000 > -o boot.hex -intel --address-length=2 --line-length=44" aus dem HEX File > entfernt. Avrdude beklagt sich jetzt nicht mehr, die Bootloader Sektion > bleibt aber nach dem Programmieren leer. Du hast die Startadresse entfernt, also kann es nicht am Bootvektor stehen. Das Programm wird an 0x0000 stehen. Ein manipuliertes Hex-File wird niemals laufen! Stimmt die Adresse nicht, mußt Du das dem Linker sagen! Peter
Ich bin der Meinung, dass avrdude die Firmware automatisch in das Segment des Bootloaders schreibt (an die Adresse 0x4000), wenn die Option -U flash:w:x.hex:i angegeben wird. Da sich dieser aber beklage, dass die Adresse 0x4000 ausserhalb des Speichers liegt, habe ich den Offset entfernt. Nach dem Programmieren würde ja alles wieder passen. Leider funktioniert dies aber nicht. Was mache ich falsch, wie kann man eine Firmware die bei Adresse 0x4000 beginnt programmieren?
> Du könntest aus dem Hexfile (mit Offset) ein raw binary File > machen und das raw binary File brennen. Werde ich als nächstes Probieren, danke.
Hast du denn mal -U boot:w:x.hex:i probiert? Vermutlich (siehe Bugreport) wird das nur mit einem raw binary gehen, aber es sollte zumindest ein Weg sein.
Yes und das mit dem raw binary ist im Prinzip bei den avr-freaks beschrieben: http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=785790 (vedderb Jan 16, 2011 - 05:38 PM )
Diese Option würde ich so nicht verwenden, weil sie bei der :format Angabe beim -U wieder auf das "verXmaledeite" Intel-Hex Format setzt (:i). 1. Wie im OP mit Offset linken damit die Adressen innerhalb des Programmcodes stimmen. Das erzeugt eine Datei Elfdatei oder Objdatei und anschliessend daraus eine x.hex 2. Aus dem Intel-Hex Format x.hex in das raw-Binärformat x.bin umwandeln ("objcopy can be used to generate a raw binary file by using an output target of binary (e.g., use -O binary).") 3. Das raw-Binärfile mit -U boot:w:x.bin brennen. Schritt 1. müsste sich auch so modifizieren lassen, dass beim Umwandeln der statt der Hexdatei direkt die raw-Binärdatei erzeugt wird
Habe folgendes gemacht: 1. Binary File erzeugt avr-objcopy -O binary -R .eeprom -R .fuse -R .lock -R .signature -R .fw_valid_byte bootloader.elf bootloader.bin 2. Bootloader geschrieben (Meldung vom avrdude siehe unten) avrdude.exe -c jtag2 -p x256a3b -P usb -U boot:w:bootloader.bin Leider bleibt die Bootloader Sektion leer (LOCK Bits sind keine gesetzt). Muss an diesem Punkt Schluss machen, gruss Ausgabe avrdude: F:\avrdude>avrdude.exe -c jtag2 -p x256a3b -P usb -U boot:w:bootloader.bin avrdude.exe: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.37s avrdude.exe: Device signature = 0x1e9843 avrdude.exe: reading input file "bootloader.bin" avrdude.exe: input file bootloader.bin auto detected as raw binary avrdude.exe: writing boot (3339 bytes): Writing | ################################################## | 100% 0.73s avrdude.exe: 3339 bytes of boot written avrdude.exe: verifying boot memory against bootloader.bin: avrdude.exe: load data boot data from input file bootloader.bin: avrdude.exe: input file bootloader.bin auto detected as raw binary avrdude.exe: input file bootloader.bin contains 3339 bytes avrdude.exe: reading on-chip boot data: Reading | ################################################## | 100% 0.72s avrdude.exe: verifying ... avrdude.exe: verification error, first mismatch at byte 0x0000 0xf3 != 0xff avrdude.exe: verification error; content mismatch avrdude.exe done. Thank you.
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.