物联网产品设计,聊聊设备OTA的升级

news2025/1/18 20:14:13

物联网产品设计部分的OTA设备固件是一个非常重要的部分,能够实现升级用户服务、保障系统安全等功能。

在迅速变化和发展的物联网市场,新的产品需求不断涌现,因此对于智能硬件设备的更新需求就变得空前高涨,设备不再像传统设备一样一经出售就不再变更。

随着物联网技术发展,一个技术变得极为重要,即OTA空中下载技术。物联网平台支持通过OTA方式进行设备固件升级,是智能设备修复系统漏洞、实现系统升级的手段,通过固件升级用户提供更好的服务。OTA固件升级功能不仅能够更新固件,而且还能重新配置片上硬件资源。同时,设备固件可通过OTA固件升级流程获得更新的补丁和更多安全算法防范病毒攻击。

一、OTA固件升级对设备的重要性

物联网领域具有多样性,应用和最终解决方案需求也是如此。面对和传统设备的需求差异,OTA升级显得尤其重要,主要体现在以下几方面:

1. 市场端的快速上线需求

天下武功唯快不破,物联网设备产品往往留给设计者的时间不长,并且市场需要持续不断地创新和更新功能。在设备设计时,往往会预留一些后加载的需求,先期快速实现一些功能即开始上线,上线后可以通过OTA升级的方式更新更多功能,实现渐进式部署,有那么一点类似于互联网的敏捷研发了。只要在架构设计阶段,在硬件层面考虑到了未来的足够需求,就不可以源源不断地优化完善设备功能。

2. 设备部署需求的多样性

在物联网产品应用过程中,有个很有意思的事情,设备需要确定推送信息的云主机。那么问题就来了,有可能是一个通用的云主机,也有可能因为部署需要又需要更新推送的云主机,这个时候如果设备已经生产出来了,已经在渠道或者客户手中,那么OTA固件升级就显得很重要了。

还有一个比较常见的现象,一些设备在安装以后,对于输入输出部件的控制模式需要变更,那么可能需要对部分设备进行固件升级。比如,一开始在一个城市部署了相同智能路灯的设备,但是某些区域的设备关于灯光强度或者时间性需要做变更,那么OTA固件升级也可以帮助解决灯光控制方式的变更。

备注:如果预留了远程下行控制指令,且已经支持的,也可以不用升级固件。

3. 设备安全性及完善性

任何物联网设备不外乎都是两部分组成的:硬件+固件程序。在基于SoC的应用中,OTA固件升级功能不仅能够更新固件,而且还能重新配置片上硬件资源。

有了OTA固件升级的备案,那么产品不一定等到完全没有缺陷再上市,只要在不存在较为致命的缺陷下,就可以提前上市,解决问题后在远程完成升级修补缺陷。同时基于日益严峻的安全形势威胁,备固件可通过OTA固件升级流程获得最新补丁和更多安全算法,做到不断加固的。

二、OTA固件升级流程

1. 升级步骤

step1:云控制平台添加估计升级需求。

step2:设备在唤醒后上报自己的固件版本。

step3:云端判断是否需要升级后,下发升级固件包URL。

step4:设备下载固件后进行升级,下载成功后上报结果。

step5:设备升级成功后,上报升级结果及最新版本,云端更新为升级成功。

2. 注意事项及设计要点

1. 设备固件版本信息不需要单独设置周期性上报事件,在设备重新启动或者心跳时上报即可。

2. 物联网平台添加新的固件版本启动升级需求后,一直为待升级,直到设备上报升级进度。

3. 升级成功唯一判断标准是上报的版本号。

4. 设备离线状态下不能进行升级,需要等到设备上线后上报数据。

5. 设备下载固件后对于升级结果需要上报。

三、云端控制系统设计

1. 固件新增

固件新增主要面向产品进行设计,按照单个产品为单位进行添加,添加固件时不用考虑设备升级的范围,仅仅作为产品的一个固件包。但是,尤其要主要固件版本的管理,不能低于当前所有该产品运行的设备版本号,并且命名的版本号要与新增填写时的相同。

新增固件的字段:名称、版本号、所属产品、备注。

2. 验证固件

固件新增加成功后,就可以进行验证固件操作了。验证固件是指在系统内小范围查找一两个设备进行升级测试,验证通过后再考虑批量进行操作处理。验证固件的操作就是在现存该产品的不同版本号的产品中分别选择最低一个产品进行升级。

验证固件字段:版本号(采用下来筛选,仅筛选现有产品存在的版本号)、产品编号(通过产品唯一识别号进行查找添加)。

备注:选择产品编号前需要先确定版本号。

3. 选择设备批量升级

固件验证通过后就可以进行批量处理了,批量处理就是在现有的设备范围内选择需要升级的设备,同时设置升级策略,比如升级时间、重复次数等。

批量升级可以采用页面方式按照特定条件进行筛选后处理,也需要能够采用excel文件导入形式进行处理,excel导入形式主要是为了定向对某一些设备升级,升级设备没有一定的共性,或者系统内暂时无法通过筛选方式查找出共性。

主要涉及的字段:升级范围、升级时间、升级策略(失败后再次间隔时间、重复次数、定时升级等)

4. 查看升级结果

批量执行升级后,回到管理固件的列表,就可以实时查看升级结果,获取升级情况!

5. 统计数据

在设计固件管理时,还可以对产品的固件分布、升级设备的状态分布占比等进行一些数据可视化设计,帮助管理员更好的查看和分析。

四、安全性考虑

以上部分其实我们都在说为什么需要OTA固件升级、固件升级的原理是什么、流程是什么、云端控制系统如何设计,但是我们没有强调其中的一个重要事情“安全性”!安全性希望引起产品和技术人员的足够重视!

1. 对设备固件进行OTA升级时,通过在空中传输,容易遭受攻击。因此,必需确保主机设备只与相关目标设备通信。

2. 应对空中传输的数据进行加密,以便让其它监听方无法解码这些数据。

3. OTA服务是智能设备修复系统漏洞、实现系统升级的手段,拥有非常高的权限,掌握着系统更新的安全命脉。如果OTA升级出现安全问题,可能导致用户隐私泄露,甚至给用户带来生命危险。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1331132.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL分类

SQL分类 DDL 查询库 查询表 创建表 修改表 DML 添加数据 修改数据 删除数据 DQL 基本查询 条件查询 聚合函数 分组查询 排序查询 分页查询 执行顺序 DCL 管理用户 管理权限 数据类型 数值类型 字符串类型 日期类型

从零构建tomcat环境

一、官网构建 1.1 下载 一般来说对于开源软件都有自己的官方网站,并且会附上使用文档以及一些特性和二次构建的方法,那么我们首先的话需要从官网或者tomcat上下载到我们需要的源码包。下载地址:官网、Github。 这里需要声明一下&#xff…

龙芯loongarch64服务器编译安装tensorflow-io-gcs-filesystem

前言 安装TensorFlow的时候,会出现有些包找不到的情况,直接使用pip命令也无法安装,比如tensorflow-io-gcs-filesystem,安装的时候就会报错: 这个包需要自行编译,官方介绍有限,这里我讲解下 编译 准备 拉取源码:https://github.com/tensorflow/io.git 文章中…

80x86汇编—汇编程序基本框架

文章目录 First Program指令系统伪指令数值表达式 程序框架解释int 21 中断 通过一个基本框架解释各个指令和用处,方便复习。所以我认为最好的学习顺序就是先看一段完整的汇编代码程序,然后给你逐个逐个的解释每一个代码是干嘛用的。然后剩下的还有很多指…

linux的主线程提前子线程退出以及线程分离

主线程提前退出 如果主线程没有等待子线程提前退出,可能会发生以下情况: 子线程继续运行:如果主线程退出,但子线程仍在执行任务,子线程将继续独立运行。子线程的生命周期不受主线程控制,直到子线程自行完成…

Latex生成的PDF中加入书签/Navigation/导航

本文参考:【Latex学习】在生成pdf中加入书签/目录/提纲_latex 书签-CSDN博客 (这篇文章写的真的太棒了!非常推荐) 题外话,我的碎碎念,这也是我如何提高搜索能力的办法:想在Latex生成的PDF中加入…

python脚本 链接到ssh服务器 快速登录ssh服务器 ssh登录

此文分享一个python脚本,用于管理和快速链接到ssh服务器。 效果演示 🔥完整演示效果 👇第一步,显然,我们需要选择功能 👇第二步,确认 or 选择ssh服务器,根据配置文件中提供的ssh信息,有以下情况 👇场景一,只有一个候选ssh服务器,则脚本会提示用户是否确认链…

【hcie-cloud】【9】华为云Stack_Deploy部署工具介绍

文章目录 前言华为云Stack Deploy简介华为云Stack Deploy工具简介华为云Stack Deploy工具部署范围华为云Stack Deploy工具节点网络要求华为云Stack Deploy工具部署流程 华为云Stack Deploy功能介绍部署工具工程场景部署流程介绍创建工程 - 基本信息填写创建工程 - 基本参数选择…

【ITK库学习】使用itk库进行图像配准:“Hello World”配准

目录 1、itkImageRegistrationMethod / itkImageRegistrationMethodv42、itkTranslationTransform3、itkMeanSquaresImageToImageMetric / itkMeanSquaresImageToImageMetric44、itkRegularStepGradientDescentOptimizerv / itkRegularStepGradientDescentOptimizerv4 图像配准…

0基础学习VR全景平台篇第130篇:曝光三要素—感光度

上课!全体起立~ 大家好,欢迎观看蛙色官方系列全景摄影课程! 众所周知,摄影是一门用光的艺术。随着天气、地点、时间的变化,我们所处环境的光线也随之发生改变。而在不同的环境下该如何去正确的调节曝光,是…

Spring security之授权

前言 本篇为大家带来Spring security的授权,首先要理解一些概念,有关于:权限、角色、安全上下文、访问控制表达式、方法级安全性、访问决策管理器 一.授权的基本介绍 Spring Security 中的授权分为两种类型: 基于角色的授权&…

【Angular】Angular中的最差实践

自我介绍 做一个简单介绍,酒架年近48 ,有20多年IT工作经历,目前在一家500强做企业架构.因为工作需要,另外也因为兴趣涉猎比较广,为了自己学习建立了三个博客,分别是【全球IT瞭望】,【…

4.4【共享源】克隆实战开发之截屏(二)

三,显示器截图 screen_read_display() 函数则用于捕获显示器的屏幕截图。我们需要在特权上下文中工作,以便可以完全访问系统的显示属性。我们可以通过调用具有 SCREEN_DISPLAY_MANAGER_CONTEXT 上下文类型的 screen_create_context() 来创建特权上下文。进程必须具有 root 的…

使用minio实现大文件断点续传

部署 minio 拉取镜像 docker pull minio/minio docker images新建映射目录 新建下面图片里的俩个目录 data(存放对象-实际的数据) config 存放配置开放对应端口 我使用的是腾讯服务器所以 在腾讯的安全页面开启 9000,9090 两个端口就可以了(根据大家实际…

使用python对windows/win11进行属性设置

有一个个人的需求,针对windows系统进行属性设置,这里以对鼠标的左右键主键进行切换为例,进行了研究,以当前win11系统为基础进行了更动。 首先是对于如果打开windows系统下的鼠标设置,有以下几种办法: 添加…

十大经典排序算法(个人总结C语言版)

文章目录 一、前言二、对比1.排序算法相关概念1.1 时间复杂度1.2 空间复杂度1.3 排序方式1.4 稳定度 2.表格比较3.算法推荐3.1 小规模数据3.2 中等规模数据3.3 大规模数据3.4 特殊需求 三、排序算法1.冒泡排序(Bubble Sort)1.1 简介1.2 示例代码&#xf…

使用互斥锁(Mutex)管理共享资源

在Go中确保并发安全性 并发是Go中的一个强大功能,它允许多个Goroutines(并发线程)同时执行。然而,伴随着强大的功能也带来了大量的责任。当多个Goroutines并发地访问和修改共享资源时,可能会导致数据损坏、数据竞争&a…

网络爬虫之Ajax动态数据采集

动态数据采集 规则 有时候我们在用 requests 抓取页面的时候,得到的结果可能和在浏览器中看到的不一样,在浏览器中可以看到正常显示的页面教据,但是使用 requests 得到的结果并没有,这是因为requests 获取的都是原始的 HTML 文档…

【小白攻略】php 小数转为百分比,保留两位小数的函数

php 小数转为百分比 首先,最简单直观的方法是利用PHP内置的number_format函数。该函数可以对一个数字进行格式化,并可以设置小数点后的精度。通过将小数乘以100,再用number_format函数将结果格式化为百分比形式,即可达到将小数转为…

uniapp怎么动态渲染导航栏的title?

直接在接口请求里面写入以下: 自己要什么参数就写什么参数 本人仅供参考: this.name res.data.data[i].name; console.log(名字, res.data.data[i].name); uni.setNavigationBarTitle({title: this.name}) 效果: