蓝牙Mesh 协议规范1.1引入了一组新的功能,称为设备固件更新(Device Firmware Update)(DFU),使得用户可以通过更新mesh网络设备上运行的固件。固件需要保持最新,并且制造商经常会发布固件更新。新的固件可能修复问题,添加新功能,改善安全性,提供更好的性能或提供其他一些好处。无论是设备固件、应用软件还是操作系统更新,保持软件最新是通常被接受的良好做法。软件更新的方式取决于软件类型和所在平台。在现代智能手机和桌面操作系统中,自动化软件更新几乎不需要用户参与,已成为常态。
蓝牙Mesh 1.0没有自动或标准化的机制来检测设备的新固件是否可用,获取固件或安装固件。这些任务必须手动执行,并且使用为此目的提供的专有接口直接将固件更新安装到设备上。在由多个供应商设备组成的mesh网络中,此过程可能涉及多个专有工具,并变得非常复杂。
蓝牙Mesh DFU功能规范了设备固件更新的实现方式,并实现了给射频一跳连接距离以外的网络节点同时进行固件更新,并且支持静默更新模式。目前,泰凌微电子的TLSR825x和TLSR921x系列芯片已经全面支持包括DFU在内的蓝牙Mesh规范1.1的所有新功能。本文共2篇,以下是第一篇,将介绍DFU的常用功能和概念,以及测试方法。
1
蓝牙Mesh DFU功能介绍
1.1
蓝牙Mesh DFU模式和参考速率介绍
主要支持以下几种模式:
支持通过Mesh ADV Relay的方式同时对多节点更新固件。一个160kB大小的固件升级时间预计在60分钟左右,如果启用泰凌SDK中支持的扩展广播包模式,则升级时间将大幅缩减到 6 分钟左右。
通过Friend节点给LPN进行固件更新的模式:该模式实现了LPN在进行固件更新的同时,还保持处于低功耗模式。一个130kB大小的固件升级时间预计为70分钟左右。
单个节点(包含LPN节点)的GATT直连更新模式:App会断开当前连接,去连接被升级节点,然后执行蓝牙Mesh DFU,收发流程和对多节点升级的流程一样,只是收发包交互更快,固件更新时间在1分钟左右,和泰凌Bluetooth LE SDK中OTA固件更新所需要的时间基本一样。需要注意的是,该模式要求被更新节点在手机的GATT连接范围内。
1.2
蓝牙Mesh DFU固件分发方式
手机同时作为Initiator(发起者)和Distributor(分发者):在分发固件给多个需要升级的Target(目标)节点的过程中,手机需要和直连节点一直保持GATT连接,不能断开,该过程需要持续几十分钟。若使用Gateway(网关),则不需要和任何节点保持GATT连接,直接采用上位机加Gateway Dongle作为Initiator和Distributor。
手机作为Initiator,GATT直连节点作为Distributor:该模式,只需要手机在前面阶段,通过GATT把新固件先下载到直连节点,然后由直连节点作为Distributor,管理和执行后面的工作:分发新固件给其它待升级节点。
1.3
蓝牙Mesh DFU静默升级模式
蓝牙Mesh DFU允许根据应用要求,控Target设备上的新固件安装生效的时机。在成功收到并验证固件后,待升级的Target节点并不会立刻安装新固件。只有在收到Apply Firmware Update 命令后,Target节点才会安装新固件。App或者上位机在把固件传完给被升级节点后,可以选择一个合适的时间再发送Apply Firmware Update命令,实现静默升级模式。
2
使用App测试蓝牙Mesh DFU
接下来,我们将介绍使用泰凌提供的开发工具,通过手机实现DFU的两种固件分发方式,并完成安装生效的操作步骤。
2.1
测试条件
1、SDK开发包
访问Telink Wiki下载最新的蓝牙Mesh SDK:
https://wiki.telink-semi.cn/tools_and_sdk/BLE_Mesh/SIG_Mesh/sig_mesh_sdk.zip
2、硬件
本文以TLSR825x芯片作为测试样例。需要TLSR8258 Dongle若干(>=2)作为mesh节点设备,可以通过在线购买获取:
https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-24776555937.13.5c531ab2zURieL&id=680419633378
3、Android或者iOS蓝牙Mesh App
Android App在以上SDK开发包中获取: elink_sig_mesh_sdkappandroidTelinkBleMeshTelinkBleMeshDemo-V4.1.0.0-20231113.apk
iOS App可以在App Store通过搜索telinksigmesh获取。
2.2
SDK代码配置
SDK里面蓝牙Mesh DFU默认关闭,需要打开节点MD_MESH_OTA_EN的宏,否则将不支持DFU,无法勾选该设备作为执行DFU的Target节点。
打开方法,mesh_config.h文件里面:
打开MD_MESH_OTA_EN
如果需要测试直连节点作为Distributor模式,还需要打开DISTRIBUTOR_UPDATE_SERVER_EN。
如果需要使用泰凌提供的扩展广播包模式加快固件更新时间,则还需要打开 EXTENDED_ADV_ENABLE。
2.3
App参数设定
如果需要使用泰凌提供的扩展广播包模式加快固件更新时间,则需要设置:
App首页点击右下角Setting——Settings——Extend Bearer Mode里面勾选 “Extend GATT & ADV”,否则不需要设置。
2.4
测试步骤
1、App作为Distributor模式
Distributor选择Phone方式升级,将会通过手机直接分发固件数据给Target设备,具体操作步骤:
App首页点击右下方的Network——Mesh OTA,进入到以下页面,然后按图示的1到6步骤进行操作:
升级完成的界面如下图:
2、直连节点作为Distributor模式
选择GATT直连节点作为Distributor模式的方式如下,App首页点击右下方的Network——Mesh OTA,进入到以下页面,然后按图示的1到6步骤进行操作:
其中, Apply Policy选择Verify And Apply,表示直连节点作为Distributor分发完新固件给Target节点后,自动发起Apply Firmware Update,不需要等待App发送Apply Firmware Update。
如果选择Verify Only,表示直连节点作为Distributor分发完新固件给被升级节点后,不发送Apply Firmware Update,而是等待App给Distributor直连节点发送Apply指令,然后直连节点才发送Apply Firmware Update给Target节点。
升级完成的界面如下图:
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !