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.

[参考译文] CCS/TMS320F2812:二进制代码的CRC生成

Guru**** 2542700 points
Other Parts Discussed in Thread: TMS320F2812

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/655764/ccs-tms320f2812-crc-generation-for-binary-code

部件号:TMS320F2812

工具/软件:Code Composer Studio

您好,

我正在尝试为二进制代码生成CRC。 目标是在编译和链接过程中计算“黄金”CRC,并将其保存到代码末尾或闪存末尾。 在运行期间,将根据"黄金"CRC值对闪存进行CRC检查。

我在这里看到了两个相关的帖子。

e2e.ti.com/.../11.7036万

https://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/10.8461万#

但是,我不清楚 在链接过程中如何计算"黄金"CRC值。 在 文件夹C:\ti\ccsv7\tools\compiler\ti-CGT-C2000_README.12中找不到上述线程中提到的自述文件(linker_generate_crc_README.txt) 6.4。 有人能在这方面亮灯吗? 谢谢。

我使用的是320F2812,CCS 0.0.0016万 编译器TI 6.4 v.12,DSP/BIOS版本7.1 5.42 .2.10。

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

    链接器CRC功能的文档可在  C28x汇编语言工具手册中标题为Linker-generated CRC Tables(链接器生成的CRC表)的一节中找到。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您指出该手册。 我浏览了文档,但没有找到我要寻找的答案。 该文件侧重于CRC检查代码/数据的某些部分。 我需要做的是检查整个闪存,即地址0x3D8000到0x3F7FF7。 最后几个字节用于存储CRC。 是否可以在链接程序生成的CRC功能中引用绝对地址? 谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    链接器中CRC功能的控制粒度是输出部分,而不是内存范围。  它不支持按照您描述的方式计算CRC。

    谢谢,此致,

    -George

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

    感谢您的快速响应,George。

    如果这意味着我们不能使用链接器生成的CRC,是否有其他方法可以做到这一点? 对于ELF格式,我们使用了ielftool来计算CRC值,并在生成ELF对象文件后插入CRC值。 我们是否有类似的工具用于TMS320F2812的.COFF文件? 谢谢。

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

    Gavin BAI 说:
    如果这意味着我们不能使用链接器生成的CRC,有没有其他方法可以做到这一点?[/QUOT]

    这不是我的意思。  您当然可以使用TI链接器中的CRC功能来解决问题。  但它的工作方式与ielftool不同。

    我从未使用过ielftool。  但我在IAR网站上读到了一些关于它的信息。 ielftool在一个记忆范围内工作。  它是在链接程序之后运行的单独实用程序。  TI解决方案一次只能处理一个部分。  它内置于链接器中。

    Gavin BAY 说:

    此时,我认为您的最佳选择是调整CRC解决方案在TI链接器中的工作方式。  因为替代方案是创建您自己的解决方案。  

    谢谢,此致,

    -George

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

    您提到"链接器中CRC功能的控制是输出部分,而不是内存范围。 它不支持按照您描述的方式计算CRC。" 并且“您肯定可以使用TI链接器中的CRC功能来解决您的问题。 但它的工作方式与ielftool不同。"

    我应该采用哪种方法来指定我感兴趣的闪存范围? 我需要您在这方面的帮助。 谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此时,我想您可以使用一个完整的示例。  CRC示例不是我的专业知识。  我建议您安装 C2000Ware ,然后从目录中的示例开始,类似于...

    C:\ti\C2000Ware_1_00_02_00_Software\libraries\DSP\VCU\c28\examples\CRC\2837x_vcu0_crc_wtables</s>2837 

    这不适用于您的具体设备。  它使用VCU,而TMS320F2812没有它。  但我知道它也使用C代码计算CRC,其方式与您所做的类似。  因此,您可能会从学习示例中的这一部分的工作方式中受益。

    如果您对此示例有任何疑问,我建议您在 C2000器件论坛中开始新的讨论。  或者,如果您愿意,我可以将此主题移至该论坛。

    谢谢,此致,

    -George