标签:闪烁 ext 启动 命名 win demo 加载 alt mamicode
设置i.MXRT1xxx的BOOT_MODE[1:0]为01可进入Serial Downloader模式。此模式下,BootROM通过USB1或者UART1来接收来自Host(恩智浦提供了上位机工具sdphost.exe或者mfgtool)的Flashloader数据,并将数据存储在SRAM中执行,Flashloader程序可以用来将你的Application下载进i.MXRT1xxx支持的所有外部非易失性存储器中,为后续从外部存储器启动做准备。
查阅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
前面我们通过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命令执行完成之后,你会发现小灯闪烁。