Re: DHCP报错ffffffff,可能是因为内存不足?[WIFI-2436]
Posted: Thu Jun 04, 2020 10:50 am
OK!我已经得到了一些Debug我在申请内存的地方添加了一些打印,你可以帮我在复现下这个问题吗
使用方法:
把 2020-06-04_164108.zip 解压,把 2020-06-04_164108/esp32 目录下所有 .a 文件放到 esp-idf/components/esp32/lib 目录下就可以。
OK!我已经得到了一些Debug我在申请内存的地方添加了一些打印,你可以帮我在复现下这个问题吗
使用方法:
把 2020-06-04_164108.zip 解压,把 2020-06-04_164108/esp32 目录下所有 .a 文件放到 esp-idf/components/esp32/lib 目录下就可以。
你好,我已经复现问题,并且得到一些额外的debug,我将它们上传上来。我在申请内存的地方添加了一些打印,你可以帮我在复现下这个问题吗
使用方法:
把 2020-06-04_164108.zip 解压,把 2020-06-04_164108/esp32 目录下所有 .a 文件放到 esp-idf/components/esp32/lib 目录下就可以。
好的谢谢,我将会实时修改为64,但是这可能不是问题的诱因。因为这可能是因为某些地方没有释放已经关闭的连接,导致TX data buffer越来越多。我们的 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 有几个,它们有其他操作吗?
你好,我将TX data buffer修改为64之后问题仍然存在,以下是Log我们的 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还会去连接一个外部的路由器且路由器时65秒开10秒关循环。我们的 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 有几个,它们有其他操作吗?
可以试试,但是个人猜测内存问题不太可能是休眠引起的,如果方便的话请帮我看看内存相关的问题,因为我看不到esp_wifi_internal_tx函数的具体实现过程。 一次复现时间要花几个小时,项目已经严重落后进度。非常感谢我猜测这个可能和休眠有关,你可以关掉休眠试试吗?
开机后在 esp_wifi_connect() 之前 调用 esp_wifi_set_ps(WIFI_PS_NONE); 试试。
谢谢。您的回复给了我一些灵感,但我不清楚我的猜测是否正确。还有一个问题,”softap + sta“ 发送 广播包,是以那个接口发送的?
目前怀疑 sta 发送 null data 给 softap 进入休眠, softap 把 广播包缓存在 TX data 列表里面,但是 sta 掉电后导致 缓存的包 一直没有释放。