工具/软件:
您好:
我在诊断任务中使用 SDL API 实施了 PSCON PMA 测试。 除 PSCON 测试外、自检和错误强制测试工作正常、PSCON 测试卡在循环中但从未完成。
根据 SDL 文档、必须在中执行此测试 用户模式 我确认这是执行期间的情况。
在调试过程中、我注意到在尝试以下非法访问时按预期发生了数据中止:
/* Try writing to GLOBALCTRL1.AUTO_CLK_WAKE_ENA, which should result in an abort*/ sl_pmmREG->PRCKEYREG = 0x0000000FU;
但是、在数据中止异常处理程序中、maskDAbort
标志为 未设置为 TRUE
亮起。 这是因为故障地址报告为0xFFFF00AC、并且处理程序不会将此故障识别为预期测试行为的一部分。
/* * 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; }
当此行运行时、会出现另一个数据中止、故障地址报告为0x00000000F。
if(regbackup == sl_pmmREG->PRCKEYREG)
这里还有另一个数据中止:
/* Revert to normal operation */ sl_pmmREG->PRCKEYREG = PMM_PRCKEYREG_MKEY_LKSTEP_MODE;
有关如何正确处理和执行 PMA 测试的指导。
此致、
Ilija.