在
RTL8720CM_TuyaOS-3.11.22\software\TuyaOS\apps\tuyaos_demo_examples\src\examples\service_ota\example_attach_ota.c
文件中有下面一段ota升级的函数:
STATIC OPERATE_RET __get_attach_fw_data_cb(IN CONST FW_UG_S *fw, IN CONST UINT_T total_len, IN CONST UINT_T offset,IN CONST BYTE_T *data, IN CONST UINT_T len, OUT UINT_T *remain_len, IN PVOID_T pri_data)
{
UINT_T pack_cnt = 0, i = 0, send_len = 0;
Code: Select all
TAL_PR_DEBUG("Rev File Data");
TAL_PR_DEBUG("Total_len:%d ", total_len);
TAL_PR_DEBUG("Offset:%d Len:%d", offset, len);
pack_cnt = len/ONE_PACK_LEN;
*remain_len = len % ONE_PACK_LEN;
for (i=0; i<pack_cnt; i++) {
__print_firmware_data(&data[send_len], ONE_PACK_LEN);
send_len += ONE_PACK_LEN;
}
// last pack
if (offset + len == total_len) {
TAL_PR_DEBUG("the last fw pack");
if ((*remain_len) > 0) {
__print_firmware_data(&data[send_len], (*remain_len));
send_len += (*remain_len);
*remain_len = 0;
}
//update version
__update_firmware_version(fw->tp, fw->sw_ver);
}
return OPRT_OK;}
不考虑其他因素,测试环境 数据已经到达打印函数 __print_firmware_data; 正常情况下 数据都能够全部传递完成;
现在问题出现了,将这些数据 采用uart 的方式将这些数据 每批次 256个字节发送出去给mcu
mcu端 很难全部接收完成。
测试数据:
1.如果,网关内部不执行别的代码;包括启动tuyaos start语句等; 只测试发送256个字节是完全可行的;
mcu端也能够接收到;
请问;目前这个情况;是crg1/cr3L 这个网关资源不够造成的吗?是发送函数阻塞导致的吗?
还是该线程优先级不够,被别的线程打断;从而导致发送的数据 错误了呢?
这个问题已经困扰了一周了;麻烦有时间的话;帮忙提供下解决思路!!谢谢!!!