Hi, I tried to view the MSS reset status by using MSS_RCM->RSTCAUSE register. However, regardless of power-on reset and watchDog reset, the status is 0010_0000(32) when I viewed before soc_init() or 0 when I viewed in _system_pre_init()。
I also tried to use ptrRTIBRegs->RTIWDSTATUS, and it didn't work either.
What is the reason for this? If I want to distinguish between the two status, what methos can I achieve.
Here is the code and result.
code when I viewed before soc_init:
int main (void)
{
RCMRegs* ptrRCMRegs;
TOPRCMRegs* ptrTOPRCMRegs;
ptrRCMRegs = (RCMRegs*)gSOCHwAttrib.rcmBaseAddress;
ptrTOPRCMRegs = (TOPRCMRegs*)gSOCHwAttrib.topRcmBaseAddress;
rcm_rstStatus = CSL_FEXTR(ptrRCMRegs->RSTCAUSE, 7U, 0U);
toprcm_rstStatus = CSL_FEXTR(ptrTOPRCMRegs->SYSRSTCAUSE, 3U, 0U);
rcm_softrst3 = CSL_FEXTR(ptrRCMRegs->SOFTRST3, 7U, 0U);
SBL_init();
return 0;
}
result:
toprcm_rstStatus:0 rcm_softrst3:173
code when I viewed in _system_pre_init() :
void _system_pre_init(void)
{
RCMRegs* ptrRCMRegs;
TOPRCMRegs* ptrTOPRCMRegs;
ptrRCMRegs = (RCMRegs*)gSOCHwAttrib.rcmBaseAddress;
ptrTOPRCMRegs = (TOPRCMRegs*)gSOCHwAttrib.topRcmBaseAddress;
rcm_rstStatus = ptrRCMRegs->RSTCAUSE;
toprcm_rstStatus = ptrTOPRCMRegs->SYSRSTCAUSE;
rcm_softrst3 = ptrRCMRegs->SOFTRST3;
return;
}
result: