Arm 将给定的节从elf复制到hex文件

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分配的节 精灵信

我正在尝试使用以下命令将一些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分配的节
精灵信息

我注意到.rodata在
\u etext
之后。这有点奇怪。我不明白为什么
objcopy
不能工作。如果只执行
.rodata
,它是否复制;也就是说,与
.rodata
相反的部分数量有问题吗?您也可以使用通配符。通常,如果不指定
-j
节,objdump文件中加载的任何内容都将以LMA值复制到ihex。这通常是你想要的;如果不将
.data
复制到闪存,然后在启动时初始化,则会出现问题。因此,即使这个命令有效,您也会遇到问题。这看起来类似于@EmployedRussian,但与@EmployedRussian不同:它类似吗?即,确认四个部分均为加载和分配。引用的bug有一个既没有加载也没有分配的部分。这可能是
objcopy
中的一个bug,但我不认为是这个bug
objcopy-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),