OTA:为什么叫软件升级包,而不叫固件升级包呢?
上传升级包
为了便于描述,我们来假设一个场景:运行在设备中的软件一共有 3 个文件:
main 文件:可执行程序;
config.ini:配置文件;
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。
上传升级包描述文件
现在,V2.0 版本的升级包已经上传到文件服务器中了,是否现在就可以命令嵌入设备去下载、升级了呢?
我们知道,在一个物联网系统中,一般都是存在着很多个终端设备的。
这些设备可能处于正在运行状态、也可能处于断电状态,而且咱们也不能假设所有的设备都在同一个时间点进行升级。
再而且,一个设备进行升级之后,就变成了最新的 V2.0 版本,那么这个设备就应该有能力知道服务器上的最新版本是 V2.0 版本,这样它就不需要升级了。
因此,还需要一个新的文件来描述文件服务器中的 V2.0 版本的升级包,就叫它:升级包描述文件 app_desc.json,它的内容是 json 格式的字符串:
version 字段描述了文件服务器上升级包的版本,这样的话,设备就可以知道到服务器中的最新版本。
url 字段描述了升级包的下载地址,设备如果发现自己的版本低于 version 字段中的版本,就可以从这个地址下载新的升级包。
md5 字段描述了服务器中最新升级包的指纹信息,当设备把服务器上的升级包下载之后,需要计算一下升级包的 MD5 值,然后与这里的 md5 字段进行比较,如果相同的话,说明下载的升级包没有问题,没有被恶意的家伙掉包。
了解了升级包描述文件 app_desc.json 的作用之后,这个文件就被上传到应用服务器中了。
下载升级包描述文件
此时,作为升级包的我,已经静静的躺在文件服务器中了,我的兄弟升级包描述文件 app_desc.json 呢,也在应用服务器中准备就绪了,现在就等着嵌入式设备开始升级。
万事俱备,只欠东风了!应该说只欠一个触发嵌入式设备进行升级的动作了!
那么,应该在什么时候?由谁?来告诉设备:你正在运行的软件太旧了,服务器上现在有最新的版本,你去升级一下吧!
这个问题的答案就是:八仙过海,各显神通了!
比如:
亚马逊的 AWS 平台,是通过在云平台中部署一个 job,来通知每一个需要升级的设备;
也可以通过一个手机 APP,向某一个嵌入式设备主动发起一个指令:嘿,老兄,请升级一下你的软件;
当终端设备收到升级命令之后,第一步就是下载升级包描述信息。
下载之后,解析这个 json 格式的文本内容,提取出 version 信息之后,与当前正在运行的软件版本进行比较。
如果服务器中的版本比较新,那么就继续提取 url 字段中的升级包下载地址,然后开始从文件服务器中下载新的升级包。
如果当前运行的版本已经是最新的了,那就到此结束!
下载升级包
到了下载升级包的过程就简单了,你可以直接用 wget 等工具来下载,也可以利用 curl 库来手写下载代码。
总之,你可以有一万种方式把我下载到设备中。
下载完成之后,有一件很重要的事情千万别忘记了,那就是:检查下载的升级包是否正确!
还记得升级包描述文件中的 md5 字段吗?那就是我的指纹信息。
你需要首先计算一下下载的升级包的 md5 值,然后与升级包描述文件中的 md5 字段中的值进行比对,如果完全一致,那就放心大胆的开始解压、升级吧!
解压升级包
欲知后事如何,请听下回分解!
图片新闻
最新活动更多
-
1月8日火热报名中>> Allegro助力汽车电气化和底盘解决方案优化在线研讨会
-
精彩回顾立即查看>> 【线下会议】OFweek 2024(第九届)物联网产业大会
-
精彩回顾立即查看>> STM32全球线上峰会
-
精彩回顾立即查看>> 松下新能源中国布局:锂一次电池新品介绍
-
精彩回顾立即查看>> 2024工程师系列—工业电子技术在线会议
-
精彩回顾立即查看>> 【线下论坛】华邦电子与莱迪思联合技术论坛
推荐专题
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论