Ich habe ein binäres Firmware-Image für ARM Cortex M, von dem ich weiß, dass es bei 0x20000000 geladen werden sollte. Ich möchte es in ein Format konvertieren, das ich für Assembly-Level-Debugging mit gdb verwenden kann, was bedeutet, dass ich in eine .elf konvertieren möchte. Aber ich konnte nicht herausfinden, wie ich dem .elf genügend Metadaten hinzufügen kann, damit dies geschieht. Hier ist, was ich bisher versucht habe.Wie konvertiere ich einen binären Firmware-Dump in ein .elf-Debugging für Assembler?
arm-none-eabi-objcopy -I binary -O elf32-littlearm --set-section-flags \
.data=alloc,contents,load,readonly \
--change-section-address .data=0x20000000 efr32.bin efr32.elf
efr32.elf: file format elf32-little
efr32.elf
architecture: UNKNOWN!, flags 0x00000010:
HAS_SYMS
start address 0x00000000
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000168 20000000 20000000 00000034 2**0
CONTENTS, ALLOC, LOAD, READONLY, DATA
SYMBOL TABLE:
20000000 l d .data 00000000 .data
20000000 g .data 00000000 _binary_efr32_bin_start
20000168 g .data 00000000 _binary_efr32_bin_end
00000168 g *ABS* 00000000 _binary_efr32_bin_size
Muss ich mit der Konvertierung der Binärdatei in .o beginnen und ein einfaches Linker-Skript schreiben? Soll ich dem Befehl objcopy eine Architekturoption hinzufügen?
Es gibt objcopy Möglichkeiten, dies zu tun, aber Sie benötigen eine feste Länge Befehlssatz, Daumen ohne Daumen2 (obwohl das wahrscheinlich nicht mit Gnu arbeiten), Arm ohne Daumen, Mips nur 32 Bit (ohne 16-Bit-Anweisungen), nicht x86 , nicht eine Anzahl von anderen. –