乐鑫技术交流
直播中

河神大人

8年用户 1491经验值
擅长:电源/新能源
私信 关注
[问答]

为什么WiFi处于WIFI_MODE_APSTA模式下会发生损坏呢?

配置:
* ESP-IDF v5.0-rc1
* ESP32- C3
* 堆调试在综合模式下被激活。
* WiFi 处于 WIFI_MODE_APSTA 模式
* 扫描在后台运行 (esp_wifi_scan_start)。
现在外部设备尝试连接到 ESP32-C3(AP 模式)。
代码:
  • !!!!!!wifi_event_handler: event_base = 87, event_id = WIFI_EVENT_AP_START !!!!!!
  • !!!!!!heap_caps_check_integrity_all = 1 !!!!!!
  • 我(763)wifi:设置ps类型:1
  • 我 (763) wifi:设置 ps 类型: 0
  • I (763) dns_server:已创建套接字
  • I (773) dns_server:套接字绑定,端口 53
  • I (773) dns_server:等待数据
  • 我 (3403) wifi:new:<2,1>, old:<2,1>, ap:<2,1>, sta:<0,0>, prof:2
  • 我 (3403) wifi:station: xx:xx:xx:xx:xx:xx 加入, AID=1, bgn, 40U
  • !!!!!!wifi_event_handler: event_base = 87, event_id = WIFI_EVENT_AP_STACONNECTED!!!!!!
  • !!!!!!heap_caps_check_integrity_all = 1 !!!!!!
  • I (3553) esp_netif_lwip: DHCP server assigned IP to a client, IP是:192.168.4.2
  • I (5573) esp_netif_lwip: DHCP server assigned IP to a client, IP是:192.168.4.2
  • I (12033) esp_netif_lwip: DHCP server assigned IP to a client, IP是:192.168.4.2
  • !!!!!!wifi_event_handler: event_base = 87, event_id = WIFI_EVENT_AP_STADISCONNECTED !!!!!!
  • !!!!!!heap_caps_check_integrity_all = 1 !!!!!!
  • W (39333) wifi: 还没连接到合适的AP!
  • 我 (39333) wifi:new:<2,1>, old:<2,1>, ap:<2,1>, sta:<0,0>, prof:2
  • I (39533) wifi:发送事务 ID 为 5e01 的 SA 查询请求
  • I (39743) wifi:发送事务 ID 为 f227 的 SA 查询请求
  • I (39943) wifi:发送事务 ID 为 a77a 的 SA 查询请求
  • I (40153) wifi: 发送事务 ID 为 aaf8 的 SA 查询请求
  • I (40353) wifi:发送事务 ID 为 d7b4 的 SA 查询请求
  • I (40563) wifi:STA 未响应 5 次 SA 查询尝试,重置连接发送 disassoc
  • I (40563) wifi:station: xx:xx:xx:xx:xx:xx 离开,AID = 1,bss_flags 为 658547,bss:0x3fcb1998
  • 我 (40563) wifi:new:<2,0>, old:<2,1>, ap:<2,1>, sta:<0,0>, prof:2
  • !!!!!!wifi_event_handler: event_base = 87, event_id = WIFI_EVENT_AP_STADISCONNECTED !!!!!!
  • 损坏堆:0x3fcb1c98 处的数据无效。期望 0xfefefefe 得到 0x00000000
  • !!!!!!heap_caps_check_integrity_all = 0 !!!!!!
  • W (40593) wifi: 还没连接到合适的AP!
  • 我 (40903) wifi:new:<2,1>, old:<2,0>, ap:<2,1>, sta:<0,0>, prof:2
  • 我 (40903) wifi:station: xx:xx:xx:xx:xx:xx 加入, AID=1, bgn, 40U
  • 损坏堆:0x3fcb1c98 处的数据无效。期望 0xfefefefe 得到 0x00000000
  • 断言失败:multi_heap_malloc multi_heap_poisoning.c:256 (ret)
  • 检测到堆栈转储
  • MEPC:0x40380922 RA:0x40388254 SP:0x3fca42d0 GP:0x3fc91a00
  • 0x40380922: panic_abort at /home/marc/esp/esp-idf_v5.0-rc1/components/esp_system/panic.c:412
  • 0x40388254: __ubsan_include 在/home/marc/esp/esp-idf_v5.0-rc1/components/esp_system/ubsan.c:313
此错误多次出现,但并非每次都出现。
我想知道为什么在连接 (event = WIFI_EVENT_AP_STACONNECTED) 事件 WIFI_EVENT_AP_STADISCONNECTED 发生两次。
第一次,WIFI_EVENT_AP_STACONNECTED 发生,heap_caps_check_integrity_all 返回 1 = 没有错误。
第二次,WIFI_EVENT_AP_STACONNECTED 发生,heap_caps_check_integrity_all 返回 0 = error。
在 heap_caps_check_integrity_all = 1 和 heap_caps_check_integrity_all = 0 之间没有自定义代码被执行。所以我猜这个错误不可能在自定义代码中。我对吗?




回帖(1)

孙海燕

2023-3-2 14:37:22
如果在扫描完成后连接成功,有时会发生错误。
看起来 ESP32-C3 在 AP 模式下连接时扫描,在这种情况下无法正常工作。
在 STA 模式下连接没有任何问题(AP 断开连接)。
如果堆调试处于无中毒模式,则不会发生错误。
举报

更多回帖

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