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

RT1060 BootROM SDP 启动方案:sdphost 直载 SRAM 运行全实战

04/27 15:14
637
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

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 通信,完成两件事:

  1. 把符合 ROM 格式的bootable image写入 SRAM
  2. 从 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 一步到位

  1. 新建 / 打开应用工程,设置为Link to RAM
  2. 修改 DTCM 起始地址为0x20002000(给头部留 0x2000)
  3. 正常编译,输出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. 方案优势:量产 / 测试都好用

  1. 无 flashloader:流程短,问题定位极快
  2. 无外部 Flash:适合协处理器、共用 Flash 设计
  3. 纯命令行:极易写成批处理 / Python 自动化脚本
  4. 上电即加载:Host 主控下发后立即运行,启动最快
  5. 免费工具链:SPSDK+sdphost 完全免费,合规无风险

9. 最容易踩的 4 个坑

  1. ❌ 直接用 LinkRAM 的 axf/bin 下发 → 必须加 IVT 头部
  2. ❌ 跳到应用地址 0x20002000 → 必须跳 IVT:0x20001000
  3. ❌ 工程未偏移到 0x20002000 → 与头部冲突,跑飞
  4. ❌ 写到 0x20000000 → non-padding 镜像无空洞,必须写 IVT 地址

RT1060 sdphost 直载 SRAM是最高效的 RAM 启动方案:

  • 配置工程偏移 0x20002000
  • YAML+nxpimage 生成带 IVT 的 bootable image
  • 三行 sdphost 命令完成下载 + 启动
  • 全程无 Flash、无 flashloader、稳定可靠

无论是研发调试、产测自动化,还是无 Flash 硬件设计,这套流程都能直接落地。

相关推荐