生态系统

功能安全 云连接 信息安全 电机控制

功能安全




生态系统


   


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锁定机制”部分;


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



功能安全设计包


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




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





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




STM32 SIL功能安全设计包
(1)安全文档


STM32 SIL功能安全设计包的安全文档,有两大类:一类是前面提到过的安全手册,里面详细列出了在硬件层面,软件层面和应用层面可以采取的安全机制,来指导STM32用户设计出达到符合IEC61508标准的安全完整性等级的产品。每个STM32系列对应一份独立的安全手册,可以从ST官网(www.st.com/x-cube-stl)免费下载。


还有一类安全文档,包括FMEA和FMEDA。这两个文档是需要用户签NDA后才能拿到的。FMEA里列出了MCU失效模式和相关可以采取的检测方法。FMEDA里列出整个MCU和各个基本功能模块的失效率数据,它里面提供的失效数据与具体MCU的型号对应。在FMEDA文档中列出了适用的MCU型号,以及计算的条件假设。



(2)X-CUBE-STL自检库


SIL功能安全设计包中的X-CUBE-STL自检库,检测了STM32内核的关键安全部件(CPU+SRAM+Flash)的随机硬件失效。该部分检测与应用无关,可以用在任何终端用户应用中。这里再强调一下,自检库只是产品获得认证最终需要实现的全部安全机制的子集,客户还需要根据实际情况,参考安全手册的说明自行开发其他部分的代码。并且该自检库是通过库文件形式提供,独立于编译器,这意味着你可以选择你想要的编译环境。

(3)SIL2/SIL3安全级别


X-CUBE-STL符合IEC 61508 SIL3 标准,所声称达到的诊断覆盖率都经过了ST独有的故障注入机制验证,并已经取得TÜV 莱茵认证,证书随自检库的压缩包提供。随自检库一起还提供了STL安全手册和用户指南,给用户提供在具体应用中使用该STL库的说明。该X-CUBE-STL 自检库也需要签NDA才能获得。
使用X-CUBE-STL 自检库,单个STM32最高可以满足SIL2的要求,要达到SIL3系统必须是两颗STM32的1OO2架构,保证当一颗MCU出现故障后,系统还可以正常工作。


除了最新推出的STM32L5, STM32WB和STM32MP1以外,其他的STM32系列基本都可以提供对应的安全文档(安全手册,FMEA,FMEDA)。X-CUBE-STL库现在已经支持五个STM32系列的MCU:F0,F3,F4,L4,G0。后续我们会陆续推出其他系列的X-CUBE-STL库并不断完善相关文档。

(4)以STM32F0为例


前面我们多次提到安全手册,FMEA等文档。这里以STM32F0为例,再为大家梳理一下STM32 SIL功能安全设计包中包含的五种文档:
- STM32F0系列安全手册,描述了如何在安全相关系统的背景下使用STM32F0系列微控制器,并说明了为达到目标安全完整性等级,可以实施的安全机制,以及如何去符合其他的安全标准的说明
- STM32F0自检库安全手册,包含了用户在安全相关系统里使用STL自检库的相关说明
- STM32F0自检库用户手册,介绍X-CUBE-STL-F0自检库的结构及API使用等
- FMEA,提供针对STM32F0系列的失效模式与影响分析
- FMEDA,提供对具体MCU型号进行的,在已经实施给定安全机制的条件下得到的失效率数据
这五个文档除了第一个STM32F0系列安全手册以外,其他的都需要联系MCU市场人员申请。

STM8A-SafeASIL 功能安全设计包
(1)总体说明


对于ISO26262标准,我们有STM8A-SafeASIL功能安全设计包,为使用STM8AF系列MCU进行开发的客户提供了支持,可以降低项目开发的成本和减少开发时间。现在STM8A-SafeASIL功能安全设计包中主要提供的是安全文档,通过该文档可以指导客户进行安全相关代码的开发。在明年3月左右,ST会推出更加详细的自检库实现规范,可以联系MCU市场人员申请。

(2)安全文档


STM8A-SafeASIL 安全文档也包括安全手册和FMEA,FMEDA报告。与STM32的安全手册一样,其中详细列出了在硬件层面,软件层面和应用层面可以采取的安全机制,支持使用 STM8AF的应用最高可以达到ISO 26262标准ASIL B等级的功能安全要求。FMEA对STM8AF的失效模式进行了分析,FMEDA中列出了在实施一定的安全检测措施的条件下,具体某个MCU型号的失效率数据。


同样安全手册可以从官网免费下载,而FMEA和FMEDA需要联系MCU市场人员申请。



STM 32 和 STM 8 ClassB功能安全设计包


最后给大家介绍的是 STM32 和 STM8 ClassB功能安全设计包,该设计包针对适用于家用电器领域的IEC60335-1和IEC60730-1标准。源码提供已被IEC, UL, CSA等机构认证过的自检库。在STM32的软件包中还提供基于IAR, KEIL, SW4STM32等三个IDE的例程供用户参考。

(1)ClassB 功能安全设计包


如上表所列,ClassB 功能安全设计包有三个:
- X-CUBE-CLASSB,基于STM32CubeHAL驱动,支持表中列出的所有STM32 MCU系列。其中STM32H7 ,G0 ,G4 ,WB 在v2.3.0版本中支持,其他的系列在v2.2.0版本中支持。X-CUBE-CLASSB中的自检库通过UL认证,同时符合IEC/UL/CSA 60730-1和60335-1标准;
- STM32-CLASSB-SPL, 基于STM32标准外设库,STM32F0,F1,F3这三个系列提供认证过的软件库,STM32F2,F4,L1的软件库由前三个派生而来;
- STM8-SafeCLASSB,针对STM8的产品。
其中STM32-CLASSB-SPL和STM8-SafeCLASSB中的自检库都通过了VDE认证,符合IEC60730-1和60335-1标准。

(2)ClassB 安全手册


前面提到的三个ClassB 功能安全设计包,分别各对应一个应用笔记,为STM32和STM8用户使用其中的软件库提供指导和说明。


STM32和STM8 MCU的功能安全设计包


从上面这张图,我们可以看到所有STM32和STM8 MCU的功能安全设计包的支持情况。以上所有的功能安全自检库都符合MISRA-C规范。



应用笔记



除了前面提到的安全手册和软件包用户指南以外,还有一些应用笔记在开发安全相关代码时可以参考。例如AN4750中就针对STM32应用中的软错误(可恢复的随机失效)的处理方法进行了详细说明。AN4187,AN5342,AN4838分别对STM32微控制器的CRC, 存储器ECC保护功能和MPU进行了说明。设备运行环境的电磁干扰也会造成随机的硬件故障,所以我们在设计硬件时需要尽可能提高设备的电磁兼容性,关于这部分可以参考AN1015,AN1709和AN2860这三篇应用笔记。




本期总结



本文我们主要给大家介绍了关于功能安全,ST为开发者提供了什么资源。如果大家想了解具体实施的细节,除了前面提到的这些英文资料外,我们还有一个中文的关于STM32 ClassB软件库的培训材料,大家可以到www.stmcu.com.cn中文网站下载,或者登陆AI电堂观看视频。


另外还有两篇我们本地FAE写的实战经验(LAT),一篇是针对大家经常会遇到的如何在IAR和KEIL中计算程序的CRC值的问题,一篇是关于如何将X-CUBE-CLASSB的代码移植到客户自己的工程中去。这两篇文档也可以在我们的中文官网下载到。


谢谢大家的关注,后面我们还会继续在更多的MCU系列上提供功能安全设计包,以及给开发者们更详细的指导资料,敬请期待!