查看: 7421|回复: 5

[原创] 【经验分享】RT1060 OTA bootloader ISP配套APP

[复制链接]

该用户从未签到

715

主题

6374

帖子

0

超级版主

Rank: 8Rank: 8

积分
25213
最后登录
2025-8-18
发表于 2021-7-6 16:51:05 | 显示全部楼层 |阅读模式
本帖最后由 小恩GG 于 2021-7-6 16:57 编辑

【经验分享】RT1060 OTA bootloader ISP配套APP

一 文档说明

   RT1060OTA bootloader能够实现flashloaderISP的功能,可以理解为把flashloader放到了flash里面,而不是之前的RAM,并且不需要进入serial download 模式就可以使用blhost下载APP代码,启动先跑ota_bootloader,然后检查APP区域是否有数据,如果有则6秒之后跳过去,否则留在boot loader里面,是一个具有ISP功能的secondary bootloader。之前写过一篇经验分享:


是在原来evkmimxrt1060_lwip_httpssrv_ota的基础上去修改代码。那么如果是一个客户的APP,如何修改来匹配这个带有ISP 下载代码的bootloader呢?本文将以evkmimxrt1060_iled_blinky MCUXPresso工程为例讲解如何去实现ota_bootloader所需要的下载APP。


二 操作步骤

   使用MCUXPresso IDE导入evkmimxrt1060_iled_blinky工程。
  作为一个合格的ota bootloader配套image,需要从0X60040000存放数据,这点可以在ota_bootloader的bootloader_config.h中知道:

#define BL_APP_VECTOR_TABLE_ADDRESS (0x60040000u)

另外,还需要从0X60040000开始的前0X400存放ota_header。所以需要这几个文件:
Ota_bootloader_hdr.c,
ota_bootloader_board.h,
ota_bootloader_supp.c,
ota_bootloader_supp.h
存放到source文件夹。这几个文件可以从evkmimxrt1060_lwip_httpssrv_ota工程中找到。
另外需要在ld文件中开辟一块0X400的区域作为ota_header的存放区域。
下面给出添加的细节:

2.1 memory空间调整

   将APP从原来的0X60000000调整到0X60040000,ota_bootloader所指定的APP区域。

1.jpg

图1

2.2 ota_hdr文件添加

在source文件夹添加上面提到的四个文件,并且在led_blinky.c中添加ota_bootloader_supp.h的调用:

2.jpg

图2

2.3 linker文件修改

在evkmimxrt1060_iled_blinky_debg.ld中添加boot_hrd,长度为0X400。

  1. /* OTA bootloader header */
  2. .boot_hdr : ALIGN(4)
  3. {
  4.     FILL(0xff)
  5.     __boot_hdr_start__ = ABSOLUTE(.) ;
  6.     KEEP (*/ota_bootloader_hdr.o(.text .text* .rodata .rodata*))
  7.     __boot_hdr_end__ = ABSOLUTE(.) ;
  8.     . = 0x400 ;
  9. } >BOARD_FLASH        
复制代码

3.jpg 图3
至此,已经完成了配套app的修改。
编译,生成.bin文件,并且修改名为:evkmimxrt1060_iled_blinky_ota_0x60040000.bin
以备用。
查看这个image:

4.jpg
图4

可以看到在前0X400区域,有对应的ota_hdr数据。

三 测试结果
Bootloader下载之后,使用的ota_bootloader路径:
SDK_2.9.3_EVK-MIMXRT1060\boards\evkmimxrt1060\bootloader_examples\ota_bootloader
需要先下载到MIMXRT1060-EVK。
然后复位,并且使用如下命令去连接:

  1. blhost.exe -t 50000 -u 0x15a2,0x0073 -j -- get-property 1 0

  2. blhost.exe -t 2048000 -u 0x15a2,0x0073 -j -- flash-erase-region 0x60040000 0x6000 9

  3. blhost.exe -t 5242000 -u 0x15a2,0x0073 -j -- write-memory 0x60040000 evkmimxrt1060_iled_blinky_ota_0x60040000.bin

  4. blhost.exe -t 5242000 -u 0x15a2,0x0073 -j -- read-memory 0x60040000 0x6000 flexspiNorCfg.dat 9
复制代码

5.jpg
图5

下载完成之后,按下reset,等待6秒之后,跳转到APP,可以看到MIMXRT1060-EVK板子上的小灯闪烁,实现了ota_bootloader配套APP的准备。
evkmimxrt1060_iled_blinky.zip (9.66 MB, 下载次数: 60)
回复

使用道具 举报

  • TA的每日心情
    擦汗
    6 天前
  • 签到天数: 579 天

    连续签到: 1 天

    [LV.9]以坛为家II

    41

    主题

    2万

    帖子

    2

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    6990
    最后登录
    2025-8-15
    发表于 2021-7-7 09:33:00 | 显示全部楼层
    大神们写的都好详细啊
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-4-15 14:49
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    19

    主题

    132

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1239
    最后登录
    2025-8-17
    发表于 2021-7-7 16:47:41 | 显示全部楼层
    ghost110 发表于 2021-7-7 09:33
    大神们写的都好详细啊

    这个功能应该与RT1020, RT1050的second bootloader类似。真正核心OTA的还没说明白。
    最核心的应该是在APP1里运行时,下载新的APP到APP2,然后进行swap。
    什么时候进行swap,选择那个APP1还是APP2。这才是OTA的关键。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    715

    主题

    6374

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    25213
    最后登录
    2025-8-18
     楼主| 发表于 2021-7-8 15:24:17 | 显示全部楼层
    本帖最后由 小恩GG 于 2021-7-8 15:28 编辑
    waterkingchen 发表于 2021-7-7 16:47
    这个功能应该与RT1020, RT1050的second bootloader类似。真正核心OTA的还没说明白。
    最核心的应该是在APP ...

    本篇文章暂时还没涉及OTA的具体情况,主要是针对有些客户需要使用ISP secondary bootloader功能的情况,可以借助于这个工程。
    关于下载到APP2,然后选择从哪个APP启动方面,后续会给出对应文章,其实也是很简单,在现在文章里面提到的ota_bootlaoder_supp.c中已经给出了具体的函数,只要在APP里面添加相关的OTA调用去选择跑哪个,也就是进行image swap/rollback, 具体过程后续我会单独开贴,给出测试demo,生成两个APP,然后去调用OTA API 去实现你说的SWAP功能等,还请耐心等待。
    目前是针对flash版本的ISP功能,因为有较多客户在问这方面的问题。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    25
    最后登录
    2022-1-3
    发表于 2021-7-24 11:50:36 | 显示全部楼层
    evkmimxrt1060\bootloader_examples\ota_bootloader

    请问一下我配置成IAR版本  下载2.9.3版本后没有bootloader_examples\ota_bootloader 这个例子程序目录?

    是什么原因啊?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-8-29 11:00
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    0

    主题

    4

    帖子

    0

    新手上路

    Rank: 1

    积分
    42
    最后登录
    2023-12-25
    发表于 2023-8-29 11:08:35 | 显示全部楼层

    大神们写的都好详细啊
    今天已签到
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-20 03:45 , Processed in 0.095539 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表