在活动中学习了ST的功能安全,偶然看到ST通过调节CRC的数值的步骤,从而来保护MCU,降低事故的发生率.
Flash 自检的流程
Flash 的自检一般分为启动时自检和程序运行时自检两个阶段。不管是哪种自检,其思路都是:
在程序编译完成后,计算整个程序的 CRC 值,然后将这个 CRC 值添加到可执行文件末尾。再将带有 CRC 校验值的可执行文
件烧录到 MCU 中。在程序启动后,由程序中的自检代码重新再根据当前 Flash 内容(不包括预存的 CRC 校验值)计算一次
CRC 值,再与之前预先计算并烧录到 Flash 中的 CRC 校验值进行比较,如果一致就通过检测。
这两个自检阶段的区别就是:
程序启动自检是一次性对整个实际 Flash 代码范围计算出最终的 CRC 值;而运行时的自检,为了不影响其他程序模块的运
行,计算 CRC 的过程是分步进行的,每次计算一部分,分多次计算出最终的 CRC 值。
围绕 Flash 的自检所发生的问题可以归为两大类,一类是预先计算 CRC 值时和上电后计算 CRC 值的 Flash 范围设置是否一
致;第二类就是预先计算 CRC 时和上电后计算 CRC 采用的 CRC 算法是否一致。
在这份教程中,可贵的是不但提供了keil配置CRC的方法.而且还讲述了在iar中配置CRC的方法.对其他使用IAR的开发者很人性化,这点是值得称赞的
|