
引言 X-CUBE-SBSFU安全启动和安全固件更新解决方案允许使用新固件版本更新STM32微控制器内置程序、添加新功能并更正潜在问题。更新过程以安全方式执行,以防止未经授权的更新以及访问设备上的机密数据。 安全启动(可信根服务)是一种不可变代码,总是在系统复位后执行。它检查STM32静态保护、激活STM32运行时保护措施,然后在每次执行前验证应用程序代码的真实性和完整性,以确保无效或恶意代码不能运行。 安全固件更新应用程序通过使用Ymodem协议的UART接口接收固件镜像。它会在安装代码之前检查其真实性和完整性。固件更新可更新整个固件镜像,或者部分镜像。示例代码可灵活配置, 可配置使用对称或非对称加密方案,采用明文或密文方案。工程以两种方案提供: •单固件镜像配置,以使固件镜像尺寸最大化 •双固件镜像配置,以确保安全镜像安装,并启用物联网器件中常用的OTA固件更新功能。 安全密钥管理服务通过PKCS #11 API(基于KEY ID的API)向用户应用程序提供加密服务,这些API在受保护和隔离的环境中执行。用户应用程序密钥存储在受保护和隔离的环境中,以便进行安全更新:真实性检查、数据解密和数据完整性检查。 STSAFE-A100是一种防篡改安全元件(通过硬件通用标准EAL5+认证),用于托管X509证书和密钥,并在安全启动和安全固件更新过程中执行用于固件镜像身份确认的验证。 X-CUBE-SBSFU用户手册(UM2262)讲解X-CUBE-SBSFU入门知识并详细介绍SBSFU功能。该应用笔记描述了如何调整X-CUBE-SBSFU并将其与用户应用程序集成;它回答了诸如以下问题: • 如何将X-CUBE-SBSFU移植到另一块板? • 如何根据用户的需求微调X-CUBE-SBSFU配置? • 如何生成新的固件加密密钥? • 如何调试X-CUBE-SBSFU? • 如何调整SBSFU? • 如何调整用户的应用程序? 注: 在该应用笔记中,使用IAR™EWARM IDE作为示例,为项目配置提供指南。安全启动和安全 固件更新应用程序被称为SBSFU。 1 概述 表 1和表 2给出了相关缩略语和术语的定义,帮助您更好地理解本文档。 ![]() ![]() X-CUBE-SBSFU安全启动和安全固件更新扩展包可在基于Arm®(a) Cortex®-M处理器的STM32 32位微控制器上运行。 2 相关文档 1. 面向STM32H7系列的STM32CubeH7入门(UM2204) 2. 面向STM32G4系列的STM32CubeG4入门(UM2492) 3. 面向STM32L0系列的STM32CubeL入门(UM1754) 4. 面向STM32L1系列的STM32CubeL1 MCU软件包入门(UM1802) 5. 面向STM32WB系列的STM32CubeWB入门(UM2550) 6. 适用于STM32L4系列和STM32L4+系列的STM32CubeL4入门用户手册(UM1860) 7. 适用于STM32F4系列的STM32CubeF4 MCU软件包入门用户手册(UM1730) 8. 适用于STM32F7系列的STM32CubeF7 MCU软件包入门用户手册(UM1891) 9. 适用于STM32G0系列的STM32CubeG0入门用户手册(UM2303) 10. X-CUBE-SBSFU STM32Cube扩展包入门用户手册(UM2262) 11. STM32Cube扩展包开发指南用户手册(UM2285) 12. STM32Cube扩展包开发清单用户手册(UM2312) 13. STM32CubeProgrammer 软件描述用户手册(UM2237) 14. STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex®-M4编程手册(PM0214) 15. STM32F7系列和STM32H7系列Cortex®-M7处理器编程手册(PM0253) 16. STM32L0系列和STM32G0系列Cortex®-M0+编程手册(PM0223) 17. 认证、最先进的外设安全措施、以及STSAFE-A100的物联网器件数据表(DS12911)。 a. Arm是Arm Limited(或其子公司)在美国和或其他地区的注册商标。 3移植X-CUBE-SBSFU到另一块板上 X-CUBE-SBSFU补充了STM32Cube™软件技术,使不同STM32微控制器之间更易移植。 它附带一组在给定的STM32板上实现的示例,可作为有用的起点将X-CUBE-SBSFU移植到另一块STM32板。本文档中将NUCLEO-L476RG和NUCLEO-L432KC板作为示例。 3.1硬件适应 需要进行一些更改,以使X-CUBE-SBSFU适应另一块板: 1. GPIO配置,用于与主机PC进行UART通信(在文件sfu_low_level.h中) 2. Flash配置:NUCLEO-L432KC 给出了单存储区Flash接口的例子,而NUCLEOL476RG则基于双存储区(在文件sfu_low_level.c中) 3. 按钮配置:NUCLEO-L476RG给出了基于按钮的例子,而NUCLEO-L432KC使用GPIO模拟虚拟按钮(在文件app_hw.h中) 4. Tamper GPIO引脚配置(在文件sfu_low_level_security.h中) 5. DAP - 调试端口配置(在文件sfu_low_level_security.h中) 6. I2C总线配置,用于与STSAFE-A100进行通信(在文件stsafea_service_interface.c of B-L475E-IOT01A\Applications\2_Images_STSAFE\2_Images_SECoreBin中)。 图 1显示SBSFU项目结构,以及期望移植更改的文件位置。 ![]() 3.2内存映射定义 正如X-CUBE-SBSFU用户手册(参见[5])中所强调,一个关键因素是器件闪存内所有元素的布局: •安全引擎:受保护的环境,以管理所有关键数据和操作。 •SBSFU:安全启动和安全固件更新流程 •插槽 #0:该插槽包含了活动固件(固件头文件+固件)。 •插槽 #1:此插槽用于存储下载的固件(固件头文件+加密固件),以便在下次重启时安装。 •交换区:用来在安装过程中交换插槽#0和插槽#1的内容的Flash区域。 图 2通过NUCLEO-L476RG示例讲解闪存映射 ![]() 三个项目(SECoreBin、SBSFU、UserApp)共享的链接器文件定义在Linker_Common文件夹中分组,如图 3中所示: •mapping_fwimg.icf:包含固件镜像定义,比如插槽 #0、插槽 #1、以及交换区 •Mapping_sbsfu.icf:contains:包含SBSFU定义,例如SE_Code_region、SE_Key_region、以及SE_IF_region •Mapping_export.h:从mapping_sbsfu.icf和mapping_fwimg.icf:从mapping_sbsfu.icf和mapping_fwimg.icf 导出符号到SBSFU应用程序当添加更多代码后,每个区域可能要做相应的扩展,或者转移到另一个位置,这些都是允许的,只要最终的设置满足应用的安全需求。 ![]() 完整版请查看:附件 |
DM00414677_ZHV1.pdf
下载2.44 MB, 下载次数: 39
STM32 GUI LTDC 最大像素时钟评估方法
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
OpenBLT移植到STM32F405开发板
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
STM32 以太网 MAC Loopback 的实现
刘氓兔的64位入门挑战【1】——MP257芯片下单和硬件准备
刘氓兔的64位入门挑战【0】——MP257选型
STM32功能安全设计包,助力产品功能安全认证