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.

[参考译文] TMS320F28027F:闪存 CRC 不稳定性

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/565499/tms320f28027f-flash-crc-instability

器件型号:TMS320F28027F

所有、

我正在使用 IEC_60730 TI 固件中的 STL_CRC_TEST_testNvMemory ()函数来计算存储器区域 B 到 D 的闪存 CRC。在程序开始时计算 CRC 每次都会产生相同的 CRC。 如果我在操作期间运行相同的 CRC 函数、我会得到不同的 CRC 结果、该结果将在后续调用中发生变化。 我目前没有任何修改闪存的程序函数。 如果有任何帮助,我们将不胜感激。

void IEC_Running_CRC (void){
DINT;
IEC_disableFlashPreFetch ();
STL_CRC_TEST_testNvMemory ((uint32_t *) FLASH_SECURE_B_D_START、(uint32_t *) FLASH_SECURE_B_D_END、(uint64_t *)&goldencrc_start、(Uint_t
*);(Ut_eCRC_REt_eCRC_REturge)= eCRC_REt_eCRC_REt_INT_REt_INT_REt_INT_REt_4


;} 

此致、

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

    在测试时、您是否在代码中使用了断点? 由于 PSA 基于周期、任何断点都可能影响结果。

    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外、在启用预取程序后尝试获取 CRC 结果。

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

    除了 Sal 建议的内容之外、

    计算 CRC 时、器件是否已解锁、以及 CRC 算法是否从安全存储器(或)不安全存储器运行? 这可能会对 CRC 值产生影响。

    曼诺伊

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

    Sal & Manoj、

    我想我已经缩小了不稳定性的范围。 当我在调试窗口中禁用实时更新功能并且只使用暂停按钮检查 CRC 时、CRC 变得稳定。 为了获得稳定的 CRC 值、中断似乎也必须被禁用。 除了使用 PSA 在中断仍然被启用的情况下有效计算一个闪存 CRC、还有什么其他方法。

    此致、

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

    感谢您的更新。 这与 PSA 是一个逐周期计算是一致的。 任何调试器读取和任何中断都将损坏 PSA 的 CRC 计算、因为 PSA 是侦听并从数据总线计算 CRC。 由于它是逐周期的、因此如果甚至出现意外失速或 ISR、计算将会损坏。

    这取决于您希望 CRC 计算的"效率"。 您可以始终使用 C28x 来计算 CRC、但这要慢得多。

    Piccolo 系列中的 F2806x 和 F2807x 都配备了 VCU 引擎、这将极大地提高 CRC 计算的性能。

    SAL