mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-08-06 15:15:15 +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"
|
"A14", "A15", "SAR", "EXCCAUSE"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern int _Pri_3_NMICount;
|
||||||
|
|
||||||
/* NMI can interrupt exception. */
|
/* NMI can interrupt exception. */
|
||||||
ETS_INTR_LOCK();
|
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 (x = 0; x < 20; x += 4) {
|
||||||
for (y = 0; y < 4; y++) {
|
for (y = 0; y < 4; y++) {
|
||||||
ets_printf("%8s: 0x%08x ", sdesc[x + y], regs[x + y + 1]);
|
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);
|
ets_printf("ShowCritical:%u\n", uxCriticalNesting);
|
||||||
printf("HdlMacSig:%u\n", HdlMacSig);
|
ets_printf("HdlMacSig:%u\n", HdlMacSig);
|
||||||
printf("SWReq:%u\n", SWReq);
|
ets_printf("SWReq:%u\n", SWReq);
|
||||||
|
|
||||||
ets_delay_us(50000);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void IRAM_ATTR vPortETSIntrLock(void)
|
void IRAM_ATTR vPortETSIntrLock(void)
|
||||||
|
@ -1417,6 +1417,96 @@ nmi_rfi:
|
|||||||
#endif
|
#endif
|
||||||
#endif /* NMI */
|
#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
|
.global _xt_ext_panic
|
||||||
.type _xt_ext_panic, @function
|
.type _xt_ext_panic, @function
|
||||||
.align 4
|
.align 4
|
||||||
|
Reference in New Issue
Block a user