您好!
以下哪些是正确的命令行选项、用于使 ArmHex 从 CM .out 文件中以 Intel 格式生成单个.hex 文件?
我尝试使用--romwidth=32和--intel。
通过这种方法、我获得了一个.hex 文件、但其中有一些奇怪的内容。
我特别在地址0x200008处分配了一个 CRC16常量变量:
CMBANK0_RESETISR:origin = 0x00200000,length = 0x00000008 /* Boot to Flash Entry Point */
CMBANK0_CRC:origin = 0x00200008、length = 0x00000004 /* CRC */
CMBANK0_SECTOR0:origin = 0x0020000C、length = 0x00003FF4
.crc:> CMBANK0_CRC
#pragma DATA_SECTION (CRC、".crc")
#pragma Retain (CRC)
const uint16_t CRC = 0x1234;
查看映射文件、一切都正常:
.CRC 0 00200008 00000002
00200008 00000002 MAIN_BOOTL.obj (.crc:retain)
00200008 CRC
但是、如果我查看.hex 文件、"crc"记录中的数据似乎为大端字节序格式。
:0400080000001234AE
令我感到惊讶的是、我们在 使用 STM32CubeIDE 和 GCC 工具链开发的 STM32项目中也执行了相同的操作。
在这种情况下、.hex 文件记录中的数据采用小端字节序格式:
:04820000FAA10000DF
我的操作有误吗、或者只是 ArmHex 生成一个具有字节序而不是使用 GCC 工具生成的字节序的.hex 文件?
在最后一种情况下、这会非常恼人、因为我们使用自定义工具读取 hex 文件以进行 CRC 验证和其他转换操作。
谢谢!
卡洛