This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28384S:CM -使用 ArmHex 生成 Intel 十六进制格式时出现问题。

Guru**** 2393725 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1276815/tms320f28384s-cm---issue-with-intel-hex-format-generation-with-armhex

器件型号:TMS320F28384S

您好!
以下哪些是正确的命令行选项、用于使 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 验证和其他转换操作。

谢谢!
卡洛

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我有信心、但不确定是否添加 -- memwidth=8 获得所需的结果。  当您使用 ——英特尔 ,默认值 --memwidth=32 。  这意味着十六进制实用程序每次使用一个32位块。  在单个段中、字节顺序始终是大端字节序。

    请告诉我此建议是否解决了问题。

    谢谢。此致、

    -乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    George、您好!
    非常感谢您提供的解决方案和说明。

    此致、
    Carlo。