市场资讯
STM32生态系统第六期——STM32/STM8功能安全概览(一)
发布日期:2019-12-25    

STM32生态系统第六期——STM32/STM8功能安全概览(二)
STM32生态系统第六期——STM32/STM8功能安全概览(三)

STM32功能安全 生态系统


STM32有很多内置的安全属性,比如双看门狗,比如I/O端口的锁定功能,比如带各种校验方式的片上SRAM。它们是实现由STM32构建的电子产品,在各个行业所要求的安全认证的硬件基础。为了帮助客户快速通过行业安全认证,ST提供了多个功能安全设计包,里面包括文档、安全库(有些是全源码开放),使用安全库的例程。除此之外,我们还录制了功能安全ClassB的培训视频。工程师在客户支持过程中,和安全认证相关的经验也做了工作笔记,汇总在一起分享给到大家。接下来,由STM32资深功能安全专家来给大家讲解围绕着STM32功能安全,ST的最新生态系统内容。

获得功能安全认证——基于ST MCU



随着MCU在家电和工业产品中应用的越来越多,很多时候MCU也承担了安全相关的功能。为了保证产品的使用安全,防止由于硬件随机故障以及系统故障带来的严重风险,越来越多的行业规定产品必须取得相应的功能安全认证才能生产上市。
针对下面这三大类的安全标准认证,ST分别提供了对应的功能安全设计包:

- SIL功能安全设计包,针对IEC61508标准,覆盖STM32系列产品。

- ASIL功能安全设计包,针对汽车行业的ISO26262标准,支持STM8AF系列MCU。

- ClassB功能安全设计包,针对家电应用领域的IEC60335-1/60730-1标准,覆盖STM32和STM8系列产品。

用户通过这些设计包,可以降低产品开发的成本和缩短开发时间。
在这里我们把它称作“功能安全设计包”而不是“功能安全软件包”,是因为它里面既包括认证过的自检库,也包括各种用户基于该自检库做开发和认证需要的文档。当然具体每个功能安全设计包所提供的内容会有差异,后面我们会具体介绍。
另外,为了保证介绍时内容的完整性,所以后面我们会一起介绍STM32和STM8的支持情况。

STM32内置安全属性



功能安全设计包中提供的自检库和安全手册中的检测方法,一部分是通过纯软件的方式实现的,还有一部分是利用MCU本身提供的硬件属性完成的。上表中列出了STM32 MCU内置的一些安全属性,比如:

- 看门狗可以用在对程序计数器的检测中,在程序计数器跑飞的时候复位设备;

- 硬件CRC单元可以用在对Flash的校验中。STM32F7,H7,L4/L4+,G0,G4全系列支持CRC多项式系数可编程,STM32F0和L0/L1系列部分型号支持CRC多项式系数可编程;

- 通过I/O功能锁定,可以保护I/O端口的配置参数不会被软件意外修改,详细说明请见对应STM32系列参考手册中的“GPIO锁定机制”部分;

- PWM关键寄存器位域保护,与I/O功能锁定类似,它主要用于保证“刹车”功能正常执行,配置不被软件意外修改,详细使用说明请见对应STM32系列参考手册中的TIMx_BDTR寄存器的LOCK位介绍。
刚刚提到的“刹车”功能,它的目的是保护由PWM信号驱动的功率开关,就是当系统出现故障时,可以触发该功能,关闭PWM输出,保证系统处于安全状态。而触发“刹车”功能的输入信号,既可以是来自MCU内部的系统级故障(比如CSS检测到的时钟失效,SRAM的奇偶校验错误等),也可以是连接到特定引脚的外部信号。

不同的STM32系列支持的输入信号来源不同,具体使用请见相应的参考手册。部分STM32系列还支持“内核进入lockup状态”作为“刹车”功能的触发源。关于“内核进入lockup状态”是指,当MCU已经因为出错进入fault中断后,在fault中断服务程序中又触犯了fault条件,这时就会进入lockup状态。关于内核lockup更详细的说明,大家可以去参考Cortex-M的用户指南 。

STM32内置安全属性还很多,这里就不一一列举了。有些在自检库中并没有用到,我们也可以根据具体的需要,在应用中使用起来。比如对RAM的检测,在自检库中使用的是软件MarchC算法,如果你选择的MCU支持带奇偶校验或者ECC的SRAM,那么加上这部分硬件检测功能可以进一步提高软件运行的安全性。还有一些外设比如串口,I2C,CAN等,也内置有协议错误检测,CRC校验等功能,可以用于该外设使用过程中的安全检测。这里没有一一列出,可以参考相关的安全手册。

STM32 SIL功能安全设计包
对于产品需要过SIL2/SIL3认证的客户,每个STM32 MCU系列都提供一个独立的STM32 SIL功能安全设计包,其中包括:安全手册和自检库。结合STM32提供的硬件功能,利用安全手册和自检库,用户就可以继续开发满足安全认证要求的自己的代码了。




关于自检库,这里需要说明的是,ST提供的SIL自检库只是实现功能安全所需的安全机制的子集。用户可以将自检库压缩包中的库文件添加到实际工程中,该自检库已经包括了对CPU,FLASH和SRAM这些与具体应用无关部分的检测。然后用户还要再根据实际工程的需要,参考安全手册中列出的安全检测机制,自己通过代码实现其他的检测。比如,如果用到了中断或者I2C,而且跟安全功能相关,就要根据安全手册中这两部分的内容,添加检测代码。


STM32 SIL功能安全设计包的目的,就是帮助STM32的客户在开发需要获得IEC 61508 工业安全标准认证的产品的过程中,降低项目成本和复杂度,简化认证评估过程,缩短认证需要的时间。