OK!我已经得到了一些Debug
DHCP报错ffffffff,可能是因为内存不足?[WIFI-2436]
-
- Posts: 35
- Joined: Mon May 25, 2020 2:12 am
-
- Posts: 35
- Joined: Mon May 25, 2020 2:12 am
Re: DHCP报错ffffffff,可能是因为内存不足?[WIFI-2436]
我们的 TX data buffer 默认配置是 32 个。
从 log 判断,在出问题的点上,TX data buffer 已经用了 32 个,导致发送 DHCP offer 时申请不到 TX data 类型的 buffer。
而系统的 TX mgmt buffer 还可以使用,所以 WiFi 的连接是正常的。
你可以配置 TX data buffer 数目为 64 ,试试能不能 Fix 这个问题。
配置方法: menuconfig ---> Component config ---> WiFi ---> Max number of WiFi dynamic TX buffer
另外,“softap + sta” 除了连接 AP,和每 2.5s 发送一个 广播包,还有其他的业务吗?
连接 “softap + sta" 的 sta 有几个,它们有其他操作吗?
从 log 判断,在出问题的点上,TX data buffer 已经用了 32 个,导致发送 DHCP offer 时申请不到 TX data 类型的 buffer。
而系统的 TX mgmt buffer 还可以使用,所以 WiFi 的连接是正常的。
你可以配置 TX data buffer 数目为 64 ,试试能不能 Fix 这个问题。
配置方法: menuconfig ---> Component config ---> WiFi ---> Max number of WiFi dynamic TX buffer
另外,“softap + sta” 除了连接 AP,和每 2.5s 发送一个 广播包,还有其他的业务吗?
连接 “softap + sta" 的 sta 有几个,它们有其他操作吗?
-
- Posts: 35
- Joined: Mon May 25, 2020 2:12 am
Re: DHCP报错ffffffff,可能是因为内存不足?[WIFI-2436]
好的谢谢,我将会实时修改为64,但是这可能不是问题的诱因。因为这可能是因为某些地方没有释放已经关闭的连接,导致TX data buffer越来越多。xiehang wrote: ↑Fri Jun 05, 2020 6:51 am我们的 TX data buffer 默认配置是 32 个。
从 log 判断,在出问题的点上,TX data buffer 已经用了 32 个,导致发送 DHCP offer 时申请不到 TX data 类型的 buffer。
而系统的 TX mgmt buffer 还可以使用,所以 WiFi 的连接是正常的。
你可以配置 TX data buffer 数目为 64 ,试试能不能 Fix 这个问题。
配置方法: menuconfig ---> Component config ---> WiFi ---> Max number of WiFi dynamic TX buffer
另外,“softap + sta” 除了连接 AP,和每 2.5s 发送一个 广播包,还有其他的业务吗?
连接 “softap + sta" 的 sta 有几个,它们有其他操作吗?
连接softap+sta 的 sta最多只有2~3个sta。
softap+sta除了连接AP,每秒发送2.5s广播包,还有其他业务:
1.还有一个TCP Server.
这个TCP Server,是被EPS32_Client的TCP_Client连接的。整个流程是,ESP32_Client连接到ESP32_Server的AP之后,将会收到ESP32_Server的IP地址(上述的2.5s广播包即是广播ESP32_Sever的IP地址。),然后使用这个IP地址去连接ESP32_Server,建立连接之后会每隔约5秒钟发送一个几十个字节的数据包。
当TCP_Client断开后,TCP_Server将会shutdown(socket)后close(socket)并且这两个操作是在TCP返回-1之后才进行的。关闭socket后隔一小会后重新create、bind socket。TCP Server未曾报出有关内存不足的错误。
我们的业务支持任何一方断电重启后,都能够自动与另一方重新建立连接,因此我们才需要做这个循环断电的压力测试。
值得注意的是,如果从一开始就关闭了UDP广播,那么DHCP将会一直正常,不会出现本主题提出的问题。
-
- Posts: 35
- Joined: Mon May 25, 2020 2:12 am
Re: DHCP报错ffffffff,可能是因为内存不足?[WIFI-2436]
你好,我将TX data buffer修改为64之后问题仍然存在,以下是Logxiehang wrote: ↑Fri Jun 05, 2020 6:51 am我们的 TX data buffer 默认配置是 32 个。
从 log 判断,在出问题的点上,TX data buffer 已经用了 32 个,导致发送 DHCP offer 时申请不到 TX data 类型的 buffer。
而系统的 TX mgmt buffer 还可以使用,所以 WiFi 的连接是正常的。
你可以配置 TX data buffer 数目为 64 ,试试能不能 Fix 这个问题。
配置方法: menuconfig ---> Component config ---> WiFi ---> Max number of WiFi dynamic TX buffer
另外,“softap + sta” 除了连接 AP,和每 2.5s 发送一个 广播包,还有其他的业务吗?
连接 “softap + sta" 的 sta 有几个,它们有其他操作吗?
问题出现于第61429行 问题出现于第52316行
-
- Posts: 35
- Joined: Mon May 25, 2020 2:12 am
Re: DHCP报错ffffffff,可能是因为内存不足?[WIFI-2436]
你好。原本测试方案中,ESP32_Server还会去连接一个外部的路由器且路由器时65秒开10秒关循环。xiehang wrote: ↑Fri Jun 05, 2020 6:51 am我们的 TX data buffer 默认配置是 32 个。
从 log 判断,在出问题的点上,TX data buffer 已经用了 32 个,导致发送 DHCP offer 时申请不到 TX data 类型的 buffer。
而系统的 TX mgmt buffer 还可以使用,所以 WiFi 的连接是正常的。
你可以配置 TX data buffer 数目为 64 ,试试能不能 Fix 这个问题。
配置方法: menuconfig ---> Component config ---> WiFi ---> Max number of WiFi dynamic TX buffer
另外,“softap + sta” 除了连接 AP,和每 2.5s 发送一个 广播包,还有其他的业务吗?
连接 “softap + sta" 的 sta 有几个,它们有其他操作吗?
我在周六的时候使ESP32_Server不再去连接那个路由器,同样会出现那个问题,在这种情况下业务是:
1.ESP32_Client通电
2.ESP32_Client连接ESP32_Server的AP
3.ESP32_Client收到ESP32_Server的UDP广播包(内容是IP地址)
4.ESP32_Client使用收到的IP地址去连接ESP32_Server的TCP_Server
5.ESP32_Client运行50秒后断电
6.EPS32_Server在TCP返回-1后,shutdown、close套接字
7.ESP32_Client断电10秒后通电,返回第1步
Re: DHCP报错ffffffff,可能是因为内存不足?[WIFI-2436]
我猜测这个可能和休眠有关,你可以关掉休眠试试吗?
开机后在 esp_wifi_connect() 之前 调用 esp_wifi_set_ps(WIFI_PS_NONE); 试试。
开机后在 esp_wifi_connect() 之前 调用 esp_wifi_set_ps(WIFI_PS_NONE); 试试。
-
- Posts: 35
- Joined: Mon May 25, 2020 2:12 am
Re: DHCP报错ffffffff,可能是因为内存不足?[WIFI-2436]
还有一个问题,”softap + sta“ 发送 广播包,是以那个接口发送的?
目前怀疑 sta 发送 null data 给 softap 进入休眠, softap 把 广播包缓存在 TX data 列表里面,但是 sta 掉电后导致 缓存的包 一直没有释放。
目前怀疑 sta 发送 null data 给 softap 进入休眠, softap 把 广播包缓存在 TX data 列表里面,但是 sta 掉电后导致 缓存的包 一直没有释放。
-
- Posts: 35
- Joined: Mon May 25, 2020 2:12 am
Re: DHCP报错ffffffff,可能是因为内存不足?[WIFI-2436]
谢谢。您的回复给了我一些灵感,但我不清楚我的猜测是否正确。
我们在发送广播包的时候分为两种情况。
①如果SoftAP+STA已经连接上路由器,那么它会广播自己AP的IP地址,此时猜测应该是通过AP接口广播;以及作为STA的IP(由路由器分配),此时猜测通过STA接口广播。例如:
(18:00:00:000):广播IP地址 192.168.10.1 (自己AP的IP)
(18:00:02:500):广播IP地址 192.168.100.102 (STA的IP)
(18:00:05:000):广播IP地址 192.168.10.1 (自己AP的IP)
...
②如果SoftAP+STA没有连接路由器,那么它只会会广播自己AP的IP地址。例如:
(18:00:00:000):广播IP地址 192.168.10.1 (自己AP的IP)
(18:00:02:500):广播IP地址 192.168.10.1 (自己AP的IP)
...
UDP相关的发送代码如附件所示,请帮我检查是否存在着:想使用不同接口广播数据,仅使用第77行到第97行的代码行不?还是需要重启套接字?
Who is online
Users browsing this forum: No registered users and 81 guests