This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RM44L920:PSCON PMA 自检失败

Guru**** 2323460 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1503401/rm44l920-pscon-pma-self-test-fail

部件号:RM44L920

工具/软件:

您好:

我在诊断任务中使用 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.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Ilija:

    我真诚地对延迟的答复表示歉意,我在这一平均时间陷入了其他问题。

    您是否仍遇到该问题、我是否需要在结束时调试该问题?

    --
    此致、
    Jagadish。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jagadish:

    是的、我仍然面临这个问题、如果您能尽快帮您调试问题、我将不胜感激。

    谢谢你。

    Ilija.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Ilija:

    我正在调试、尚未找到任何根本原因、请给我一些时间来更新结果。 我将尝试在这个周末之前更新。

    --
    此致、
    Jagadish。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Ilija:

    我今天进行了测试、因为我没有 RM44x 板、所以我在 RM46x 上进行了测试。

    在我的测试中、我没有收到任何数据中止、但得到了 ST_PASS 结果。

    然后我发现了我的高级同事的以下主题:

    (18) TMDS570LS31HDK:PMM/PSCON 数据中止注入测试通过而不中止。 -基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    正如这里提到的、这里的注释具有误导性、这里不会导致此测试出现任何数据中止。

    --
    此致、
    Jagadish。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jagadish:

    感谢您的答复。

    但是、您的答案并不能真正为我澄清事情。 我仍然不确定 PSCON PMA 测试应如何正确执行。 是否整个测试点触发了数据中止、然后正确地对其进行掩码和处理?

    在我的例子中、系统似乎会卡住、持续执行测试而没有进展。 您能否解释一下该测试实际应该如何工作、以及预期行为是什么?

    此致、

    Ilija.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Ilija:

    但是、您的回答并不能真正为我说明问题。 我仍然不确定 PSCON PMA 测试应如何正确执行。 是否整个测试点都触发了数据中止、然后是否正确地对其进行屏蔽和处理?

    不可以、测试的整个点都不会触发数据中止。 测试的主要目标是、在用户模式下对 PRCKEYREG 寄存器进行的任何写入都不应生效。  

    因此、这就是他们在写入之前备份寄存器值的原因、然后他们使用某个其他值(例如0x0000000F)执行写入、然后他们将该寄存器值与备用值进行比较。 如果 CURRENT 寄存器值等于备用值意味着、则不会在用户模式下写入时发生写入。

    在我的案例中、发生的情况是系统似乎卡住了、并不断执行测试而没有进展。 您能否解释一下该测试的实际工作原理以及预期行为是什么?

    在我的最后,它是有效的。

    您能否与我一起验证您的项目一次:

    e2e.ti.com/.../PSCON_5F00_PMA_5F00_TEST_5F00_RM46.zip

    此致、
    Jagadish。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jagadish:

    我检查了您的项目示例、但请您再看一下我的原始问题。

    我还获得了测试通过、但是我在代码中的其他点遇到了数据中止—例如、当 PMM 恢复到正常运行模式时、在您的示例中没有这种情况、实际上您不使用 SDL 的 sl_SelfTest_PSCON ()函数。  

    我在 TRM 中看到、该寄存器(PRCKEYREG)只能在特权模式下写入。 这可能是导致错误的原因吗? 在这之前、ARM 模式是否应该从用户模式切换到特权模式?

    此致、

    Ilija.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Ilija:

    我在 TRM 中看到、该寄存器(PRCKEYREG)只能在特权模式下写入。 这可能是导致错误的原因吗? 在这之前、ARM 模式是否应该从用户模式切换到特权模式?

    您对此完全正确、我的意思是、如果任何寄存器具有权限写入、那么我们只能在特权模式下写入该寄存器。 如果我们在用户模式下进行写入、则这些写入将产生中止。

    但是、我的高级同事(QJ Wang)发现、根据我分享给您的主题、这不适用于此注册表。 在该线程中、他们发现只有写入不会发生、但在 PRCKEYREG 中写入时不会生成中止。 这就是他们的结论。

    如果您需要、我可以再次与 QJ 确认、并再次进行交叉确认。

    --
    此致、
    Jagadish。