更新时间:2024-07-30 03:10:05下载pdf
本文介绍 OTA 固件升级。
Over-the-Air(OTA)升级是一种通过无线通讯,进行固件升级的技术。TuyaOS 支持设备 OTA 升级能力,通过涂鸦智能 App 或者涂鸦网关,可以方便地为出货固件进行升级,不断提升产品体验。
TuyaOS 蓝牙 LE OTA 相关的协议部分逻辑由组件 tuya_ble_ota.c
文件负责处理,不同芯片平台的处理逻辑完全相同。存储部分逻辑由 tkl_ota.c
文件负责处理,不同芯片平台的处理逻辑不同。
typedef enum {
TUYA_BLE_OTA_REQ,
TUYA_BLE_OTA_FILE_INFO,
TUYA_BLE_OTA_FILE_OFFSET_REQ,
TUYA_BLE_OTA_DATA,
TUYA_BLE_OTA_END,
TUYA_BLE_OTA_UNKONWN,
} tuya_ble_ota_data_type_t;
TUYA_BLE_OTA_REQ
:请求启动 OTA。TUYA_BLE_OTA_FILE_INFO
:读取 OTA 文件信息。TUYA_BLE_OTA_FILE_OFFSET_REQ
:读取 OTA 文件偏移信息。TUYA_BLE_OTA_DATA
:写入 OTA 数据。TUYA_BLE_OTA_END
:OTA 升级结束。TUYA_BLE_OTA_UNKONWN
:未知状态。typedef struct {
tuya_ble_ota_data_type_t type;
UINT16_T data_len;
UINT8_T *p_data;
} tuya_ble_ota_data_t;
type
:详见 tuya_ble_ota_data_type_t
。data_len
:OTA 数据长度。p_data
:OTA 数据。TUYA_BLE_FEATURE_OTA_ENABLE
接口说明
UINT32_T tuya_ble_ota_handler(tuya_ble_ota_data_t* ota);
数据流动
参数说明
参数 | 说明 |
---|---|
ota | 接收到的 OTA 升级协议数据,详见 OTA 协议说明 |
接口说明
tuya_ble_status_t tuya_ble_ota_response(tuya_ble_ota_response_t *p_data);
数据流动
参数说明
参数 | 说明 |
---|---|
p_data | 设备回复的 OTA 升级协议数据,详见 OTA 协议说明 |
接口说明
STATIC UINT32_T tuya_ble_ota_req_handler(UINT8_T* cmd, UINT16_T cmd_size, tuya_ble_ota_response_t* rsp)
数据流动
参数说明
参数 | 说明 |
---|---|
cmd | 相应指令对应的协议内容 |
cmd_size | 相应指令对应的协议内容长度 |
rsp | 相应指令对应的回复协议内容 |
接口说明
STATIC UINT32_T tuya_ble_ota_file_info_handler(UINT8_T* cmd, UINT16_T cmd_size, tuya_ble_ota_response_t* rsp)
数据流动
参数说明
参数 | 说明 |
---|---|
cmd | 相应指令对应的协议内容 |
cmd_size | 相应指令对应的协议内容长度 |
rsp | 相应指令对应的回复协议内容 |
接口说明
STATIC UINT32_T tuya_ble_ota_file_offset_handler(UINT8_T* cmd, UINT16_T cmd_size, tuya_ble_ota_response_t* rsp)
数据流动
参数说明
参数 | 说明 |
---|---|
cmd | 相应指令对应的协议内容 |
cmd_size | 相应指令对应的协议内容长度 |
rsp | 相应指令对应的回复协议内容 |
接口说明
STATIC UINT32_T tuya_ble_ota_data_handler(UINT8_T* cmd, UINT16_T cmd_size, tuya_ble_ota_response_t* rsp)
数据流动
参数说明
参数 | 说明 |
---|---|
cmd | 相应指令对应的协议内容 |
cmd_size | 相应指令对应的协议内容长度 |
rsp | 相应指令对应的回复协议内容 |
接口说明
STATIC UINT32_T tuya_ble_ota_end_handler(UINT8_T* cmd, UINT16_T cmd_size, tuya_ble_ota_response_t* rsp)
数据流动
参数说明
参数 | 说明 |
---|---|
cmd | 相应指令对应的协议内容 |
cmd_size | 相应指令对应的协议内容长度 |
rsp | 相应指令对应的回复协议内容 |
接口说明
OPERATE_RET tkl_ota_get_old_firmware_info(TUYA_OTA_FIRMWARE_INFO_T **info)
该接口用于 OTA 的断点续传功能。
参数说明
参数 | 说明 |
---|---|
info | 已存储的 OTA 固件信息 |
宏 TUYA_BLE_FEATURE_OTA_ENABLE
默认开启。
参考 tuya_ble_protocol_callback.c
中的示例代码:
STATIC VOID_T tuya_ble_protocol_callback(tuya_ble_cb_evt_param_t* event)
{
switch (event->evt) {
…………
case TUYA_BLE_CB_EVT_OTA_DATA: {
if (event->ota_data.p_data[0] == 0) {
#if defined(TUYA_BLE_FEATURE_OTA_ENABLE) && (TUYA_BLE_FEATURE_OTA_ENABLE == 1)
tuya_ble_ota_handler(&event->ota_data);
#endif
} else {
…………
}
} break;
…………
default: {
TAL_PR_INFO("tuya_ble_protocol_callback Unprocessed event type 0x%04x", event->evt);
} break;
}
}
VOID_T tuya_ble_protocol_init(VOID_T)
{
…………
#if defined(TUYA_BLE_FEATURE_OTA_ENABLE) && (TUYA_BLE_FEATURE_OTA_ENABLE == 1)
tuya_ble_ota_init();
#endif
…………
}
通过您 PID 对应的授权码,对设备进行授权。
打开 涂鸦开发者平台,进入您使用的 PID 界面,选择 硬件开发 页签,云端接入方式选择 TuyaOS,根据您使用的芯片平台选择 云端接入硬件。
单击 新增自定义固件,根据提示填写对应信息。
单击 新增固件版本,根据提示填写对应信息,上传升级固件,并进行上架。
单击右侧的 OTA 升级,单击右侧的 新建固件升级,根据提示填写对应信息。
单击 验证,单击 通过设备号直接添加。
打开手机上的设备面板,单击右上角 铅笔字样的图标,单击 设备信息,复制 虚拟 ID,将虚拟 ID 粘贴到上一步骤的弹窗中。
返回到手机的上一级菜单中,单击 设备升级,单击 更新,等待升级完成即可。
开发过程中遇到任何问题,都可以在 涂鸦开发者论坛的蓝牙板块 进行提问。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈