[i=s] 本帖最后由 sgf201 于 2025-5-17 23:42 编辑 [/i]<br />
<br />
[i=s] 本帖最后由 sgf201 于 2025-5-17 23:16 编辑 [/i]
SBSFU介绍
SBSFU(安全启动与安全固件升级)就像给智能设备装了一个“智能保镖”,从硬件底层开始全程守护设备的“生命线”——每次开机时,它像严格的安检员一样验证系统是否被篡改,只有通过官方数字签名认证的固件才能运行,否则直接拒绝启动;当设备进行固件升级时,它又化身“加密快递员”,用高强度加密算法保护传输通道,并用数字签名印章确保下载的固件来自可信来源,一旦升级失败还能自动回滚到旧版本避免设备变砖;更关键的是,它通过物理级防护手段(如熔断机制、密钥保险箱)抵御拆机调试、电磁攻击等物理入侵,甚至能在检测到危险时主动销毁敏感数据。无论是你深夜使用的智能手表、车载导航系统,还是医院里的医疗设备,SBSFU都在幕后默默验证每一行代码的合法性,让黑客无法通过伪造固件窃取数据、劫持功能或破坏核心服务,最终让普通用户无需专业知识就能享受“零接触”的设备安全防护。
STM32F413作为Cortex-M4内核高性能MCU,其安全架构为SBSFU提供了关键硬件支撑:
- 双Bank Flash分区机制:支持安全区(Bank1)与用户区(Bank2)物理隔离,实现固件冗余存储与回滚保护
- 加密加速引擎:集成AES-256硬件模块,支持固件加密存储与安全通信(支持GCM模式完整性校验)
- 安全存储区:专用BootROM区域(0x1FF00000-0x1FF03FFF)存放根密钥,配合CRYP模块实现密钥动态管理
- 安全调试接口:通过Option Bytes配置WP(写保护)与RDP(读保护)级别,禁用非法调试访问
STM32F413尝试


当开发板到手后,我第一时间体验了其内置的语音识别Demo——对着麦克风说出指令时,设备竟能精准识别并触发对应功能,这种即时交互的流畅感让我印象深刻。然而当我试图深入研究时,却遇到了阻碍:在技术论坛和用户群里反复搜索,始终找不到完整的Demo源码,仅能从零散的代码片段中拼凑逻辑。有经验丰富的开发者建议使用STM32CubeMX工具直接生成语音识别Demo,可生成的代码却缺失了关键的语音特征提取模块和云端通信接口,编译后下载到板子时,屏幕仅显示了基础UI界面,核心功能始终无法正常运作。虽然这份不完整的代码让我一度陷入困惑,但考虑到本次项目的核心目标是探索SBSFU安全框架的落地实践,我决定暂时搁置语音模块的调试——毕竟SBSFU的防篡改启动验证、双镜像OTA升级机制以及密钥动态管理功能,才是保障物联网设备安全的基石。接下来,深入理解X-CUBE-SBSFU扩展包中安全引导加载程序与固件加密服务的协同机制,先不纠结默认的demo应用了。
最上边的图片是截图的坛友的图片,我未拍照
SBSFU工程创建与编译
从官网下载SBSFU的包,当然简易也下载好STM32的全家桶,cube ide programer
   
解压第一个压缩包后,在ide中创建一个ws,这里就不再截图了,在ws中导入SBSFU的工程

我选择的是单镜像的工程,按下面的顺序进行编译




安全启动程序下载与运行
三个工程中bin的工程不用下载,它会被包含到SBSFU的bin中,SBSFU可以直接使用STlink下载,下载后将启动安全,只能使用串口下载真正的app固件。
打开programer




下载se.bin与SBSFU.elf后在stlink的串口上未见到打印。
使用stlink调试发现代码已经在等待Ymodel协议下载应用了

看来板子的下载串口并未接入到stlink的串口上,且板子的另一个USB口是OTG口,不是串口,需要找出F413的串口,使用外部的串口助手进行数据下载。
最终未在板上找到串口的位置,后续查找到位置后再继续更新
串口修改
查找sch发现有引出的只有USART7,如下图:

修改SBSFU中使用的串口到USART7
查看SBSFU使用的串口1
修改串口如下:

修改为uart7后,UART发送卡住,UART与USART并不相同,UART7的初始化与USART1看来是有区别的

|