OTA 升级

更新时间:2024-06-25 03:07:54LLM 副本以 Markdown 格式查看下载 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);

配置说明

固件创建与管理

创建和管理固件。

升级配置

在涂鸦开发者平台的 硬件开发 页面,选择 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 升级

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