OTA 升级

更新时间:2023-12-11 07:46:55下载pdf

TuyaOS Bluetooth Mesh SDK 内实现了固件升级的功能,通过与手机 App 或者网关建立 GATT 连接链路后,进行固件传输与更新。

由于固件升级和芯片平台架构关联较大,不同平台的处理需要在 kernal 层中做相应的适配。目前,涂鸦已导入并发布的平台中已经适配完成,Application 无需做额外适配,只需要将蓝牙 LE 数据回调中收到的 GATT 数据填入 OTA 业务处理回调中即可。详细可参考 SDK 中的 Demo 实现。

基本概念

升级流程

升级流程图如下:

OTA 升级

断点续传

SDK 升级支持断点续传功能(TLSR825x 受限于平台特性不支持该功能),即升级过程中蓝牙断开或者设备重启的情况下,重新连接升级可以从上次停止的位置继续升级。

异常断连

升级过程中,如果设备与 App/网关的蓝牙连接断开,则设备将会立即重启。

API 说明

OTA 初始化

设备在初始化时需要调用 OTA 初始化接口实现相关变量的初始化,此接口已经在 SDK 内部初始化完成,应用层无需处理。

VOID tal_ble_ota_init(VOID);

OTA 数据接收

通过 GATT 回调收到 OTA 数据后,需要使用此接口将数据输入到 OTA 组件中进行数据解密与处理。

VOID tal_ble_ota_data_recv(UINT8_T *buf, UINT16_T len);

使用说明

在 Application 中实现蓝牙 LE 数据接收回调,并通过注册接口注册到 SDK 中,在回调内将蓝牙 LE 接收到的 TAL_BLE_EVT_WRITE_REQ 数据传入 OTA 数据接收接口中。

VOID app_ble_data_recv(TAL_BLE_EVT_PARAMS_T *p_event)
{
    switch (p_event->type) {
        case TAL_BLE_EVT_WRITE_REQ:
            tal_ble_ota_data_recv(p_event->ble_event.write_report.report.p_data, p_event->ble_event.write_report.report.len);
        break;

        default:
        break;
    }
}

OPERATE_RET tal_mesh_ble_recv_cb_init(TAL_BLE_EVT_FUNC_CB ble_event);

配置说明

固件创建与管理

创建和管理固件。

升级配置

在涂鸦 IoT 开发平台的 硬件开发 页面,选择 OTA 升级。

OTA 升级

或者 固件 OTA 页面创建升级,注意固件升级为 PID 维度,需要先选择要创建升级的产品 PID,创建后的升级也只能升级此 PID 下的设备。

OTA 升级

升级方式区别:

  1. App 提醒升级:用户进入 App 设备面板,主动提醒用户有新版本升级,用户可选择是否升级。
  2. App 强制升级:用户进入 App 设备面板,主动提醒用户有新版本升级,用户必须升级,否则设备功能无法使用并会退回 App 设备列表。
  3. App 检测升级:用户进入 App 设备面板,不会主动提醒用户有新版本升级,但用户可以在设备详情内,主动检测固件升级。

是否支持差分的选项要根据平台是否支持来确定,要支持差分升级的话需要上传支持差分升级的固件。

OTA 升级

升级验证

固件升级在发布时应先进行单个设备验证,确定设备可升级成功且设备功能正常才可以将升级发布。

OTA 升级

填入设备虚拟 ID,即完成该设备的 OTA 配置。再次进入设备面板便能收到 OTA 推送信息,进行 OTA 的升级测试。

注意:设备必须是当前 PID 下的设备,否则将无法添加成功。

OTA 升级

升级发布

在验证设备升级到新版本固件后功能正常,如果要推送到当前 PID 下所有设备升级,则可以将升级进行发布。升级发布后,无需将设备虚拟 ID 填到白名单内即可检测到升级。

OTA 升级

升级发布可以选择灰度发布与全量发布,具体的区别可以在涂鸦 IoT 开发平台内查看相关的说明。