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.

[参考译文] TMS320F28379D:由链接器生成的 CRC 表不正确

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1406775/tms320f28379d-linker-generated-crc-table-is-incorrect

器件型号:TMS320F28379D

工具与软件:

因此、对于由链接器生成的闪存范围 CRC 表、我存在一些问题。
如此处所述 、添加了新的 CRC 生成选项。 以下是我使用的部分链接器 cmd 文件:
.....
   FLASH_CRC         : origin = 0x0B0000, length = 0x000060
   GROUP {
      BEGIN           : origin = 0x0B0060, length = 0x000002
      FLASHJ          : origin = 0x0B0062, length = 0x8000-0x62    /* on-chip Flash */
      FLASHK          : origin = 0x0B8000, length = 0x002000    /* on-chip Flash */
      FLASHL          : origin = 0x0BA000, length = 0x002000    /* on-chip Flash */
   }crc(linkerCrcTable, algorithm=CRC32_PRIME)
.....
.TI.memcrc : >FLASH_CRC
.....

我有2个问题:

1)是否可以在多个闪存范围上使用一个 CRC?
如果我要使用链接器 CRC 验证我的固件(N 个范围)。 我应该得到的结果(但没有得到、请参阅问题2)
将是记录表。 我希望在整个 GROUP 中具有一个 CRC 的所有范围。 有可能吗?  

2)生成的表不包含正确的记录。 我希望看到 SPRU513Q 的图8-7和中所示的表格
在...\tools\compiler\ti-cgt-C2000_22.6.1.sts\include\crc_tbl.h 中


我已通过 hex2000 util 将*。out 文件转换为*。hex、以验证生成的表。 我看到的内容远不及预期:
-第一个字符串设置的基地址0x0B0000是正确的
-第二个字符串应包含表头和几个记录。 这是开始出错的地方。
我有一个看上去正常的表头。 则记录则不是。 我在"地址"字段的起始地址中的第一个范围具有正确的 CRC 值(0xB1D5086B)
CRC 值字段。 其余记录根本不包含 CRC、并且字段会混乱。

:02000004000BEF
:200000000006000400000000086BB1D5000000000060000B00020000000000000062000B03
:200010007F9E0000000000008000000B2000000000000000A000000B20000000FFFFFFFF41
:20002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
:20003000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
:20004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
:20005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
:20006000004B2943FFFFFFFFFFFFFFFFFFFFFFFFB2BDAABDA2BDFE0A8BA583C1825486A424
...


我在连接了调试器的情况下也获得了此结果:
 

为什么我会得到这个奇怪的结果?

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

    解决了问题。 因此、当使用 crc (...)时 生成运算符 MEMRANGE_CRC_TABLE 类型的记录。 和
    crc_table (...) 将生成 crc_table 记录。