LAT1491 STM32N6 的 FSBL 基本流程介绍
详细查看:LAT1491 STM32N6的FSBL基本流程介绍
关键字:STM32N6,FSBL,Boot
LAT1491 – Rev 1.0 – Jan. 2025
1. 简介
STM32N6 是 ST 第一颗带 NPU 的 MCU 芯片,片内仅有小块 ROM 用于第一阶段 Boot,必须通过外部 Flash 存储用户代码 或USB/U (S) ART 串口 实现启动。同时 STM32N6 工程引入了 FSBL 等新术语,本文将介绍其基本启动步骤,重点讲解 FSBL 相关内容。
2. 启动模式
STM32N6 DK 板的BOOT1 引脚 决定两种核心启动模式,Boot0 为辅助配置引脚:

- Flash boot/Serial boot :BOOT1=L (VSS)、BOOT0=L (VSS),上电后 BootROM 程序从外部 Flash 尝试启动,需将应用程序下载至外部 Flash,无应用则无法启动。
- Dev boot :BOOT1=H (VDDIO)、BOOT0=X(任意),上电后 BootROM 程序从内部 Ram 中启动,适用于开发调试阶段。
3. 启动流程和工程框架
3.1 FSBL 基础启动(仅 FSBL 工程)
FSBL 全称为First Stage Boot Loader(第一阶段启动加载程序) ,是 STM32N6 启动的核心环节,外部 Flash 启动流程如下:

- 上电后先执行片内 ROM 的 BootROM 程序,首先验证 FSBL 的 1024Byte 头部信息 (Header),FSBL 程序必须通过 ST 脚本签名,否则无法正常启动;
- 头部验证成功后,BootROM 将 FSBL 程序搬运至内部 SRAM2 的 0x34180000 地址 ;
- 程序计数器 PC 跳转到 0x34180000,开始执行 FSBL。
注 :该模式下应用程序可直接集成在 FSBL 工程中,由 FSBL 直接执行。
3.2 FSBL+Load&Run 模式
适用于应用程序开发完成后,需将程序下载至外部 Flash,启动时由 FSBL 加载至内部 SRAM 执行,流程如下:
- 与纯 FSBL 模式一致,BootROM 完成 FSBL 的校验、搬运并跳转到 FSBL 执行;
- FSBL 将外部 Flash 中APP 的代码和数据完整拷贝至内部 SRAM ;
- PC 指针跳转到 APP 代码起始地址,开始执行应用程序。

3.3 FSBL+XiP (Execute in Place) 模式

XiP 为原地执行 ,应用程序无需拷贝至内部 SRAM,直接在外部 Flash 中运行,节省 SRAM 空间,流程如下:
- BootROM 完成 FSBL 的校验、搬运并跳转到 FSBL 执行;
- FSBL 将外部 Flash 配置为 XiP 模式 ,完成配置后 PC 指针直接跳转到外部 Flash 中 APP 的第一条指令;
- 应用程序在外部 Flash 中直接启动并执行。
3.4 ST FSBL 签名工具
FSBL 必须经过签名才能被 BootROM 验证通过,签名前需完成准备工作并根据芯片 Cut 版本执行对应命令:
准备工作
- 安装 ST 最新版 CubeProgrammer;
- 将
STM32MP_SigningTool_CLI.exe的路径加入 Windows 系统 PATH 环境变量,确保可全局调用。
芯片 Cut 版本区分
通过芯片 Rev Code 区分:Rev code Z=Cut 1.1、Rev code B=Cut 2.0。
签名命令

-
Cut1.1 :
plaintext
STM32MP_SigningTool_CLI.exe -bin FSBL.bin -nk -of 0x80000000 -t fsbl -o FSBLtrusted.bin -hv 2.1 -dump FSBL-trusted.bin
-
Cut2.0 :
plaintext
STM32MP_SigningTool_CLI.exe -bin FSBL.bin -nk -of 0x80000000 -t fsbl -o FSBLtrusted.bin -hv 2.3 -dump FSBL-trusted.bin
命令参数说明
表格
| 参数 |
含义 |
| -bin |
待签名的原始 FSBL.bin 文件 |
| -nk |
不使用密钥相关配置(no keys) |
| -of |
选项标志(option flags) |
| -t |
指定 bin 文件类型为 fsbl |
| -o |
签名后的输出文件 |
| -hv |
头部版本号(header version) |
| -dump |
导出 bin 文件的 header 信息,便于查看 |
输出结果 :FSBL-trusted.bin为完成签名并添加头部的可启动文件。
3.5 启动框架选择总结
BootROM 对 FSBL 的搬运存在512K 字节的大小限制 ,因此框架选择需遵循以下原则:
- 若应用程序 + FSBL 整体大小≤512K,可直接集成在一个 FSBL 工程中,采用 3.1 的纯 FSBL 模式;
- 若整体大小>512K,必须采用FSBL+Load&Run 或FSBL+XiP 模式,将应用程序与 FSBL 分离存储。

4. 开发流程(以 IAR+STM32N6 DK 板为例)
以 SDK 中Projects\STM32N6570-DK\Examples\UART\UART_HyperTerminal_ITdemo 为例,该 demo 为纯 FSBL 工程架构 (应用与 FSBL 集成),开发流程如下:
4.1 进入 Development 模式(Dev 模式)
Dev 模式用于开发调试,BootROM 直接执行内部 RAM 中的代码,不同开发板的进入方式:

- STM32N6 DK 板 :BOOT1 拨至高电平(H),BOOT0 为任意电平;
- Nucleo 板 :JP2 (Boot1) 接 2-3(上),JP1 (Boot0) 接 1-2(下)。
4.2 项目选项配置
- Device 确认 :在 IAR 项目选项中,确保 Device 选择为
ST STM32N6570-DK,内核为 Cortex-M55,若无相关选项需先安装 STM32N6 补丁;

- ST-LINK 配置 :调试器选择 ST-LINK,接口为 SWD,接口速度建议 2.0MHz,目标供电为 3.3V;
- Output 设置 :输出格式选择
Raw binary,生成 bin 格式文件,便于后续签名;
- Debugger 设置 :指定 STM32N6 的设备描述文件,确保调试正常。
4.3 工程编译
- 确认开发工具补丁已安装:IAR/Keil 需安装 STM32N6 专属补丁包,CubeIDE 需更新至最新版本;
- 补丁包位置:SDK 的
STM32Cube_FW_N6_V0.5.0 > Utilities > PC_Software目录下,包含 IAR、Keil 对应的补丁;

- 选择默认编译选项,执行编译,生成 bin/hex 文件。
4.4 开发调试
-
FSBL 工程在调试阶段无需签名 ,直接通过 IAR 下载至内部 RAM;

-
调试器 Reset 方式设置为Software ,否则无法正常调试;
-
重新下载程序并启动调试,运行后程序可通过串口正常打印信息,完成开发调试。
4.5 烧录程序到外部 Flash
调试完成后,需将签名后的 FSBL 程序烧录至外部 Flash,烧录依赖External loader (DK 板 / Nucleo 板自带,自定义开发板需自行开发)。
前提条件
- 开发板保持Dev 模式 ;
- 对 FSBL.bin 进行签名,生成
FSBL-trusted.bin(参考 3.4);

- 配置环境变量:将 External loader 路径设为 DKEL,同时将
STM32_Programmer_CLI目录加入系统 PATH。
4.5.1 命令行烧录
Linux 系统 :
plaintext
STM32_Programmer_CLI -c port=SWD mode=HOTPLUG ap=1 -el $DKEL -hardRst -w FSBL-trusted.bin 0x70000000
Windows 系统 :
plaintext
STM32_Programmer_CLI -c port=SWD mode=HOTPLUG ap=1 -el %DKEL% -hardRst -w FSBL-trusted.bin 0x70000000
关键注意 :建议直接烧录 bin 文件并指定0x70000000 外部 Flash 地址,工程编译的 hex 文件默认地址为内部 RAM,直接烧录会失败。
4.5.2 CubeProgrammer 图形化烧录
-
开发板保持 Dev 模式,打开 CubeProgrammer,选择 SWD 端口、Hot plug 模式,连接设备;

-
在 External loaders 中选择 STM32N6 DK 板对应的 loader;


-
选择烧录文件:烧录 bin 文件需手动指定地址0x70000000,烧录 hex 文件需先修改其地址配置;
-
执行擦除并烧录操作。
4.6 切换至 Flash 启动并重启

- 启动模式切换
- DK 板:BOOT1 拨至低电平(L),BOOT0 拨至低电平(L);
- Nucleo 板:JP2 (Boot1) 接 1-2(下),JP1 (Boot0) 接 1-2(下)。
- 重启开发板,BootROM 将从外部 Flash 加载并执行签名后的 FSBL 程序,程序可正常运行;
- Cut1.1 版本调试 :Flash 启动模式下未关闭调试口,可通过 IAR 的
Attach to Running Target功能,对运行中的程序进行在线调试。