安全操作系统Flexible Safety RTOS提供了空间隔离保护,简化安全产品的设计,其安全插件可帮助用户安全团队提高微控制器诊断覆盖率。
集成了Flexible Safety RTOS及其安全插件(PFM程序流监控、E2E安全通信、CRC校验)的关键应用中,为满足产品认证需求,还需执行一系列的自测试工作。针对STM32平台,厂商提供了X-CUBE-STL(STM32预认证功能安全包,实现了IEC 61508安全完整性等级(SIL2/3)认证)
ST提供的安全手册列出了单片机安全分析中应考虑的硬件、软件和应用层安全要求。部分Flexible Safety RTOS和Safety Addon安全插件已涵盖的安全要求如下:
CPU_SM_1 -应用软件中的控制流监控由PFM实现
CPU_SM_4 -应用软件的堆栈强化由安全插件E2E实现
MPU_SM_0 -MPU配置寄存器的周期性读回由Flexible Safety RTOS提供
FLASH_SM_0 -Flash的定期软件测试由STL或CRC模块实现
FLASH_SM_1 -应用软件中的控制流监控由PFM实现
RAM_SM_0 - SRAM内存的定期软件测试由STL完成
RAM_SM_2 -应用软件的堆栈强化由E2E实现
RAM_SM_3 -应用软件中与安全相关变量的信息冗余由E2E实现
RAM_SM_4 -应用软件中的控制流监控由PFM覆盖
RAM_SM_5 - RAM中应用软件的定期完整性测试由CRC覆盖
BUS_SM_1 -芯片内数据交换中的信息冗余由E2E覆盖
DMA_SM_1 -通过DMA传输的数据包的信息冗余由E2E实现
注意:应用中使用的外设接口(CAN, I2C, SPI, USB, ETH等)可能需要信息冗余技术。
如何在Flexible Safety RTOS的应用中集成X-CUBE-STL?
集成步骤
在使用Flexible Safety RTOS的系统中集成在X-CUBE-STL,需先将Flexible Safety RTOS示例包及安全插件模块解压到一个文件夹中,然后添加X-CUBE-STL,生成的文件结构如下:
现在,可以开始集成工作了。步骤如下:
将X-CUBE-STL添加到make过程
将所需的X-CUBE-STL段添加到链接过程中
为flash测试编写校验程序
在代码中集成和执行X-CUBE-STL
基于IAR编译器的具体操作如下:
Makefile
Embedded Office为项目提供了一个示例makefile文件,位于项目根目录中。Makefile描述了BSP、RTOS和安全插件的构建规则。现在我们需要将X-CUBE_STL集成到构建过程中。
添加STM32_Safety_STL源代码和头文件搜索路径:
添加链接的STL_Lib.a:
添加stl_user_param_template .c需要的编译器定义STM32F407xx,用于选择正确的硬件。
链接命令文件
与makefile类似,Embedded Office在示例根目录中提供了一个链接命令文件,该文件依赖于开发环境。IAR中链接文件扩展名为“.icf”。
在该文件中,我们为X-CUBE_STL内存测试添加了一个"backup_buffer_section":
注意:此段在RAM测试期间使用,因此RAM内容不会被破坏。
FLASH测试校验和
确保在下载应用程序时,同时下载flash测试的CRC校验和。校验和须存储在flash中。用户可以使STM32CubeProgrammer编程CRC。
使用Lauterbach Trace32调试器时,在脚本文件*.cmm中执行以下代码,计算CRC校验并将其放置到所需的位置:
示例应用
现在我们可以在应用中调用X-CUBE-STL测试函数。选择调用位置时,需考虑以下因素:
所有测试功能需要特权访问权限
测试函数在有限的时间内关闭中断
我们选择在hook函数调用测试功能:
注1:空闲任务堆栈必须足够大。参见STM32F4系列自测库用户指南了解所需的STL堆栈。
注2:上面的示例调用了所有STL演示。在实际项目中,仅需选择涵盖安全要求的测试。
注3:Flexible Safety RTOS的安全手册强制执行MPU配置的在线测试。
作为替代方案,可以在启动安全应用程序之前将一个或多个STL测试作为POST测试执行:
结论
STM32自测库与Flexible Safety RTOS和安全插件的集成为从事安全关键项目的软件开发人员提供了强大的解决方案。通过利用自测库的全面安全检查、实时故障检测和诊断报告功能,开发人员可以确保出色的功能安全性、可靠性,并符合行业法规。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !