Open lipan465 opened 3 days ago
1-问题出现原因 实际上 esp_bt_controller_mem_release 调用一次就好了,后面再调用该 API 的时候会返回错误, 返回错误的原因是该 API 已经被调用过了,相关的内存已经被释放。
2-解决办法 保证下面 API 只会被调用一次
#if CONFIG_IDF_TARGET_ESP32
ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT));
#endif
你可以将该 API 从 esp_blufi_controller_init 函数移出来。
Answers checklist.
IDF version.
v5.2.2
Espressif SoC revision.
ESP32
Operating System used.
Windows
How did you build your project?
Command line with Make
If you are using Windows, please specify command line type.
None
Development Kit.
esp-idf-v5.2.2
Power Supply used.
USB
What is the expected behavior?
ESP32使用blufi配网,当调用esp_blufi_controller_deinit后再次调用esp_blufi_controller_init会发生coredump
What is the actual behavior?
ESP32使用blufi配网,当调用esp_blufi_controller_deinit后再次调用esp_blufi_controller_init会发生coredump
Steps to reproduce.
ESP32使用blufi配网,当调用esp_blufi_controller_deinit后再次调用esp_blufi_controller_init会发生coredump; 出问题的代码如下
当已经调用过released就会返回失败,然后 esp_err_t esp_blufi_controller_init() { esp_err_t ret = ESP_OK;
if CONFIG_IDF_TARGET_ESP32
endif
这里就会coredump;请优化;
反观esp32C3的实现就没有问题 `esp_err_t esp_bt_controller_rom_mem_release(esp_bt_mode_t mode) { esp_err_t ret = ESP_OK;
}` 他这个如果if (mode & ESP_BT_MODE_BLE) 为false的时候直接返回OK
Debug Logs.
More Information.
1