起初我认为安全是个什么新东东,仔细一看才知道以前就接触过:
功能安全设计包中提供的自检库和安全手册中的检测方法,一部分是通过纯软件的方式实现的,还有一部分是利用MCU本身提供的硬件属性完成的。上表中列出了STM32 MCU内置的一些安全属性,比如:
- 看门狗可以用在对程序计数器的检测中,在程序计数器跑飞的时候复位设备;
- 硬件CRC单元可以用在对Flash的校验中。STM32F7,H7,L4/L4+,G0,G4全系列支持CRC多项式系数可编程,STM32F0和L0/L1系列部分型号支持CRC多项式系数可编程;
- 通过I/O功能锁定,可以保护I/O端口的配置参数不会被软件意外修改,详细说明请见对应STM32系列参考手册中的“GPIO锁定机制”部分;
STM32内置安全属性还很多,这里就不一一列举了。有些在自检库中并没有用到,我们也可以根据具体的需要,在应用中使用起来。比如对RAM的检测,在自检库中使用的是软件MarchC算法,如果你选择的MCU支持带奇偶校验或者ECC的SRAM,那么加上这部分硬件检测功能可以进一步提高软件运行的安全性。还有一些外设比如串口,I2C,CAN等,也内置有协议错误检测,CRC校验等功能,可以用于该外设使用过程中的安全检测。这里没有一一列出,可以参考相关的安全手册。
可见自已的程序得自己负责,才取看门狗等手段是不是必要因素,但安全要认证我就有点不赞同了,怎么我程序设了什么套还得认证么?我觉得认不认证是我的自由,而不应以认证之类词汇来吓唬人。我不认证我的程序不也实现了功能吗??? |