硬件流控触发看门狗

Moderator: ESP_XCGuang

pengxinmin
Posts: 7
Joined: Tue Feb 28, 2023 1:43 am

硬件流控触发看门狗

Postby pengxinmin » Fri Mar 10, 2023 3:46 am

请教一下,我使用模组esp32c3-mini1,用AT指令进行TCP透传。
AT固件版本2.4.2.0,
按照指南将UART的RX缓冲区改成了16*1024大小,串口波特率750000.
}LHYB$EXTC3Z1CCSCEDD$FY.png
}LHYB$EXTC3Z1CCSCEDD$FY.png (16.2 KiB) Viewed 3076 times
每隔100ms向模组发送200个字节左右的数据,主机有一个500ms的看门狗
用电脑测试网络环境不是很稳定,ping包平均时延163MS,丢包率0.3%。有时候延时能达到2000ms。
一开始没开硬件流控,存在很大几率丢包。
开启硬件流控后,有时会引起看门狗复位,因为我的串口发送是一直在等的,可能导致没能及时喂狗。
我想了解一下这个硬件流控是不是与底层的TCP发送有些联系,什么联系能告诉一下我吗。
或者是不是这样理解,我发送的数据先被接收到16*1024大小的缓冲区里,然后tcp在缓冲区里取数据。当缓冲区满了,但是当前TCP发送窗口还不能在缓冲区里取数据。那么此时流控就不会置位,导致我一直不能发送触发看门狗。
但是16*1024的缓冲区相对于我的数据量已经足够大了啊,能缓冲近十秒的数据。我看触发看门狗的速度还挺快的,上一秒我看服务器还在接数据,一会我这边就触发看门狗了。
麻烦帮忙看一下吧!!!

esp-at
Posts: 200
Joined: Mon May 09, 2022 3:00 am

Re: 硬件流控触发看门狗

Postby esp-at » Thu Mar 23, 2023 6:53 am

没有开硬件流控,只要存在 UART 速率大于 TCP 发送速率,丢包就是必然的。
开启硬件流控后,你说的 watchdog 是什么样的呢,有日志么。

大致流程是这样:
1. UART 驱动里收到 MCU 过来的数据
2. UART 驱动抛 UART 事件到 AT 里 (https://github.com/espressif/esp-idf/bl ... rt.c#L1100)
3. AT 读取 UART 事件,向 AT core 里抛事件 (https://github.com/espressif/esp-at/blo ... ask.c#L196)
4. AT core 里读取事件,从 UART buffer 里读取数据,丢到 TCP WND 里

watchdog 和上面的没关系,是不是有死循环的可能。如果是软件的 task watchdog,可以参考这个文档定位 watchdog 问题:
https://blog.csdn.net/espressif/article ... .3001.4450

Who is online

Users browsing this forum: No registered users and 10 guests