设备OTA空中升级原理

22 篇文章 11 订阅
订阅专栏

1. 背景

没有完美的软件,因为设计缺陷、业务需求更新,软件始终都在不断升级完善。新软件如何替换正在运行的旧软件就是本文关注的重点,尤其是针对电子产品,设备空中升级OTA,受限于硬件资源,需要选择不同的方案进行软件升级。

2. 空中升级流程

在线升级流程,简化就是设备运行旧软件的同时,获取新软件包,再执行特殊操作使用新软件覆盖旧软件,最后运行新软件。
在这里插入图片描述
根据硬件资源和系统整体框架,选择不同的升级方案,方案需要结合实际选择最佳的,技术层面是次要的。

3. 空中升级的方案

3.1. 整包升级

以STM8单片机升级为例,单片机最小系统运行流程如下:
在这里插入图片描述
要加入在线升级功能,就需要将主应用程序拆分,类似有2套程序在设备内运行,标准称呼是bootload+app,其中bootload始终不变,它接收新软件包并覆盖app区域。

硬件限制解决方案
单片机自身没有网络连接功能,只能基于外挂的网络模块从远端服务器下载新软件包,再通过串口传输给单片机由外挂主机下载新软件包,并通知单片机进入升级模式
单片机内部RAM小,不能进行复制运算或者缓存大量数据;单片EEPROM小,不能保存完整的新软件包只能在Bootload期间分段接收新软件并立刻写入flash

整体方案如下图:
在这里插入图片描述

难点与风险

  1. 单片机在app收到升级请求,需要重启进入bootload,对于以单片机为主控的设备,需要保证单片机重启期间网络模块不断电,所以因升级进入bootload要立刻恢复网络模块主机供电,必要时需要硬件支持。
  2. 单片机ram和rom有限,采用分段接收新软件包,直接写入flash,因此在应用层协议上需要确保数据包不会错误或遗漏或重发,目前采用Ymodem协议居多。升级包需要转成bin文件,单片机接收后写到app的起始地址。
  3. 单片机分段接收后写入flash,整个过程需要10秒以上,期间如果断电,单片机软件的app处于损坏状态,需要单片机有超时机制重启,再次开启升级并主动要求网络模块重传新软件包。
  4. 一般PC软件无需考虑内存和存储空间,也是采用整包升级,两个文件同时保存。例如app.exe运行时下载新的app_new.exe,下载校验后,app.exe自毁删除自身,然后将app_new.exe重命名为app.exe并启动。

3.2. 差分升级

差分升级软件框架同整包升级一样,区别在于新软件包的提供方式不同。
在这里插入图片描述
单片机软件一般不超过50KB,复杂微处理器的软件一般都比较大,但其RAM也大,下载完整的新软件包耗时长且浪费流量,因此可以基于新旧两版软件的差异,将差异文件传给设备,由设备运算还原出新软件包升级。

难点与风险

  1. 差分包的制作与还原算法验证,在bootload还原出新软件包时考虑到RAM,差分包是按块生成,还原也是按块执行,每块新软件写入前,需要先备份旧块,防止异常断电无法还原。
    在这里插入图片描述
    万一出现异常,重启还是进入bootlaod,查询上次已经还原到第几块,继续后面操作。有些为了再次减小差分包大小,还会对文件进行压缩,还原前先解压。
  2. 升级时,必须保证生成的差分包是基于当前设备内运行的版本,如设备运行V01,但是提供的差分包却是基于V02到V03的,则会导致异常。或者在文件中预设特殊版字符,版本匹配才进行差分还原升级。而整包没有该缺点,只要bootlaod正常,任意app软件版本可以互相升级。

3.3. 动态加载

动态加载在PC软件中很常见,多个exe可执行文件共用dll库文件,这样exe文件很小,缺点是要保证exe正常运行,需要在指定的路径下存放dll文件。
在这里插入图片描述
对嵌入式平台,动态加载的可以理解为始终保持底层基础框架不变,修改或替换不同的上层业务逻辑,实现不同的效果。为保证底层和上层之间调用关系,必须固定部分接口地址,也就是两者中间的接口映射,主要通过链接实现。
在这里插入图片描述
嵌入式软件从源码到可下载到设备的映像文件,需要经过的步骤:
在这里插入图片描述
动态加载就是在链接阶段,将上层代码obj编译成axf可动态加载的文件,而不是直接与其他obj合并成可执行文件。主要是使用armlink配置-entry指定映像文件的初始入口点或者在代码中使用#pragma arm section code关键字,保证动态的上层有固定的入口地址。凡是上层调用的底层接口,在编译阶段函数体指针都赋为空指令保证编译,后续再指向底层的真实地址。
在这里插入图片描述

其作用发生在系统启动阶段,从flash加载到内存,整个文件内的接口相对地址不变,整体偏移。这样,软件还是可以计算获取动态映像文件的入口地址。加载到内存区域,需确保该区域不会被占用,否则内存覆盖肯定会导致异常。
底层启动后,只能查到动态加载文件的入口函数,但实际底层与上层交互的接口肯定不止一个,而且上层也必然会调用底层接口,这就需要在第一个明确地址的函数体内实现上下层地址映射。
这里有2种方案,一种是函数指针赋值,一种是根据字符串查找。
底层需要给上层调用的接口,底层映射接口函数指针表,按固定顺序赋值给上层函数指针;或者底层只提供上层一个函数,但是改函数体内查字符串获取函数指针。这样实现上层调用事先固定的底层接口。
上层给底层提供的接口,也是提前固定的函数指针,也用上面的方法对接。
接口映射的核心是动态加载块有一个函数的地址是链接时指定的,在这个函数内实现上下层函数映射。除函数外,全局变量也是同样的使用指针传递。

难点与风险

  1. 前面2种使用bootload+app的方案,属于比较常规的方案,其本质是一块芯片运行2套互不干扰的软件,而动态加载的上下层之间有固定的接口,不能使用接口以外的交互。
  2. 动态加载对链接和arm底层要求高,在升级方向应用较少,因为对软件开发接口使用存在限制,但动态加载实现了上下层隔离,避免代码调用混乱,也为跨平台、多语言开发提供了基础。

4. 结论

在线升级为了产品在不召回的情况下,以较低的成本解决售后问题;升级是为了解决问题,但是一旦失败则可能导致设备变砖。前期测试应选择不同设备模拟升级异常,如强制断电或软件包异常,设备必须有自我恢复的机制。

如何实现OpenHarmony的OTA升级
OpenHarmony_dev的博客
02-07 1496
OpenAtom OpenHarmony(简称“OpenHarmony”) 3.1 Release不支持富设备升级,本章节所有实例在OpenHarmony 3.2 Beta3上验证,升级方式为全量升级,所用开发板为诚迈科技基于RK3568设计的HCPAD-100开发板以及OpenHarmony主干使用的DAYU200开发板。随着设备系统日新月异,用户如何及时获取系统的更新,体验新版本带来的新的体验,以及提升系统的稳定性和安全性成为了每个厂商都面临的严峻问题。同时,对于常见问题知道如何快速定位!
浅谈OTA升级常规流程
最新发布
2301_79252949的博客
07-25 513
OTA,英文解释为 Over The Air,即空中下载的意思,是通过移动通信的空中接口实现对移动终端设备及SIM卡数据进行远程管理的技术,现阶段属于物联网时代,很多设备都会接入网络,进行各式各样的交互,组成一个庞大的设备群,而这些设备出现问题时,就要求这些设备具备可升级迭代的能力。2.通过http或其他网络协议下载升级文件(升级文件中一般要带校验码,校验方式看具体应用,用于下载后的文件校验)OTA升级流程一般相对固化,一般步骤大同小异,可能有些步骤的设计细节和注意点不一样,但基本大差不差。
OTA升级流程1
08-03
设备通过colinkUpgradeRequestCb获取升级信息new_ver:版本信息file_list固件相关信息downloadUrl:下载链接Diges
嵌入式设备OTA空中升级原理
strongerHuang
05-22 1064
关注+星标公众号,不错过精彩内容转自| 嵌入式系统1. 背景没有完美的软件,因为设计缺陷、业务需求更新,软件始终都在不断升级完善。新软件如何替换正在运行的旧软件就是本文关注的重点,尤其是针对电子产品,设备空中升级OTA,受限于硬件资源,需要选择不同的方案进行软件升级。2. 空中升级流程在线升级流程,简化就是设备运行旧软件的同时,获取新软件包,再执行特殊操作使用新软件覆盖...
嵌入式OTA升级流程
weixin_44055729的博客
09-15 934
嵌入式OTA升级流程 包括STM32 ESP32
嵌入式物联网设备OTA全量、增量升级(bsdiff+Hdiffpatch+Xdelta)
harry_xiaobao的博客
12-14 1498
借用网上的介绍:适合嵌入式的差分升级又叫增量升级,顾名思义就是通过差分算法将源版本与目标版本之间差异的部分提取出来制作成差分包,然后在设备通过还原算法将差异部分在源版本上进行还原从而升级成目标版本的过程。差分升级方案不仅可以节省MCU内部的资源空间、还可以节省下载流程及下载和升级过程中的功耗、而且还可以减少数据包在空口的不稳定性。
OTA升级的实现原理
usstmiracle的博客
03-01 1万+
一、简介 1.1 概念 OTA:Over-the-Air Technology,即空中下载技术。 OTA升级:通过OTA方式实现固件或软件的升级。 只要是通过无线通信方式实现升级的,都可以叫OTA升级,比如网络/蓝牙。 通过有线方式进行升级,叫本地升级,比如通过UART,USB或者SPI通信接口来升级设备固件。 1.2 优点 1.通过OTA方式,可以对分布在各地的设备进行软件升级,而不必让运维人员各地奔波。 2.物联网平台支持通过OTA方式进行设备固件升级,是智能设备修复系统漏洞、..
AN0005-AT32OTA空中下载升级
03-14
通过学习《AN0005-AT32OTA空中下载升级》,开发者不仅可以掌握AT32系列MCU的OTA技术,还能进一步提升在嵌入式系统开发中的专业技能,为设计更安全、可靠的智能设备打下坚实基础。对于那些希望提升产品更新迭代效率、...
c语言空中升级协议,BLE的空中升级OTA
weixin_39952182的博客
05-25 988
BLE的OTA可以用来更新固件程序。本文以BlueNRG-1芯片为例,分析OTA实现方案细节。1. 架构一个OTA方案至少包括三个部分:程序类型描述当前用户程序当前正在运行的固件程序新版用户程序接收的更新后的固件程序引导程序芯片上电先进入引导程序,再跳转到新版程序运行BlueNRG-1对160kB的内部Flash进行了逻辑分区,分别存放这三个部分程序:这颗芯片的Flash地址区间为0x100400...
WCH蓝牙空中升级(BLE OTA)1
08-04
### WCH蓝牙空中升级(BLE OTA)关键技术解析 #### 一、概述 WCH BLE系列芯片支持多种固件升级方式,其中包括空中无线升级OTA)和有线升级两种主要方式。OTA(Over The Air)是一种远程无线固件升级技术,通过...
Android OTA升级流程
01-21
Android OTA升级流程,获取版本信息,下载完后MD5校验,OTA检测。
Android OTA升级过程
05-05
文档的内容是我总结的关于Android OTA升级包制作, Android Recovery模式和升级过程的一些知识. 其中参考了 http://blog.csdn.net/mu0206mu和 http://blog.csdn.net/zclongembedded/article/category/1314238 博客上的文章, 在此表示感谢. 水平所限, 还有很多不清楚的地方, 如有错误请指正,一起学习, 一起进步.
C语言实现ota升级代码
05-28
C语言,嵌入式系统ota升级源码,可以适应于linux及其他轻量级os使用。
Android-OTA升级流程资料
02-18
Android-OTA升级流程是Android系统提供的一种标准软件升级方式,通过空中下载技术(Over-the-Air Technology)实现设备的远程升级。整个升级流程可以分为三个阶段:生成升级包、下载升级包、安装升级包。 1. ...
RK3568平台 OTA升级原理
weixin_49303682的博客
12-14 1234
通过OTA方式实现固件或软件的升级;只要是通过无线通信方式实现升级的,都可以叫OTA升级,比如网络/蓝牙。那什么是有线升级呢,也叫做本地升级,比如我们平时为电脑装系统,就是提前将系统下载到U盘上,再通过USB连接连接到电脑上进行电脑系统升级,也就是说通过UART,USB或者SPI通信接口来升级设备固件就叫做有线升级
嵌入式OTA升级实现原理
热门推荐
bulebin的博客
09-06 2万+
目录 一、简介 1.1 概念 1.2 优点 1.3 实现原理 二、MCU OTA升级 2.1 制作升级包 2.2 下载升级包 2.3 验签升级包 2.4 更新固件 三、Linux OTA升级 3.1 系统升级 3.2 应用程序升级 四、总结 一、简介 1.1 概念 OTA:Over-the-Air Technology,即空中下载技术。 OTA升级:通过OTA方式实现固件或软件的升级。 只要是通过无线通信方式实现升级的,都可以叫OTA升级,比如网...
OTA实现设备升级方案
05-15 912
收到触发来源后,进行规则判断,判断该设备是否在本次的升级任务中,如果没有就直接结束,否则进入下一步进行模组判断,判断该模组和规则中是否一致,且版本低于规则中的版本,如果符合就将设备放入。行业非常的重要,当随着市场上的产品越来越多,保有量也越来越多,随着时间的推移,很多设备的功能比较老旧,逐渐落伍。版本,该版本就提供了一个非常高级的硬件设备,之后如果提出更高阶的自动驾驶程序,就可以通过。中查询设备升级过程中的状态,当状态还在升级中,就将设备信息放入。简要的升级方式,涉及的中间件较多,但整个流程比较好理解。
在线升级OTA升级原理和实现方式
weixin_43866583的博客
11-05 1万+
通过无线的方式进行更新的才称之为 OTA 升级;而那种通过外部的接口接线来实现的更新,称之为本地升级
写文章

热门文章

  • FreeRTOS基础及其应用 (入门简化版) 12979
  • mbedtls基础及其应用 6132
  • C关键字section的作用 5670
  • 中国移动oneos框架基础及其组件解析 5408
  • 嵌入式算法19---国家商用密码SM算法 5005

分类专栏

  • 无聊 21篇
  • 算法 19篇
  • 小节 22篇
  • 物联网 8篇
  • git 1篇
  • mbedtls 1篇
  • FreeRTOS 1篇

最新评论

  • FreeRTOS基础及其应用 (入门简化版)

    Joneyao123: 非常不错。总结的很到位,学习了!

  • 嵌入式算法6---AES加密/解密算法

    anikiVV: log_t("source",key,10);这个写反了吧,打印源数据变成打印密钥了

  • 嵌入式算法18---RSA非对称加密算法

    技术OR艺术: 可以分享一下你移植的代码吗?

  • 嵌入式算法18---RSA非对称加密算法

    @嵌入式系统: 可以关注微信公众号,新文章都在微信,CSDN没维护了

  • 嵌入式算法18---RSA非对称加密算法

    qq_30347005: 自己回答自己,rsa 512可以用,是我没注意加密的数据长度。

大家在看

  • 网站怎么从HTTP升级成HTTPS? 1
  • 网络安全在2024好入行吗?
  • CSP-J 2024 入门组初赛第一轮初赛试题及答案解析
  • 天津做网站五大误区及其解决方案
  • 花8000元去培训机构学习网络安全值得吗,学成后就业前景如何?

最新文章

  • 编程艺术之Unix哲学
  • 嵌入式软件命名常用英文集
  • 代码审查那些事
2024年3篇
2023年4篇
2022年13篇
2021年15篇
2020年21篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家玻璃钢古代人物雕塑价格云浮玻璃钢人物雕塑手工制作济南特色商场美陈浑南玻璃钢花盆花器郴州玻璃钢雕塑制作玻璃钢雕塑厂家视频怀化玻璃钢座椅雕塑设计玻璃钢花盆需求防老化玻璃钢花盆南昌欧式人物玻璃钢雕塑辽宁玻璃钢人物雕塑公司海珠玻璃钢卡通雕塑大同市玻璃钢雕塑厂江西玻璃钢雕塑定制南京中庭商场美陈承德大型户外玻璃钢雕塑玻璃钢景观雕塑专业春节商场美陈预算十堰商场新春美陈巩义玻璃钢智能雕塑新界玻璃钢动物雕塑萍乡大型玻璃钢雕塑鲤城商场美陈制作山东玻璃钢马雕塑公园艺术摆件玻璃钢小男孩造型雕塑梅州玻璃钢人物雕塑厂家江门商场美陈玻璃钢卡通雕塑福建商场主题创意商业美陈传播中国玻璃钢雕塑招标网温州户内玻璃钢雕塑价位香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化