STM32N6启动方式的深度解析:三种启动策略探讨

注:本文大部分内容参考ST中文社区LAT1491, 如果侵权,请联系作者,及时删除。

关键词:STM32N6、FSBL、签名、Bootmode、启动模式

参考链接:

  1. RM0486 STM32N647/657xx Arm®-based 32-bit MCUs
  2. DS14791 Arm® Cortex®-M55, ST Neural-ART Accelerator, H264 encoder, Neo-Chrom 2.5D GPU, 4.2 Mbyte-contiguous SRAM
  3. 【应用笔记】LAT1491 STM32N6的FSBL基本流程介绍

硬件:STM32N6750-DK CR1

STM32N6如何下载调试,看这篇文章:STM32N6如何调试下载代码

文章目录

  • 前言
  • 一、N6的三种启动模式
  • 二、FLASH模式启动流程
  • 2.1 FSBL
  • 2.1 FSBL_Load&Run
  • 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的启动流程。

    如上图,系统启动流程如下:

    1. BootROM启动后,会验证FSBL的头,如上图深黄色部分1024Bytes的Header信息,可以使用ST提供的脚本对FSBL进行签名,FSBL程序必须完成签名,不然无法正常启动。验证成功后,BootROM将FSBL程序搬运至内部SRAM2:0x34180000的位置,然后PC指针跳转过去开始执行FSBL。
    2. FSBL开始执行。

    2.1 FSBL_Load&Run

    APP的开发在内部的SRAM中调试完成,开发完成后通过External loader下载到外部Flash。
    系统启动流程如下:

    1. BootROM先启动,然后校验,搬运FSBL,并跳转到FSBL。
    2. FSBL开始执行,然后拷贝Appli的完整内容到内部SRAM,包括data和code。然后跳转到APP代码进行执行。
    3. APP代码开始执行。

    2.2 FSBL_XIP


    系统启动流程如下:

    1. BootROM开始执行,校验完FSBL后将其搬运到SRAM中。
    2. FSBL开始执行,将外部Flash配置为XIP模式,FSBL完成后,将PC跳转至外部Flash中App的第一条指令。
    3. APP开始执行。

    三、开发者模式

    顾名思义,该模式可用于快速开发调试程序。


    总结

    本文介绍了N6的三种启动模式,并重点介绍了FLASH模式。有什么问题,欢迎与我交流。

    为STM32N6点赞

    作者:白掰虾

    物联沃分享整理
    物联沃-IOTWORD物联网 » STM32N6启动方式的深度解析:三种启动策略探讨

    发表回复