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