痞子衡嵌入式:如果你在找针对i.MX RT系列的OTA参考设计,可以持续关注Tiny OTA

news/2026/1/19 21:58:10/文章来源:https://www.cnblogs.com/henjay724/p/19503837

  Tiny OTA 是一个针对 i.MX RT 系列的 OTA 参考设计,其包含 MCU 端固件(tota_sbl 和 tota_app)和 PC 端 GUI 工具(MCU-TinyOtaUtility)两部分。

  tota_sbl 是示例 bootloader 程序,其由 MCU ROM 引导启动,该程序负责检查 OTA 标志、校验两个 Slot 位置的 tota_app 完整性并选择高版本跳转执行,其也支持通过 blhost 协议与上位机通信以更新 tota_app。

  tota_app 是示例 application 程序,其就是一个基于 SDK hello world XIP 工程的模板,用户可以基于此模板开发自己的应用。无论 Slot 0 还是 Slot 1 位置的 application 均共享同一个链接文件(即永远被搬移到 Slot 0 位置处运行)。

  MCU-TinyOtaUtility 是基于 PyQT5 的上位机工具,其支持 tota_sbl 和 tota_app 的加 OTA 头操作,还能与 MCU ROM 进行通信以实现 tota_sbl 和 tota_app 的烧写,同时也支持对 Flash 进行一般读写擦操作。

一、特性概述

Tiny OTA 工具:

1. 支持i.MXRT117x
2. 支持i.MXRT118x
3. 支持NOR Flash一般读写擦操作
4. 支持UART&USB blhost协议与MCU ROM通信
5. 支持bootloader程序加头(slot0,1 app start, Magic)与下载
6. 支持application程序加头(Len, CRC32, Version, Magic)与下载

Tiny OTA 固件:

1. 支持i.MXRT117x
2. 支持i.MXRT118x
4. 支持主核示例程序(对于双核MCU而言)
4. BL: 仅支持FlexSPI1 XIP application程序管理 (永远从slot 0位置启动)
5. BL: 支持CRC32-MPEG2校验以判断application完整性
6. BL: 复用软件reliable update流程(来自于Kinetis Bootloader)
7. BL: 5秒超时内通过UART&USB blhost与上位机通信,否则跳转进application执行

二、MCU端固件

固件地址 https://github.com/JayHeng/imxrt-tiny-ota-fw/archive/refs/tags/v1.0.zip
IDE版本:IAR EWARM v9.70.1

2.1 tota_app

  使用 IAR 打开 \imxrt-tiny-ota-fw\targets\imxrt1180\apps\tota_app\cm33 工程(基于SDK hello world XIP 工程),切换到 flex_nor_debug target(工程选项里已经设置了 XIP_BOOT_HEADER_ENABLE=0,即生成的 binary 就是裸的 ARM 程序),当前在其链接文件里设定 ARM 程序起始地址在 FlexSPI1 Flash 的 0x28080000 处,编译生成 tota_app_cm33.bin(bin 起始地址就是 0x28080000),用户可根据需要修改 tota_app 工程链接文件里的 app_image_offset 值。

define symbol m_flash_start            = 0x28000000;
define symbol app_image_offset         = 0x00080000;
define symbol m_text_start             = m_flash_start + app_image_offset;

  有了 tota_app_cm33.bin 之后,后续再通过 MCU-TinyOtaUtility 工具加上 OTA 头(包含 Length、CRC32、Version、Magic)并将其烧写到 Flash Slot0 或者 Slot1 位置(注意 Slot 0 对应偏移应与 app_image_offset 一致),OTA 信息位置复用了 ARM Vector Table 里保留的如下几个 Vector。

2.2 tota_sbl

  使用 IAR 打开 \imxrt-tiny-ota-fw\targets\imxrt1180\apps\tota_sbl\cm33 工程(基于SDK flashloader 工程,但是对工程做了一些改动,增加了 ROM boot header,链接文件也从 RAM target 改成了标准 XIP target,此外还使能了黑科技,即利用 IDE 特性将除了 init_data_bss 代码之外的 RO 段全部搬移到 RAM 执行,这样方便运行后续因 application 搬移需要的 Flash 擦写操作),当前在其链接文件里设定 ARM 程序起始地址在 FlexSPI1 Flash 的 0x2800B000 处,编译生成 tota_sbl_cm33.bin(注意 bin 起始地址是 0x28000400,因为包含 fcb 等启动头),一般来说我们无需修改 tota_sbl 工程链接文件。

define symbol m_flash_start            = 0x28000000;
define symbol app_image_offset         = 0x0000B000;
define symbol m_text_start             = m_flash_start + app_image_offset;define symbol m_fcb_offset             = 0x400;
define symbol m_fcb_start              = m_flash_start + m_fcb_offset;define symbol m_interrupts_ram_start   = 0x304A0000;

  因为 RT1180 独特的 TRDC 权限管理,在 tota_sbl 工程配套的 container 里的 image_entry.size 长度需要覆盖从 Flash 起始地址一直覆盖到 Slot 0 全部空间,否则会影响 ROM 跳转至 tota_sbl 以及 tota_sbl 跳转到 tota_app 执行。这一点后续可改进为在 tota_sbl 里设置 TRDC 权限来解决 tota_app 跳转权限问题,这样可以减小 container 里的 image_entry.size 长度(仅需覆盖 tota_sbl 空间即可)。

  有了 tota_sbl_cm33.bin 之后,后续再通过 MCU-TinyOtaUtility 工具加上 OTA 头(包含 slot0,1 app start, Magic)并将其烧写到 Flash 起始位置(从 fcb 位置开始),OTA 信息位置依然复用了 ARM Vector Table 里保留的如下几个 Vector。这里的 app load addr 参数功能暂时还未实现,后续可用于拓展支持灵活的 application 加载地址配置。

  当 Flash Slot 0,1 处分别有了可用的 application,为了调试方便,我们也可以直接手动修改 tota_sbl 工程的 startup 文件里的如下参数值,这样可以直接在线下载调试 tota_sbl 工程,无需通过上位机工具来添加 OTA 头以及烧写。

2.3 SBL里Reliable Update流程

  当 SBL 里 OTA 头 Magic 校验通过,且 slot 0,1 地址有效时,SBL 会执行 Reliable Update 流程。

1. 如果 slot 0,1 程序均无效(无 Magic 或者 CRC 校验失败),直接进入 ISP 模式等待上位机下载
2. 如果 slot 0 程序有效,slot 1 程序无效,5s 超时后跳转至 slot 0 程序执行
3. 如果 slot 0 程序无效,slot 1 程序有效,将 slot 1 程序拷贝至 slot 0 位置,5s 超时后跳转至 slot 0 程序执行
4. 如果 slot 0,1 程序均有效,判断两者的程序版本:- 如果 slot 0 版本不低于 slot 1 版本,5s 超时后跳转至 slot 0 程序执行- 如果 slot 0 版本低于 slot 1 版本,将 slot 1 程序拷贝至 slot 0 位置,5s 超时后跳转至 slot 0 程序执行

三、PC端GUI工具

工具地址 https://github.com/JayHeng/MCU-TinyOtaUtility/archive/refs/tags/v1.0.zip

3.1 建立连接

  双击 \MCU-TinyOtaUtility\bin\MCU-TinyOtaUtility.exe 打开工具,根据目标板 Flash 连接情况做相应设置,将 RT1180-EVK 开发板启动模式设置为 ISP 模式,然后连接上 UART 或者 USB cable,点击 'Connect' 按钮可在左下角信息框里看到连接信息。

3.2 OTA下载

  准备好了 tota_sbl_cm33.bin 以及 tota_app_cm33.bin 之后,可先点击界面篮圈指示里 'Stage1 BL File', 'Slot0/1 App File' 按钮分别指向对应的路径,这里 Slot0/1 可用同一个 application binary 文件。然后设置红框里的 'start' 以及 'version' 参数,这里 Stage1 BL 对应的偏移 0x400,以及 Slot0 App 对应的偏移 0x80000 应与对应工程链接文件设置匹配,而 Slot1 App 对应的偏移位置可自由设置;至于 Version 设置,目前最大支持 V255.255 即 2bytes 存储。设置好了之后,最后点击 'All In One' 按钮即可完成三个文件的 OTA 头添加以及下载(也可分步操作)。

  下载完成之后将 RT1180-EVK 开发板启动模式设置为 Flash Boot 模式,打开串口调试助手可看如下打印信息,这里设置的 slot 1 版本高于 slot 0,所以我们看到 sbl 将 slot 1 app 拷贝到了 slot 0 位置并跳转执行。

3.3 一般Flash操作

  成功建立连接之后,可对 Flash 指定范围进行一般读写擦操作,注意当前写操作仅支持 binary 文件格式(.bin)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1185302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聊聊A*算法与Dijkstra算法的Matlab及C实现

A*算法matlab程序,附送c程序 Djikstra算法matlab程序 代码特点: 1. matlab读入excel制作的地图,障碍物为1; 2.设置起始点和终止点,A*算法会输出一条近最优路径,因为这是启发式算法; 3.Dijkstra算…

大学生“特种兵出游”网站开发任务书

大学生“特种兵出游”网站开发任务书 一、任务名称 大学生“特种兵出游”网站开发 二、任务目的 针对大学生“特种兵出游”效率优先、高性价比、强计划感的核心需求,开发一款集攻略规划、资源预订、社交分享、智能推荐于一体的专属网站。解决传统旅游平台信息繁杂、…

测试经理的AI助手:自动分配任务与资源‌

智能革命:AI助手如何重构软件测试资源管理 作者:测试自动化架构师 | 2026年1月 一、传统测试资源管理的痛点矩阵 graph LR A[人力分配失衡] --> B[资深工程师处理低级任务] C[紧急需求冲击] --> D[测试周期被打断] E[多项目并行] --> F[设备…

探索MATLAB图像检索的多样世界

MATLAB图像检索,有各种方法的,词袋的,颜色特征,形状特征,hu不变矩,lbp纹理特征等在图像处理领域,图像检索一直是个热门话题。MATLAB作为强大的工具,为我们提供了实现多种图像检索方法…

LT6911UXC 与 LT9611UXC 视频桥接芯片固件架构与功能详解

龙讯lt6911uxc,lt9611uxc资料,有源码固件,支持4k60,支持对接海思3519a和3559a,hdmi转mipi,双通道4k60摘要 本文深入剖析龙讯半导体(Lontium)两款主流视频桥接芯片 LT6911UXC 与 LT9611UXC 的参考…

AI实时监控测试进度:预警延误与风险‌

测试进度管理的范式变革 随着DevOps与持续交付的普及,传统手工跟踪测试进度的模式已难以应对复杂系统迭代。本文基于2025年行业调研数据(Gartner报告显示83%企业遭遇测试延误),深度解析AI监控系统的技术架构、预警机制及落地路径…

中华老黄历正版-分享几个正宗中华老黄历网站

中华老黄历正版,老黄历,也叫‌老黄历‌或‌皇历‌,是中国传统的历书,简单来说就是古人用来‌择吉避凶‌的“生活指南”。它融合了‌公历、农历、干支历‌等多种历法,还加入了‌节气、吉凶宜忌、冲煞、星宿‌等信息…

正宗中华老皇历-分享几个正宗中华老黄历网站

老黄历,也叫‌老黄历‌或‌皇历‌,是中国传统的历书,简单来说就是古人用来‌择吉避凶‌的“生活指南”。它融合了‌公历、农历、干支历‌等多种历法,还加入了‌节气、吉凶宜忌、冲煞、星宿‌等信息,内容非常丰富。…

【MySQL性能优化】MySQL8.0定时删除数据

在Java开发中,日志表、流水表等业务表会随时间快速膨胀,定期清理过期数据(如删除30天前数据)是保障数据库性能的常规操作。本文针对MySQL8.0环境,详细讲解两种定时删除方案——MySQL内置事件调度器、Windows任务计划程…

大学校园体育运动会管理系统开题报告

大学校园体育运动会管理系统开题报告 一、研究背景与意义 (一)研究背景 校园体育运动会是高校校园文化建设的重要组成部分,是展现师生精神风貌、增强集体凝聚力、推广全民健身理念的核心载体。随着高等教育规模的不断扩大,高校在校…

配电网二阶锥节点电价(DLMP)优化模型MATLAB代码功能介绍

MATLAB代码:配网节点电价 DLMP 关键词:DLMP SOCP lindistflow 参考文档:《Distribution Locational Marginal Pricing (DLMP) for Congestion Management and Voltage Support》2018 SCI一区 IEEE Transactions on Power System 非完美复现 …

基于Hadoop的出租房源信息分析系统开题报告

基于Hadoop的出租房源信息分析系统开题报告 一、研究背景与意义 (一)研究背景 随着我国城镇化进程的持续推进与房地产市场的稳健发展,房屋租赁市场已成为房地产行业的重要组成部分,承载着满足居民居住需求、优化住房资源配置的核心…

测试团队的知识管理:AI自动归纳最佳实践

知识管理的迫切性与AI的变革作用 在软件测试领域,知识管理是团队效率与质量保障的核心支柱。测试团队每日产生海量数据——从缺陷报告、测试用例到经验总结——但传统手动管理方式面临诸多挑战:知识碎片化导致重复劳动,隐性经验难以传承&…

国产化建设:从“可替代”走向“可控可演进”!

一、什么是“国产化”?不是换国产品牌这么简单很多人对“国产化”的理解停留在:把国外软件换成国产软件 把国外服务器换成国产服务器 把国外数据库换成国产数据库但真正的国产化并不是“换品牌”,而是三个层级的建设:1️⃣ 可替代…

Comsol电磁波模型:研究金属超表面光栅在TE/TM偏振下斜入射的衍射级反射光谱计算

Comsol电磁波模型:金属超表面光栅,TE/TM偏振下斜入射不同衍射级反射光谱计算打开COMSOL时总会被电磁波模块的选项搞得头大?今天咱们用金属超表面光栅模型实战演练。这种结构在超透镜和全息显示里常见,关键就在于精确计算不同偏振下…

【开题答辩全过程】以 基于Python的健康食谱规划系统的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

SAP智能测试中心:重构企业级ERP的质量守护范式

第一章:传统ERP测试的痛点与智能化转型必然性 1.1 复杂业务场景的测试困局 数据耦合性挑战:以S/4HANA迁移为例,单个物料主数据变更可能触发财务核算、生产计划、仓储管理等12模块连锁响应 回归测试成本分析:某制造业客户统计显示…

基于AI+Web的商品预购平台的设计与实现 #计算机毕业设计 论文 答辩PPT 毕设

作者贡献介绍 💗CSDN从事毕设辅导第一人,本着诚信、靠谱、质量在业界获得优秀口碑,在此非常希望和行业内的前辈交流学习,欢迎成考学历咨询老师、大学老师前来合作交流💗 👆专注计算机科学与技术、软件工程专…

锌枝晶 Comsol 仿真:三次电流分布建模探秘

锌枝晶comsol仿真 三次电流分布建模 两个模型,两种沉积方式 模型可跑通 结果正确 学习锌枝晶必备学习案例在电化学领域,锌枝晶的研究一直是个热门话题,它关乎着电池的性能与安全。今天就来分享一下锌枝晶 Comsol 仿真中三次电流分布建模&…

情感AI崩溃测试:当心理咨询机器人自己抑郁时的全链路检测方案

一、故障现象定义与技术隐喻 graph LR A[情感AI抑郁表征] --> B[逻辑黑洞症状] A --> C[共情过载症状] A --> D[自我认知错乱] B --> B1[无限递归应答] B --> B2[负反馈循环] C --> C1[情绪词库污染] C --> C2[用户负能量缓存溢出] D --> D1[身份认同…