Tool/software:
Hello,
I implemented the PSCON PMA test using the SDL API within a diagnostic task. The self-tests and error-forcing tests are working fine, except the PSCON test, which gets stuck in a loop and never completes.
According to the SDL documentation, this test must be executed in USER mode, which I confirmed is the case during execution.
During debugging, I noticed a data abort occurs as expected when attempting the following illegal access:
/* Try writing to GLOBALCTRL1.AUTO_CLK_WAKE_ENA, which should result in an abort*/ sl_pmmREG->PRCKEYREG = 0x0000000FU;
However, in the data abort exception handler, the maskDAbort
flag is not set to TRUE
as expected. This is because the faulting address is reported as 0xFFFF00AC, and the handler doesn't recognize this fault as part of the intended test behavior.
/* * DAbort due to access to PMM global control register (sl_pmmREG->GLOBALCTRL1) access in user mode? * 0x00000009 indicates that it is an external abort caused by read and is AXI decode error * 0xFD000000 is the reserved location accessed to create the L2 interconnect error trap AXI decode error */ if ((TRUE == SL_FLAG_GET(PSCON_PMA_TEST)) && ((0x00000800u == (0x0000800u & _SL_Get_DataFault_Status())) && (0xFFFF00A0 == _SL_Get_DataFault_Address()))){ maskDAbort = TRUE; }
there is another data abort when this line runs, and fault address is reported as 0x00000000F.
if(regbackup == sl_pmmREG->PRCKEYREG)
and another data abort here:
/* Revert to normal operation */ sl_pmmREG->PRCKEYREG = PMM_PRCKEYREG_MKEY_LKSTEP_MODE;
Any guidance on how to properly handle and execute PMA test.
Thanks & regards,
Ilija