打印
[开发工具]

浅谈OTA升级原理及应用

[复制链接]
696|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
随着智能设备的普及,从手机系统手动升级到路由器自启动升级,甚至是汽车内的智能设备升级,那么固件升级到底是什么呢?通过什么原理来实现固件升级的呢?有哪些常见的固件升级方式?今天,咱们来一探究竟。
所谓固件升级,是指对底层的软件进行修改、替换从而使得硬件增加新功能或者更好的工作(修复和改善)。固件又叫做韧体,英文是firmware。
固件一般存储于设备中的电可擦除只读存储器EEPROM(Electrically Erasable Programmable ROM)或FLASH芯片中,一般可由用户通过特定的刷新程序进行升级的程序。一般来说,担任着一个数码产品最基础、最底层工作的软件才可以称之为固件,比如计算机主板上的基本输入/输出系统BIOS(Basic Input/output System),在以前其实更多的专业人士叫它固件。
通常这些硬件内所保存的程序是无法被用户直接读出或修改的。在以前,一般情况下是没有必要对固件进行升级操作的,即使在固件内发现了严重的Bug也必须由专业人员带着写好程序的芯片把原来机器上的更换下来。这是因为早期固件芯片一般采用了ROM设计,它的Firmware代码是在生产过程中固化的,用任何手段都无法修改。
随着技术的不断发展,修改固件以适应不断更新的硬件环境成了用户们的迫切要求,所以,可重复写入的可编程可擦除只读存储器EPROM(Erasable Programmable ROM),EEPROM和flash出现了。这些芯片是可以重复刷写的,让固件得以修改和升级。

与此同时,随着无线通信技术和芯片技术的发展,固件升级的方式也越来越方便,从用传统的编程器刷入固件的方式来更新,拓展至通过外部的接口接线更新(如通过USB、SPI通信接口),以及通过无线方式升级(即OTA升级,如通过蓝牙、Wi-Fi等方式,不再需要手动连线)。
因此,方便快捷的OTA技术,来更新版本、优化体验、让产品保持先进性,成为了智能硬件产品的必要手段之一。
比如说
手机厂商通过OTA升级,将最新版的操作系统自动推送到客户的设备,而手动更新会通知用户有关可用升级的信息,用户可以接受或拒绝在其设备上下载和安装新的软件版本。与此类似的是汽车厂商通过OTA升级,将车辆的各项性能进行提升,而无须将车辆召回至门店,可以节省大量费用,用户可以通过远程升级提升车辆性能和体验。随着物联网在智能家电等消费电子产品上的应用,我们也能看到智能音箱、扫地机器人会自动更新功能,还是OTA技术在起作用。
在生活中,在使用这些智能产品的时候,有的需要我们手动确认才会自动升级,有的则会自动检测更新升级,这背后是什么原因呢?
原来是操作方式的不同
一种是后台式升级
即在进行升级的时候,接收新固件包的方式是在后台进行的,不会影响功能的正常执行。等到固件更新完成之后,再跳转到Bootloader中去用新的固件替换旧的固件,替换完成之后呢再跳转到App去执行。比如,现在的智能手机的在线更新就是后台式升级的方式。在你升级系统的时候,接收升级包的过程中,你还是可以正常使用的手机的,打电话、看视频、玩游戏等都不耽误,直到下载完成,你点击了开始更新之后,手机才进入更新状态,不让你操作,等更新完毕之后重启就又可以继续操作了。
另一种是非后台式式更新
即在进行升级的时候,接收固件时需要跳转到Bootloader,这个时候你不能在使用这个产品的任何功能,只能一直等着它接收并完成更新,完成之后你才能继续操作其他的功能。比如说有的智能音箱、扫地机器人,在你隔了很久没用再打开的时候,开机的话很可能会自动提示xxx在升级,请您耐心等待一会儿。
不管哪种操作方式,主要流程几乎如出一辙
  • 制造升级包
  • 下载升级包
  • 验签升级包
  • 固件更新

在实现这些流程的过程中,不仅需要全面考虑如何才能接收固件、如何保证固件的完整性和合法性、如何替换固件,还要固件向下兼容设计、版本管理、固件推送统计和分布,这些需要端+云+业务逻辑三方配合,也涉及到芯片、OS、连接和场景等多种方面,会大大增加OTA研发成本。因此,大部分企业会考虑借助第三方平台来完成OTA升级。
为了让智能设备高效、安全、稳定的实现升级,机智云推出OTA升级服务,支持多种定向升级策略,如按批次、按地域、按原固件版本等条件进行远程推送,解决智能设备出厂后的持续升级要求,优化产品性能,提升体验感。
企业只需通过机智云开发者中心,在线添加推送固件及规则,完成验证固件,确认开始推送,待推送完成,即可在线查询推送结果。还能根据流水号查看推送详情,在线进行版本推送管理,通过图表形式查看版本分布情况。
机智云的OTA服务功能如下:
  • OTA通知服务,即离线升级。当设备的固件程序有新版本发布,OTA 通知服务会推送升级通知到设备。
  • OTA透传服务,即在线升级。设备固件程序通过M2M 消息服务透传到设备端。
  • 支持一个产品同时有多个推送。
  • 支持Wi-Fi/MCU升级。
  • 支持推送全部设备。
  • 支持定向升级设备。可指定设备mac地址、区域、旧固件版本进行推送。
  • 支持定时推送。可自定义推送周期及推送时段。
  • OTA版本推送记录。
  • OTA进度统计分析。




使用特权

评论回复
沙发
huquanz711| | 2024-5-20 09:04 | 只看该作者
OTA和传统ISP原理上都是一样的,只是OTA采用无线传输数据。

使用特权

评论回复
板凳
周半梅| | 2024-11-8 08:03 | 只看该作者

对于没有else的场景,使用ifPresent即可

使用特权

评论回复
地板
Pulitzer| | 2024-11-8 09:06 | 只看该作者

每个Strategy交由Spring管理,并在构造后注册

使用特权

评论回复
5
童雨竹| | 2024-11-8 11:02 | 只看该作者

使用Optional简化if判空

使用特权

评论回复
6
Wordsworth| | 2024-11-8 12:05 | 只看该作者

不同的代码逻辑就代表了不同的策略

使用特权

评论回复
7
Clyde011| | 2024-11-8 13:08 | 只看该作者

对于优秀程序员来说,这不是好代码

使用特权

评论回复
8
公羊子丹| | 2024-11-8 14:01 | 只看该作者

通过对判断条件取反,代码在逻辑表达上会更加清晰

使用特权

评论回复
9
万图| | 2024-11-8 15:04 | 只看该作者

会以switch-case的方式出现

使用特权

评论回复
10
Uriah| | 2024-11-8 16:07 | 只看该作者

代码量小的时候用来做条件判断

使用特权

评论回复
11
帛灿灿| | 2024-11-8 18:03 | 只看该作者

不要根据不同的参数类型走不同的代码逻辑

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

67

帖子

1

粉丝