如何解释下载到 MCU 的 ELF 文件与使用 objcopy 创建的二进制文件之间的不匹配? 使用 CubeProgrammer 从 MCU 中读回了程序代码,并与 .bin 文件进行了比较。 有两个方面的不匹配: * 中断向量和 .text 之间的 8 字节填充。 * 多个字节的不一样。所有这些字节都加载为 5C,
比较文件 read-out.bin 和 foo.bin ........................ 0000AD10: 5C 2F 0000AD14: 5C 2F 0000AD18: 5C 2F 0000AD22: 5C 2F 0000AD2D: 5C 2F 0000AD3D: 5C 2F 0000AD45: 5C 2F 0000AD5A: 5C 2F 0000AD5E: 5C 2F 0000AD78: 5C 2F 0000AD7C: 5C 2F 0000AD80: 5C 2F ........ 0000B339: 5C 2F 0000B34E: 5C 2F 0000B352:5C 2F 在映射文件中,这些字节位于 C 函数的 .rodata 部分中: .rodata 0x000000000802acc8 0x46 Core/Src/main.o *fill* 0x000000000802ad0e 0x2 .rodata 0x000000000802ad10 0x66 Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_cortex.o *fill* 0x000000000802ad76 0x2 .rodata 0x000000000802ad78 0x63 Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_crc.o *fill* 0x000000000802addb 0x1 .rodata 0x000000000802addc 0x66 Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_crc_ex.o为什么这些字节会有不同?
|