Page 1 of 1

TuyaOS 应用代码复用烧录串口问题

Posted: 2026年 Jul 6日 11:40
by Jaoki

使用的Telink芯片平台,SDK版本:TLSR825X-LZMA_TuyaOS-3.10.4。有参考过这个连接的
viewtopic.php?p=5679&hilit=%E4%B8%B2%E5 ... 4%A8#p5679 ,但是这个和现在的SDK对不上,请问这段代码

Code: Select all

if(OPRT_OK == tal_util_adv_report_parse(0x09, adv, adv_len, &name_data, &name_data_len)){
//        app_log_dump("scan", name_data, name_data_len);
        if(test_name_len == name_data_len && tkl_system_memcmp(name_data, test_name, name_data_len) == 0){
            STATIC UINT8_T uart_init_flag = 0;
            if(0 == uart_init_flag){
                tal_factory_test_uart_init();
                uart_init_flag = 1;
            }
            ty_rssi_base_test_update_rssi(rssi, TY_PROD_RSSI);
        }
        else if(name_data_len == 7 && 0 == tkl_system_memcmp(name_data, "ty_mdev", 7)){
            ty_rssi_base_test_update_rssi(rssi, TY_MDEV_RSSI);
        }
    }

是已经在这个函数中

Code: Select all

VOID_T app_ble_data_recv(TAL_BLE_EVT_PARAMS_T* pEvent)
{
    UINT8_T *name_data;
    UINT8_T name_data_len = 0;
    UINT8_T test_name[20] = "ty_prod";
    UINT8_T test_name_len = 7;

switch (pEvent->type) {
    case TAL_BLE_EVT_PERIPHERAL_CONNECT:
        TAL_PR_DEBUG("BLE connect");
        app_ble_connect_state_set(1);
    break;
    case TAL_BLE_EVT_DISCONNECT:
        TAL_PR_DEBUG("BLE disconnect reason:%x", pEvent->ble_event.disconnect.reason);
        app_ble_connect_state_set(0);
    break;
    case TAL_BLE_EVT_ADV_REPORT:
        TAL_PR_DEBUG("----> TAL_BLE_EVT_ADV_REPORT\r\n");
        TAL_PR_HEXDUMP_DEBUG("data:", pEvent->ble_event.adv_report.p_data, pEvent->ble_event.adv_report.data_len);
        tal_rssi_test_ble_adv_recv(pEvent->ble_event.adv_report.p_data, pEvent->ble_event.adv_report.data_len, pEvent->ble_event.adv_report.peer_addr.addr, pEvent->ble_event.adv_report.rssi);
    break;
    case TAL_BLE_EVT_WRITE_REQ:
        tal_ble_ota_data_recv(pEvent->ble_event.write_report.report.p_data, pEvent->ble_event.write_report.report.len);
    break;
    case TAL_BLE_EVT_MTU_REQUEST:
//            TAL_PR_DEBUG("TAL_BLE_EVT_MTU_REQUEST:%d", pEvent->ble_event.exchange_mtu.mtu);
        break;

    default:
    break;
}
}

的tal_rssi_test_ble_adv_recv接口里面已经处理还是需要自己额外处理?目前测试是需要自己添加调用:tal_factory_test_uart_init(); 但是正常使用的时候,应该怎么判断是烧录授权进入的呢?尝试自己调用后,产测授权的时候会提示:固件版本校验失败(06):

1.png

现在烧录的时候有开启信标,将模式调至M3,屏幕显示[M3]:Beacon
Nmae: "ty_prod"
请教下,这是什么原因呢,要怎么解决?


Re: TuyaOS 应用代码复用烧录串口问题

Posted: 2026年 Jul 6日 11:44
by joey_nobug

3.10.x 的版本不需要额外修改,SDK 已经集成了串口复用的功能。

对于图片里的失败,就是字面意思,固件里填的版本号或者固件标志名与平台上传的版本号不一致,可以看下故障详情


Re: TuyaOS 应用代码复用烧录串口问题

Posted: 2026年 Jul 6日 14:25
by Jaoki

请教下,SDK已经集成了,应用代码不需要额外初始化串口。那么我自己不额外初始化的情况下,现在直接是提示

1.png

。这是什么原因呢? 信标有上电。关于固件版本不一致的问题:

2.png

这是app_config.h里面的代码

Code: Select all

/*************************************************************************************/
/* Automatically-generated file. Do not edit! */
/*************************************************************************************/

#ifndef __APP_CONFIG_H__
#define __APP_CONFIG_H__


//
// APP
//
#define PRODUCTKEY "xpkXXXX"
#define MESH_CATEGORY 0x1011
#define IS_FIRMWARE_KEY 0
#define NEED_PUBLISH_ADDR 0
// end of APP

//
// COMP
//

//
// FW_INFO
//
#define BUILD_FIRMNAME          "tuyaos_demo_mesh_node"
#define FW_VERSION              "0.1"
#define FW_VERSION_HEX          0x3130


#endif

编译的时候是填的0.1. 还有哪里需要修改吗?


Re: TuyaOS 应用代码复用烧录串口问题

Posted: 2026年 Jul 6日 14:32
by joey_nobug

你的 BUILD_FIRMNAME 这个好像不对,这个要用平台的固件标志名。

进产测的问题,SDK 组件内扫到 ty_prod 信标会重新初始化串口,业务端还是要把扫描到的 BLE 广播给到产测组件,也就是 demo 中 app_ble_data_recv 函数内需要保留 tal_rssi_test_ble_adv_recv 的处理


Re: TuyaOS 应用代码复用烧录串口问题

Posted: 2026年 Jul 6日 14:42
by Jaoki

固件标志名在那里查看, 创建固件信息的时候,没看到让填固件:标志名, 只填了中英文名称。


Re: TuyaOS 应用代码复用烧录串口问题

Posted: 2026年 Jul 6日 15:17
by joey_nobug
Jaoki 2026年 Jul 6日 14:42

固件标志名在那里查看, 创建固件信息的时候,没看到让填固件:标志名, 只填了中英文名称。

平台创建没有固件标志名的话,就填一下固件key


Re: TuyaOS 应用代码复用烧录串口问题

Posted: 2026年 Jul 6日 15:20
by Jaoki

修改tuya_iot.config中:
CONFIG_PRODUCTKEY="xpkXXXXX" -> 这里PID 填固件key
CONFIG_MESH_CATEGORY=0x1011
CONFIG_IS_FIRMWARE_KEY=0 -> 改为1
CONFIG_NEED_PUBLISH_ADDR=0
是这个意思吗?


Re: TuyaOS 应用代码复用烧录串口问题

Posted: 2026年 Jul 6日 15:22
by joey_nobug
Jaoki 2026年 Jul 6日 15:20

修改tuya_iot.config中:
CONFIG_PRODUCTKEY="xpkXXXXX" -> 这里PID 填固件key
CONFIG_MESH_CATEGORY=0x1011
CONFIG_IS_FIRMWARE_KEY=0 -> 改为1
CONFIG_NEED_PUBLISH_ADDR=0
是这个意思吗?

#define BUILD_FIRMNAME "tuyaos_demo_mesh_node" 这里填你创建的固件 key,其他的不变


Re: TuyaOS 应用代码复用烧录串口问题

Posted: 2026年 Jul 6日 15:37
by Jaoki
joey_nobug 2026年 Jul 6日 15:22
Jaoki 2026年 Jul 6日 15:20

修改tuya_iot.config中:
CONFIG_PRODUCTKEY="xpkXXXXX" -> 这里PID 填固件key
CONFIG_MESH_CATEGORY=0x1011
CONFIG_IS_FIRMWARE_KEY=0 -> 改为1
CONFIG_NEED_PUBLISH_ADDR=0
是这个意思吗?

#define BUILD_FIRMNAME "tuyaos_demo_mesh_node" 这里填你创建的固件 key,其他的不变

按照你说的,将BUILD_FIRMNAME 的值填入固件Key , 还是一样的情况,进入产测失败。


Re: TuyaOS 应用代码复用烧录串口问题

Posted: 2026年 Jul 6日 15:43
by joey_nobug

在设备启动时,检测下配网状态,如果是未配网状态开启一下信标扫描,超时 2s 后再关闭。(可以参考 demo 中,注释掉的 mdev 整机测试信标扫描代码)

Code: Select all

tal_rssi_base_test_start(TY_PROD_RSSI);

可以放在 OPERATE_RET tuya_init_last(VOID_T) 中