乐鑫技术交流
直播中

张艳

7年用户 1642经验值
私信 关注
[问答]

esp_iot_sdk_v0.9.6_b1客户端断开连接导致WDT重置怎么解决?

我正在使用 esp_iot_sdk_v0.9.6_b1 的固件
在服务器模式下,如果我使用 curl 连接到服务器,然后在 curl 上执行 CTRL-C,服务器将重置并且程序停止运行。
我认为如果客户端断开连接,服务器一定不会挂起。实际上,由于客户端启动了连接,因此客户端理所当然地应该能够断开连接,而不会对服务器造成任何问题。

IPD,0,80:GET /测试 HTTP/1.1
用户代理:curl/7.33.0
主机:192.168.1.11
接受:*/*

0,连接失败

ets 2013 年 1 月 8 日,第一个原因:4,启动模式:(1,1)

WDT 复位
                                                                                                                                                      

回帖(1)

李红

2024-7-18 17:57:38
从您的描述来看,当客户端断开连接时,您的 ESP8266 设备似乎触发了看门狗定时器(WDT)重置。这可能是由于程序在处理连接时出现了问题。以下是一些建议,以帮助您解决这个问题:

1. **检查 TCP 连接处理**:确保您的程序正确处理了 TCP 连接的建立和断开。在连接断开时,确保释放了所有相关资源,如内存和文件描述符。

2. **增加看门狗定时器超时时间**:如果问题是由于看门狗定时器超时导致的,您可以尝试增加看门狗定时器的超时时间。这可以通过修改 `user/user_main.c` 文件中的 `system_set_os_print(0);` 行,将其改为 `system_set_os_print(1);` 来实现。

3. **优化程序逻辑**:检查您的程序逻辑,确保在处理连接时没有出现死循环或阻塞操作。这可能导致看门狗定时器无法正常工作。

4. **使用非阻塞 I/O**:考虑使用非阻塞 I/O 来处理网络连接。这可以确保您的程序在等待网络操作时不会阻塞,从而避免触发看门狗定时器。

5. **调试和日志记录**:在程序中添加调试信息和日志记录,以便在出现问题时能够更容易地定位问题所在。您可以使用 `os_printf` 函数来输出调试信息。

6. **更新固件**:虽然您正在使用的是 esp_iot_sdk_v0.9.6_b1 固件,但建议您检查是否有更新的固件版本。新版本的固件可能已经修复了您遇到的问题。

7. **检查硬件连接**:确保您的 ESP8266 设备与电源和其他外围设备之间的连接正确。有时,硬件问题也可能导致看门狗定时器重置。

8. **使用 ESP8266 非 OS 版本**:如果您的问题仍然无法解决,您可以尝试使用非 OS 版本的 ESP8266 固件。这可能会减少系统开销,从而降低触发看门狗定时器的可能性。

通过以上建议,您应该能够找到并解决导致看门狗定时器重置的问题。希望这些建议对您有所帮助!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分