0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

物联网设备的无线固件升级

星星科技指导员 来源:嵌入式计算设计 作者:Richa Dham 2022-06-29 10:58 次阅读

物联网IoT) 的规模给部署带来了许多挑战。仅在我们的家中,我们就看到连接设备的数量急剧增加,从路由器和几台个人电脑到远程锁门、激活百叶窗、控制照明、管理温度和湿度以及更多的。为了使众多设备保持相关性和安全性,无线 (OTA) 固件升级必须成为物联网系统不可或缺的一部分。

想象一个巨大的市场,其中部署信标提供有关展示产品信息。这些信标的位置可能不容易访问,并且这些信标的数量使得它们不可能在部署后单独编程。因此,当出现需要重新部署的新功能或缺陷时,OTA 固件升级成为一项重要的省时功能。

通过 BLE 进行 OTA 固件升级

OTA 的有效性已在手机等应用中得到证明,这些应用通过定期升级接收新功能并修复错误,而相对较新的 OTA 固件升级功能与蓝牙低功耗 (BLE) 为物联网带来了同样的能力。

在 IoT 环境中,推动 OTA 固件升级超过 BLE 要求的主要原因有三个:

广泛和异构的设备部署

设备的数量和不同类型的设备在分布式网络中起着非常重要的作用。标准化的 OTA 接口可确保跨不同节点重用架构。考虑体育场中的智能照明:虽然巨大的泛光灯和走廊灯的功能可能不同,但可以在它们之间重复使用基于 BLE 的标准 OTA 接口。这意味着跨这些异构设备推送新固件的主机设备可以是一个通用平台。这也意味着体育场内所有不同类型的灯都可以从一个控制室进行升级,而不是通过多个单独的升级。

不断变化的需求和新功能

物联网是一个不断增长且瞬息万变的市场,具有新的产品需求,并且会定期添加新的 BLE 功能。安全威胁和隐私泄露是推动这些变化的一些最大因素。为了防止新的病毒攻击,设备固件可以通过 OTA 固件升级过程包含修复和更安全的算法。在任何物联网系统中,都有两部分:硬件和固件。在基于 SoC 的实现中,OTA 固件升级功能不仅可以更新固件,还可以重新配置片上硬件资源。

关键的上市时间需求

物联网系统的设计周期非常短,需要不断创新和部署最新功能。一般的开发过程是对硬件进行过度设计,以在更长的时间内维持不断扩大的市场需求。OTA固件升级支持分阶段部署解决方案。例如,恒温器系统的初始设计只需一个热传感器就可以快速推出,然后进行更新以启用湿度传感器。请注意,使用这种方法,硬件设计是一个深思熟虑的过程,从硬件角度在架构阶段考虑未来的推出。

然而,虽然 OTA 固件升级有利于物联网应用,但产品团队必须注意并避免一些陷阱。现场升级固件的能力以及对上市时间的极端要求可能会导致过快发布固件的压力。例如,争取实现产品的大规模部署可能会促使市场营销依赖于固件可以稍后更新的事实。这反过来可能导致发布尚未完全验证或优化的不稳定软件或产品。此外,最终用户可能不会很好地接受频繁的更新。产品团队应仔细权衡此类决定的影响,并限制过度使用 OTA。

OTA基础

在基础方面,OTA 固件升级与任何其他引导加载程序没有什么不同,例如 UART 引导加载程序或 USB 引导加载程序。图 1 显示了基于固件的可升级系统的基本架构。

pYYBAGK7wAOAHy6vAAA-NLWqZm0312.png

【图1 | UART bootloader系统架构]

如图所示,目标器件的非易失性存储器分为两部分——引导加载程序和可引导加载。引导加载程序是存储负责设备引导操作的代码的内存部分;检查主机是否有可引导加载部分的更新固件映像;通过 UART 接口从主机接收更新的固件映像;并将更新后的映像写入内存的可引导加载部分。内存的可引导加载部分是定义系统功能的实际应用程序代码

同样,要了解 OTA 固件升级,内存可以分为 bootloader 和 bootloadable 部分。这里的主要区别在于通信接口用于从主机接收新的固件映像。在 OTA 固件升级的情况下,无线通信接口,如 WiFi、ZigBee、蓝牙等,用于通过无线接收更新的固件图像。无论接口如何,过程和基本原理都是相同的。

如今,BLE 无处不在,因为它提供了更低的功耗,并且在大多数 PC 和手机中都得到了支持。这种广泛的可用性使其成为物联网应用程序的首选。话虽如此,BLE 是一个不断发展的标准。几乎每年都会发布一个新版本,以包含更多功能来满足物联网应用不断变化的需求。

在这个竞争激烈的市场中,芯片供应商竞相提供符合新版规范的解决方案。在大多数情况下,芯片供应商在多个 BLE 堆栈/IDE 版本上分阶段支持这些功能。此外,不断变化的规范为版本之间的广泛测试留下了最少的时间,因此硅供应商的每个新 BLE 堆栈版本通常都有由客户报告或在测试或开发期间在内部捕获的缺陷修复。因此,当 BLE 用于使物联网设备保持最新时,应用程序代码可能需要升级,但核心 BLE 堆栈也可能需要更新。强大的引导加载程序架构应该能够支持这些不同的用例,并且足够灵活以适应不断变化的应用需求。

OTA 引导加载程序架构

物联网空间是多种多样的,应用程序和最终解决方案的要求也是如此。为了保持灵活性,产品团队应选择满足其应用需求的 OTA 引导加载程序架构。

有两种类型的 OTA 引导加载程序架构可用于基于 BLE 的设备:

固定堆栈 OTA 引导加载程序

在固定堆栈 OTA 引导加载程序实施中,堆栈不会升级 - 只能升级特定于应用程序的固件。通过这样的实现,堆栈存储在内存的写保护/引导加载程序部分。图 2 显示了一个典型的固定堆栈 OTA 引导加载程序实现。

poYBAGK7wAqALfzjAACAW7PloII601.png

【图2 | 基于 BLE 的固定堆栈 OTA 引导加载程序]

固定堆栈 OTA 引导加载程序的优点是升级固件所需的时间更少,因为只能升级特定于应用程序的代码。另一方面,缺点是即使部署后发现严重错误,也无法升级堆栈代码。

可升级堆栈 OTA 引导加载程序

在可升级堆栈引导加载程序实施中,堆栈和应用程序固件都可以升级。尽管引导加载程序的实际实现可能因供应商而异,但在典型的可升级堆栈实现中,内存分为三个部分:

启动器: 启动器基本上是一个没有通信接口的引导加载程序。它检查是否需要引导加载并将控制权相应地传递给堆栈或应用程序部分。如果有新图像可用,它还负责升级存储堆栈的内存部分。

堆栈: 此部分存储 BLE 堆栈。当主机设备有新的固件映像时,堆栈部分负责与主机设备通信。此外,此部分与 BLE 连接应用程序共享。实际上,这部分就像一个引导加载程序和一个可引导加载程序。该部分由启动器通过向该部分写入新的堆栈固件来引导加载。然后,此部分引导加载应用程序部分。

应用程序: 这部分是实际的应用程序代码,就像上面提到的任何其他实现一样。

一个可升级栈OTA bootloader的操作可以通过三步来理解:

步骤1: 图 3 显示了目标设备(即需要无线升级的设备)和主机设备(即具有新固件并负责将其发送到目标设备的设备)。目标使用其现有的 BLE 协议栈接收新的 BLE 协议栈。这个新的 BLE 协议栈存储在内存的特定应用固件部分。由于物联网设备通常具有有限的内存,因此特定应用的固件部分被新的 BLE 协议栈覆盖。额外的内存会增加设备成本,并且不能仅用于引导加载目的。请注意,不能直接覆盖现有的 BLE 协议堆栈,因为这会破坏当前正在与主机通信的现有堆栈代码,从而在升级完成之前中断通信。

pYYBAGK7wBKAFR3vAAEhIkHw16I243.png

【图3 | 第 1 步:现有堆栈从主机接收新堆栈并写入特定于应用程序的内存]

第 2 步: 启动器从特定应用固件部分复制新的 BLE 协议栈,并将其写入 BLE 协议部分(参见图 4)。到这一步结束时,BLE 协议部分就有了新的 BLE 协议栈。

pYYBAGK7wBqAMRNFAAEW6qb6S7c997.png

【图4 | 第 2 步:Launcher 用新堆栈覆盖现有堆栈]

第 3 步: 目标设备使用新的 BLE 协议栈从主机设备接收新的特定应用固件,并将其写入特定应用固件存储器(参见图 5)。

poYBAGK7wCKABDxyAAEwsE-2pqc052.png

【图5 | 第 3 步:新堆栈正在接收新的特定于应用程序的固件并写入特定于应用程序的部分]

完成此步骤后,目标设备固件配置如图 6 所示,堆栈和特定于应用程序的固件升级均已完成。

poYBAGK7wCmAQpR_AAC7lh9HlDo406.png

【图6 | 升级完成后,内存具有新的 BLE 堆栈和特定于应用程序的固件]

可升级堆栈引导加载程序的一个关键优势是它允许在部署产品后升级堆栈和应用程序。

基于内存的 OTA 引导加载程序分类

OTA 引导加载程序也可以根据用于存储更新固件映像的内存进行分类:

内部存储器 OTA 引导加载程序

使用这种类型的引导加载程序,更新的固件映像(新的 BLE 堆栈和特定于应用程序的固件或只是新的特定于应用程序的固件)被直接写入设备的内部闪存。到目前为止,本文讨论的引导加载程序架构结构都基于使用内部存储器。这种引导加载程序的优点是不需要外部存储器,因此降低了实现升级功能的有效成本。

外部存储器 OTA 引导加载程序

使用外部存储器 OTA 引导加载程序,现有堆栈可以接收新的特定于应用程序的固件或新的堆栈固件和特定于应用程序的固件。这些存储在外部存储器中。稍后,设备根据存储器类型(可以是 I2C 或 SPI 或任何其他串行存储器)使用有线接口从外部存储器读取新固件,然后升级内部闪存。这种实现增加了外部存储器的总系统成本。当设备的内部内存有限并需要升级其堆栈时使用它。请注意,对于某些应用程序用例,堆栈大小可能大于特定于应用程序的固件的大小。

结论

在为物联网应用选择组件时,研究芯片和开发工具支持的 OTA 固件升级方法非常重要。在评估具有内部闪存的设备时,基于内部存储器的 OTA 升级提供了一种经济的方法。某些设备可能不允许堆栈升级,只允许特定应用程序的固件升级。一些可升级堆栈 OTA 引导加载程序实施可能只允许独立升级堆栈和特定于应用程序的固件,以减少升级时间。在为您的应用选择设备时,提前了解这些限制非常重要。

在无线升级设备固件时,数据是通过无线传输的,很容易被黑客入侵。因此,验证并确保主机设备仅与预期的目标设备通话非常重要。通过空中发送的数据也应该加密,以便其他监听 BLE 通信的设备无法解码数据。BLE 4.2 改进了安全机制,增强了对中间人攻击和被动窃听的保护,以减少对 IP 盗窃和黑客接管设备的处理。如果使用的是旧版本的 BLE,明智的做法是手动添加加密层以保护您的 IP 免受被动窃听者的侵害。

物联网市场产品需求的变化速度快于传统产品的需求。此外,广泛采用的 BLE 通信接口标准仍在不断发展,芯片供应商需要大量时间来支持新功能。还有更快进入市场的压力,这可能会影响产品的测试时间和现场试验。由于这些原因,无线固件升级可以让开发人员随着时间的推移增强产品功能并在产品部署后推出缺陷修复,从而为物联网产品增加显着价值。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    447

    文章

    47788

    浏览量

    409098
  • 存储器
    +关注

    关注

    38

    文章

    7148

    浏览量

    161979
  • 物联网
    +关注

    关注

    2868

    文章

    41622

    浏览量

    358341
收藏 人收藏

    评论

    相关推荐

    EtherCAT总线如何对从站固件进行升级

    EtherCATFOE是一种主站对从站设备固件升级的技术,通过利用EtherCAT的数据链路层来处理数据实现文件传输,可以确保文件传输的完整性和准确性,为设备的维护、
    的头像 发表于 02-27 08:23 179次阅读
    EtherCAT总线如何对从站<b class='flag-5'>固件</b>进行<b class='flag-5'>升级</b>?

    深入了解物联网设备的OTA升级机制

    OTA(Over-The-Air,空中下载技术)是一种无线传输技术,用于在物联网设备之间进行远程更新和配置。OTA指的是通过无线通信网络来远程更新或
    发表于 01-21 10:03 461次阅读
    深入了解物<b class='flag-5'>联网</b><b class='flag-5'>设备</b>的OTA<b class='flag-5'>升级</b>机制

    tl-wda5532re固件升级

    固件是硬件设备的内置软件,它控制设备的各种功能和特性。固件升级是指将设备的原有
    的头像 发表于 01-04 10:40 280次阅读

    GD32单片机STM32远程下载手机程序升级固件下载局域网网页升级工具

    完成STM32单片机的升级。 自动编写BootLoader完成固件升级。如果需要远程升级功能,需要BootLoader完成联网的功能,需要的
    发表于 11-10 15:03

    阿里云联网平台简介

    设备管理12提供完整的设备生命周期管理功能,支持设备注册、功能定义、脚本解析、在线调试、远程配置、固件升级、远程维护、实时监控、分组管理、
    发表于 09-11 08:28

    联网简介

    联网(IoT)是由物理设备、车辆等组成的网络,家用电器和嵌入有电子设备、软件、传感器等的其他物品,致动器,以及使这些物体能够连接和交换数据。
    发表于 09-11 07:18

    Ethernet远程固件升级

    本实验工程实现了Ethernet远程固件升级, 通过编译下载工程到STM32F769 Flash bank1并执行,能够实现从远程服务器下载程序到Flash bank2中做固件升级,并
    发表于 09-11 06:00

    VisionFive2开发板开箱和固件升级

    进行连接和数据交互。这意味着开发者可以轻松集成各种传感器、执行器和外部设备,并与它们进行高效的通信和控制。这为开发各种智能系统和联网设备提供了便利。 开发板实物照片 二、
    发表于 08-20 19:51

    BlueNRG-LP、BlueNRG-LPS(无线固件升级程序

    本应用笔记介绍运行于随 BlueNRG-LP、BlueNRG-LPS 片上系统提供的 Bluetooth®低功耗(LE)栈之上的 BlueNRG-LP、BlueNRG-LPS 无线(OTA)固件升级
    发表于 08-14 10:19

    这可能是最简单的OTA远程固件升级系统了。来源啦#arduino #联网

    联网
    学习电子知识
    发布于 :2023年07月17日 01:05:11

    开源-让OTA更简单些esp在线更新固件 #ota #联网 #固件升级 #开源 #arduino #esp

    联网
    学习电子知识
    发布于 :2023年07月03日 20:23:18

    固件升级的设计

    在一些项目交期比较急的情况下,可以先把基本功能做出来,加入固件升级的功能,后续即使发现重大BUG,也不用返厂更新固件,只需要把加密固件发给客户自行更新,也可以使用物
    的头像 发表于 05-17 16:17 808次阅读
    <b class='flag-5'>固件</b><b class='flag-5'>升级</b>的设计

    联网无线通信技术比较

    ,比如工业联,农业联,城市联,家居联等等。技术层面,我们通常说联网架构方面存在几大层次
    发表于 05-15 15:57

    固件添加网格有多难?

    固件添加网格有多难? 我正在从事一个联网项目,其中的设备不是静态的,并且如果在范围内,ESP8266 缠绕连接到的地方周围只有一堆无线
    发表于 05-11 07:32

    新的Blynk联网平台现在支持ESP8266吗?

    Blynk 最近推出了一个新的联网平台,对 ESP8266 提供开箱即用的支持,具有许多很酷的功能,包括设备配置和管理、云中的数据托管、固件无线
    发表于 04-28 06:15