工具与软件:
我想使用 armhex.exe 为 TI Hercules TMS570LC4357生成 CRC、该 CRC 需要更新到"C"文件中、但在将此 CRC 更新到"C"文件时、不应更改 CRC
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.
工具与软件:
我想使用 armhex.exe 为 TI Hercules TMS570LC4357生成 CRC、该 CRC 需要更新到"C"文件中、但在将此 CRC 更新到"C"文件时、不应更改 CRC
您确定 armhex.exe 可以计算 CRC 吗? 我认为这是不可能的。 您可以使用链接器生成 CRC:
10.9.由链接器生成的 CRC 表和存储器范围内的 CRC—TI Arm Clang 编译器工具用户指南
在任何情况下、"C"文件被编译到程序中、然后对 CRC 进行校验? 如果是这样、我认为这不会起作用。 当您将 CRC 复制回"C"文件然后重新编译时、CRC 将改变、您也在圆圈中四处转。
可以这么做、但将构建时 CRC 放入 C 文件的要点是什么? 它是否要在运行时访问编译时 CRC 值?
读取这些线之间的值时、您希望在构建时计算应用程序的 CRC、将其存储在某个位置、然后让应用程序在运行时重新计算 CRC、并将其与构建时 CRC 进行比较。 是这样吗?
如果是、您需要将 CRC 存储在应用程序之外的固定地址中。 用户可以使用指针来引用固定地址、也可以将链接器符号与之关联。 然后、在应用程序 CRC 校验器中、您将链接器符号称为指针。
下面是一个示例:
10.9.2.在 MEMORY 指令中使用 crc_table ()运算符—《TI Arm Clang 编译器工具用户指南》

因此、您的应用 CRC 校验器通过指向地址0x0的指针来访问 CRC。
Vijay、您好!
*在基于 Hercules 的微控制器上使用 CRC 模块(TI.com)
请参阅上面的应用手册、其中清楚地说明了如何使用链接器命令文件生成 CRC、并且他们还为 TMS570LC4357提供了直接示例代码。

我想就此向您简要介绍一下。
此处将针对代码中的每个必需扇区计算 CRC。
例如:
下一行为.const 段生成 CRC、并将相应生成的 CRC 作为记录存储到_my_crc_table 结构中。
.const:{}palign=8、fill=0xffffffff、crc_table (_my_crc_table、algorithm=tms570_CRC64_iso)
在代码中可以做的是、您可以将此 _my_crc_table 结构外部、并且可以在控制器中使用 CRC 模块来计算代码中的 CRC、然后您可以将计算出的 CRC 与 _my_crc_table 中由链接器生成的 CRC 记录进行比较。
以下是访问 代码中的_my_crc_table CRC 记录的方法:

您还可以验证映射文件以了解链接器生成的 CRC:

例如、如果您验证以上示例:
我将在此处生成4个段的 CRC 记录(.intvecs、.text、.const 和.cinit)、并且您可以看到、我生成的 CRC 表存储在最后一个段(即.cinit (0x000089d8 + 0x00000228 = 0x00008c00)之后。
若要了解更多信息、请参阅随附的应用手册和 TRM 中的 CRC 模块部分。

——
谢谢、此致、
Jagadish。