
代码拉取:git clone https://gitcode.com/u012988644/stm32u5-sbsfu-release.git一修改 LED 引脚并通过 Loader OTA 升级修改 LED2 引脚为 PC7原工程 LED2 默认引脚与 NUCLEO-U575ZI-Q 板载 LED2绿灯PC7不符在SBSFU_Appli_NonSecure中修改引脚定义// 将 LED2 引脚改为 PC7#defineLED2_PinGPIO_PIN_7#defineLED2_GPIO_PortGPIOC#defineLED2_CLK_ENABLE()__HAL_RCC_GPIOC_CLK_ENABLE()修改完成后重新编译SBSFU_AppliS NS 子工程生成新的签名镜像。进入 Loader 模式按住开发板 User 按键蓝色按键不松按下复位按钮后松开等待串口输出 Loader 菜单 (C) COPYRIGHT 2021 STMicroelectronics LOCAL LOADER New Fw Image Reset to trigger Installation ------------------------- 1 Download App Image ------------------------------------ 2通过 Ymodem 更新固件串口工具选择菜单项2进入固件下载等待状态使用支持 Ymodem 协议的串口工具如 Tera TermFile→Transfer→YMODEM→Send发送编译产物中签名后的镜像文件SBSFU_Appli/Binary/sbsfu_app_sign.bin注意发送的必须是经postbuild.sh签名打包后的.bin不能直接发送原始.elf。传输完成后输入2开发板自动复位BL2 验证新镜像签名通过后跳转启动输入2, LED2PC7正常亮灭了。✅ Main Menu Test Protections -------------------------------------- 1 Toggle Secure LED ------------------------------------- 2 Selection :关于MCUBOOT_PRIMARY_ONLY与 App 菜单选项 3App 菜单只有选项 1 和 2选项 3New Fw Image被编译宏屏蔽// SBSFU_Appli/NonSecure/Src/main.c#if!defined(MCUBOOT_PRIMARY_ONLY)printf( New Fw Image ------------------------------------------ 3\r\n\n);#endifMCUBOOT_PRIMARY_ONLY的含义MCUBoot 支持两种 Flash 槽布局模式Flash 布局升级方式默认双槽Primary slot运行 Secondary slot暂存App 内下载到 SecondaryBL2 负责 swap/overwrite 到 PrimaryMCUBOOT_PRIMARY_ONLY单槽只有 Primary slot直接写入 Primary无槽交换本工程启用了MCUBOOT_PRIMARY_ONLY因此没有 Secondary slot节省约一半 Flash 空间BL2 不做槽交换启动流程更简单App 内的固件下载功能选项 3 及整个fw_update_app.c被#if !defined(MCUBOOT_PRIMARY_ONLY)整体编译掉升级只能通过 Loader 模式按住 User 键复位进入 Loader由 Loader 直接将新固件写入 Primary slotBL2 验证签名后启动二开启双槽模式开放 App 内 OTA 升级菜单选项 3背景原工程启用了MCUBOOT_PRIMARY_ONLY导致 App 菜单选项 3New Fw Image被编译宏整体屏蔽只能通过 Loader 模式升级固件。注释掉该宏后切换为双槽 overwrite 模式App 内即可直接通过 Ymodem 下载新固件。修改Linker/flash_layout.h// 注释掉 MCUBOOT_PRIMARY_ONLY切换为双槽模式/* #define MCUBOOT_PRIMARY_ONLY */MCUBOOT_OVERWRITE_ONLY保持不变组合为双槽 overwrite 模式Primary slot运行当前固件Secondary slot接收新固件BL2 直接用 Secondary 覆盖 Primary无需 swap/confirm 机制Flash 空间变化去掉MCUBOOT_PRIMARY_ONLY后FLASH_NS_PARTITION_SIZE从 1.25 MB 缩减到 640 KB需为 Secondary slot 留出空间// flash_layout.h#if!defined(MCUBOOT_PRIMARY_ONLY)#defineFLASH_NS_PARTITION_SIZE(0xA0000)/* 640 KB双槽各一份 */#else#defineFLASH_NS_PARTITION_SIZE(0x140000)/* 1.25 MB单槽独占 */#endifSTM32U575 Flash 共 2 MB空间分配验证区域大小BL2~128 KBLoader~40 KBPrimary slotS 24KB NS 640KB664 KBSecondary slotS 24KB NS 640KB664 KB合计~1496 KB ✅重新编译与烧录依次编译SBSFU_Boot → SBSFU_AppliS NS→ SBSFU_Loader重新烧录regression.sh → SBSFU_UPDATE.sh升级流程App 内 OTA启动后 App 菜单新增选项 3 Main Menu Test Protections -------------------------------------- 1 Toggle Secure LED ------------------------------------- 2 New Fw Image ------------------------------------------ 3 Selection :选择3进入固件下载子菜单选择2通过 Ymodem 发送签名镜像下载完成后复位BL2 验证并覆盖安装新固件。