Avr-objcopy vergisst eine section aus dem elf in die hex datei zu bringen

OP #2979494
Lesenswert?

Hallo!

Also ich wollte die git versions-nummer meinem Binary anfügen (letzte 2 
bytes beim FLASH) und habe zu diesem Zwecke eine objekt-datei erstellt, 
die genau diese 2 byte in einer section .version hat.
1
.section .version
2
version:
3
     .byte 0xde,0xad

Diese habe ich dann assembled.

Danach noch mein programm normal gelinkt:
1
avr-gcc -o main.elf <standard links>
und auch mit version.o:
1
avr-gcc -o main+version.elf <standard links> -Wl,--section-start,.version=0x3FFE -L. version.o

Ein avr-nm zeigt nun für das elf ohne version.o via:
1
avr-nm main.elf | sort
1
...
2
00003f20 A __data_load_end
3
00003f20 A __data_load_start
4
00003f20 T _etext
5
00800100 D _edata
6
...

und die mit version.o gelinkte version:
1
avr-nm main+version.elf | sort
1
...
2
00003f20 A __data_load_end
3
00003f20 A __data_load_start
4
00003f20 T _etext
5
00003ffe n version
6
00800100 D _edata
7
...

Die elf dateien sind auch unterschiedlich groß!

Wenn ich nun hex Dateien für beide elf Dateien generiere:
1
avr-objcopy -O ihex -R .eeprom main.elf main.hex
2
avr-objcopy -O ihex -R .eeprom main+version.elf main+version.hex

so sind die beiden Dateien ident.

Wie mache ich es, das ich die .version Section auch in meine hex Datei 
hinein bekomme?
Welche Option brauche ich?
Wie kann ich es sonst machen?
Ich möchte ein editieren der hex-datei vermeiden...

Danke,
       Martin

p.s: es ist unabhängig ob das label "version" mit ".global version" 
definiert ist oder nicht... (der einzige Unterschied ist n oder N in der 
ausgabe von avr-nm)

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