物联网设备OTA软件升级之:升级包下载过程之旅
扫描二维码
随时随地手机看文章
大家好,我是一个软件升级包。这几天呢,我将会进行一次神奇的网络之旅,从开发者的电脑中,一直跑到终端嵌入式设备中。
没有文件系统的嵌入式设备:
- 固件:是指一些没有文件系统的嵌入式设备中,把 Flash 分成不同的功能分区。可执行程序需要放在某个固定的起始位置,才能被 bootloader 进行启动。
- 软件:是指具有文件系统的嵌入式设备,可执行程序直接放在文件系统中。当设备启动之后,操作系统会启动文件系统中的可执行程序。
今天呢,主要以第1阶段为主,带你看一下我是如何从开发者的电脑里,一步一步的被嵌入式设备下载到本地的。
- 下载升级包;
- 解压升级包,写入 flash 或文件系统;
上传升级包
为了便于描述,我们来假设一个场景:运行在设备中的软件一共有3个文件:
目前呢,设备中运行的版本是V1.0,现在开发人员对mylib.so库中的算法进行了优化,升级为V2.0版本,现在需要把这个新版本升级到嵌入式设备中。
- main 文件:可执行程序;
- config.ini:配置文件;
- mylib.so:一个动态库文件,里面包含一个算法,被 main 文件调用;
上传升级包描述文件
现在,V2.0版本的升级包已经上传到文件服务器中了,是否现在就可以命令嵌入设备去下载、升级了呢?
下载升级包描述文件
此时,作为升级包的我,已经静静的躺在文件服务器中了,我的兄弟升级包描述文件 app_desc.json呢,也在应用服务器中准备就绪了,现在就等着嵌入式设备开始升级。
当终端设备收到升级命令之后,第一步就是下载升级包描述信息。
- 亚马逊的 AWS 平台,是通过在云平台中部署一个 job,来通知每一个需要升级的设备;
- 也可以通过一个手机 APP,向某一个嵌入式设备主动发起一个指令:嘿,老兄,请升级一下你的软件;
下载升级包
到了下载升级包的过程就简单了,你可以直接用wget等工具来下载,也可以利用curl库来手写下载代码。
解压升级包
欲知后事如何,请听下回分解!