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

RT700-EVK XSPI1 启动配置:VS Code 工程修改全流程

05/22 14:58
463
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

NXP i.MX RT700 开发中,官方 EVK 默认从 XSPI0 启动,但实际项目常需切换到 XSPI1(如双 Flash 冗余、硬件引脚复用)。很多工程师切换后遇到编译成功但启动失败、地址不匹配、调试异常等问题,核心是硬件跳线、启动开关、工程配置未完全同步。本文基于 MCUXpresso for VS Code 与 RT700-EVK,从硬件设置到工程修改,拆解 XSPI1 启动全流程,帮你一次配置成功。

资料获取:VS Code 下 RT700-EVK XSPI1 Octal Flash 启动配置指南

1. 硬件准备:跳线与启动开关先设对

RT700-EVK 的 XSPI1 通过多路复用开关切换 Flash/HyperRAM,启动前必须先完成硬件配置,否则软件修改无效。

1.1 XSPI1 Flash 跳线配置

  • JP45:短接 2-3,选择 XSPI1 连接 Octal Flash U51(默认 HyperRAM);
  • JP46:短接 2-3,使能 XSPI1 电子开关
  • JP51:保持默认短接,使能 XSPI 复位。

1.2 启动开关 SW10 配置

SW10 是 2 位 DIP 开关,需设为11(对应 XSPI1 启动):

  • 00:SDHC0 eMMC;
  • 01:默认 XSPI0;
  • 10:自动 ISP
  • 11:XSPI1。

1.3 关键地址映射

  • XSPI0:0x28000000(默认);
  • XSPI1:0x08000000(切换后)。

硬件配置完成后,再进行工程修改,避免反复调试。

2. VS Code 工程基础配置

2.1 环境与工程导入

  • 开发环境:MCUXpresso for VS Code + SDK 26.3.0;
  • 导入工程:选择demo_apps/hello_world_cm33_core0模板,基于 RT700-EVK 创建基础工程。

2.2 修改 Flash 基地址(prj.conf)

默认工程使用 XSPI0 地址(0x28000000),需新增prj.conf文件覆盖配置:

CONFIG_FLASH_BASE_ADDRESS=0x08000000

重新编译后,mcux_config.h中的地址会自动更新为 0x08000000。

2.3 替换链接脚本(核心步骤)

仅改基地址不够,链接脚本(.ld)决定代码段实际链接地址,必须替换为 XSPI1 专用脚本:

  • 默认脚本:MIMXRT798Sxxxx_cm33_core0_flash.ld(XSPI0,0x28000000);
  • XSPI1 脚本:MIMXRT798Sxxxx_cm33_core0_flash1.ld(0x08000000)。

脚本差异(关键段)

  • XSPI0:m_flash 0x28000000m_interrupts 0x28004000
  • XSPI1:m_flash 0x08000000m_interrupts 0x08004000

flash1.ld复制到工程目录备用。

2.4 更新 CMakeLists.txt

移除默认链接脚本,添加 XSPI1 专用脚本:

# 移除默认XSPI0链接脚本
mcux_remove_armgcc_linker_script(
TARGETS flash_debug flash_release
BASE_PATH ${SdkRootDirPath}
LINKER ${device_root}/${soc_portfolio}/${soc_series}/${device}/gcc/${CONFIG_MCUX_TOOLCHAIN_LI NKER_DEVICE_PREFIX}_flash.ld
)

# 添加XSPI1链接脚本
mcux_add_armgcc_linker_script(
TARGETS flash_debug flash_release
BASE_PATH ${SdkRootDirPath}
LINKER ${device_root}/${soc_portfolio}/${soc_series}/${device}/gcc/${CONFIG_MCUX_TOOLCHAIN_LI NKER_DEVICE_PREFIX}_flash1.ld
)

3. 编译与验证:确保地址完全匹配

3.1 编译工程

执行编译,生成.elf.map文件。

3.2 关键验证(避免启动失败)

  1. 检查mcux_config.hCONFIG_FLASH_BASE_ADDRESS=0x08000000
  2. 查看.map文件:.flash_config.isr_vector.text段均位于 0x08000000 附近;
  3. 下载调试:通过板载 MCU-Link 下载,程序正常运行即配置成功。

4. 常见问题排查

  1. 编译成功但不启动:优先检查 SW10 是否为 11、JP45/JP46 跳线是否正确;
  2. 地址不匹配:核对prj.conf地址、链接脚本是否为 flash1.ld;
  3. 调试时找不到代码:确认.map文件代码段在 0x08000000 区间。

RT700-EVK 从 XSPI1 启动,核心是硬件跳线、启动开关、工程地址、链接脚本四同步:

  • 硬件:JP45/JP46 短接 2-3,SW10 设为 11;
  • 软件:prj.conf 改地址,CMakeLists 换 flash1.ld;
  • 验证:map 文件核对代码段地址。

按以上步骤操作,可快速完成 XSPI1 启动配置,适配双 Flash、硬件复用等项目需求。

相关推荐