mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-08-05 22:11:04 +08:00
feat(esp8266): Add software watch dog panic function
This commit is contained in:
@ -38,9 +38,18 @@ void IRAM_ATTR panicHandler(void *frame)
|
||||
"A14", "A15", "SAR", "EXCCAUSE"
|
||||
};
|
||||
|
||||
extern int _Pri_3_NMICount;
|
||||
|
||||
/* NMI can interrupt exception. */
|
||||
ETS_INTR_LOCK();
|
||||
|
||||
if (_Pri_3_NMICount == -1) {
|
||||
void show_critical_info(void);
|
||||
|
||||
ets_printf("\nWatch dog triggle:\n\n");
|
||||
show_critical_info();
|
||||
}
|
||||
|
||||
for (x = 0; x < 20; x += 4) {
|
||||
for (y = 0; y < 4; y++) {
|
||||
ets_printf("%8s: 0x%08x ", sdesc[x + y], regs[x + y + 1]);
|
||||
|
@ -257,13 +257,11 @@ void IRAM_ATTR vPortExitCritical(void)
|
||||
}
|
||||
}
|
||||
|
||||
void ShowCritical(void)
|
||||
void show_critical_info(void)
|
||||
{
|
||||
printf("ShowCritical:%u\n", uxCriticalNesting);
|
||||
printf("HdlMacSig:%u\n", HdlMacSig);
|
||||
printf("SWReq:%u\n", SWReq);
|
||||
|
||||
ets_delay_us(50000);
|
||||
ets_printf("ShowCritical:%u\n", uxCriticalNesting);
|
||||
ets_printf("HdlMacSig:%u\n", HdlMacSig);
|
||||
ets_printf("SWReq:%u\n", SWReq);
|
||||
}
|
||||
|
||||
void IRAM_ATTR vPortETSIntrLock(void)
|
||||
|
@ -1417,6 +1417,96 @@ nmi_rfi:
|
||||
#endif
|
||||
#endif /* NMI */
|
||||
|
||||
.section .text, "ax"
|
||||
.global ShowCritical
|
||||
.type ShowCritical, @function
|
||||
.align 4
|
||||
ShowCritical:
|
||||
movi a2, LABEL(_Pri_,_NMICount)
|
||||
l32i a2, a2, 0
|
||||
bnei a2, 1, nmi_reentry_panic
|
||||
|
||||
/*
|
||||
* a2 == 1, the function is not NMI exception function and its stack
|
||||
* is stored at LABEL(_Pri_,_Stack) + PRI_N_STACK_SIZE
|
||||
*
|
||||
* a2 >= 1, the function is NMI exception function and its stack
|
||||
* is stored at LABEL(_Pri_,_Stack) + PRI_N_STACK_SIZE + HESF_TOTALSIZE + PRI_N_STACK_SIZE2
|
||||
*/
|
||||
movi a2, LABEL(_Pri_,_Stack) + PRI_N_STACK_SIZE
|
||||
j nmi_common_panic
|
||||
nmi_reentry_panic:
|
||||
movi a2, LABEL(_Pri_,_Stack) + PRI_N_STACK_SIZE + HESF_TOTALSIZE + PRI_N_STACK_SIZE2
|
||||
nmi_common_panic:
|
||||
movi a1, 0XFFFFFFFF
|
||||
movi a3, LABEL(_Pri_,_NMICount)
|
||||
s32i a1, a3, 0
|
||||
|
||||
movi a1, _chip_interrupt_tmp
|
||||
addi a1, a1, -XT_STK_FRMSZ
|
||||
|
||||
l32i a3, a2, HESF_AR(0)
|
||||
s32i a3, a1, XT_STK_A0
|
||||
|
||||
l32i a3, a2, HESF_AR(1)
|
||||
s32i a3, a1, XT_STK_A1
|
||||
|
||||
l32i a3, a2, HESF_AR(2)
|
||||
s32i a3, a1, XT_STK_A2
|
||||
|
||||
l32i a3, a2, HESF_AR(3)
|
||||
s32i a3, a1, XT_STK_A3
|
||||
|
||||
l32i a3, a2, HESF_AR(4)
|
||||
s32i a3, a1, XT_STK_A4
|
||||
|
||||
l32i a3, a2, HESF_AR(5)
|
||||
s32i a3, a1, XT_STK_A5
|
||||
|
||||
l32i a3, a2, HESF_AR(6)
|
||||
s32i a3, a1, XT_STK_A6
|
||||
|
||||
l32i a3, a2, HESF_AR(7)
|
||||
s32i a3, a1, XT_STK_A7
|
||||
|
||||
l32i a3, a2, HESF_AR(8)
|
||||
s32i a3, a1, XT_STK_A8
|
||||
|
||||
l32i a3, a2, HESF_AR(9)
|
||||
s32i a3, a1, XT_STK_A9
|
||||
|
||||
l32i a3, a2, HESF_AR(10)
|
||||
s32i a3, a1, XT_STK_A10
|
||||
|
||||
l32i a3, a2, HESF_AR(11)
|
||||
s32i a3, a1, XT_STK_A11
|
||||
|
||||
l32i a3, a2, HESF_AR(12)
|
||||
s32i a3, a1, XT_STK_A12
|
||||
|
||||
l32i a3, a2, HESF_AR(13)
|
||||
s32i a3, a1, XT_STK_A13
|
||||
|
||||
l32i a3, a2, HESF_AR(14)
|
||||
s32i a3, a1, XT_STK_A14
|
||||
|
||||
l32i a3, a2, HESF_AR(15)
|
||||
s32i a3, a1, XT_STK_A15
|
||||
|
||||
l32i a3, a2, HESF_EXCCAUSE
|
||||
s32i a3, a1, XT_STK_EXCCAUSE
|
||||
|
||||
l32i a3, a2, HESF_EPC3
|
||||
s32i a3, a1, XT_STK_PC
|
||||
|
||||
l32i a3, a2, HESF_EPS3
|
||||
s32i a3, a1, XT_STK_PS
|
||||
|
||||
mov a2, a1
|
||||
|
||||
call0 panicHandler
|
||||
|
||||
|
||||
.global _xt_ext_panic
|
||||
.type _xt_ext_panic, @function
|
||||
.align 4
|
||||
|
Reference in New Issue
Block a user