【经验分享】RT1064 ota bootloader HID更新app
有客户需求把flashloader放到内部memory,启动直接从flashloader启动,然后跳转到app中去,同时也可以使用flashloader的USB HID的方式结合blhost去更新app。
本文在SDK 工程evkmimxrt1060_ota_bootloader的基础上修改了OTA boot loader到RT1064, evkmimxrt1060_lwip_httpssrv_ota的基础上修改为适应RT1064的APP,APP功能主要是打印信息标志app版本,并且可以闪烁小灯。然后通过blhost去连接板子,并且更新app运行app。
由于本文修改点较多,暂时不一一列出,直接给出修改后的RT1064 otabootloader以及对应的简单app,并且给出测试步骤与结果。
测试开发板MIMXRT1064-EVK,两根USB线分别连接PC到J14,J9.修改工程基于MCUXPresso IDE。
附件中文件如下:
1.evkmimxrt1064_ota_bootloader_kerry , 这是ota bootloader, release 版本, 使用release模式下载。
2.evkmimxrt1064_lwip_httpssrv_ota_kerry, 这是app,debug版本,功能uart 打印信息,LED闪烁。
3.evkmimxrt1064_lwip_httpssrv_ota_kerry1_0x70040000.bin,这是app 版本1bin文件,使用板载虚拟串口打印测试信息test1,并且闪烁led小灯。
4.evkmimxrt1064_lwip_httpssrv_ota_kerry2_0x70040000.bin, 这是app版本2bin文件,使用板载虚拟串口打印测试信息test2,并且闪烁led小灯。
具体测试步骤以及测试log:
1.下载evkmimxrt1064_ota_bootloader_kerryrelease version到MIMXRT1064开发板。
2.拷贝evkmimxrt1064_lwip_httpssrv_ota_kerry1_0x70040000.bin和evkmimxrt1064_lwip_httpssrv_ota_kerry2_0x70040000.bin到blhost.exe的相同路径。
3.按下板子上reset按键, 在6秒内发送第一条blhost命令:
blhost.exe-t 50000 -u 0x15a2,0x0073 -j -- get-property 1 0
因为如果你的RT1064内部flash已经下载了有效app,那么复位先跑ota bootloader, 检测到app区域有有效代码,则在6s超时之后跳转到app并且运行app。如果需要返回到ota bootloader,则通过复位按键的方式返回。
下载app1:
--------------
C:\KerryPC\IMXRTCode\Question\RT1064\flashloader\USBHID bootloader\kerry\tool>blhost.exe -t 50000 -u 0x15a2,0x0073 -j --get-property 1 0
{
"command" :"get-property",
"response" : [ 1258424064 ],
"status" : {
"description" : "0 (0x0)Success.",
"value" : 0
}
}
C:\KerryPC\IMXRTCode\Question\RT1064\flashloader\USBHID bootloader\kerry\tool>blhost.exe -t 5242000 -u 0x15a2,0x0073 -j --fill-memory 0x20202000 4 0xc0000007 word
{
"command" :"fill-memory",
"response" : [],
"status" : {
"description" : "0 (0x0)Success.",
"value" : 0
}
}
C:\KerryPC\IMXRTCode\Question\RT1064\flashloader\USBHID bootloader\kerry\tool>blhost.exe -t 5242000 -u 0x15a2,0x0073 -j --fill-memory 0x20202004 4 0 word
{
"command" :"fill-memory",
"response" : [],
"status" : {
"description" : "0 (0x0) Success.",
"value" : 0
}
}
C:\KerryPC\IMXRTCode\Question\RT1064\flashloader\USBHID bootloader\kerry\tool>blhost.exe -t 50000 -u 0x15a2,0x0073 -j --configure-memory 9 0x20202000
{
"command" :"configure-memory",
"response" : [],
"status" : {
"description" : "0 (0x0)Success.",
"value" : 0
}
}
C:\KerryPC\IMXRTCode\Question\RT1064\flashloader\USBHID bootloader\kerry\tool>blhost.exe -t 5242000 -u 0x15a2,0x0073 -j --read-memory 0x70000000 0x4000 flexspiNorCfg.dat 9
{
"command" :"read-memory",
"response" : [ 16384 ],
"status" : {
"description" : "0 (0x0)Success.",
"value" : 0
}
}
C:\KerryPC\IMXRTCode\Question\RT1064\flashloader\USBHID bootloader\kerry\tool>blhost.exe -t 5242000 -u 0x15a2,0x0073 -j --read-memory 0x70040000 0x6000 flexspiNorCfg.dat 9
{
"command" :"read-memory",
"response" : [ 24576 ],
"status" : {
"description" : "0 (0x0)Success.",
"value" : 0
}
}
C:\KerryPC\IMXRTCode\Question\RT1064\flashloader\USBHID bootloader\kerry\tool>blhost.exe -t 2048000 -u 0x15a2,0x0073 -j --flash-erase-region 0x70040000 0x6000 9
{
"command" : "flash-erase-region",
"response" : [],
"status" : {
"description" : "0 (0x0)Success.",
"value" : 0
}
}
C:\KerryPC\IMXRTCode\Question\RT1064\flashloader\USBHID bootloader\kerry\tool>blhost.exe -t 5242000 -u 0x15a2,0x0073 -j --write-memory 0x70040000 evkmimxrt1064_lwip_httpssrv_ota_kerry1_0x70040000.bin 9
{
"command" :"write-memory",
"response" : [],
"status" : {
"description" : "0 (0x0)Success.",
"value" : 0
}
}
C:\KerryPC\IMXRTCode\Question\RT1064\flashloader\USBHID bootloader\kerry\tool>
到此为止,evkmimxrt1064_lwip_httpssrv_ota_kerry1_0x70040000.bin已经下载到板子,按下复位按键,等待6秒后,会发现板载LED D18闪烁,UART窗口115200bps打印信息:test1。
这个现象说明evkmimxrt1064_lwip_httpssrv_ota_kerry1_0x70040000.bin功能已经工作。
现在尝试下载evkmimxrt1064_lwip_httpssrv_ota_kerry2_0x70040000.bin,按下reset按键,6秒之内发送第一条命令:
blhost.exe-t 50000 -u 0x15a2,0x0073 -j -- get-property 1 0
一旦发送命令成功,代码将会停留在flashloader,不会跳转到app。
然后输入如下信息:
-----------------------------
C:\KerryPC\IMXRTCode\Question\RT1064\flashloader\USBHID bootloader\kerry\tool>blhost.exe -t 50000 -u 0x15a2,0x0073 -j --get-property 1 0
{
"command" :"get-property",
"response" : [ 1258424064 ],
"status" : {
"description" : "0 (0x0)Success.",
"value" : 0
}
}
C:\KerryPC\IMXRTCode\Question\RT1064\flashloader\USBHID bootloader\kerry\tool>blhost.exe -t 2048000 -u 0x15a2,0x0073 -j --flash-erase-region 0x70040000 0x6000 9
{
"command" :"flash-erase-region",
"response" : [],
"status" : {
"description" : "0 (0x0)Success.",
"value" : 0
}
}
C:\KerryPC\IMXRTCode\Question\RT1064\flashloader\USBHID bootloader\kerry\tool>blhost.exe -t 5242000 -u 0x15a2,0x0073 -j --write-memory 0x70040000 evkmimxrt1064_lwip_httpssrv_ota_kerry2_0x70040000.bin 9
{
"command" :"write-memory",
"response" : [],
"status" : {
"description" : "0 (0x0)Success.",
"value" : 0
}
}
C:\KerryPC\IMXRTCode\Question\RT1064\flashloader\USBHID bootloader\kerry\tool>blhost.exe -t 5242000 -u 0x15a2,0x0073 -j --read-memory 0x70040000 0x6000 flexspiNorCfg.dat 9
{
"command" :"read-memory",
"response" : [ 24576 ],
"status" : {
"description" : "0 (0x0)Success.",
"value" : 0
}
}
-------------------
到此为止,evkmimxrt1064_lwip_httpssrv_ota_kerry2_0x70040000.bin已经下载到板子,按下复位按键,等待6秒后,会发现板载LED D18闪烁,UART窗口115200bps打印信息:test2。
这个现象说明evkmimxrt1064_lwip_httpssrv_ota_kerry2_0x70040000.bin功能已经工作。
综上,放在flash的boot loader已经能够成功工作,并且成功跳转到app区域。暂时先给出测试修改工程代码以及测试结果,关于具体修改点以及详细分析,后续给出! |