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

物联网产品设计部分的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.mzph.cn/news/241828.shtml

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

相关文章

linux循环调度执行

9.2 循环调度执行 9.2.1 简介 cron的概念和crontab是不可分割的。 ​ crontab是一个命令,常见于Unix和Linux的操作系统之中用于设置周期性被执行的指令。 ​ 该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执…

移除石子使总数最小(LeetCode日记)

LeetCode-1962-移除石子使总数最小 题目信息: 给你一个整数数组 p i l e s piles piles ,数组 下标从 0 0 0 开始 ,其中 p i l e s [ i ] piles[i] piles[i] 表示第 i i i 堆石子中的石子数量。另给你一个整数 k k k ,请你执行下述操作…

Django开发2

Django开发2 Django开发1.新建项目2.创建app3.设计表结构(django)4.在MySQL中生成表5.静态文件管理6.部门管理7.模板的继承8.用户管理8.1 初识Form1. views.py2.user_add.html 8.3 ModelForm(推荐)0. models.py1. views.py2.user_…

机器人创新实验室任务三参考文档

一、JAVA环境配置 需要在Linux里面下载并且安装java。 sudo apt-get install openjdk-17-jre-headless 打开终端并且运行指令,用apt下载安装java。官方用的好像是java11,我安装的是java17。 如果无法定位软件安装包,可以试试更新一下 sudo …

直接插入排序【从0-1学数据结构】

文章目录 💗 直接插入排序Java代码C代码JavaScript代码稳定性时间复杂度空间复杂度 我们先来学习 直接插入排序, 直接排序算是所有排序中最简单的了,代码也非常好实现,尽管直接插入排序很简单,但是我们依旧不可以上来就直接写代码,一定要分析之后才开始写,这样可以提…

统计和绘图软件GraphPad Prism mac功能特点

GraphPad Prism mac是一款专业的统计和绘图软件,主要用于生物医学研究、实验设计和数据分析。 GraphPad Prism mac功能和特点 数据导入和整理:GraphPad Prism 可以导入各种数据格式,并提供直观的界面用于整理、编辑和管理数据。用户可以轻松…

大白鲨生成Windows木马(仅供参考不可实践)

一、学习方法 一个正确的学习方法往往比学习更为重要 方法一:学习技术的本质性作用 (第一性定律) — 帮助我们解决的问题是什么 — 产生的原因/价值 方法二:在工作中到底如何使用? 方法三:技术是由人…

【pynput】鼠标行为追踪并模拟

文章目录 前言基本思路安装依赖包实时鼠标捕获捕获鼠标位置捕获鼠标事件记录点击内容 效果图 利用本文内容从事的任何犯法行为和开发与本人无关,请理性利用技术服务大家,创建美好和谐的社会,让人们生活从繁琐中变得更加具有创造性&#xff01…

JavaScript状态模式

JavaScript状态模式 1 什么是状态模式2 使用状态模式改造电灯程序3 缺少抽象类的变通方式4 示例:文件上传4.1 场景描述4.2 代码过程 1 什么是状态模式 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。 比如说这样一个场景&a…

【贪心】单源最短路径Python实现

文章目录 [toc]问题描述Dijkstra算法Dijkstra算法应用示例时间复杂性Python实现 个人主页:丷从心 系列专栏:贪心算法 问题描述 给定一个带权有向图 G ( V , E ) G (V , E) G(V,E),其中每条边的权是非负实数,给定 V V V中的一个…

指南:在App Store Connect上编辑多个用户的访问权限

作为一名编程新手,在App Store Connect中管理用户权限可能初听起来有些复杂,但实际上它是一个相对直接的过程。这里是一个步骤清晰的指南来帮助您在App Store Connect上编辑多个用户的访问权限。 App Store Connect 简介 在开始之前,让我们…

Openwrt AP 发射 WiFi 信号

问题 想一次把 OpenWrt 路由器 wifi 问题给解决,完全取代路由器。 使用 倍控的 N5105 设备,有 mPCIe 接口,使用了 intel AX200 无线网卡,支持 2.4G 与 5G。 设置步骤 OpenWrt 镜像 第一次使用的镜像不支持 wifi,在…

“抓取再吸取的连续操作学习”研究工作发表于IEEE Trans. on Robotics:仿人手的柔性抓取,超人手的指背吸取!

长期以来,抓取一直被认为是机器人操作中一项重要而实际的任务。然而,实现对不同物体的稳健和有效的抓取具有挑战性,因为它涉及夹具设计、感知、控制和学习等。最近基于学习的方法在抓取各种新物体方面表现出优异的性能。然而,这些…

【C++11特性篇】新的类功能解读:新增加的[移动构造函数/移动赋值运算符重载]

前言 大家好吖,欢迎来到 YY 滴C系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《Linux》…

使用 Elasticsearch 检测抄袭 (二)

我在在之前的文章 “使用 Elasticsearch 检测抄袭 (一)” 介绍了如何检文章抄袭。这个在许多的实际使用中非常有意义。我在 CSDN 上的文章也经常被人引用或者抄袭。有的人甚至也不用指明出处。这对文章的作者来说是很不公平的。文章介绍的内容针对很多的…

Github 2023-12-24 开源项目日报 Top10

根据Github Trendings的统计,今日(2023-12-24统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目5Jupyter Notebook项目2C项目1C项目1Go项目1Java项目1JavaScript项目1Ruby项目1 Serverless Frame…

双向长短期记忆网络(Bi-LSTM)-多输入回归预测

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、部分代码展示: 四、完整代码下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编…

vscode配置用户代码片段

1.左下角打开设置 2.新建全局代码片段 3.输入名字,名字随意不过最好语意化 4.创建模版 这里的模版为vue2常用代码片段,稍后会持续更新。 {"Print to console": {"prefix": "v2", //页面使用时名称"body":…

LeNet网络分析与demo实例

参考自 up主的b站链接:霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频这位大佬的博客 Fun_机器学习,pytorch图像分类,工具箱-CSDN博客 网络分析: 最好是把这个图像和代码对着来看然后进行分析的时候比较快 # 使用torch.nn包来构建神经网络. im…

Go 泛型之类型参数

Go 泛型之类型参数 文章目录 Go 泛型之类型参数一、Go 的泛型与其他主流编程语言的泛型差异二、返回切片中值最大的元素三、类型参数(type parameters)四、泛型函数3.1 泛型函数的结构3.2 调用泛型函数3.3 泛型函数实例化(instantiation&…