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.

[参考译文] TMS320F280025C:用于验证目的的 VCRC 预期结果。

Guru**** 2432790 points
Other Parts Discussed in Thread: TMS320F280025C

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1031783/tms320f280025c-vcrc-expected-results-for-verification-purpose

器件型号:TMS320F280025C

我已使用 2838x_vcrc_crc_16示例工程作为在 TMS320F280025C 上实现 VCRC 的参考。 我使用了与示例中相同的数据、即  
静态常量 uint16_t testInput[NWORDS]={
0x4001、0x8002、0xC003、0x0004、0x4005、 0x8006、0xC007、0x0008、
0x4009、0x800A、0xC00B、0x000C、0x400D、 0x800E、0xC00F、0x0010、
0x4011、0x8012、0xC013、0x0014、0x4015、 0x8016、0xC017、0x0018、
0x4019、0x801A、0xC01B、0x001C、0x401D、 0x801E、0xC01F、0x0020、
0x4021、0x8022、0xC023、0x0024、0x4025、 0x8026、0xC027、0x0028、
0x4029、0x802A、0xC02B、0x002C、0x402D、 0x802E、0xC02F、0x0030、
0x4031、0x8032、0xC033、0x0034、0x4035、 0x8036、0xC037、0x0038、
0x4039、0x803A、0xC03B、0x003C、0x403D、 0x803E、0xC03F、0x0040、
};

CRC 是使用16位多项式计算得出的: CRC.run      =(void (*)(void *)) crc_run16BitPoly1;
运行代码后、我获得以下 CRC:0x9331。
我想知道我的实现是否正确。 因此、请告诉我0x9331是正确的结果、还是应该得到其他一些值?

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

    您好、Hameed、

    我将在2838x 上运行它、并告诉您应该得到什么价值。  

    谢谢

    Aravindhan

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

    您好、Hameed、

    是的。 0x9331是正确的值。  

    谢谢

    Aravindhan

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

    尊敬的 Aravindhan:

      非常感谢您的确认。 我认为使用  CRC_run16BitPoly1函数应该比表查找方法更快? 请确认。 此外、我还没有将 CRC 数据分配到任何特定的 RAM 位置。 它被声明为"static const uint16_t"、因此最有可能驻留在闪存中。 我认为删除"static const"应该将其分配给 RAM、并且在计算时间方面有一些改进? 实际上、我希望采用最耗时的方法。

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

    您好、Hameed、

    您可以分析和确定哪个函数更好。 我感觉 CRC_run16BitPoly1将会更快、因为最好在决定之前进行配置和查看。 您能否进行配置和检查? 就数据需要驻留的位置而言、闪存或 RAM 中没有任何特定的数据。 您需要使用链接器 cmd 文件确保您的数据在 RAM 存储器中、我不认为将其定义为静态 const uint16_t 会使其自动进入闪存。 您需要使用链接器 cmd 文件确保将数据数组放置在 RAM 中。  

    谢谢

    Aravindhan  

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

    我还认为  CRC_run16BitPoly1应该更快、因为它使用 VCRC 硬件单元。 无论怎样、我都会向您介绍并分享结果。 我的主要目标是以最小的 CPU 处理开销在通信数据缓冲器上实现 CRC。 由于某些时间关键型和冗长的控制任务、CPU 带宽受到限制。 数据缓冲由 DMA 控制器完成。 我认为 每次接收完成时、DMA 接收中断中的主 CPU 都需要调用和执行 CRC_run16BitPoly1。 您是否有更高效的方法来实现这一点?

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

    您好、Hameed、

    这是正确的方法。 您正在走正确的道路。  

    谢谢

    Aravindhan