你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】LAT1491 STM32N6 的 FSBL 基本流程介绍

[复制链接]
攻城狮Melo 发布时间:2026-3-2 14:08

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 为辅助配置引脚: image.png

  • 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 启动流程如下: image.png

  1. 上电后先执行片内 ROM 的 BootROM 程序,首先验证 FSBL 的 1024Byte 头部信息 (Header),FSBL 程序必须通过 ST 脚本签名,否则无法正常启动;
  2. 头部验证成功后,BootROM 将 FSBL 程序搬运至内部 SRAM2 的 0x34180000 地址
  3. 程序计数器 PC 跳转到 0x34180000,开始执行 FSBL。

:该模式下应用程序可直接集成在 FSBL 工程中,由 FSBL 直接执行。

3.2 FSBL+Load&Run 模式

适用于应用程序开发完成后,需将程序下载至外部 Flash,启动时由 FSBL 加载至内部 SRAM 执行,流程如下:

  1. 与纯 FSBL 模式一致,BootROM 完成 FSBL 的校验、搬运并跳转到 FSBL 执行;
  2. FSBL 将外部 Flash 中APP 的代码和数据完整拷贝至内部 SRAM
  3. PC 指针跳转到 APP 代码起始地址,开始执行应用程序。 image.png

3.3 FSBL+XiP (Execute in Place) 模式

image.png

XiP 为原地执行 ,应用程序无需拷贝至内部 SRAM,直接在外部 Flash 中运行,节省 SRAM 空间,流程如下:

  1. BootROM 完成 FSBL 的校验、搬运并跳转到 FSBL 执行;
  2. FSBL 将外部 Flash 配置为 XiP 模式 ,完成配置后 PC 指针直接跳转到外部 Flash 中 APP 的第一条指令;
  3. 应用程序在外部 Flash 中直接启动并执行。

3.4 ST FSBL 签名工具

FSBL 必须经过签名才能被 BootROM 验证通过,签名前需完成准备工作并根据芯片 Cut 版本执行对应命令:

准备工作

  1. 安装 ST 最新版 CubeProgrammer;
  2. STM32MP_SigningTool_CLI.exe的路径加入 Windows 系统 PATH 环境变量,确保可全局调用。

芯片 Cut 版本区分

通过芯片 Rev Code 区分:Rev code Z=Cut 1.1、Rev code B=Cut 2.0。

签名命令

image.png

  • 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 字节的大小限制 ,因此框架选择需遵循以下原则:

  1. 若应用程序 + FSBL 整体大小≤512K,可直接集成在一个 FSBL 工程中,采用 3.1 的纯 FSBL 模式;
  2. 若整体大小>512K,必须采用FSBL+Load&RunFSBL+XiP 模式,将应用程序与 FSBL 分离存储。 image.png

4. 开发流程(以 IAR+STM32N6 DK 板为例)

以 SDK 中Projects\STM32N6570-DK\Examples\UART\UART_HyperTerminal_ITdemo 为例,该 demo 为纯 FSBL 工程架构 (应用与 FSBL 集成),开发流程如下:

4.1 进入 Development 模式(Dev 模式)

Dev 模式用于开发调试,BootROM 直接执行内部 RAM 中的代码,不同开发板的进入方式: image.png image.png

  • STM32N6 DK 板 :BOOT1 拨至高电平(H),BOOT0 为任意电平;
  • Nucleo 板 :JP2 (Boot1) 接 2-3(上),JP1 (Boot0) 接 1-2(下)。

4.2 项目选项配置

  1. Device 确认 :在 IAR 项目选项中,确保 Device 选择为ST STM32N6570-DK,内核为 Cortex-M55,若无相关选项需先安装 STM32N6 补丁; image.png image.png image.png image.png
  2. ST-LINK 配置 :调试器选择 ST-LINK,接口为 SWD,接口速度建议 2.0MHz,目标供电为 3.3V;
  3. Output 设置 :输出格式选择Raw binary,生成 bin 格式文件,便于后续签名;
  4. Debugger 设置 :指定 STM32N6 的设备描述文件,确保调试正常。

4.3 工程编译

  1. 确认开发工具补丁已安装:IAR/Keil 需安装 STM32N6 专属补丁包,CubeIDE 需更新至最新版本;
  2. 补丁包位置:SDK 的STM32Cube_FW_N6_V0.5.0 > Utilities > PC_Software目录下,包含 IAR、Keil 对应的补丁; image.png
  3. 选择默认编译选项,执行编译,生成 bin/hex 文件。

4.4 开发调试

  1. FSBL 工程在调试阶段无需签名 ,直接通过 IAR 下载至内部 RAM; image.png

  2. 调试器 Reset 方式设置为Software ,否则无法正常调试;

  3. 重新下载程序并启动调试,运行后程序可通过串口正常打印信息,完成开发调试。

4.5 烧录程序到外部 Flash

调试完成后,需将签名后的 FSBL 程序烧录至外部 Flash,烧录依赖External loader (DK 板 / Nucleo 板自带,自定义开发板需自行开发)。

前提条件

  1. 开发板保持Dev 模式
  2. 对 FSBL.bin 进行签名,生成FSBL-trusted.bin(参考 3.4); image.png
  3. 配置环境变量:将 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 图形化烧录

  1. 开发板保持 Dev 模式,打开 CubeProgrammer,选择 SWD 端口、Hot plug 模式,连接设备; image.png

  2. 在 External loaders 中选择 STM32N6 DK 板对应的 loader; image.png

    image.png image.png

  3. 选择烧录文件:烧录 bin 文件需手动指定地址0x70000000,烧录 hex 文件需先修改其地址配置;

  4. 执行擦除并烧录操作。

4.6 切换至 Flash 启动并重启

image.png image.png image.png

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

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版