【朝花夕拾】RT1170 SBL ISP下载带SDRAM APP
一, 文档简介
NXP官方推出了关于RT bootloader的SBL和SFW,能够很好的实现常规使用中对于secondary bootloader的要求。比如ISP,OTA,加密等功能。关于具体SBL/SFW的情况,可以查看应用笔记:
https://www.nxp.com/docs/en/user-guide/MCUOTASBLSFWUG.pdf
本文主要基于SBL,利用ISP方式下载用户app。最近遇到一个案例关于RT1170使用SBL ISP功能下载APP,在配置了SBL之后,下载SDK的简单代码比如led_blinky,helloword没有问题,但是如果下载SDK GUI demo,比如vglite_examples\vector_freertos代码,发现启动失败的问题。具体对于app的偏移等操作也是一样,代码大小也没有超过1MB,只是SDK GUI demo中使用了SDRAM,所以推测和SBL 的SDRAM使能有关。本文将就这个问题给出如何使用SBL ISP方式下载一个带有SDRAM的app,并且能够启动运行。
二, 操作步骤
2.1 SBL配置与下载
首先下载,SBL源码并解压:
https://github.com/nxp-mcuxpresso/sbl
下载ARM GCC,并安装,这里给出gcc-arm-none-eabi-9-2019-q4-major-win32.exe链接:
https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2019q4/gcc-arm-none-eabi-9-2019-q4-major-win32-sha2.exe?revision=ba95cefa-1880-4932-94d4-ebf30ad3f619&rev=ba95cefa1880493294d4ebf30ad3f619&hash=B2513193FEEED9E850C62399EFF9DA04C0F0A809
安装之后路径为:C:\Program Files (x86)\GNU Tools Arm Embedded\9 2019-q4-major\bin,打开\sbl-master\target\evkmimxrt1170\ sblprofile.py,修改EXEC_PATH为最新安装的ARM_GCC的路径:
EXEC_PATH = r'C:\Program Files (x86)\GNU Tools Arm Embedded\9 2019-q4-major\bin'
下面给出SBL的配置步骤:
(1) 打开\sbl-master\target\evkmimxrt1170\ env.bat
输入:
scons –menuconfig
图 1
(2) 配置Single image OTA
MCU SBL core->[*]Enable single image function
图 2
(3) 配置enable SDRAM
图 3
图 4
图 5
配置完成之后,保存 .config文件,退出配置界面。
图 6
(4) 生成sbl iar工程
窗口输入:
scons --ide=iar
然后打开\sbl-master\target\evkmimxrt1170\iar\sbl.eww
可以看到SDRAM的DCD已经成功加入:
图7
(5) 配置加密信息
命令窗口输入:
cd ..\..\component\secure\mcuboot\scripts
命令切换目录,并通过两行命令生成公钥与密钥:
python imgtool.py keygen -k xxxx_priv.pem -t rsa-2048-sign
python imgtool.py getpub -k xxxx_priv.pem -o xxxx_pub.pem -t sign
图 8
拷贝路径:sbl-master\component\secure\mcuboot\scripts\ xxxx_pub.c公钥内容,替换路径文件内容:
\sbl-master\component\secure\mcuboot\sign-rsa2048-pub.c
这样就会更新SBL工程的公钥信息。
打开\sbl-master\target\evkmimxrt1170\iar \sbl.eww
编译工程并使用debugger直接下载到MIMXRT1170-EVK开发板。
2.2 APP 配置
本文APP以MCUXpresso IDE导入SDK工程:evkmimxrt1170_vector_freertos_cm7
配置地址做偏移,偏移到:0X30100400
图 9
去掉FCB和DCD头:
图 10
编译代码,并且生成bin文件:evkmimxrt1170_vector_freertos_cm7.bin,拷贝到SBL文件夹:
sbl-master\component\secure\mcuboot\scripts
在命令窗口输入:
python imgtool.py sign --key xxxx_priv.pem --align 4 --version "1.1" --header-size 0x400 --pad-header --slot-size 0x100000 --max-sectors 32 evkmimxrt1170_vector_freertos_cm7.bin app2.bin
用于给app拼接上符合SBL的头,生成app2.bin用于备用。
三, 测试结果
通过上面的操作,已经下载了配置好的SBL到MIMXRT1170-EVK,并且准备好了可用的带有SDRAM的app,下面使用MCUBootutility工具下载。
图 11
这里注意,模式需要调整为SBL OTA模式。
开发板复位之后,5S内连接connect to SBL ISP, 然后在4选项中填入准备好的APP,点击5 write下载。这里注意3处的地址需要配置为:0X30100000。
下载成功后,退出。
复位开发板,等待5S之后,可以看到开发板能够成功电路LCD,说明GUI代码已经成功运行,打印log如下:
图 12
实物显示效果如下:
图 13
至此,带有SDRAM的app已经成功结合SBL运行,说明SBL带SDRAM的配置以及成功。