[信息] 使用STM32CubeMX创建STM32N6的Load&Run工程

[复制链接]
130|0
STM新闻官 发表于 2025-11-2 09:44 | 显示全部楼层 |阅读模式
1. 前言  在STM32N6的固件包STM32Cube_FW_N6_V1.1.1中包含了Template_FSBL_LRUN的项目模版,但不是基于STM32CubeMX创建的,本文基于STM32N6-DK开发板,就如何基于MX创建一个从NOR Flash启动的Load&Run项目,以及一些注意事项,帮助客户快速创建并理解其操作。

2. 操作步骤
1. 首先选择芯片,创建一个Secure工程。



2. 使能XSPIM模块,XSPIM可以实现XSPI外设模块对应引脚的IO映射,必须先使能XSPIM模块后,才能使能XSPI外设。

3. 根据实际电路使能XSPI外设,选择对应的Port,这里配置的是XSPI2。

4. 根据NOR芯片手册,配置相关参数

5. 选择Middleware中的EXTMEM_MANAGER,对Memory进行配置,STM32N6-DK开发板的NOR Flash为Macronix的MX66UW1G45G(1.8V 1G-BIT [X1/X8] DTR),支持SFDP(MX66UW1G45G)模式,所以选择EXTMEM_NOR_SFDP驱动即可,如果使用的NOR Flah不支持SFDP,也可以选择EXTMEM_USER,需要用户完成NOR Flash的相关驱动程序。再选择实际的data line的数目。

6. 选择生成Boot代码,采用Load and Run的方式,即将NOR Flash中的APP代码先Load到RAM中,再跳转到RAM中去Run。 LRUN Source 中的Source address offset 即 APP 代码在NOR Flash中存放的地址偏移,设定0x00100000,即实际地址为XSPI2的映射基地址(0x70000000)+偏移地址(0x00100000)= 0x70100000。Source code size 在此处不重要,随意设置个值即可,因为实际要搬移的代码大小的值会在签名时填写到APP的header中。

LRUN destination 即代码搬移到的目标地址,也就是实际运行代码的地方,可以选择内部SRAM,如果有外部RAM,也可以选择在外部RAM中运行。 上面说的是APP的地址偏移,Boot自身的偏移地址默认为0,即实际地址为XSPI2的映射基地址0x70000000,也就是BootRom加载FSBL时,会从这个地址开始搬移代码。 7. 配置时钟,根据实际需求进行配置。

8. 配置对应XSPI的时钟,注意并不是所有情况都能配置到200MHz,需要根据实际硬件条件(包括SDR/DTR模式、是否有DQS、以及NOR Flash芯片的最大速度等)及XSPI的供电电压来选择合适的频率,详见其Datasheet。

9. 设置一个输出GPIO控制LED,并分配到APP,用于应用代码的测试。

10. 生成FSBL和APP代码。

11. 由于VDDIO3是PN[12 :0]的独立电源,因此其电压选择要和NOR Flash的电压范围一致,在STM32N6-DK开发板上,供电电压为1.8V。

当电压为1.8V时,还需要通过设置OTP124[bit 15]及PWR_SVMCR3的VDDIO3VRSEL来选择供电电压,即HSLV(High Speed Low Voltage)的配置。

OTP的设置可以通过STM32CubeProgrammer,也可以在代码中通过BSEC实现(参考FW包Example中的BSEC例程),注意OTP(one-time programming)正如其名,只能操作一次,一旦修改后就不能被再次修改,因此一定要根据实际的硬件情况去配置。

VDDIO3VRSEL可以通过HAL库提供的如下API进行设置,一定要根据实际的供电电压去设置,否则会使IO工作在降级模式,甚至损坏MCU。

12. 在第6步中我们提到过Source code size在CubeMX中的配置并不重要,因为APP image的大小信息会加到其签名后的Header中,这就需要我们重定义BOOT_GetApplicationSize这个弱函数。

APP的总大小包含APP本身和其Header大小,我们曾在CubeMX中配置过Header的大小为0x400,因而此处HEADER_V2_3_SIZE定义为1024。而Header第108 Byte偏移处的内容表示image的大小,因此HEADER_V2_3_IMG_SIZE_OFFSET被定义为108,各字段的详细说明见UM3234。

13. 在生成的APP工程中添加一个简单的LED toggle的代码用于测试,然后即可分别编译FSBL和APP工程。 14. 参考《LAT1491 STM32N6的FSBL基本流程介绍》中的步骤对生成的FSBL和APP的二进制目标文件进行签名、下载、调试即可。

3. 总结
本文介绍了如何通过STM32CubeMX创建第一个基于STM32N6的Load&Run工程,涉及NOR Flash 的驱动,XSPI的软硬件匹配的注意事项、以及如何获取到Header中image size等技术问题,帮助用户快速理解代码内容,并为用户配置自己的工程板时提供参考。
   
文档中所用到的工具及版本
STM32CubeProgrammer  2.19.0
IAR 9.60.3
STM32CubeMX 6.14.1

您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:意法半导体(中国)投资有限公司
简介:您的嵌入式应用将得益于意法半导体领先的产品架构、技术、多源产地和全方位支持。意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器。

1428

主题

1758

帖子

25

粉丝
快速回复 在线客服 返回列表 返回顶部