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.

[参考译文] CCSTUDIO:使用 CCS12对 MSPM0G1106进行 CRC32固件完整性检查

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1509268/ccstudio-crc32-firmware-integrity-check-on-mspm0g1106-with-ccs12

部件号:CCSTUDIO
主题:MSPM0G1106中讨论的其他器件

工具/软件:

您好、

我们的应用使用 MSPM0G1106微控制器、我们使用 Code Composer Studio 12 (CCS12)进行开发。

我目前正在使用 CRC32值来实现固件完整性检查、想问是否有已知或推荐的方法来可靠地实现此功能。

以下是我尝试的方法:

  1. 自定义链接器脚本 :我保留闪存的最后4个字节来存储 CRC32值。

  2. 编译后处理步骤 :我添加了一个 Python 脚本,在整个闪存范围内计算 CRC32 ,不包括保留的4个字节。 然后、该脚本会将计算出的 CRC32写入保留段。 (我已确认 CRC 值已正确插入.out文件的最后4个字节中、我也可以在刷写后在 CCS 内存浏览器中看到该值。)

  3. 运行时检查 :在固件中,我实现了一个函数,在闪存中的同一区域重新计算 CRC32 ,并将其与存储的 CRC32进行比较。

但是、运行时 CRC 永远不会与存储的 CRC 值匹配。 仔细检查后,我发现.out文件似乎有所有未使用的内存填充0x00,而当映像被加载到闪存时,未使用的内存似乎被填充0xFF. (大概是由于闪存0xFF在编程前被默认擦除。)

鉴于此、我使用的方法是否可行、用于实现可靠的固件完整性检查? 或者是否有更好的方法来确保构建时 CRC 和运行时验证之间的一致性?

希望经验丰富的开发人员提供任何建议或见解。

上下文涉及、这是认证(IEC 60730/IEC 61508 B 类)所需的功能安全特性的一部分。

已申请 https://www.ti.com/tool/MSPM0-DIAGNOSTIC-LIB 、但等待处理已有一段时间。

此致、

李庆宰

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

    您好,感谢您的提问! 您是否查看过 M0 SDK 中的 CRC 示例? 您使用什么 CRC 多项式?