LwM2M:揭秘物联网设备的远程固件更新
插图:© IoT For All --> 随着越来越多资源受限的物联网设备投入使用,通过空中下载(FOTA)进行固件更新变得越来越重要。当在偏远、难以到达的区域部署大量设备时,由于物理访问成本高昂,甚至难以实现,FOTA 提供了一种方式,可以在设备的整个生命周期中修复错误、修补安全漏洞或添加新功能。轻量级 M2M(LwM2M)详细定义了远程固件更新的流程。遵循该协议提供的标准化指南,可以轻松地对资源受限的设备进行远程固件更新,无论使用何种设备或平台。“随着越来越多资源受限的物联网设备投入使用,通过空中下载(FOTA)进行固件更新变得越来越重要。” 通过 LwM2M 更新固件 每个平台或设备供应商都可以开发自定义的 FOTA 机制,也称为 FUOTA(固件空中更新)或 DFU(设备固件升级)。由于没有全球统一的设备固件更新方法,市场上的实现方式多种多样。嵌入式开发人员只需从特定的硬件供应商或云服务提供商获取现有的库之一,即可管理更新过程。然而,这些实现方式特定于供应商或平台,无法轻松移植到其他系统中。通过采用 LwM2M 标准可以解决供应商兼容性问题,该标准与硬件无关,可以在任何硬件平台上实现。该标准提供了明确的指导方针,说明设备应该如何报告数据、如何通过服务器命令执行远程配置,以及如何执行固件更新,无论设备制造商、固件版本或硬件平台如何。 固件更新过程 一般来说,LwM2M 固件更新过程包括四个步骤: 物联网设备(称为 LwM2M 客户端)被触发以启动固件更新过程。LwM2M 客户端下载固件,并在下载完成后向 LwM2M 服务器报告。LwM2M 客户端在验证新固件的完整性与真实性后(通过一个称为安全启动的流程),执行固件更新。客户端尝试运行新固件,并向服务器报告状态。如果成功,设备将开始运行新固件;如果遇到错误,则设备将回滚到之前的固件版本。这一流程在 LwM2M 规范中有详细定义(参见 LwM2M 规范)。 要在设备上添加固件更新功能,需要实现固件更新对象 /5,该对象包含执行更新和报告状态所需的所有关键功能。一些 LwM2M 客户端原生支持此固件更新对象。 更新设备固件 下载新固件 在进行固件更新时,时机至关重要。如果无线电信号质量差,由于数据包丢失需要重传,低吞吐量会导致传输数据花费大量时间。由于设备的无线电模块必须长时间保持连接状态,在这种情况下下载文件会导致电池消耗更快。LwM2M 标准定义了两种执行固件更新的方法,允许服务器或客户端决定启动固件下载过程的最佳时机。两种方法分别为 PULL 和 PUSH: PULL 在 PULL 方法中,设备接收需要下载的文件位置,并从该位置拉取文件。在 PULL 情形中,LwM2M 服务器为设备提供包含固件文件的服务器地址,称为包 URI。设备随后在最早可用的机会从所谓的固件存储库中下载固件。 PUSH LwM2M 服务器将固件文件推送到设备。在 PUSH 情形中,LwM2M 服务器决定启动固件下载的时机,理想情况下是基于连接状况。设备必须能够访问诸如无线电信号强度和链路质量等信息,以支持服务器端决策,这些资源可在 LwM2M 连接监控对象 /4 中获取。 Pull 与 push 固件更新对象 FOTA 流程在固件更新对象 /5 中定义。该对象通过四个状态(由资源 /5/*/3 定义)定义更新流程,以及多个更新结果(由资源 /5/*/5 定义),表示固件更新过程的常见结果。 固件更新 固件更新对象状态 状态 0:空闲 在下载前以及成功更新固件后,设备报告其状态为空闲。 状态 1:正在下载 新固件正在从固件存储库传输到客户端。可能出现的更新结果 错误:URI 解析失败,原因如下: 不支持的包类型(结果 6) 无效的 URI(结果 7) 不支持的协议(结果 9) 下载失败,原因如下: 闪存内存不足(结果 2) RAM 不足(结果 3) 连接中断(结果 4) 完整性检查失败(结果 5) 状态 2:已下载 固件下载完成,所有数据包已成功接收。 状态 3:正在更新 当更新资源被触发时,LwM2M 客户端开始更新其固件。如果更新成功,状态将返回到空闲(状态 0)。可能出现的更新结果: 固件更新失败(结果 8) 完整性检查失败(结果 5) 固件更新成功(结果 1) 状态 0:空闲 在成功更新固件后,设备报告其状态为空闲,其更新结果为固件更新成功。 固件更新成功 远程设备更新 远程物联网设备更新对于物联网应用的长期成功至关重要。当在实地部署设备时,软件错误和安全漏洞将被发现,而这些设备通常需要运行多年。由于对设备的物理访问通常难以实现,因此对于几乎所有物联网部署,FOTA 都是必不可少的。远程更新固件带来了一些严峻的挑战。设备在闪存内存、电池容量和可用带宽方面受到限制,且通常使用不稳定的连接连接到云端。LwM2M 标准提出了一种方法,用于更新资源受限的物联网设备的固件。通过结构化方法与标准化状态和错误代码,开发人员可以确保新固件镜像能够安全地发送到其部署在实地的设备,无论使用何种硬件供应商或云平台。TweetShareShareEmail 连接性 数据分析 硬件组件 机器学习 网络与协议 --> 连接性 数据分析 硬件组件 机器学习 网络与协议
查看全文
作者最近更新
-
Edge and IoT Predictions For 2024iotforall2023-12-22
评论0条评论