STM32N6 的 FSBL(第一阶段引导程序)使用大内存(如 AXISRAM3)时出现程序异常、调试器卡死,核心原因是AXISRAM3/4/5/6 复位后默认断电,需手动使能时钟并唤醒内存,仅 AXISRAM2 上电即可直接使用。
资料获取:开发经验 | LAT1570 STM32N6在FSBL中使用大内存时的异常问题
1. 问题背景:大内存使用触发的 FSBL 异常
客户基于 STM32N6 开发产品,核心需求是通过 XSPI DMA 向 QSPI LCD 传输 307K 数据,遇到关键问题:
- 异常现象:在 FSBL 工程中扩展 RAM 使用到 AXISRAM3 后,程序运行异常,IAR 调试器卡死,数据传输时间远超预期;
- 复现条件:仅使用 AXISRAM2 时功能正常,一旦变量定义到 AXISRAM3 及以上区域,立即触发异常;
- 工程环境:STM32N6 Nucleo 板、IAR 编译器,FSBL 工程未修改默认 RAM 配置。
2. 根源分析:AXISRAM 的默认上电状态差异
2.1 STM32N6 的 AXISRAM 架构特点
STM32N6 是无内部 Flash(flashless)架构,依赖外部 Flash 启动,其 AXISRAM 分为多个独立区域,复位后状态不同:
| AXISRAM 区域 | 复位后默认状态 | 地址范围(示例) | 核心用途 |
|---|---|---|---|
| AXISRAM2 | 上电使能(可用) | 0x24000000~ | FSBL 默认使用的小内存区域 |
| AXISRAM3-6 | 断电禁用(不可用) | 0x24020000~ 等 | 扩展大内存,需手动唤醒 |
222