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