STM32N6是有史以来功能最强大的STM32系列

STM32N6嵌入了意法半导体专有的Neural-ART加速器和运行频率为800 MHz的Arm® Cortex®-M55内核,提供了迄今为止最高的STM32微控制器 (MCU) 计算能力。利用强大的边缘AI功能,在微控制器的功耗预算和PCB占用空间内,为您的客户带来媲美MPU的终端用户体验,对边缘AI应用可以如虎添翼.

STM32N6产品组合:

相关产品购买渠道:基于STM32N6 的Demo板开箱实验

NUCLEO-N657X0-Q 是我们本次实验的硬件平台工具:

1.STM32 Nucleo-144 development board with STM32N657X0 MCU, SMPS, supports Arduino, and ST morpho connectivity,以下是板子的正反面照片。操作手册与Bom, 原理图参考附件文档。

2.STM32CubeMx 配置:

3.打开STM32CubeMx生成的工程,并添加代码:

            BSP_LED_Toggle(LED_GREEN);
            HAL_Delay(500);
             if(BspButtonState == BUTTON_PRESSED)
            {
                BspButtonState = BUTTON_RELEASED;
                 printf("Reset system.\n\r");
                 NVIC_SystemReset();
            }

4.仿真可以看到绿色LED 闪烁,并且另外2个LED常亮,按了B1 Button 芯片复位,就无法调试了,这是因为STM32N6 内部Flash小,代码需要存储在外部OSPI Flash中,而调试又只能运行在RAM中,复位后,指针指向Flash区,导致无法Debug,下面就来介绍STM32N6  启动模式。

<1>.STM32N6 是 ST 第一颗带 NPU 的 MCU 芯片, 内部只有一小块 ROM 用于第一阶段的 Boot,必须使用外部 Flash 存储用户代码或通过 USB/U(S)ART 串口启动。另外, STM32N6 的工程引入了一些新的术语比如 FSBL 等。 本文记录 STM32N6 使用的一些基本启动步骤,重点介绍FSBL。FSBL 的全称为 First Stage Boot Loader, 在上电后, 先执行片内 ROM 区域的BootROM,然后根据 Boot 选项和地址,执行相应地址的 FSBL.
 
<2>. 启动模式 :其中 BOOT1 引脚决定了两种不同的启动模式, dev boot 和Flash boot/Serial boot 模式: Flash boot(Boot1 = 0, Boot0 = 0)意味着上电后, BootROM 程序(固化在片内 ROM 的一小段启动程序)会尝试从外部 Flash 启动,应用程序需要下载到外部 Flash,如果没有应用则无法启动。 Dev boot 意味着上电后, BootROM 程序尝试从内部 Ram 中启动.

<3>FSBL 的全称为 First Stage Boot Loader, 在上电后, 先执行片内 ROM 区域的BootROM,然后根据 Boot 选项和地址,执行相应地址的 FSBL,参考下图实例为外部Flash 的启动流程,BootROM 启动后,会验证 FSBL 的头,深黄色部分 1024Bytes 的 Header 信息,可以使用 ST 提供的脚本对 FSBL 进行签名, FSBL 程序必须完成签名,不然无法正常启动。验证成功后, BootROM 将 FSBL 程序搬运至内部 SRAM2: 0x34180000 的位置,然后PC 指针跳转过去开始执行 FSBL。因本示例只有FSBL,其他FSBL+Load&Run ,FSBL+XiP(Execute in Place) 等方式就不过多赘述。如需了解请参考ST LAT1491.

<4>编译后的bin文件需要通过STM32MP_SigningTool_CLI.exe 签名后才能在外部Flash中运行,在签名前,需要安装 ST 最新的 CubeProgrammer ,安装后里面包含有STM32MP_SigningTool_CLI.exe工具,并将 STM32MP_SigningTool_CLI.exe的路径加入到 Windows 系统 PATH 环境变量中,确保该 exe 程序可以被正确找到并运行。 以下是签名运行效果图:

签名command:STM32_SigningTool_CLI.exe -bin C:\Users\l9781\Desktop\n6\FSBL.bin -nk -of 0x80000000 -t fsbl -o C:\Users\l9781\Desktop\n6\FSBL_trusted.bin -hv 2.3 -dump C:\Users\l9781\Desktop\n6\FSBL_trusted.bin

• -bin: 原始 bin 文件。
• -nk: no keys,没有使用密钥相关选项。
• -of: option flags。
• -t: bin 文件的类型为 fsbl。
• -o:输出后的文件。
• -hv: header version,版本号。
• -dump:将 bin 文件的 header 信息 dump 出来,方便查看。
FSBL.bin 是原始的 FSBL 工程的 bin 文件, FSBL-trusted.bin 是已经被正确签名并添加好header 的 bin 文件。 

下载command:STM32_Programmer_CLI -c port=SWD mode=HOTPLUG ap=1 -el C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin\ExternalLoader\MX25UM51245G_STM32N6570-NUCLEO.stldr -hardRst -w C:\Users\l9781\Desktop\n6\FSBL_trusted.bin 0x70000000

我这个实验使用命令行烧录,也可以使用STM32CubeProgrammer 命令行烧录,效果一样。

运行效果图:<因为是静态图,看不到绿色LED闪烁>,代码与工程参考附件。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐