乐鑫技术交流
直播中

李华瑞

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

esp32c3项目采用wss_server例程,把wifi断开的话esp32c3会重启,为什么?

esp32c3项目采用wss_server 例程,运行后连接WiFi正常,但是如果之后把wifi断开的话,esp32c3会重启,监视器显示“assert failed: tlsf_free tlsf.c:1119 (!block_is_free(block) && "block already marked as free")”,请问这是什么原因造成esp32c3重启。如果想断开wifi之后esp32c3不重启,要修改哪里?

回帖(1)

孔妞妞

2024-6-6 14:50:46
根据您提供的信息,当WiFi断开时,ESP32-C3重启的原因可能是由于内存管理问题导致的断言失败。这个断言失败提示“block already marked as free”,意味着某个内存块已经被标记为已释放,但仍然被尝试访问或释放。

要解决这个问题,您可以尝试以下步骤:

1. 首先,检查您的代码中是否有内存泄漏或错误的内存管理操作。确保在使用完内存后正确释放它,并避免重复释放同一内存块。

2. 检查ESP32-C3的固件版本,确保您使用的是最新版本。有时候,固件中的bug可能会导致这类问题。您可以在Espressif的官方网站上找到最新的固件版本。

3. 如果问题仍然存在,您可以尝试修改ESP-IDF框架中的TLSF内存管理库。在`esp-idf/components/heap/src/heap_tlsf.c`文件中,找到第1119行的断言。您可以暂时禁用这个断言,以防止设备重启。但请注意,这只是一个临时解决方案,您应该在找到根本原因并修复问题后重新启用断言。

4. 如果您不熟悉内存管理或TLSF库,您可以考虑寻求社区的帮助,例如Espressif的官方论坛或ESP32相关的开发者社区。

5. 另外,您可以尝试使用其他WiFi连接库或示例程序,看看问题是否仍然存在。这有助于确定问题是否与特定的库或代码有关。

总之,要解决ESP32-C3在WiFi断开后重启的问题,您需要检查代码中的内存管理,确保使用最新固件,并考虑修改TLSF内存管理库或寻求社区帮助。
举报

更多回帖

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