【发布时间】:2018-08-21 14:54:21
【问题描述】:
我正在开发一个在微控制器上运行的程序,需要对程序代码完整性进行自检。
为此,我让代码计算整个闪存(程序空间)的 CRC16 校验和,并通过某个网络将该值传输到另一个系统。然后,另一个系统必须将校验和与预先计算的值进行比较。
但是,每次更新时,CRC 值都会发生变化。所以整个过程可以简化,如果程序代码可以预先准备好,这样 CRC16 校验和总是匹配一个预定义的值,比如 0,或者更好的值,比如 0x1234。
有没有简单的方法来实现这一点?
另一种说法:我能否轻松计算一个字节序列,我必须将其添加到我的程序二进制代码中(例如,通过更改程序中包含的虚拟数据的静态数组),以便 CRC16 给出我的预定义值? 这个字节序列可以包含在代码中的任何地方还是必须正好在末尾?
(如果需要,我还可以实现除 CRC-16 之外的另一种校验和算法。)
感谢您的回答!
【问题讨论】: