注:本文大部分内容参考ST中文社区LAT1491, 如果侵权,请联系作者,及时删除。
关键词:STM32N6、FSBL、签名、Bootmode、启动模式
参考链接:
- RM0486 STM32N647/657xx Arm®-based 32-bit MCUs
- DS14791 Arm® Cortex®-M55, ST Neural-ART Accelerator, H264 encoder, Neo-Chrom 2.5D GPU, 4.2 Mbyte-contiguous SRAM
- 【应用笔记】LAT1491 STM32N6的FSBL基本流程介绍
硬件:STM32N6750-DK CR1
文章目录
- 前言
- 一、N6的三种启动模式
- 二、FLASH模式启动流程
-
- [2.1 FSBL](#2.1 FSBL)
- [2.1 FSBL_Load&Run](#2.1 FSBL_Load&Run)
- [2.2 FSBL_XIP](#2.2 FSBL_XIP)
- 三、开发者模式
- 总结
前言
先来简单介绍一下STM32N6,
STM32N6基于运行频率达800 MHz的Arm® Cortex®-M55处理器,是首款引入Arm Helium向量处理技术的CPU,为标准CPU增添DSP处理能力。
STM32N6是首款内嵌意法半导体自主研发的神经处理单元 (NPU)------ST Neural-ART accelerator™的STM32 MCU,专为节能型边缘AI应用而设计。其时钟频率高达1 GHz,计算性能可达600 GOPS,可为计算机视觉和音频应用提供实时神经网络推理能力。
配备MIPI CSI-2接口和图像信号处理 (ISP) 的专用计算机视觉处理管线,确保兼容多种类型的摄像头。STM32N6还具有H264硬件编码器和NeoChrom™图形加速器,适用于功能丰富的产品开发。
它提供4.2 MB的连续嵌入式RAM,是神经网络或图形应用的理想选择,并辅以高速外部存储器接口(hexa-SPI、OCTOSPI、FMC)。
一、N6的三种启动模式
STM32N6有三种启动模式,分别是开发者模式启动、FLASH模式启动、串行启动。
FLASH启动 :如果选择 Flash 启动,则系统将从外部 Flash 加载程序固件。Flash 源选择将通过BOOTROM_CONFIG2 - OTP_WORD11[8:5] = boot_source(4 位)完成。可选择的FLASH类型有:
- XSPI serial NOR (in SPI mode, single)
- XSPI HyperFlash™ (8-bit)
- e.MMC™ SDMMC1 or e.MMC™ SDMMC2 (up to JEDEC v5.1)
- SD-Card SDMMC1 (up to SD standard v6.0)
串行模式启动 :如果选择串行启动,则系统则会从串行接口中加载程序固件。可以选择的类型有:USB启动、UART启动
开发者模式启动 :如果选择了Boot 1为1, 则处于开发者模式状态。此模式仅在MCU处于开发阶段可用。
这种模式下,上电后 BootROM 程序尝试从内部 Ram 中启动。一般用于开发调试阶段,方便开发者在内部 SRAM 中对程序进行调试,可快速验证代码逻辑和功能,减少对外部 Flash 的擦写次数,延长其使用寿命。
开发者模式MCU断电或者复位后,程序会丢失。
接下来,以STM32N6570-DK板为例,看一下如何选择这三种启动模式
Flash boot (Boot1 = 0, Boot0 = 0)意味着上电后,BootROM 程序(固化在片内ROM 的一小段启动程序)会尝试从外部Flash 启动,应用程序需要下载到外部Flash,如果没有应用则无法启动。Dev boot 意味着上电后,BootROM 程序尝试从内部Ram 中启动。
二、FLASH模式启动流程
需要对FSBL签名、APP签名,然后下载到N6开发板中。
FALSH模式可以从三种模式下启动,分别是FSBL、FSBL_Load&Run、FSBL_XIP方式。三种方式的区别可以看下面的详细解释。
2.1 FSBL
FSBL (First Stage Boot Loader):一级Boot Loader。
在上电后,先执行片内ROM区域的BootROM,然后根据Boot选项和地址,执行相应地址的FSBL。
参考下图实例为外部Flash的启动流程。
如上图,系统启动流程如下:
- BootROM启动后,会验证FSBL的头,如上图深黄色部分1024Bytes的Header信息,可以使用ST提供的脚本对FSBL进行签名,FSBL程序必须完成签名,不然无法正常启动。验证成功后,BootROM将FSBL程序搬运至内部SRAM2:0x34180000的位置,然后PC指针跳转过去开始执行FSBL。
- FSBL开始执行。
2.1 FSBL_Load&Run
APP的开发在内部的SRAM中调试完成,开发完成后通过External loader下载到外部Flash。
系统启动流程如下:
- BootROM先启动,然后校验,搬运FSBL,并跳转到FSBL。
- FSBL开始执行,然后拷贝Appli的完整内容到内部SRAM,包括data和code。然后跳转到APP代码进行执行。
- APP代码开始执行。
2.2 FSBL_XIP

系统启动流程如下:
- BootROM开始执行,校验完FSBL后将其搬运到SRAM中。
- FSBL开始执行,将外部Flash配置为XIP模式,FSBL完成后,将PC跳转至外部Flash中App的第一条指令。
- APP开始执行。
三、开发者模式
顾名思义,该模式可用于快速开发调试程序。
总结
本文介绍了N6的三种启动模式,并重点介绍了FLASH模式。有什么问题,欢迎与我交流。
为STM32N6点赞