Merge branch 'bugfix/panic_cache_err_dig_reset_v4.0' into 'release/v4.0'
esp32: panic: do digital reset if cache error interrupt is set (backport v4.0) See merge request espressif/esp-idf!7484
This commit is contained in:
commit
f5dc81aaae
|
@ -72,7 +72,6 @@ void esp_cache_err_int_init()
|
||||||
|
|
||||||
int IRAM_ATTR esp_cache_err_get_cpuid()
|
int IRAM_ATTR esp_cache_err_get_cpuid()
|
||||||
{
|
{
|
||||||
esp_dport_access_int_pause();
|
|
||||||
const uint32_t pro_mask =
|
const uint32_t pro_mask =
|
||||||
DPORT_PRO_CPU_DISABLED_CACHE_IA_DRAM1 |
|
DPORT_PRO_CPU_DISABLED_CACHE_IA_DRAM1 |
|
||||||
DPORT_PRO_CPU_DISABLED_CACHE_IA_DROM0 |
|
DPORT_PRO_CPU_DISABLED_CACHE_IA_DROM0 |
|
||||||
|
|
|
@ -629,7 +629,7 @@ static __attribute__((noreturn)) void commonErrorHandler(XtExcFrame *frame)
|
||||||
rtc_wdt_disable();
|
rtc_wdt_disable();
|
||||||
#if CONFIG_ESP32_PANIC_PRINT_REBOOT || CONFIG_ESP32_PANIC_SILENT_REBOOT
|
#if CONFIG_ESP32_PANIC_PRINT_REBOOT || CONFIG_ESP32_PANIC_SILENT_REBOOT
|
||||||
panicPutStr("Rebooting...\r\n");
|
panicPutStr("Rebooting...\r\n");
|
||||||
if (frame->exccause != PANIC_RSN_CACHEERR) {
|
if (esp_cache_err_get_cpuid() == -1) {
|
||||||
esp_restart_noos();
|
esp_restart_noos();
|
||||||
} else {
|
} else {
|
||||||
// The only way to clear invalid cache access interrupt is to reset the digital part
|
// The only way to clear invalid cache access interrupt is to reset the digital part
|
||||||
|
|
Loading…
Reference in a new issue