J'ai une image de firmware binaire pour ARM Cortex M que je sais devrait être chargé à 0x20000000. Je voudrais le convertir en un format que je peux utiliser pour le débogage au niveau de l'assemblage avec gdb, ce qui, je suppose, signifie la conversion en .elf. Mais je n'ai pas été capable de comprendre comment ajouter suffisamment de métadonnées à l'aut. Pour que cela se produise. Voici ce que j'ai essayé jusqu'ici. Dois-je commencer par convertir le binaire en .o et écrire un script simple de l'éditeur de liens?Comment puis-je convertir un vidage de micrologiciel binaire en .elf pour le débogage du langage d'assemblage?
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
Dois-je ajouter une option d'architecture à la commande objcopy?
il existe des moyens objcopy pour faire cela, mais vous avez besoin d'un ensemble d'instructions de longueur fixe, pouce sans thumb2 (bien que cela ne fonctionnera probablement pas avec gnu), bras sans pouce, mips 32 bits seulement (sans instructions 16 bits), pas x86 , pas un certain nombre d'autres. –