mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-14 06:04:19 +00:00
Fix http client read return value
1.esp_tls: fail connection if esp_tls_conn_new() timeouts https://gitlab.espressif.cn:6688/espressif/esp-idf/merge_requests/7397 2.esp32:panic: avoid access cache in panichandler 3.Sync https://gitlab.espressif.cn:6688/espressif/esp-idf/merge_requests/7152 Even if frame->exccause != PANIC_RSN_CACHEERR, it is possible that the cache error interrupt status is set. For example, this may happen due to an invalid cache access in the panic$ Check cache error interrupt status instead of frame->exccause to decide whether to do CPU reset or digital reset. Also remove unnecessary esp_dport_access_int_pause from esp_cache_err_get_cpuid, since the panic handler already calls esp_dport_access_int_abort on entry.
This commit is contained in:
@@ -382,7 +382,7 @@ static void illegal_instruction_helper(XtExcFrame *frame)
|
||||
panicPutStr("Memory dump at 0x");
|
||||
panicPutHex(epc);
|
||||
panicPutStr(": ");
|
||||
|
||||
|
||||
panicPutHex(*pepc);
|
||||
panicPutStr(" ");
|
||||
panicPutHex(*(pepc + 1));
|
||||
@@ -544,8 +544,9 @@ static void commonErrorHandler_dump(XtExcFrame *frame, int core_id)
|
||||
|
||||
panicPutStr("\r\nELF file SHA256: ");
|
||||
char sha256_buf[65];
|
||||
esp_ota_get_app_elf_sha256(sha256_buf, sizeof(sha256_buf));
|
||||
panicPutStr(sha256_buf);
|
||||
// Disable for avoid access cache
|
||||
// esp_ota_get_app_elf_sha256(sha256_buf, sizeof(sha256_buf));
|
||||
// panicPutStr(sha256_buf);
|
||||
panicPutStr("\r\n");
|
||||
|
||||
/* With windowed ABI backtracing is easy, let's do it. */
|
||||
@@ -623,7 +624,7 @@ static __attribute__((noreturn)) void commonErrorHandler(XtExcFrame *frame)
|
||||
rtc_wdt_disable();
|
||||
#if CONFIG_ESP32_PANIC_PRINT_REBOOT || CONFIG_ESP32_PANIC_SILENT_REBOOT
|
||||
panicPutStr("Rebooting...\r\n");
|
||||
if (frame->exccause != PANIC_RSN_CACHEERR) {
|
||||
if (esp_cache_err_get_cpuid() == -1) {
|
||||
esp_restart_noos();
|
||||
} else {
|
||||
// The only way to clear invalid cache access interrupt is to reset the digital part
|
||||
|
Reference in New Issue
Block a user