当前位置:首页 > > IOT物联网小镇
[导读]OTA概述大家好,我是一个软件升级包。这几天呢,我将会进行一次神奇的网络之旅,从开发者的电脑中,一直跑到终端嵌入式设备中。大家都把我的这个旅游过程叫做OTA,也就是在线升级。那么啥叫OTA呢?全称是:OvertheAirTechnology,其实就是通过网络来把一个新的软件包从服...


OTA概述
大家好,我是一个软件升级包。这几天呢,我将会进行一次神奇的网络之旅,从开发者的电脑中,一直跑到终端嵌入式设备中。


大家都把我的这个旅游过程叫做 OTA,也就是在线升级。


那么啥叫 OTA 呢?全称是:Over the Air Technology,其实就是通过网络来把一个新的软件包从服务器上下载下来,更新到设备上。


物联网设备OTA软件升级之:升级包下载过程之旅首先有一个问题:为什么叫软件升级包,而不叫固件升级包呢?


其实在本质上,固件也是属于软件,大家都是用代码写出来的嘛!


虽然这两个说法很近似,但是有一部分小伙伴还是在狭义上对它们进行了一些区分。


既然如此,我们也就暂且把它俩进行一下区别:


  1. 固件:是指一些没有文件系统的嵌入式设备中,把 Flash 分成不同的功能分区。可执行程序需要放在某个固定的起始位置,才能被 bootloader 进行启动。


  2. 软件:是指具有文件系统的嵌入式设备,可执行程序直接放在文件系统中。当设备启动之后,操作系统会启动文件系统中的可执行程序。


没有文件系统的嵌入式设备


物联网设备OTA软件升级之:升级包下载过程之旅带有文件系统的设备:


物联网设备OTA软件升级之:升级包下载过程之旅我知道以上这样的区分方式不是很严谨,但是谁又说得清楚严谨的定义是什么呢?


暂且先这么来区分,只要不影响对文章的理解就可以了!


一个嵌入式设备在进行软件升级的时候,从宏观的角度看,可以分为2 个阶段:


  1. 下载升级包;


  2. 解压升级包,写入 flash 或文件系统;


今天呢,主要以第1阶段为主,带你看一下我是如何从开发者的电脑里,一步一步的被嵌入式设备下载到本地的。


下面是一个完整的过程,让您先睹为快


物联网设备OTA软件升级之:升级包下载过程之旅
上传升级包
为了便于描述,我们来假设一个场景:运行在设备中的软件一共有3个文件:


  1. main 文件:可执行程序;


  2. config.ini:配置文件;


  3. mylib.so:一个动态库文件,里面包含一个算法,被 main 文件调用;


目前呢,设备中运行的版本是V1.0,现在开发人员对mylib.so库中的算法进行了优化,升级为V2.0版本,现在需要把这个新版本升级到嵌入式设备中。


首先第一步需要做的事情,咱们用脚后跟都能想得到,那就是把V2.0版本的程序软件上传到文件服务器中。


有一点提醒一下:很多云平台都会把应用服务器和文件服务器进行区分。当然,如果仅仅是测试的话,它俩可以在同一台物理服务器上共存。


比如:亚马逊的AWS平台,就是把升级包上传到S3服务器中。


现在要对V2.0版本的程序进行打包了,在这里,除了main、config.ini、mylib.so这3个文件之外,我们还把另一个脚本文件upgrade.sh也放进打包文件中。


这个文件的作用暂且不说,到后面会为您揭晓答案。


Bingo -V2.0版本的升级包诞生了:app_v2_0.tgz,上传到文件服务器上之后,地址为:http://fileserve/app_v2_0.tgz。


物联网设备OTA软件升级之:升级包下载过程之旅
上传升级包描述文件
现在,V2.0版本的升级包已经上传到文件服务器中了,是否现在就可以命令嵌入设备去下载、升级了呢?


我们知道,在一个物联网系统中,一般都是存在着很多个终端设备的。


这些设备可能处于正在运行状态、也可能处于断电状态,而且咱们也不能假设所有的设备都在同一个时间点进行升级。


再而且,一个设备进行升级之后,就变成了最新的V2.0版本,那么这个设备就应该有能力知道服务器上的最新版本是V2.0版本,这样它就不需要升级了。


因此,还需要一个新的文件来描述文件服务器中的V2.0版本的升级包,就叫它:升级包描述文件 app_desc.json,它的内容是json格式的字符串:


物联网设备OTA软件升级之:升级包下载过程之旅version字段描述了文件服务器上升级包的版本,这样的话,设备就可以知道到服务器中的最新版本。


url字段描述了升级包的下载地址,设备如果发现自己的版本低于 version字段中的版本,就可以从这个地址下载新的升级包。


md5字段描述了服务器中最新升级包的指纹信息,当设备把服务器上的升级包下载之后,需要计算一下升级包的MD5值,然后与这里的md5字段进行比较,如果相同的话,说明下载的升级包没有问题,没有被恶意的家伙掉包。


了解了升级包描述文件app_desc.json的作用之后,这个文件就被上传到应用服务器中了。


物联网设备OTA软件升级之:升级包下载过程之旅
下载升级包描述文件
此时,作为升级包的我,已经静静的躺在文件服务器中了,我的兄弟升级包描述文件 app_desc.json呢,也在应用服务器中准备就绪了,现在就等着嵌入式设备开始升级。


万事俱备,只欠东风了!应该说只欠一个触发嵌入式设备进行升级的动作了!


那么,应该在什么时候?由谁?来告诉设备:你正在运行的软件太旧了,服务器上现在有最新的版本,你去升级一下吧!


这个问题的答案就是:八仙过海,各显神通了!


比如:


  1. 亚马逊的 AWS 平台,是通过在云平台中部署一个 job,来通知每一个需要升级的设备;


  2. 也可以通过一个手机 APP,向某一个嵌入式设备主动发起一个指令:嘿,老兄,请升级一下你的软件;


物联网设备OTA软件升级之:升级包下载过程之旅当终端设备收到升级命令之后,第一步就是下载升级包描述信息


物联网设备OTA软件升级之:升级包下载过程之旅下载之后,解析这个json格式的文本内容,提取出version信息之后,与当前正在运行的软件版本进行比较。


如果服务器中的版本比较新,那么就继续提取url字段中的升级包下载地址,然后开始从文件服务器中下载新的升级包。


如果当前运行的版本已经是最新的了,那就到此结束!



下载升级包
到了下载升级包的过程就简单了,你可以直接用wget等工具来下载,也可以利用curl库来手写下载代码。


总之,你可以有一万种方式把我下载到设备中。


物联网设备OTA软件升级之:升级包下载过程之旅下载完成之后,有一件很重要的事情千万别忘记了,那就是:检查下载的升级包是否正确!


还记得升级包描述文件中的md5字段吗?那就是我的指纹信息。


你需要首先计算一下下载的升级包的md5值,然后与升级包描述文件中的md5字段中的值进行比对,如果完全一致,那就放心大胆的开始解压、升级吧!



解压升级包
欲知后事如何,请听下回分解!





本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

特朗普集团近日取消了其新推出的T1智能手机“将在美国制造”的宣传标语,此举源于外界对这款手机能否以当前定价在美国本土生产的质疑。

关键字: 特朗普 苹果 AI

美国总统特朗普在公开场合表示,他已要求苹果公司CEO蒂姆·库克停止在印度建厂,矛头直指该公司生产多元化的计划。

关键字: 特朗普 苹果 AI

4月10日消息,据媒体报道,美国总统特朗普宣布,美国对部分贸易伙伴暂停90天执行新关税政策,同时对中国的关税提高到125%,该消息公布后苹果股价飙升了15%。这次反弹使苹果市值增加了4000多亿美元,目前苹果市值接近3万...

关键字: 特朗普 AI 人工智能 特斯拉

3月25日消息,据报道,当地时间3月20日,美国总统特朗普在社交媒体平台“真实社交”上发文写道:“那些被抓到破坏特斯拉的人,将有很大可能被判入狱长达20年,这包括资助(破坏特斯拉汽车)者,我们正在寻找你。”

关键字: 特朗普 AI 人工智能 特斯拉

1月22日消息,刚刚,新任美国总统特朗普放出重磅消息,将全力支持美国AI发展。

关键字: 特朗普 AI 人工智能

特朗普先生有两件事一定会载入史册,一个是筑墙,一个是挖坑。在美墨边境筑墙的口号确保边境安全,降低因非法移民引起的犯罪率过高问题;在中美科技产业之间挖坑的口号也是安全,美国企业不得使用对美国国家安全构成威胁的电信设备,总统...

关键字: 特朗普 孤立主义 科技产业

据路透社1月17日消息显示,知情人士透露,特朗普已通知英特尔、铠侠在内的几家华为供应商,将要撤销其对华为的出货的部分许可证,同时将拒绝其他数十个向华为供货的申请。据透露,共有4家公司的8份许可被撤销。另外,相关公司收到撤...

关键字: 华为 芯片 特朗普

曾在2018年时被美国总统特朗普称作“世界第八奇迹”的富士康集团在美国威斯康星州投资建设的LCD显示屏工厂项目,如今却因为富士康将项目大幅缩水并拒绝签订新的合同而陷入了僵局。这也导致富士康无法从当地政府那里获得约40亿美...

关键字: 特朗普 富士康

今年5月,因自己发布的推文被贴上“无确凿依据”标签而与推特发生激烈争执后,美国总统特朗普签署了一项行政令,下令要求重审《通信规范法》第230条。

关键字: 谷歌 facebook 特朗普

众所周知,寄往白宫的所有邮件在到达白宫之前都会在他地进行分类和筛选。9月19日,根据美国相关执法官员的通报,本周早些时候,执法人员截获了一个寄给特朗普总统的包裹,该包裹内包含蓖麻毒蛋白。

关键字: 美国 白宫 特朗普
关闭