Page 1 of 2
T1-CHL串口相关的问题
Posted: 2025年 May 20日 18:29
by feige2023
SDK版本:3.11.11
芯片/模块:T1-CHL
问题1.
TUYA_UART_NUM_1(日志口)的不能串口接收,无法通过tkl_uart_rx_irq_cb_reg注册回调的方式读取,我想使用日志口作为终端命令行输入。
Code: Select all
# 在初始化函数中,将MCU跟日志口同注册到同一个回调中进行测试
tkl_uart_rx_irq_cb_reg(TUYA_UART_NUM_0, bsp_uart_rx_callback);
tkl_uart_rx_irq_cb_reg(TUYA_UART_NUM_1, bsp_uart_rx_callback);
# 在回调中,若能收到数据,都通过日志口进行输出,分别测试NUM_0和NUM_1的接收
# 分别向MCU串口和日志口串口发送数据,发现,只会打印MCU(非日志口)的输入
static void bsp_uart_rx_callback(TUYA_UART_NUM_E port_id)
{
uint8_t buf[128];
uint8_t*pdst = buf;
int len;
while(1){
len = tkl_uart_read(port_id,buf,sizeof(buf));
if(len <= 0){
break;
}
// 回环测试,看是否能收到数据
tkl_uart_write(TUYA_UART_NUM_1,pdst,len);
}
}
问题2:
我看了官方驱动tkl_uart_write的实现(tuyaos_adapter/src/driver/tkl_uart.c)中调用的是uart_bk.c中bk_send_byte,而bk_send_byte采用的CPU死等的方式进行数据发送,具体代码如下,那跟串口发送岂不是严重影响CPU的性能?
Code: Select all
void bk_send_byte(UINT8 uport, UINT8 data)
{
if(UART1_PORT == uport)
while(!UART1_TX_WRITE_READY);
else
while(!UART2_TX_WRITE_READY);
UART_WRITE_BYTE(uport, data);
}
Re: T1-CHL串口相关的问题
Posted: 2025年 May 20日 18:29
by feige2023
Re: T1-CHL串口相关的问题
Posted: 2025年 May 21日 10:34
by feige2023
Re: T1-CHL串口相关的问题
Posted: 2025年 May 21日 11:16
by JSHANG
问题1:没有这么使用过,如果你是要调试uart0接收发送,你可以把接收发送的内容通过(tal_log.h)TAL_PR_DEBUG/TAL_PR_HEXDUMP_DEBUG输出到uart1(日志口); 要通过uart1输入,你在app_bk.c app_start函数中打开cli_init(); 添加自己的命令实现,先这样使用。
问题2: 这里代码看是有问题,但实际应用测试没有出现过cpu hang,阻塞发送线程的情况,后续版本迭代优化。
Re: T1-CHL串口相关的问题
Posted: 2025年 May 21日 15:06
by feige2023
您好,我在sys_config.h中启用了cli模块,并测试了串口1(sys_config.h描述为串口1,对应于TUYA_UART_NUM_0,MCU通讯口)和串口2(sys_config.h描述为串口2,对应于TUYA_UART_NUM_1,日志口)作为CLI的串口,在命令行模式下,串口没有反应。以下是串口1做为CLI终端模块时,串口1打印的内容。串口输入help回车也没有输出。
Code: Select all
prvHeapInit-start addr:0x414c90, size:177008
[lash]id:0x852015
bk_timer_init exit
sctrl_sta_ps_init
**********tuya_upgrade_main need upgrade? [255]**********
cset:0 0 0 0
[01-01 00:00:00 ty D][4195][tal_thread.c:209] Thread:TUYA_TCPIP Exec Start. Set to Running Stat 0x4195f8
D][4195[01-01 00:00:00 ty I][4][tal_thread.c:185] thre15f][tal_thread.c:185] ad_create name:TUYA_TCPthread_create name:TUYAIP,stackDepth:4096,tota_TCPIP,stackDepth:4096,lstackDepth:8192,prioritotalstackDepth:8192,prty:9
ZK����9 90d35d1
tkl_ethernetif[bk]tx_txdesc_flush
_lush
[01-01 00:00:00 ty[FUNC]intc_init
[FUNC] ain
tkl_ethernetif_incernetif_init
gpio_levi_state=15
[01-01 00:0e:00:00 ty D][415f][lwi0:00 ty D][415f][lwip_ip_init.c:93] interface 1nit.c:93] interface 1 i is initialized
devices initialized
[01-01 0_00:00:00 ty N][415f][t0:00:00 ty N][415f][tuyuya_device.c:63] sdk_ina_device.c:63] sdk_infofo:< TuyaOS V:3.11.11 B:< TuyaOS V:3.11.11 BS:4S:40.00_PT:2.3_LAN:3.5_0.00_PT:2.3_LAN:3.5_CADCAD:1.0.5_CD:1.0.0 >
<:1.0.5_CD:1.0.0 >
< BU BUILD AT:2025_04_03_09ILD AT:2025_04_03_09_33_33_03 BY ci_manage FOR_03 BY ci_manage FOR tu tuyaos-iot AT T1 >
IOTyaos-iot AT T1 >
IOT D DEFS < WIFI_GW:1 DEBUGEFS < WIFI_GW:1 DEBUG:1:1 KV_FILE:0 LITTLE_END KV_FILE:0 LITTLE_END:1:1 SL:0 OPERATING SL:0 OPERATING[01-01 00:00:00 ty N][415f][tuya_device.c:64] name:server:1.0.1
[01-01 00:00:00 ty N][415f][tuya_device.c:65] firmware compiled at May 21 2025 14:56:46
[01-01 00:00:00 ty N][415f][tuya_device.c:66] system reset reason:[0]
[01-01 00:00:00 ty N][415f][tuya_device.c:68] tuya_app_thread start
calibration_main over
flash txpwr table:0xf
dif g and n20 ID in flash:4
read txpwr tab from flash success
calibrate low value:[467]
calibrate high value:[8d6]
temp in xxx is:258
lpf_i & q in flash is:128, 128
found flash XTAL:51
use xtal:51
xtal_cali:51
--init_xtal = 51
[FUNC]ps_init
[FUNC]func_init_extended OVER!!!
start_type:0
Version:
Re: T1-CHL串口相关的问题
Posted: 2025年 May 21日 15:26
by JSHANG
不能开CFG_CLI_UART宏,直接在app_start那里把宏去掉,让cli_init编译进来就可以了;
void app_start(void)
{
app_pre_start();
//#if CFG_CLI_UART
cli_init();
//#endif
Re: T1-CHL串口相关的问题
Posted: 2025年 May 21日 15:55
by feige2023
您好,按照您的调整,编译下载后,仍然无法使用命令行喔。输入后没有反应。
Re: T1-CHL串口相关的问题
Posted: 2025年 May 21日 16:21
by JSHANG
我这样输入能打印出来:
command '1' not found
$ [x]cli_main:488
[01-01 08:00:28 ty D][435e][ty_gfw_core_dispatcher.c:103] detect 9600
[01-01 08:00:29 ty D][435e][ty_gfw_core_dispatcher.c:103] detect 115200
[01-01 08:00:29 ty D][435e][ty_gfw_core_dispatcher.c:103] detect 9600
[01-01 08:00:30 ty D][435e][ty_gfw_core_dispatcher.c:103] detect 115200
[01-01 08:00:30 ty D][435e][ty_gfw_core_dispatcher.c:103] detect 9600
[01-01 08:00:31 ty D][435e][ty_gfw_core_dispatcher.c:103] detect 115200
[x]cli_rx_callback:2870
help
====Build-in Commands====
help:
scan: scan ap
advscan: scan ap
softap: softap ssid key
stopintf: stopintf intfacena[01-01 08:00:32 ty D][4my_gfw_core_dispatcher.35e][ty_gfw_core_dispatc:103] detect 9600
sta:cher.c:103] detect 9600 sta ap_ssid key
ble:
ble init/dut
reboot: reboot system
txevm: txevm [-m] [-c] [-l] [-r] [-w]
rxsens: rxsens [-m] [-d] [-c] [-l]
spi_test: spi_test<>
====User Commands====
mac: mac <mac>, Get mac/Set mac. <mac>: c89346000001
$ [x]cli_main:488
你自己在cli_main函数和cli_rx_callback里加打印确认一下跑cli线程起来了没?bk_printf("%s:%d\r\n", func, LINE);
Re: T1-CHL串口相关的问题
Posted: 2025年 May 21日 17:07
by feige2023
您好,我用quickstart的demo跟我们自己的测试程序,在cli_main和cli_rx_callback回调都增加了log测试,其中cli_main是会进入的(即终端线程有运行),而cli_rx_callback中,不管我终端如何操作,都没有日志输出诶。
所以还是卡在回调那里。
Code: Select all
cli main runnning
[01-01 00:00:00 ty D][41be][tal_threacal_bias!
d.c:209] Thread:wq_system Excal dpll!
ec Start. Set to Running Stat 0x41btemp_code:-74 - adc_coded0
e:467 - adc_trend:[13]:258->[3]:358
init_xtal:51, delta:2, last_xtal:51
temp_code:-74 - adc_code:467 - adc_trend:[3]:358->[0]:388
init_xtal:51, delta:-5, last_xtal:53
---- 已发送 utf8 编码消息: "1\n" ----
[01-01 00:00:15 ty D][41e2][tuya_devos_health.c:71] feed watchdog
从输出日志中可以看出,有打印cli main running,且终端是有发送1和回车的。数据线接线也是通的(用万用表测试)
Re: T1-CHL串口相关的问题
Posted: 2025年 May 21日 17:23
by feige2023
您好,您测试的版本号是否跟我相同哈?我是3.11.11,具体信息如下:
Code: Select all
#define BUILD_DATE "2025_04_03"
#define BUILD_TIME "09_33_03"
#define GIT_USER "ci_manage"
#define IOT_SDK_VER "3.11.11"
#define SDK_BETA_VER ""
#define TARGET_PLATFORM "T1"
#define PROJECT_NAME "tuyaos-iot"
#define SDK_ID "tuyaos-iot_3.11.11_T1_wifi_ble_com_0.0.12"
会不会是不同SDK版本导致的呢?