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.

[参考译文] TMS570LC4357:TI Hercules ARM Cortex R

Guru**** 2524550 points
Other Parts Discussed in Thread: TMS570LC4357

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1385684/tms570lc4357-ti-hercules-arm-cortex-r

器件型号:TMS570LC4357

工具与软件:

我想使用 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_table (),但遇到了错误。 但我会尝试让你知道

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

    我们不能将该特定的 C 文件排除在 CRC 计算之外吗?

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

    可以这么做、但将构建时 CRC 放入 C 文件的要点是什么? 它是否要在运行时访问编译时 CRC 值?

    读取这些线之间的值时、您希望在构建时计算应用程序的 CRC、将其存储在某个位置、然后让应用程序在运行时重新计算 CRC、并将其与构建时 CRC 进行比较。 是这样吗?

    如果是、您需要将 CRC 存储在应用程序之外的固定地址中。 用户可以使用指针来引用固定地址、也可以将链接器符号与之关联。 然后、在应用程序 CRC 校验器中、您将链接器符号称为指针。

    下面是一个示例:

    10.9.2.在 MEMORY 指令中使用 crc_table ()运算符—《TI Arm Clang 编译器工具用户指南》

    因此、您的应用 CRC 校验器通过指向地址0x0的指针来访问 CRC。

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

    是的、正确的、我想在运行时访问该 CRC!
    谢谢!

    关于该 CRC (_FLASH_CRC、Algor)、它的用途是什么?

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

    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。

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

    谢谢您的参与。 我来检查一下