Index: firmware/source/sys_selftest.c =================================================================== diff -u -r65280b3e6fda421cc2130e7e73f41e9fd23b51c9 -r8c9511a4eb046091fbfe6a3e481eb83c756b288f --- firmware/source/sys_selftest.c (.../sys_selftest.c) (revision 65280b3e6fda421cc2130e7e73f41e9fd23b51c9) +++ firmware/source/sys_selftest.c (.../sys_selftest.c) (revision 8c9511a4eb046091fbfe6a3e481eb83c756b288f) @@ -1123,12 +1123,12 @@ * This data abort is not caused due to diagnostic checks of flash and TCRAM ECC logic. */ /* USER CODE BEGIN (42) */ - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, (U32)SW_FAULT_ID_ILLEGAL_MEM_ACCESS, (U32)0xDEADBEEF ) - //SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_PHANTOM_INTERRUPT ) - // SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_STARTUP, SYS_EXCEPTION, (uint32_t)0x000BAD02 ) // log ESR value and BAD02 value to indicate + uint32_t marker = STACK_MARKER; + uint32_t contentOfLinkRegister = *(volatile uint32_t*)(&marker + LR_OFFSET_WORD_IN_STACK); + *(volatile uint32_t*)(&marker + LR_OFFSET_WORD_IN_STACK) = contentOfLinkRegister + LR_OFFSET_ADJUSTMENT; + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, (U32)SW_FAULT_ID_ILLEGAL_MEM_ACCESS, contentOfLinkRegister ) // log LR to determine what caused violation +/* USER CODE END */ -/* USER CODE END */ // access to an invalid memory location - } /** @fn void stcSelfCheckFail(void)