物联网 (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 显示了基于固件的可升级系统的基本架构。
【图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 引导加载程序实现。
【图2 | 基于 BLE 的固定堆栈 OTA 引导加载程序]
固定堆栈 OTA 引导加载程序的优点是升级固件所需的时间更少,因为只能升级特定于应用程序的代码。另一方面,缺点是即使部署后发现严重错误,也无法升级堆栈代码。
可升级堆栈 OTA 引导加载程序
在可升级堆栈引导加载程序实施中,堆栈和应用程序固件都可以升级。尽管引导加载程序的实际实现可能因供应商而异,但在典型的可升级堆栈实现中,内存分为三个部分:
启动器: 启动器基本上是一个没有通信接口的引导加载程序。它检查是否需要引导加载并将控制权相应地传递给堆栈或应用程序部分。如果有新图像可用,它还负责升级存储堆栈的内存部分。
堆栈: 此部分存储 BLE 堆栈。当主机设备有新的固件映像时,堆栈部分负责与主机设备通信。此外,此部分与 BLE 连接应用程序共享。实际上,这部分就像一个引导加载程序和一个可引导加载程序。该部分由启动器通过向该部分写入新的堆栈固件来引导加载。然后,此部分引导加载应用程序部分。
应用程序: 这部分是实际的应用程序代码,就像上面提到的任何其他实现一样。
一个可升级栈OTA bootloader的操作可以通过三步来理解:
步骤1: 图 3 显示了目标设备(即需要无线升级的设备)和主机设备(即具有新固件并负责将其发送到目标设备的设备)。目标使用其现有的 BLE 协议栈接收新的 BLE 协议栈。这个新的 BLE 协议栈存储在内存的特定应用固件部分。由于物联网设备通常具有有限的内存,因此特定应用的固件部分被新的 BLE 协议栈覆盖。额外的内存会增加设备成本,并且不能仅用于引导加载目的。请注意,不能直接覆盖现有的 BLE 协议堆栈,因为这会破坏当前与主机通信的现有堆栈代码,从而在升级完成之前中断通信。
【图3 | 第 1 步:现有堆栈从主机接收新堆栈并写入特定于应用程序的内存]
第 2 步: 启动器从特定应用固件部分复制新的 BLE 协议栈,并将其写入 BLE 协议部分(参见图 4)。到这一步结束时,BLE 协议部分就有了新的 BLE 协议栈。
【图4 | 第 2 步:Launcher 用新堆栈覆盖现有堆栈]
第 3 步: 目标设备使用新的 BLE 协议栈从主机设备接收新的特定应用固件,并将其写入特定应用固件存储器(参见图 5)。
【图5 | 第 3 步:新堆栈正在接收新的特定于应用程序的固件并写入特定于应用程序的部分]
完成此步骤后,目标设备固件配置如图 6 所示,堆栈和特定于应用程序的固件升级均已完成。
【图6 | 升级完成后,内存具有新的 BLE 堆栈和特定于应用程序的固件]
可升级堆栈引导加载程序的一个关键优势是它允许在部署产品后升级堆栈和应用程序。
基于内存的 OTA 引导加载程序分类
OTA 引导加载程序也可以根据用于存储更新固件映像的内存进行分类:
内部存储器 OTA 引导加载程序
使用这种类型的引导加载程序,更新的固件映像(新的 BLE 堆栈和特定于应用程序的固件或只是新的特定于应用程序的固件)被直接写入设备的内部闪存。到目前为止,本文讨论的引导加载程序架构结构都基于使用内部存储器。这种引导加载程序的优点是不需要外部存储器,因此降低了实现升级功能的有效成本。
外部存储器 OTA 引导加载程序
使用外部存储器 OTA 引导加载程序,现有堆栈可以接收新的特定于应用程序的固件或新的堆栈固件和特定于应用程序的固件。这些存储在外部存储器中。稍后,设备根据存储器类型(可以是 I2C 或 SPI 或任何其他串行存储器)使用有线接口从外部存储器读取新固件,然后升级内部闪存。这种实现增加了外部存储器的总系统成本。当设备的内部内存有限并需要升级其堆栈时使用它。请注意,对于某些应用程序用例,堆栈大小可能大于特定于应用程序的固件的大小。
结论
在为物联网应用选择组件时,研究芯片和开发工具支持的 OTA 固件升级方法非常重要。在评估具有内部闪存的设备时,基于内部存储器的 OTA 升级提供了一种经济的方法。某些设备可能不允许堆栈升级,只允许特定应用程序的固件升级。一些可升级堆栈 OTA 引导加载程序实施可能只允许独立升级堆栈和特定于应用程序的固件,以减少升级时间。在为您的应用选择设备时,提前了解这些限制非常重要。
在无线升级设备固件时,数据是通过无线传输的,很容易被黑客入侵。因此,验证并确保主机设备仅与预期的目标设备通话非常重要。通过空中发送的数据也应该加密,以便其他监听 BLE 通信的设备无法解码数据。BLE 4.2 改进了安全机制,增强了对中间人攻击和被动窃听的保护,以减少黑客对 IP 盗窃和接管设备的处理。如果使用的是旧版本的 BLE,明智的做法是手动添加加密层以保护您的 IP 免受被动窃听者的侵害。
物联网市场产品需求的变化速度快于传统产品的需求。此外,广泛采用的 BLE 通信接口标准仍在不断发展,芯片供应商需要大量时间来支持新功能。还有更快进入市场的压力,这可能会影响产品的测试时间和现场试验。由于这些原因,无线固件升级可以让开发人员随着时间的推移增强产品功能并在产品部署后推出缺陷修复,从而为物联网产品增加显着价值。
审核编辑:郭婷
评论
查看更多