avrdude brennt Booloader nicht.

Gast #2371439
Lesenswert?

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
#2371612
Lesenswert?

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
Gast #2371787
Lesenswert?

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?
Gast #2371896
Lesenswert?

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
Gast #2372397
Lesenswert?

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.

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