[信息] STM32N6在FSBL中使用大内存时的异常问题

[复制链接]
123|0
STM新闻官 发表于 2025-11-2 08:49 | 显示全部楼层 |阅读模式
1. 问题背景  客户要在STM32N6上使用XSPI 驱动QSPI LCD,并通过XSPI DMA方式传输数据到LCD,测量发现传输时间比预期时间要长。在N6 Nucleo板上创建FSBL工程尝试复现客户问题,参照客户配置使用XSPI DMA发送307K的内存数据。在FSBL 的IAR工程中直接增加了RAM定义大小,使用到了N6的AXISRAM3。然后进行调试,发现程序运行异常导致IAR卡死。

2. 解决办法  查手册发现,FSBL使用的AXISRAM2默认是上电可用的,而AXISRAM3/4/5/6复位后默认都是未上电的,不能像AXISRAM2一样直接使用。如果将变量定义到AXISRAM3中直接使用,则会遇到程序异常问题。




SRAMSD位表示Shutdown,默认值为1时,对应的SRAM是断电状态。如果要使用SRAM3/4/5/6需要先使能SRAM时钟,再将对应的SRAMSD位清零即可。由于STM32CubeMX在创建N6 的FSBL工程时,未配置使用AXISRAM3,因此需要添加代码使能AXISRAM3后再使用。

2.1. 在STM32N6 Nucleo 板验证 在STM32N6 Nucleo板测试时,使用IAR工具,在SystemInit函数后,会由IAR内置函数__iar_program_start初始化SRAM中变量,因此需要在此函数之前使能AXISRAM3,确保内存为可用状态。 修改SystemInit函数,添加使能AXISRAM3代码如下:

这样修改后,AXISRAM3就能正常使用了,N6的FSBL测试工程也能正常运行。

3. 小结 STM32N6是flashless的新架构MCU,通常包含FSBL与APPLI工程。FSBL工程通常仅用于启动APPLI程序,使用的资源较少。在测试时,如果仅使用了FSBL工程,同时需要使用较大SRAM时,需要手动修改下SystemInit函数,使能对应的SRAM即可。

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

本版积分规则

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

1429

主题

1760

帖子

25

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