Guru Meditation Error: Core 1 panic'Backtrace: 0x7ad00baa:0x3fc989c0 |<-CORRUPTED
I met a trace problem,the trace log is below,but it is not enough,as i cann't found any code connected with 0x7ad00baa.
Maybe my method is not good enough,any one can help me?
Guru Meditation Error: Core 1 panic'ed (Cache disabled but cached memory region accessed).
Core 1 register dump:
PC : 0xbad00bad PS : 0x00060034 A0 : 0x803758ff A1 : 0x3fc989c0
A2 : 0x3fcee3f0 A3 : 0x00000001 A4 : 0x803815d8 A5 : 0x3fcf1690
A6 : 0x00000000 A7 : 0x3fcee384 A8 : 0x8037bed5 A9 : 0x00000007
A10 : 0x3fcee460 A11 : 0x00000001 A12 : 0x80378abc A13 : 0x3fcf1670
A14 : 0x600c0030 A15 : 0x00000001 SAR : 0x00000000 EXCCAUSE: 0x00000007
EXCVADDR: 0x00000000 LBEG : 0x00000000 LEND : 0x00000000 LCOUNT : 0x00000000
Backtrace: 0x7ad00baa:0x3fc989c0 |<-CORRUPTED
ELF file SHA256: b34ca88c85e2ff0c
【Help】How to trace when Backtrace corrupted
-
- Posts: 9708
- Joined: Thu Nov 26, 2015 4:08 am
Re: 【Help】How to trace when Backtrace corrupted
A0 is the link register but has the upper few bits rewritten with the window shift. A0 in your case is 0x803758ff, which likely was the address 0x403758ff. Is there anything at that address?
If not, this particular error is something you usually get in an interrupt marked as entirely in IRAM (ESP_INTR_FLAG_IRAM) which calls or otherwise uses anything in flash. You can see if there's anything like that in your code.
If not, this particular error is something you usually get in an interrupt marked as entirely in IRAM (ESP_INTR_FLAG_IRAM) which calls or otherwise uses anything in flash. You can see if there's anything like that in your code.
Re: 【Help】How to trace when Backtrace corrupted
Thank you for you help.
I found the pisition,but more confused
bool IRAM_ATTR timer_isr_callback()
{
return true; <---- A0 happened here
}
static void IRAM_ATTR timer_isr(void* arg) {
timer_ll_clear_intr_status(&TIMERG0, TIMER_0);
if (timer_isr_callback()) {
timer_ll_set_alarm_enable(&TIMERG0, TIMER_0, true);
}
}
void timer_isr_register(){
esp_intr_alloc_intrstatus(timer_group_periph_signals.groups[TIMER_GROUP_0].t0_irq_id,
ESP_INTR_FLAG_IRAM,
timer_ll_get_intr_status_reg(&TIMERG0),
1 << TIMER_0,
timer_isr,
NULL,
NULL);
}
I found the pisition,but more confused
bool IRAM_ATTR timer_isr_callback()
{
return true; <---- A0 happened here
}
static void IRAM_ATTR timer_isr(void* arg) {
timer_ll_clear_intr_status(&TIMERG0, TIMER_0);
if (timer_isr_callback()) {
timer_ll_set_alarm_enable(&TIMERG0, TIMER_0, true);
}
}
void timer_isr_register(){
esp_intr_alloc_intrstatus(timer_group_periph_signals.groups[TIMER_GROUP_0].t0_irq_id,
ESP_INTR_FLAG_IRAM,
timer_ll_get_intr_status_reg(&TIMERG0),
1 << TIMER_0,
timer_isr,
NULL,
NULL);
}
-
- Posts: 9708
- Joined: Thu Nov 26, 2015 4:08 am
Re: 【Help】How to trace when Backtrace corrupted
I'm not sure either... perhaps in Menuconfig under Component config → ESP-Driver:GPTimer Configurations, check if the options considering IRAM are set correctly?
Who is online
Users browsing this forum: No registered users and 120 guests