Arm 将给定的节从elf复制到hex文件
我正在尝试使用以下命令将一些elf文件objcopy到ihex:Arm 将给定的节从elf复制到hex文件,arm,stm32,elf,objcopy,cmsis,Arm,Stm32,Elf,Objcopy,Cmsis,我正在尝试使用以下命令将一些elf文件objcopy到ihex: arm-none-eabi-objcopy -j .flash_vectors -j .isr_vector \ -j .text -j .rodata ./app.elf -O ihex ./app.hex 我试着把四个部分复制到ihex上。问题是objcopy只复制它们中的前三个,没有.rodata 我的问题是为什么objcopy只复制前三部分而不复制第四部分(.rodata) 从readelf分配的节 精灵信
arm-none-eabi-objcopy -j .flash_vectors -j .isr_vector \
-j .text -j .rodata ./app.elf -O ihex ./app.hex
我试着把四个部分复制到ihex上。问题是objcopy只复制它们中的前三个,没有.rodata
我的问题是为什么objcopy只复制前三部分而不复制第四部分(.rodata)
从readelf分配的节
精灵信息
\u etext
之后。这有点奇怪。我不明白为什么objcopy
不能工作。如果只执行.rodata
,它是否复制;也就是说,与.rodata
相反的部分数量有问题吗?您也可以使用通配符。通常,如果不指定-j
节,objdump文件中加载的任何内容都将以LMA值复制到ihex。这通常是你想要的;如果不将.data
复制到闪存,然后在启动时初始化,则会出现问题。因此,即使这个命令有效,您也会遇到问题。这看起来类似于@EmployedRussian,但与@EmployedRussian不同:它类似吗?即,确认四个部分均为加载和分配。引用的bug有一个既没有加载也没有分配的部分。这可能是objcopy
中的一个bug,但我不认为是这个bugobjcopy-S-R remove.sections./app.elf-O ihex./app.hex
可能有助于尝试。
There are 25 section headers, starting at offset 0x97350:
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .flash_vectors PROGBITS 08010000 010000 000010 00 A 0 0 1
[ 2] .isr_vector PROGBITS 08010200 010200 0001ac 00 A 0 0 512
[ 3] .text PROGBITS 080103b0 0103b0 006cf0 00 AX 0 0 16
[ 4] .rodata PROGBITS 080170a0 0170a0 0007b4 00 A 0 0 4
[ 5] .ARM ARM_EXIDX 08017854 017854 000008 00 AL 3 0 4
[ 6] .init_array INIT_ARRAY 0801785c 01785c 000004 04 WA 0 0 4
[ 7] .fini_array FINI_ARRAY 08017860 017860 000004 04 WA 0 0 4
[ 8] .data PROGBITS 20000000 020000 000124 00 WA 0 0 4
[ 9] .ccmram PROGBITS 10000000 020124 000000 00 W 0 0 1
[10] .bss NOBITS 20000124 020124 004d3c 00 WA 0 0 4
[11] ._user_heap_stack NOBITS 20004e60 020124 000600 00 WA 0 0 1
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings), I (info),