ESP32 SSID含单引号且新密码短于旧密码时崩溃的原因及解决方法
ESP32 WiFi连接崩溃:含单引号SSID+短密码触发LoadProhibited错误
环境信息
- ESP-IDF 5.3.4
- 未使用Arduino框架
- Windows 10 操作系统
问题重现步骤
- 基于ESP-IDF官方Station示例代码,仅修改
wifi_config_t中的SSID和密码字段:
wifi_config_t wifi_config = { .sta = { .ssid = "Jack's S22", .password = "1234567899999", .threshold.authmode = ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD, .sae_pwe_h2e = ESP_WIFI_SAE_MODE, .sae_h2e_identifier = EXAMPLE_H2E_IDENTIFIER, }, };
编译、烧录后设备正常连接WiFi,无异常。
- 将密码修改为更短的
"11111111",重新编译烧录后,设备执行WiFi相关代码时立即崩溃,报错信息如下:
Guru Meditation Error: Core 0 panic'ed (LoadProhibited). Exception was unhandled. Core 0 register dump: PC : 0x401273eb PS : 0x00060e30 A0 : 0x80129a3e A1 : 0x3ffbfe90 --- 0x401273eb: pmksa_cache_flush at D:/ESP-IDF/v5.3.4/esp-idf/components/wpa_supplicant/src/rsn_supp/pmksa_cache.c:254 A2 : 0x00000000 A3 : 0x00000000 A4 : 0x00000000 A5 : 0x00000000 A6 : 0x00000000 A7 : 0x00000056 A8 : 0xc0000000 A9 : 0x3ffbfe90 A10 : 0x00000103 A11 : 0x00000003 A12 : 0x8008a5b5 A13 : 0x3ffb9e30 A14 : 0x00000003 A15 : 0x00000000 SAR : 0x00000018 EXCCAUSE: 0x0000001c EXCVADDR: 0x00000000 LBEG : 0x400014fd LEND : 0x4000150d LCOUNT : 0xfffffffe --- 0x400014fd: strlen in ROM --- 0x4000150d: strlen in ROM
测试验证实验
- 实验1:
.ssid = "Jack's S22",
.password = "1234567899999",
烧录后正常运行,无崩溃。 - 实验2(紧接实验1,仅修改密码):
.ssid = "Jack's S22",
.password = "11111111",
触发LoadProhibited崩溃。 - 实验3(紧接实验2,修改SSID移除单引号):
.ssid = "Jack s S22",
.password = "11111111",
设备运行完全正常。
规律总结
只要SSID包含单引号,且新烧录的密码长度短于之前的旧密码,就必然触发该崩溃。
咨询内容
- 该崩溃问题的具体原因是什么?
- 有没有无需限制用户SSID不含单引号的解决方法?
内容的提问来源于stack exchange,提问作者Noideas
相关产品推荐
相关产品推荐

