STMCU小助手
发布时间:2022-7-19 16:00
|
引言& o0 s! A- C# L6 i0 I' l% I/ e( B X-CUBE-SBSFU安全启动和安全固件更新解决方案允许使用新固件版本更新STM32微控制器内置程序、添加新功能并更正潜在问题。更新过程以安全方式执行,以防止未经授权的更新以及访问设备上的机密数据。. C$ `* n% l; z8 k9 L; u9 l) A 安全启动(可信根服务)是一种不可变代码,总是在系统复位后执行。它检查STM32静态保护、激活STM32运行时保护措施,然后在每次执行前验证应用程序代码的真实性和完整性,以确保无效或恶意代码不能运行。) n7 d; q1 n3 F1 X/ `* R 安全固件更新应用程序通过使用Ymodem协议的UART接口接收固件镜像。它会在安装代码之前检查其真实性和完整性。固件更新可更新整个固件镜像,或者部分镜像。示例代码可灵活配置, 可配置使用对称或非对称加密方案,采用明文或密文方案。工程以两种方案提供: •单固件镜像配置,以使固件镜像尺寸最大化- Q% A/ A) ^; Z4 s- e9 i •双固件镜像配置,以确保安全镜像安装,并启用物联网器件中常用的OTA固件更新功能。 安全密钥管理服务通过PKCS #11 API(基于KEY ID的API)向用户应用程序提供加密服务,这些API在受保护和隔离的环境中执行。用户应用程序密钥存储在受保护和隔离的环境中,以便进行安全更新:真实性检查、数据解密和数据完整性检查。6 H" M o, x6 ?0 P STSAFE-A100是一种防篡改安全元件(通过硬件通用标准EAL5+认证),用于托管X509证书和密钥,并在安全启动和安全固件更新过程中执行用于固件镜像身份确认的验证。 X-CUBE-SBSFU用户手册(UM2262)讲解X-CUBE-SBSFU入门知识并详细介绍SBSFU功能。该应用笔记描述了如何调整X-CUBE-SBSFU并将其与用户应用程序集成;它回答了诸如以下问题: • 如何将X-CUBE-SBSFU移植到另一块板? • 如何根据用户的需求微调X-CUBE-SBSFU配置?5 P. w I) G2 P. u1 z1 V0 }% M • 如何生成新的固件加密密钥?+ k- O; E6 T. P* Q. ?+ j. B; T7 n • 如何调试X-CUBE-SBSFU? • 如何调整SBSFU? • 如何调整用户的应用程序?: N1 Z @9 s0 V% l 注: 在该应用笔记中,使用IAR™EWARM IDE作为示例,为项目配置提供指南。安全启动和安全 固件更新应用程序被称为SBSFU。8 w7 Y% S+ Y/ F, P* H: d 1 概述; t2 o0 j, H9 A$ _- Z6 U2 m. X' J/ h 表 1和表 2给出了相关缩略语和术语的定义,帮助您更好地理解本文档。 ; J) [3 r- Q+ f# p3 F) z. J: f7 a
7 t5 J# }4 ?0 v- Q: `: D# x7 W X-CUBE-SBSFU安全启动和安全固件更新扩展包可在基于Arm®(a) Cortex®-M处理器的STM32 32位微控制器上运行。 ; {2 H% Y; M) ] . M; a" j4 c/ [; _' F& F; y 2 相关文档 1. 面向STM32H7系列的STM32CubeH7入门(UM2204)+ b, A. f6 W; d' \$ E; ` 2. 面向STM32G4系列的STM32CubeG4入门(UM2492)! ]1 H& F% B/ F' }5 [4 H 3. 面向STM32L0系列的STM32CubeL入门(UM1754) 4. 面向STM32L1系列的STM32CubeL1 MCU软件包入门(UM1802) 5. 面向STM32WB系列的STM32CubeWB入门(UM2550)% a1 O; j8 D" [8 |& Q } 6. 适用于STM32L4系列和STM32L4+系列的STM32CubeL4入门用户手册(UM1860); o/ X" _* [0 q! B( F+ G 7. 适用于STM32F4系列的STM32CubeF4 MCU软件包入门用户手册(UM1730)# F3 n9 r2 k; F$ t" i; o. m$ A9 v 8. 适用于STM32F7系列的STM32CubeF7 MCU软件包入门用户手册(UM1891) 9. 适用于STM32G0系列的STM32CubeG0入门用户手册(UM2303) 10. X-CUBE-SBSFU STM32Cube扩展包入门用户手册(UM2262)' {5 P( |1 x: l# u8 b$ [+ `& Q: x 11. STM32Cube扩展包开发指南用户手册(UM2285)9 r4 {4 E3 `3 f( f 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)。4 v/ K8 V; D- `$ L a. Arm是Arm Limited(或其子公司)在美国和或其他地区的注册商标。# h0 o6 \' C9 r3 j$ Q+ m$ | 4 U. [0 o: Z* q 3移植X-CUBE-SBSFU到另一块板上9 g) Y* `" F8 D. Z) _1 _! X X-CUBE-SBSFU补充了STM32Cube™软件技术,使不同STM32微控制器之间更易移植。7 W. Q: t% Q5 w; u 它附带一组在给定的STM32板上实现的示例,可作为有用的起点将X-CUBE-SBSFU移植到另一块STM32板。本文档中将NUCLEO-L476RG和NUCLEO-L432KC板作为示例。2 ]* k: u) t m; k! v6 w } 3.1硬件适应 需要进行一些更改,以使X-CUBE-SBSFU适应另一块板: 1. GPIO配置,用于与主机PC进行UART通信(在文件sfu_low_level.h中) 2. Flash配置:NUCLEO-L432KC 给出了单存储区Flash接口的例子,而NUCLEOL476RG则基于双存储区(在文件sfu_low_level.c中), f8 y! B& }6 e1 F, ] 3. 按钮配置:NUCLEO-L476RG给出了基于按钮的例子,而NUCLEO-L432KC使用GPIO模拟虚拟按钮(在文件app_hw.h中), `/ h. l. ?5 W& E2 n' c/ N 4. Tamper GPIO引脚配置(在文件sfu_low_level_security.h中) 5. DAP - 调试端口配置(在文件sfu_low_level_security.h中)5 n( \9 `" T w% V* ? 6. I2C总线配置,用于与STSAFE-A100进行通信(在文件stsafea_service_interface.c of B-L475E-IOT01A\Applications\2_Images_STSAFE\2_Images_SECoreBin中)。 图 1显示SBSFU项目结构,以及期望移植更改的文件位置。 M) w' H+ Q# N( i
/ [4 M- C" D! x; Q- R, m6 ` 4 V' x; Z4 Q8 ?, m l 3.2内存映射定义6 U6 t% k! Q, @" k1 E& v+ \. h4 m3 j' D 正如X-CUBE-SBSFU用户手册(参见[5])中所强调,一个关键因素是器件闪存内所有元素的布局: •安全引擎:受保护的环境,以管理所有关键数据和操作。. c. s% X2 x* d( B# j [5 ? •SBSFU:安全启动和安全固件更新流程 •插槽 #0:该插槽包含了活动固件(固件头文件+固件)。 •插槽 #1:此插槽用于存储下载的固件(固件头文件+加密固件),以便在下次重启时安装。 •交换区:用来在安装过程中交换插槽#0和插槽#1的内容的Flash区域。 图 2通过NUCLEO-L476RG示例讲解闪存映射 - C5 l/ U7 c9 t( w Z
三个项目(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应用程序当添加更多代码后,每个区域可能要做相应的扩展,或者转移到另一个位置,这些都是允许的,只要最终的设置满足应用的安全需求。 2 h+ Z: o. N: X7 E k! ~2 t
' |8 t* K/ f7 M; K 完整版请查看:附件 ) n& ^8 ]% L$ n . e9 {5 n' _7 Q* M/ q: v |
DM00414677_ZHV1.pdf
下载2.44 MB, 下载次数: 39
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
《MCUBoot课程》学习笔记+从信任链原理到量产实践
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
好用软件推荐-TouchGFX Designer
HRTIM 指南
微信公众号
手机版