泰凌微电子蓝牙Mesh设备固件更新功能和测试说明(一)

描述

蓝牙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节点。

升级完成的界面如下图:

上位机





审核编辑:刘清

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分