本帖最后由 小恩GG 于 2020-4-9 09:42 编辑
【经验分享】RT1050 SDRAM APP代码从SD卡启动
一 ,文档说明
本文主题是关于RT系列app跑在外部SDRAM,但是代码从SD卡启动的方式,如何使用flashloader, MCUBootUtility Tool 以及我们最新的MCUXPresso Secure Provisioning软件实现上述功能的烧录。
本文基于官方RT1050 SDK使用MCUXpress IDE 工程生成一个从SDRAM执行的app image,然后分别通过flashloader 结合MFGTool,MCUBootUtility tool,MCUXPresso Secure Provisioning 三个工具详细配置以及下载到外部SD卡的过程。
软硬件平台:
二,RT1050 SDRAM app image生成
在MCUXpresso IDE中导入SDK_2.7.0_EVKB-IMXRT1050中的iled_blinky工程,为了生成位于SDRAM的代码,配置作如下修改:
2.1代码拷贝到RAM
2.2修改image从SDRAM映射地址0X80002000开始
从SD卡启动SDRAM运行的代码属于Non-XIP, 所以IVT offset是0X400, 这里测试我们把image从0X80002000开始放,配置如下:
2.3 修改如下宏定义
2.4 生成s19文件
编译没有问题之后,如下图生成image对应的s19文件:
重新命名.s19文件为evkbimxrt1050_iled_blinky_sdram_0x2000.s19,并拷贝到flashloader路径:Flashloader_i.MXRT1050_GA\Flashloader_RT1050_1.1\Tools\elftosb\win
三,Flashloader配置及下载
本章讲解如何使用flashloader配置并下载SDRAM的代码到外部SD卡。
需要再准备如下几个文件:
3.1 SDRAMDCD 文件准备
MIMXRT1050-EVKB板载SDRAM型号为 IS42S16160J,可以通过附件中的dcd_model\ISSI_IS42S16160J\dcd.cfg文件以及dcdgen.exe工具生成CFG_DCD.bin文件,命令为:dcdgen -inputfile=dcd.cfg -bout -cout
拷贝CFG_DCD.bin文件到flashloader路径:
Flashloader_i.MXRT1050_GA\Flashloader_RT1050_1.1\Tools\elftosb\win
3.2imx-sdram-unsigned-dcd.bd文件
准备imx-sdram-unsigned-dcd.bd文件内容为:
- options {
- flags = 0x00;
- startAddress = 0x80000000;
- ivtOffset = 0x400;
- initialLoadSize = 0x2000;
- DCDFilePath = "CFG_DCD.bin";
- # Note: This is required if the default entrypoint is not theReset_Handler
- # Please set theentryPointAddress to Reset_Handler address
- entryPointAddress = 0x800022f1;
- }
- sources {
- elfFile = extern(0);
- }
- section (0)
- {
- }
复制代码
上面的entrypointAddress取值为S19的reset handler:
将该文件拷贝到flashloader路径:
Flashloader_i.MXRT1050_GA\Flashloader_RT1050_1.1\Tools\elftosb\win
打开cmd,运行如下命令:
elftosb.exe-f imx -V -c imx-sdram-unsigned-dcd.bd -oivt_evkbimxrt1050_iled_blinky_sdram_0x2000.binevkbimxrt1050_iled_blinky_sdram_0x2000.s19
运行之后会发现多了两个添加了IVT的文件:
3.3program_sdcard_image.bd文件
准备program_sdcard_image.bd文件内容为:
- # The source block assign file name toidentifiers
- sources {
- myBootImageFile = extern (0);
- }
- # The section block specifies thesequence of boot commands to be written to the SB file
- section (0) {
- #1. Prepare SDCard option block
- load 0xd0000000 > 0x100;
- load 0x00000000 > 0x104;
- #2. Configure SDCard
- enable sdcard 0x100;
- #3. Erase blocks as needed.
- erase sdcard 0x400..0x14000;
- #4. Program SDCard Image
- load sdcard myBootImageFile > 0x400;
- #5. Program Efuse for optimal read performance (optional)
- # Note: It is just a template, please program the actual Fuse requiredin the application
- # and remove the # to enable the command
- #load fuse 0x00000000 > 0x07;
- }
复制代码
将该文件拷贝到flashloader路径:
Flashloader_i.MXRT1050_GA\Flashloader_RT1050_1.1\Tools\elftosb\win
打开cmd,运行如下命令:
elftosb.exe -f kinetis -V -c program_sdcard_image.bd -oboot_image.sb ivt_evkbimxrt1050_iled_blinky_sdram_0x2000_nopadding.bin
将生成好的boot_image.sb放到如下目录:
\Flashloader_i.MXRT1050_GA\Flashloader_RT1050_1.1\Tools\mfgtools-rel\Profiles\MXRT105X\OSFirmware
3.4 MFGTool 烧录代码到外部SD卡
准备一张SD卡,插入板上J20卡槽,板子进入serial download mode,即SW7:1-ON 2-OFF 3-OFF 4-ON.两根USB口分别插入J28 和J9,使用HID下载。
打开MFGTool.exe, 并且点击start
下面修改启动模式为internal boot模式,并且从SD卡启动, SW7:1-ON 2-OFF 3-ON 4-OFF.
重新上电或者复位,可以看到板上D18闪烁,说明SDRAMapp代码成功从SD卡启动。
四,MCUBootUtility配置及下载
本节讲解如何使用图形化界面MCUBootUtility去配置并下载代码,其实该软件是将flash的相关命令都做到图形化界面里面,便于大家使用。
首先,RT芯片进入serial download模式,即SW7:1-ON 2-OFF 3-OFF 4-ON.两根USB口分别插入J28 和J9,使用HID下载。当然也可以直接使用一根USB,并用串口去下载。
配置boot device 为SD卡:
选择DCD文件,可以选择软件自带的DCD文件,该文件在MCUBootUtility的路径为:NXP-MCUBootUtility-2.2.0\src\targets\MIMXRT1052\evkbmimxrt1050_xip_boot_header_dcd.bin
或者选择为3.1 SDRAM DCD 文件准备 章节生成好的文件,这里使用我们自己生成好的CFG_DCD.bin
配置好后,选择image为前面生成好的.s19文件,点击all-in-one-Action按键,实现代码下载:
下载之后,还可以看到SD卡的image,可以发现0X400开始是IVT, BD,DCD代码,0X1000开始和原烧录.s19一样的image。
烧录成功后,修改启动模式为internal boot模式,并且从SD卡启动, SW7:1-ON 2-OFF 3-ON 4-OFF. 重新上电或者复位,可以看到板上D18闪烁,说明SDRAM app代码成功从SD卡启动
五,MCUXPresso Secure Provisioning配置及下载
该软件作为NXP正式推出的官方GUI版本,可以实现普通代码以及加密代码的下载,功能和MCUBootUtility类似,不过是一个正式的官方版本,不像MCUbootutility直接开源,但是并没有在官方网站发布。
下面使用这个软件来下载SDRAMapp代码到外部SD卡,具体步骤如下:
可以发现,新软件也是非常容易操作并且方便下载,只需要提供原文件.19, dcd.bin, 并且给与相关的boot device配置即可。
烧录成功后,修改启动模式为internal boot模式,并且从SD卡启动, SW7:1-ON 2-OFF 3-ON 4-OFF. 重新上电或者复位,可以看到板上D18闪烁,说明SDRAM app代码成功从SD卡启动
目前为止,已经完成了三种方法的烧录下载说明,flashloader是最原始的方法,MCUBootUtility以及MCUXPresso Secure Provisioning都是基于flashloader的GUI软件,更加方便客户使用。
|