物联网中利用OTA技术升级的基本原理与方法

简介: 物联网中利用OTA技术升级的基本原理与方法

物联网设备OTA软件升级之:升级包下载过程之旅

       

 

第一:OTA概述

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

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

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

首先有一个问题:为什么叫软件升级包,而不叫固件升级包呢?

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

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

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

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

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

带有文件系统的设备:

我知道以上这样的区分方式不是很严谨,但是谁又说得清楚严谨的定义是什么呢?

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

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

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

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

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

第二:上传升级包

为了便于描述,我们来假设一个场景:运行在设备中的软件一共有 3 个文件:

  1. main 文件:可执行程序;
  2. config.ini:配置文件;
  3. mylib.so:一个动态库文件,里面包含一个算法,被 main 文件调用;

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

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

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

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

现在要对 V2.0 版本的程序进行打包了,在这里,除了 mainconfig.inimylib.so3 个文件之外,我们还把另一个脚本文件 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 呢,也在应用服务器中准备就绪了,现在就等着嵌入式设备开始升级。

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

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

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

比如:

  1. 亚马逊的 AWS 平台,是通过在云平台中部署一个 job,来通知每一个需要升级的设备;
  2. 也可以通过一个手机 APP,向某一个嵌入式设备主动发起一个指令:嘿,老兄,请升级一下你的软件;

当终端设备收到升级命令之后,第一步就是下载升级包描述信息。

下载之后,解析这个 json 格式的文本内容,提取出 version 信息之后,与当前正在运行的软件版本进行比较。

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

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

第五:下载升级包

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

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

下载完成之后,有一件很重要的事情千万别忘记了,那就是:检查下载的升级包是否正确!

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

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

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
12天前
|
安全 物联网 区块链
未来技术纵横谈:区块链、物联网与虚拟现实的融合革新
【5月更文挑战第37天】 在数字化浪潮不断推进的今天,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正逐步改变我们的生活与工作方式。这些技术的独立发展已经引起了广泛关注,但它们之间的交叉融合与协同效应,则预示着一个更加智能、互联且安全的未来。本文将深入探讨这些技术的最新发展趋势,以及在不同行业中的创新应用,揭示它们如何共同塑造下一代的技术景观。
|
22小时前
|
传感器 人工智能 搜索推荐
人工智能(AI)与物联网(IoT)的融合是当今技术领域的一个重要趋势
人工智能(AI)与物联网(IoT)的融合是当今技术领域的一个重要趋势
|
1天前
|
安全 物联网 物联网安全
物联网(IoT)的兴起与挑战:技术变革的双刃剑
【6月更文挑战第17天】**物联网的崛起带来了智能家居、智慧城市等便利,但安全挑战、设备兼容性和带宽压力也随之而来。加强安全、统一标准及提升处理能力是关键。面对挑战,持续的技术创新和法规完善将推动其健康发展,物联网的未来充满希望。**
|
4天前
|
供应链 物联网 区块链
新兴技术趋势与应用:探索区块链、物联网和虚拟现实的未来
在科技迅猛发展的今天,区块链、物联网和虚拟现实等新兴技术正逐步改变我们的生活和工作方式。这些技术不仅在各自领域内展现出巨大的潜力,还通过相互交织和融合,为社会带来全新的应用场景和解决方案。本文将深入探讨这些新兴技术的发展趋势,并剖析其在不同领域中的实际应用,从而揭示它们对未来社会的深远影响。
11 1
|
4天前
|
监控 供应链 物联网
新兴技术趋势与应用:区块链、物联网、虚拟现实的融合与发展
【6月更文挑战第13天】随着科技的飞速发展,新兴技术如区块链、物联网、虚拟现实等正在逐渐改变我们的生活和工作方式。本文将探讨这些技术的发展趋势和应用场景,以及它们如何相互融合,为我们带来更便捷、高效和安全的未来。
10 0
|
5天前
|
供应链 安全 物联网
新兴技术浪潮下的未来图景:区块链、物联网与虚拟现实的融合与创新
【6月更文挑战第12天】随着技术的不断进步,新兴技术如区块链、物联网和虚拟现实正在逐渐改变我们的工作和生活方式。这些技术不仅各自拥有独特的发展趋势,而且在相互融合中展现出无限的可能性。本文将探讨这些技术的发展趋势,并分析它们在各个领域中的应用场景,以揭示它们如何共同塑造未来的技术景观。
|
7天前
|
传感器 供应链 物联网
新兴技术的未来蓝图:区块链、物联网与虚拟现实的前景和应用
在当今快速变化的科技世界中,区块链、物联网(IoT)和虚拟现实(VR)作为新兴技术,正逐步改变各行各业的运作模式和用户体验。本文将深入探讨这些技术的发展趋势和应用场景,展示它们如何在不同领域带来革命性的变革,并对未来的潜在影响进行预判。
20 2
|
11天前
|
传感器 监控 安全
楼宇自动化中的物联网技术
【6月更文挑战第7天】物联网技术在楼宇自动化中广泛应用,实现设备智能化监控与管理,提高能效,保障安全与便利。通过远程控制,提升管理效率;示例代码展示灯光控制功能。尽管面临设备兼容性、数据安全挑战,物联网技术前景广阔,将持续推动楼宇自动化发展,塑造更智能、舒适的生活工作环境。
|
12天前
|
存储 安全 算法
物联网中的数据加密技术
【6月更文挑战第1天】物联网中的数据加密技术
72 0
|
12天前
|
传感器 安全 物联网
未来技术的浪潮:区块链、物联网和虚拟现实的融合与创新
【6月更文挑战第5天】随着科技的飞速发展,新兴技术如区块链、物联网和虚拟现实正在逐渐改变我们的生活和工作方式。本文将深入探讨这些技术的发展趋势和应用场景,以及它们如何相互融合,共同推动未来的技术革命。

热门文章

最新文章