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.

[参考译文] TMS320F280041C:闪存上的 CRC 计算

Guru**** 2810675 points

Other Parts Discussed in Thread: TMS320F280041C, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1065419/tms320f280041c-crc-calculation-on-the-flash-memory

器件型号:TMS320F280041C
主题中讨论的其他器件: C2000WARE

我需要在引导加载程序编写代码的闪存范围上计算 CRC。 在阅读数据表和参考手册后、我不清楚  TMS320F280041C 是否具有 CRC 模块 、因为 CRC 似乎是 TMS320F280041C 不具有的 CLA 模块的一部分。 我希望我错了。  TMS320F280041C 是否具有 CRC 模块?

假设我对上述问题得到了积极的回答、我找不到使用 CRC 的示例。 有一个吗? 我确实找到了头文件 clapromcrc.h、其中包含 CRC 函数、但我不知道如何准确配置 CRC 模块以及需要调用哪些函数来计算闪存中地址范围的 CRC。 最好能看到一个示例、而不是经过尝试和错误。 请帮助。

Alex

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

    尊敬的 Alex:

    该器件对 C28x 指令集进行了增强、以极大地加快 C28x CPU (VCU-CRC)的 CRC 计算、但没有硬件机制来独立于 CPU 在后台计算 CRC (除了在具有 CLA 的器件上使用 CLA 或 CLA ROM CRC)。  

    CLA ROM CRC 在\ti\c2000\C2000Ware_的 C2000ware 中确实有一个 driverlib 示例 \driverlib\f28004x\examples\clapromcrc\

    我认为 F28004x 没有 VCU CRC 示例、但 其他一些器件上的库和示例可在 \ti\c2000\C2000Ware_中找到 \libraries\DSP\VCU\c28

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

    只有 VCU0和 VCU2有库和示例。  TMS320F280041C 具有 VCU1。 VCU0是否适用于 VCU1? 我可以使用闪存地址作为缓冲器指针、还是必须先将闪存存储器块复制到 RAM?

    Alex

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

    尊敬的 Alex:

    老实说、我不确定 在 VCU-1上运行代码需要多少修改 、或者是否可以将闪存地址传递给库。  遗憾的是、VCU 的主要所有者和备份所有者对特定库有更多的了解、他们都在度假、直到1月3日。  您能等到那时再进一步澄清一下吗?    

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

    是的

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

    Alex、

     在 libraries\DSP\vcu\c28\examples\crc 下是否有任何您希望在 VCU1上工作的特定示例?

    谢谢

    Aravindhan

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

    您好、Aravindhan、

    实际上、我不确定如何使用 TI 提供的库。 因此、如果您只能编写一个 C 函数来计算 CRC32、该函数可以在必要时调用汇编器代码、那会好得多。

    uint32_t 计算 CRC32 (uint32_t FlashStartAddr、uint32_t LengthIn32bitWords)

    请使用以下默认值:

     生成多项式的默认 CRC
    #define DEFAULT_CRC32_Poly 0x04C11DB7U /*!< X^32 + X^26 + X^23 + X^22 + X^16 + X^12 + X^11 + X^10 +X^8 + X^7 + X^5 + X^4 + X^2+ X +1 */
    默认 CRC 计算初始化值
    #define DEFAULT_CRC_INITVALUE 0xFFFFFFU/* !<初始 CRC 默认值*/

    如果您无法做到这一点、我将与我们的 TI 代表一起工作、以实现这一功能。

    Alex

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

    Alex、让我检查一下是否有现成的东西。  

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

    Alex、

    CRC 计算是否需要考虑性能? 我想知道、如果不需要优化的实现、您是否可以在不使用 VCU 的情况下在 C28x 上执行此操作。

    谢谢

    Aravindhan

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

    性能很重要。 我需要在每次加电时以及可能的操作期间计算闪存 CRC。 如果 VCU 加速 CRC 计算、我想使用它。 目前、 在开发过程中、不使用 VCU 的功能将起作用、但我希望在设计投入生产之前使用 VCU。

    Alex

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

    Alex、

    好的。 然后、我们需要查看使用 VCU1。 您是否在 C28x 上有可用带宽或已充分利用带宽?  

    谢谢

    Aravindhan

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

    我不知道你在问什么。 它是采用 CAN J1939通信协议的 InstaSpin Lab7。 很明显、F280041C 只有一个存储器组、如果这很重要、但仍有大量的闪存空间可用。

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

    Alex、

    我曾问、在您尝试执行的应用中、C28x CPU 上是否有足够的备用 MHz。 我们必须对其进行 CRC 计算的存储器大小有多大?  

    谢谢

    Aravindhan

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

    我不知道你第一个问题的答案。 时钟处于其最大值100MHz。  我必须假设我有备用 MHz。  

    由于不断开发、程序存储器大小不断变化。 我不知道为什么它很重要。 从0x85000开始并转到组0x8FFFF 的末尾。 起始地址和长度应为函数的参数。

    Alex

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

    Alex、

    尺寸很重要、因为计算时间将取决于它。 我们的一个团队可能已经完成了基于 C28x 的计算、如果已经完成了计算、我将进行检查并恢复。  

    谢谢

    Aravindhan