i.MX RT1XXX 通过sdphost加载到SRAM区域

        设置i.MXRT1xxx的BOOT_MODE[1:0]为01可进入Serial Downloader模式。此模式下,BootROM通过USB1或者UART1来接收来自Host(恩智浦提供了上位机工具sdphost.exe或者mfgtool)的Flashloader数据,并将数据存储在SRAM中执行,Flashloader程序可以用来将你的Application下载进i.MXRT1xxx支持的所有外部非易失性存储器中,为后续从外部存储器启动做准备。

一、使用elftosb生成含IVT的image

        查阅sdphost的命令表,jump-address只能跳转到含IVT头的image,这里需要通过elftosb工具。这个工具就在\Flashloader_i.MXRT1050_GA\Flashloader_RT1050_1.1\Tools\elftosb目录下,这个工具可以用来生成含ivt的image,命令格式固定如下:

        elftosb.exe -f imx -V -c config_application.bd -o ivt_application.bin application.out

其中ivt_application.bin就是最终生成的Bootable image,命令所需要的2个输入文件分别是application.out、config_application.bd。application.out就是你的Application工程编译链接生成的ELF文件

         修正SDK_2.7.0_EVKB-IMXRT1050\boards\evkbimxrt1050\demo_apps\led_blinky的工程获取iled_blinky_a000.out文件并拷贝到Flashloader_RT1050_1.1\Tools\elftosb\win路径下,同时查阅map文件得到Reset_Handler的地址为0x0000a415备用。工程主要修改了分散加载文件.scf:

config_application.bd是用户配置文件,这个.bd文件主要是指示elftosb工具如何在Application binary基础上添加IVT、BD等其他信息数据从而形成Bootable image,所以编写.bd文件是关键步骤,bd文件有专门语法格式,但\Flashloader_i.MXRT1050_GA\Flashloader_RT1050_1.1\Tools\bd_file\imx10xx目录下给了很多bd文件示例,我们只需要在某一个bd文件基础上修改即可

       拷贝Flashloader_RT1050_1.1\Tools\bd_file\imx10xx\imx-itcm-unsigned.bd文件到Flashloader_RT1050_1.1\Tools\elftosb\win路径,重命名为iled_blinky_a000.bd,并修正文件内容如下:

      ivtOffset和initialLoadSize不用改,分别代表IVT和Application在Bootable image中的偏移地址,startAddress即BOOT_DATA_T.start,这个是可以修改的,牢记下面公式

startAddress + initialLoadSize = Application只读段起始链接地址

led_blinky_a000.out是链接在0xa000地址处的,0x8000 + 0x2000 = 0xa000,所以此处startAddress也无需改,唯一需要确认的是entryPointAddress,这个我们已经通过查阅map文件获取到。bd文件修改完成之后,让我们试着执行下面命令:

PS C:\Flashloader_i.MXRT1050_GA\Flashloader_RT1050_1.1\Tools\elftosb\win> elftosb.exe -f imx -V -c iled_blinky_a000.bd -o ivt_iled_blinky_a000.bin iled_blinky_a000.out

二、sdphost加载image到SRAM区域

        前面我们通过elftosb工具获取到ivt_iled_blinky_a000.bin文件,可以直接将ivt_led_blinky_a000.bin下载进SRAM即可:

PS C:\Flashloader_i.MXRT1050_GA\Flashloader_RT1050_1.1\Tools\sdphost\win> sdphost.exe -u 0x1fc9,0x0130 -- write-file 0x8000 ivt_iled_blinky_a000.bin

 到这里IVT和image均已经下载进SRAM了,可以跳转去执行led_blinky程序了,使用jump-address命令:

PS C:\Flashloader_i.MXRT1050_GA\Flashloader_RT1050_1.1\Tools\sdphost\win> sdphost.exe -u 0x1fc9,0x0130 -- jump-address 0x8400

led_blinky就算启动完成了,jump-address命令执行完成之后,你会发现小灯闪烁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值