T1-CHL 3.11.11 OTA问题 ---急急急
SDK固件信息:
我们基于sdk_info:< TuyaOS V:3.11.11 BS:40.00_PT:2.3_LAN:3.5_CAD:1.0.5_CD:1.0.0 >
< BUILD AT:2025_04_03_09_33_03 BY ci_manage FOR tuyaos-iot AT T1 >
IOT DEFS < WIFI_GW:1 DEBUG:1 KV_FILE:0 LITTLE_END:1 SL:0 OPERATING_SYSTEM:98 RELIABLE_TRANSFER:0 >
问题描述:
由于我们需要较多的内存给应用程序使用,为了保证模组OTA时,官方OTA线程有足够的堆空间,在调用tuya_iot_wf_soc_dev_init_param初始化模块的时候,我们设置了pre_gw_ug_cb回调方法,参考下面代码。然后在OTA pre_gw_ug_cb回调中,释放堆(停止我们某个应用/服务)。
通过多次OTA测试,我们发现,面板点击OTA更新时,模组可能不会调用pre_gw_ug_cb的回调,导致OTA直接失败。有时候,又能触发回调(内存释放后,OTA可以成功)。请问如何保证模组OTA时,确保先调用pre_gw_ug_cb?
Code: Select all
OPERATE_RET ret;
TY_IOT_CBS_S iot_cbs = {0};
iot_cbs.gw_status_cb = __soc_dev_status_changed_cb;
iot_cbs.gw_ug_cb = __soc_dev_rev_upgrade_info_cb;
iot_cbs.gw_reset_cb = __soc_dev_reset_inform_cb;
iot_cbs.dev_obj_dp_cb = __soc_dev_obj_dp_cmd_cb;
iot_cbs.dev_raw_dp_cb = __soc_dev_raw_dp_cmd_cb;
iot_cbs.dev_dp_query_cb = __soc_dev_dp_query_cb;
iot_cbs.pre_gw_ug_cb = __upgrade_gateway_prev;
iot_cbs.pre_dev_ug_cb = __upgrade_device_prev;
ret = tuya_iot_wf_soc_dev_init_param(GWCM_OLD_PROD,WF_START_SMART_ONLY,&iot_cbs,NULL,APP_PID,APP_VERSION);
if(ret!=OPRT_OK){
ELOG("iot soc init error!");
}else{
NLOG("iot soc init success!");
}
#ifdef ENABLE_BT_SERVICE
tuya_ble_enable_debug(false);
#endif
ret = tuya_iot_reg_get_wf_nw_stat_cb(__wf_nw_status_cb);
if(ret!=OPRT_OK){
ELOG("get wf nw status cb ERR!");
}
没有触发OTA pre_gw_ug_cb回调的日志截图如下:
有发生回调的日志截图如下: