i.MX RT1060 无需外部 Flash、无需 flashloader,仅靠BootROM+sdphost就能把应用加载到内部 SRAM/DTCM 并立即跳转执行,非常适合临时测试、协处理器、无 Flash 共用启动等场景。本文基于官方验证流程,把原理、工程配置、镜像制作、命令行操作一次性讲透,照着做就能一次成功。
资料获取:RT1060 BootROM SDP 启动方案:sdphost 加载应用到SRAM 并跳转执行
1. 方案核心原理:为什么能直接 RAM 运行
RT1060 上电先运行片内 BootROM,当BOOT_MODE 设为 Serial Downloader时,ROM 进入 SDP(Serial Download Protocol)等待模式,通过 USB-HID/UART 接收主机镜像。
sdphost 是 NXP 官方 SDP 主机工具,直接与 ROM 通信,完成两件事:
- 把符合 ROM 格式的bootable image写入 SRAM
- 从 IVT 地址发起跳转,让应用直接运行
全程不依赖 flashloader、不依赖外部 Flash,链路最短、最稳定。
2. 两种启动方案对比(选对再动手)
| 方案 | 原理 | 适用场景 |
|---|---|---|
| A:blhost+flashloader | 先下 flashloader 到 SRAM,再由其接管烧写 Flash | 量产烧录、需要操作外部 Flash、ISP 升级 |
| B:sdphost 直载 SRAM | 直接下发带 IVT 的应用到 SRAM,ROM 直接启动 | 临时测试、协处理器、无 Flash、自动化脚本 |
本文重点讲方案 B,极简、无依赖、易排查。
3. 关键前提:别直接用 LinkRAM 裸镜像
很多人失败是因为:MCUXpresso 的Link to RAM 工程生成的 ELF/AXF没有 IVT 启动头,BootROM 无法识别入口、长度、加载地址,根本跳不起来。必须用nxpimage给应用加上IVT+BootData头部,生成 ROM 可识别的 bootable image。
4. RAM 镜像标准布局(必须严格遵守)
为给启动头预留空间,应用偏移固定如下:
- 逻辑起始:0x20000000
- IVT 位置:0x20001000(偏移 0x1000)
- 应用入口:0x20002000(偏移 0x2000)
- 头部空间:0x2000 字节,放 IVT+BootData
重点:最终 write-file 和 jump-address 都指向IVT 地址 0x20001000,不是应用入口!
5. 工程配置:MCUXpresso 一步到位
- 新建 / 打开应用工程,设置为Link to RAM
- 修改 DTCM 起始地址为0x20002000(给头部留 0x2000)
- 正常编译,输出app.axf
6. 镜像制作:nxpimage+YAML 一键生成
nxpimage 是 SPSDK 里替代 elftosb 的官方工具,推荐 YAML 配置。
6.1 创建 rt1060_ram_app.yaml
options:
flags: 0x00
startAddress: 0x20000000
ivtOffset: 0x1000
initialLoadSize: 0x2000
family: mimxrt1060
inputImageFile: ./app.axf
6.2 生成无填充 bootable image
nxpimage.exe hab export -c rt1060_ram_app.yaml -o rt1060_ram_app_nopadding.bin --force
输出文件开头就是 IVT,没有前导空洞,所以必须写到0x20001000。
7. sdphost 命令行:下载 + 启动三行搞定
7.1 检查设备连接(USB-ID:0x1FC9,0x0135)
sdphost.exe -u 0x1FC9,0x0135 -j -- error-status
7.2 写入 IVT 真实地址
sdphost.exe -u 0x1FC9,0x0135 -j -- write-file 0x20001000 rt1060_ram_app_nopadding.bin
7.3 从 IVT 地址跳转执行
sdphost.exe -u 0x1FC9,0x0135 -j -- jump-address 0x20001000
✅ 执行完成,应用直接在 SRAM 运行,无需复位、无需 Flash。
8. 方案优势:量产 / 测试都好用
- 无 flashloader:流程短,问题定位极快
- 无外部 Flash:适合协处理器、共用 Flash 设计
- 纯命令行:极易写成批处理 / Python 自动化脚本
- 上电即加载:Host 主控下发后立即运行,启动最快
- 免费工具链:SPSDK+sdphost 完全免费,合规无风险
9. 最容易踩的 4 个坑
- ❌ 直接用 LinkRAM 的 axf/bin 下发 → 必须加 IVT 头部
- ❌ 跳到应用地址 0x20002000 → 必须跳 IVT:0x20001000
- ❌ 工程未偏移到 0x20002000 → 与头部冲突,跑飞
- ❌ 写到 0x20000000 → non-padding 镜像无空洞,必须写 IVT 地址
RT1060 sdphost 直载 SRAM是最高效的 RAM 启动方案:
- 配置工程偏移 0x20002000
- YAML+nxpimage 生成带 IVT 的 bootable image
- 三行 sdphost 命令完成下载 + 启动
- 全程无 Flash、无 flashloader、稳定可靠
无论是研发调试、产测自动化,还是无 Flash 硬件设计,这套流程都能直接落地。
637