• 正文
  • 相关推荐
申请入驻 产业图谱

i.MX RT1050 FLEXSPI NOR Flash 调试使能指南:XIP启动配置与实操全流程

10/30 13:35
226
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

i.MX RT1050 作为 NXP 首款跨界处理器,在嵌入式系统中广泛应用于需要大容量存储与高速执行的场景。FLEXSPI NOR Flash 模式下的 XIP(直接执行)启动与调试,是释放其性能的关键配置,但需解决硬件适配、固件更新、工程配置等多重问题。本文基于 NXP 官方文档 AN12183,详解从硬件改造到软件调试的完整流程,覆盖 Hyper Flash/QSPI NOR Flash 多场景适配,助力开发者快速落地。

资料获取:怎样在 FLEXSPI NOR Flash 模式下使能调试

1. 核心目标与适用范围

1.1 核心目标

实现可执行文件在 FLEXSPI NOR Flash 的烧录、XIP 启动与在线调试,同时支持 Hyper Flash 与 QSPI NOR Flash 切换,兼容新型号 Flash(如 GD25Q64C)适配。

1.2 适用环境

  • 硬件平台:IMXRT1050-EVK/IMXRT1050-EVKB 开发板
  • 开发工具:IAR Embedded Workbench 8.22.1、MCUXpresso IDE
  • 软件资源:MIMXRT1050 SDK(v2.3.1)、OpenSDA 固件、Flash 驱动(如 MIMXRT10XX_SFDP_QSPI.cfx)
  • 支持 Flash 类型:板载 Hyper Flash、板载 QSPI NOR Flash(IS25WP064A)、第三方 QSPI Flash(GD25Q64C/GD25LQ64C)

2. 硬件配置:EVK/EVKB 开发板改造

2.1 IMXRT1050-EVK(标准版)设置

  • 移除板载 Hyper Flash,避免干扰 QSPI NOR Flash 读写时序。
  • 在 R153-R158 位置焊接 0Ω 电阻,启用 QSPI NOR Flash 硬件链路。
  • 更新 OpenSDA 固件:替换为 QSPI NOR Flash 专用固件(NXP 官网可下载),原固件默认适配 Hyper Flash。

2.2 IMXRT1050-EVKB(增强版)设置

  • 无需移除 Hyper Flash,仅需移除电阻 R356、R361-R366。
  • 同 EVK 设置,在 R153-R158 位置焊接 0Ω 电阻。
  • 更新 OpenSDA 固件至 QSPI NOR Flash 版本,确保调试与烧录兼容性。

2.3 启动模式开关配置

通过 SW7 拨码开关选择启动设备,核心配置如下:

SW7-1 SW7-2 SW7-3 SW7-4 启动设备
OFF ON ON OFF Hyper Flash
OFF OFF ON OFF QSPI NOR Flash
ON OFF ON OFF SD Card

3. XIP 启动流程解析

XIP 启动是指程序直接在外部 Flash 中执行,无需复制到内部 RAM,核心流程如下:

  • 上电初始化Arm 内核从 Boot ROM 启动,根据 BOOT_MODE 寄存器与 eFUSEs 状态选择启动设备(可通过 GPIO 引脚覆盖配置)。
  • FlexSPI 配置读取:Boot ROM 在 30MHz 时钟下,从 Flash 偏移量 0 地址读取 512 字节配置参数,包含读取命令序列、FlexSPI 频率、Quad 模式使能序列等。
  • 硬件参数配置:根据读取的参数初始化 IOMUXC 引脚、LUT(查找表)、时钟与 Flash 设备。
  • 程序执行:若为 XIP 镜像,直接从 FlexSPI 地址(如 0x60000000)执行;若非 XIP 镜像,复制至 OCRAM 后执行。

可执行文件结构(XIP 启动必需)

  • Flash 配置参数:标签 0x42464346(ASCII:FCFB),位于文件起始位置。
  • IVT(中断向量表):标签 0xD1,偏移量 0x1000,包含程序组件位置指针。
  • 启动数据:指定程序位置、尺寸与标志位,偏移量 0x1020。
  • DCD(设备配置数据):标签 0xD2,偏移量 0x1030,用于 SDRAM 等外设初始化。
  • 用户程序与数据:核心功能代码与资源。

四、软件配置:从固件到工程参数

4.1 OpenSDA 固件更新

  • 若固件序列号小于 TR18132215,需升级至最新版,否则无法自动添加 XIP 启动所需的配置参数、IVT 等信息。
  • 固件升级后,IDE 可直接识别 FLEXSPI Flash,支持一键烧录与调试。

4.2 工程宏定义配置(IAR 环境)

SDK 例程需启用 3 个核心宏,控制 XIP 启动头文件的添加与功能:

宏定义 取值 功能说明
XIP_EXTERNAL_FLASH 1 移除改变 FlexSPI 时钟频率的代码;0 则保留
XIP_BOOT_HEADER_ENABLE 1 在可执行文件开头添加 FlexSPI 配置、IVT、启动数据、DCD;0 则不添加
XIP_BOOT_HEADER_DCD_ENABLE 1 启用 DCD(初始化 SDRAM);0 则不启用,仅适用于无需外部 RAM 的简单应用

配置路径:IAR 工程 → Options → C/C++ Compiler → Preprocessor → Defined symbols,添加上述宏定义。

4.3 链接文件配置

打开链接文件MIMXRT1052xxxxx_flexspi_nor.icf,确认核心地址分配:

  • 启动配置参数起始地址:0x60000000(m_boot_hdr_conf_start)
  • IVT 起始地址:0x60001000(m_boot_hdr_ivt_start)
  • 启动数据起始地址:0x60001020(m_boot_hdr_boot_data_start)
  • DCD 数据起始地址:0x60001030(m_boot_hdr_dcd_data_start)

五、多场景烧录实操指南

5.1 烧录至板载 Hyper Flash

  • 拨码开关配置为 Hyper Flash 启动(SW7-2=ON、SW7-3=ON,其余 OFF),上电。
  • 打开 SDK 例程(如 hello_world),选择 target 为flexspi_nor_debug
  • 编译工程并烧录,配置串口终端(波特率 115200、8N1)。
  • 按下 SW3 重启开发板,串口打印 “hello world” 即成功。

5.2 烧录至板载 QSPI NOR Flash

  • 拨码开关配置为 QSPI Flash 启动(SW7-3=ON,其余 OFF),更新 OpenSDA 固件。
  • 打开例程,找到evkbimxrt1050_hyper_config.c文件。
  • 注释hyperflash_config结构体,替换为qspiflash_config(或直接替换为附件中 QSPI 适配文件)。
  • 编译烧录,重启后通过串口验证结果。

5.3 烧录至第三方 QSPI Flash(以 GD25Q64C 为例)

  • 替换工程配置:用qspiflash_config替换hyperflash_config,适配 GD25Q64C 参数(如 Flash 容量 4MB、Quad 模式)。
  • 修改 FlashLoader:打开FlashIMXRT1050_EVK_FlexSPI_Example工程,调整 LUT 序列与状态寄存器写格式(GD25Q64C 为 8 位写格式)。
  • 编译 FlashLoader 生成.out文件,复制至 IAR 安装路径下的 flashloader 目录。
  • 按板载 QSPI Flash 烧录步骤操作,串口验证启动结果。

5.4 MCUXpresso IDE 烧录配置

  • 选择 Flash 驱动:MCU Settings → Flash Drivers,添加MIMXRT10XX_SFDP_QSPI.cfx(支持 SFDP 协议,兼容多数标准 SPI NOR Flash)。
  • 配置内存映射:指定 Flash 起始地址与容量,匹配目标 Flash 参数。
  • 编译烧录,支持在线调试与断点设置。

六、关键配置差异与注意事项

6.1 Hyper Flash 与 QSPI NOR Flash 核心差异

对比项 Hyper Flash QSPI NOR Flash
接口模式 Octal(8 线) Quad(4 线)
读取采样时钟 外部输入(DQS Pad) 回环输入(DQS Pad)
LUT 序列 适配 Octal 指令 适配 Quad 指令(如 0xEB)
容量典型值 64MB 4-8MB

6.2 调试注意事项

  • 断点设置:使用 Dap-link 调试时,需将断点类型设为硬件断点(IAR 配置路径:Options → Debugger → CMSIS-DAP → --drv_default_breakpoint=1)。
  • 固件兼容性:确保 OpenSDA 固件版本匹配 Flash 类型,否则会导致烧录失败。
  • 供电适配:GD25Q64C 需 3.3V 供电,需修改开发板供电电压(默认 1.8V)。

6.3 启动头文件修改(XIP 适配关键)

参考目标 Flash datasheet,修改flexspi_nor_config_t参数:

  • sflashPadType:Quad 模式设为kSerialFlash_4Pads,Dual 模式设为kSerialFlash_2Pads
  • serialClkFreq:根据 Flash 规格设置(如 100MHz、133MHz)。
  • lookupTable:配置 Fast Read 指令序列(如 Quad 模式指令 0xEB,Dummy 周期 0x06)。

i.MX RT1050 的 FLEXSPI NOR Flash 调试与 XIP 启动配置,核心在于硬件链路适配、固件更新与工程参数匹配。通过本文的分步操作,可实现板载 Flash、第三方 Flash 的灵活切换,满足不同存储容量与执行速度需求。该方案适用于工业控制智能硬件等场景,为大容量程序部署提供高效解决方案。

相关推荐