OTA 请求者
Matter 无线软件更新(OTA)是一个允许 Matter 设备在一个 Fabric 中更新其固件的过程。 Matter 核心规范 要求每个设备都实现一个固件更新方法以确保安全。 这个 OTA 请求者示例演示了使用 Matter 操作网络查询和下载新固件镜像的方法。
您可以将此示例作为创建自己应用程序的参考。
OTA 提供者 - 这是一个可以响应 OTA 请求者关于可用软件更新的查询,并与其共享更新包的节点。
OTA 请求者 - 这可以是任何需要软件更新的节点,它与 OTA 提供者通信以获取适用的软件更新。
在此示例中,OTA 提供者将是一个 Linux 应用程序,此示例将作为 OTA 请求者。
环境需求
该示例支持以下开发套件:
硬件平台 |
板卡名称 |
---|---|
RTL8777G HDK |
RTL8777G EVB |
准备 Matter 环境
要设置 Matter 环境,请按照 开发环境设置 中列出的步骤操作。
准备 CHIP Tool
CHIP Tool(chip-tool)是 Matter 的控制器实现,允许将 Matter 设备加入网络并使用 Matter 消息与其通信,这些消息可能包含数据模型的相关操作,例如群集命令。该工具还提供其他特定于 Matter 的实用程序,如解析设置负载或执行发现操作。
要构建 CHIP Tool,请按照 CHIP Tool 步骤操作。
配置选项
以下配置可用于此示例。
CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION
用于标识设备上运行的软件版本的单调数字
CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION_STRING
标识设备上运行的软件版本的字符串
请参阅 Matter APP 配置 以获取有关配置项的更多信息。
编译和下载
编译
导航到指定目录并编译 ota-requestor 应用。
$ cd beeSDK/subsys/matter/samples
$ rm -r build/
$ ./build.py rtl8777g ota-requestor --preset dual
下载
编译成功后,应用程序 bin 文件 matter-cli-ftd_bank0_MP_dev_*.bin
将在目录 build/bank0/bin
中生成。
要将应用程序 bin 文件下载到 EVB 板,按照 快速入门 中 固件下载 中列出的步骤操作。如果工厂数据已启用,请参阅 工厂数据 中的 烧录工厂数据。
然后按下 EVB 板上的重置按钮,它将开始运行。
准备 OTA 镜像
要验证启动更新的 OTA 请求者镜像,必须执行以下操作:
OTA 请求者应用程序的当前软件版本由 CHIPProjectConfig.h 中的 CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION 定义, 将 CHIP_DEVICE_CONFIG_DEVICE_SOFTWARE_VERSION 修改为大于当前运行版本的值。
编译新版本的 OTA 请求者应用程序。
Matter OTA 镜像是编译输出文件之一,OTA 镜像的默认位置是在构建目录中的
build/ota/matter.ota
。提供给 OTA 提供者应用程序镜像文件时,请使用此生成的二进制文件。
测试验证
要测试示例,需要完成以下步骤:
导航到 CHIP 根目录。
编译 Linux OTA 提供者应用程序:
$ scripts/examples/gn_build_example.sh examples/ota-provider-app/linux out/provider chip_config_network_layer_ble=false
运行 OTA 提供者应用程序,将 matter.ota 替换为希望提供给 Matter 设备的 Matter OTA 镜像的路径。 请注意,Matter OTA 镜像默认生成在示例构建目录中的
build/ota/matter.ota
:$ ./out/provider/chip-ota-provider-app -f matter.ota
保持应用程序运行,并使用另一个终端完成其余步骤。
使用节点 ID 1 给 Matter 设备配网。以 hex: 前缀开头的参数是 Thread 网络的活动操作数据集。 如果在组建网络时更改了默认网络设置,可以从 OTBR 中检索它。
$ ./out/chiptool/chip-tool pairing ble-thread 1 hex:<operationalDataset> 20202021 3840
使用节点 ID 2 给 OTA 提供者配网:
$ ./out/chiptool/chip-tool pairing onnetwork 2 20202021
运行以下命令配置 Matter 设备的默认 OTA 提供者(最后两个参数分别是请求者节点 ID 和请求者端点 ID):
$ ./out/chiptool/chip-tool otasoftwareupdaterequestor write default-otaproviders '[{"fabricIndex": 1, "providerNodeID": 2, "endpoint": 0}]' 1 0
向 OTA 提供者配置访问控制列表(ACL),以授予 Fabric 中所有节点操作特权,这是允许节点向 OTA 提供者发送 Cluster 命令所必需的:
$ ./out/chiptool/chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": null, "targets": [{"cluster": 41, "endpoint": null, "deviceType": null}]}]' 2 0
使用 chip-tool 向设备发送公告 OTA 提供者命令(数字参数分别是提供者节点 ID、提供者供应商 ID、公告原因、提供者端点 ID、请求者节点 ID 和请求者端点 ID):
$ ./out/chiptool/chip-tool otasoftwareupdaterequestor announce-otaprovider 2 0 0 0 1 0
OTA 过程应包括下载镜像、验证镜像头、擦除升级的闪存分区、写入闪存和 checksum 验证。一旦 OTA 签名更新,设备将在 10 秒倒计时后重新启动进入新镜像。