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.

[参考译文] IEC60730SWPACKAGES:有时 CPU 寄存器自检失败

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1225498/iec60730swpackages-occasionally-the-cpu-reg-self-test-fails

部件号:IEC60730SWPACKAGES

尊敬的专家:

我的客户正在使用 IEC60730安全库 根据 F28035执行 UL 认证、他们使用 STL_CPU_TEST_testCpuRegisters 来测试 CPU 寄存器、但 在 运行大约一周后将失败。

代码中有一些更改:它们不会禁用中断并 将 CPU 寄存器检测代码置于具有最高优先级的最高优先级中断中。 然后将 ST1、即 RPC 检测添加到其中。  是否存在导致自检失败的风险?

用户发现未通过测试的寄存器位于  SP、st0、DP、IER、IFR、DBGIER 之间、并且 不希望 由于系统控制要求而禁用中断。  它是由添加 ST1和 RPC 自检引起的吗?  我认为、在测试 IFR 时出现突然中断会导致 IFR 发生变化、从而可能导致自检失败。 不确定我的想法是否正确?

顺便说一下、 该客户的另一个部门 在测试 CPU 寄存器自检代码时禁用了中断、但在测试 IER IFR 时将复位。 读取和写入 IER 和 IFR 是否会导致复位?

Br

吉姆

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

    您好、Jim、

    它听起来好像获得了一个中断。 他们是否确保在测试 ST1之前清除 IER 或避免清除 INTM? 如果在 INTM 为0时 IER 中设置了任何位、则它们有可能获得不必要的中断。

    惠特尼

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

    惠特尼、您好!

    感谢您的回复。 您的意思是、当它们测试 ST1并且 IER 的某些位被置位时、可能会有一个不必要的中断? 但它们在优先级最高的中断(ADCINT1)中执行此操作。 它是否影响 IER 或 IFR 自检?

    如今、他们发现自检失败的原因是从 IFR 中读取的数据与写入 IFR 中的数据不同。

    另一个问题是、他们说、如果禁用了中断、然后执行 IER、IFR 自检、CPU 有时将复位。 他们想知道为什么会导致 CPU 复位、是否存在 IER 或 IFR 自检会导致 CPU 复位的风险?

    Br

    吉姆

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

    优先级用于在多个中断挂起时确定谁首先运行、然后在进入 ISR 后、IER 被清除并且 INTM 由硬件设置、因此任何东西都无法中断。 您可以看到 本文档中描述的行为。不过、如果您从 ISR 内部重新启用中断、实际上就是启用中断嵌套。

    此外、在测试期间并没有任何东西阻止中断传播到 IFR 寄存器(除非它们在 PIE 或外设级别将它们禁用)、因此尽管该函数可以保存和恢复 IFR、 在测试过程中、到达 IFR 的中断将通过恢复操作清除、也可能导致测试失败。  

    我之前从未见过 CPU 测试重置器件。 复位前会通过 ITRAP 或 NMI ISR 吗? 他们是否知道是看门狗?

    惠特尼

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

    惠特尼、您好!

    非常感谢您的回复。

    我的客户现在尝试禁用 INTM 以测试 CPU 寄存器、并且他们想知道 ISR 中是否存在诸如 IFR 之类的其他 CPU 寄存器可能会导致 自检失败、例如 PC、RPC、ACC。 他们想要询问 ACC、P、XAR0–XAR7、XT、SP IFR:
    ;需要 在自检期间保存和恢复 st0、DP、IER 和 DBGIER 吗? 它们可以找到 XAR1、 XAR2、 XAR3、SP、ST0、     需要保存和恢复 DP、IER、IFR 和 DBGIER。 ACC、P、XAR0、XAR4~XAR7、XT 怎么样?

    他们能否判断它是否是看门狗?

    他们认为看门狗导致了复位、但他们不知道为什么测试 IER 和 IFR 会导致看门狗复位。

    Br

    吉姆

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

    Jim、

    他们应查看 《编译器用户指南》 中的"寄存器惯例"一章、了解某些寄存器是否由该函数保存/恢复、而其他寄存器是否不是。 基本上、如果它是"入口保存"或未列出(编译器不会单独使用的寄存器、如 IER)、当你编写你自己的汇编代码时、需要保存/恢复它。

    惠特尼