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.

[参考译文] TMS320F28388D:NMI 看门狗计时器有一个问题。

Guru**** 2530630 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1217159/tms320f28388d-one-question-of-nmi-watchdog-timer

器件型号:TMS320F28388D

您好!

我的客户的机器有时自复位、他检查 RESC 设计器发现这是 NMI 看门狗计时器溢出(NMIEWDRSn 位设置为1)造成的。 另外、NMISHDFLG 寄存器的 RAMUNCHR 位和 CPU2NMIVDRSn 位设置为1、看起来此问题是由于 CPU2尝试访问 RAM 存储器时出现 ECC 错误、是否正确?

然而、不可纠正的错误标志和地址寄存器的内容为0 (CPU、DMA、CLA1和 EtherCAT RAM)、这是合理的还是因为 NMI 看门狗复位清除了这些寄存器?

这是我的客户想了解的信息、

  1. 如何在 NMI ISR 中停止 NMI 看门狗计时器并避免 DSP 自复位?
  2. 如何避免 RAM ECC 错误? 从软件和硬件的角度来看、他有什么可以做的吗?
  3. 他能做些什么来找出根本原因?

谢谢。此致、

Luke

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

    Luke、您好!

    jin ma 说:
    1)。 另外、NMISHDFLG 寄存器的 RAMUNCHR 位和 CPU2NMIVDRSn 位设置为1、看起来此问题是由于 CPU2尝试访问 RAM 存储器时出现 ECC 错误造成的、是否正确?

    这似乎是正确的。

    jin ma 说:
    但是、不可纠正的错误标志和地址寄存器的内容是0 (CPU、DMA、CLA1和 EtherCAT RAM)、是合理的还是因为 NMI 看门狗复位清除了这些寄存器?

    是的、重置将清除错误日志内容、因此您将看不到该内容。

    [quote userid="114524" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1217159/tms320f28388d-one-question-of-nmi-watchdog-timer 如何在 NMI ISR 中停止 NMI 看门狗计时器并避免 DSP 自复位?

    用户需要有 NMI 处理程序并清除错误标志、以便 NMIWD 不会发出复位。  

    [quote userid="114524" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1217159/tms320f28388d-one-question-of-nmi-watchdog-timer 如何避免 RAM ECC 错误? 从软件和硬件的角度来看,他可以做什么?

    用户需要找到这种情况的根本原因。 此误差不是很常见、因此很可能是系统中存在高噪声导致该误差。 用户需要更正它。

    我们还有另一 关于同一主题的 E2E 帖子。 这是来自同一个客户吗?

    此致、

    Vivek Singh

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

    作者:Vivek、

    在 NMICFG 寄存器中、有用于禁用 NMI 的 NMIE 位。 如果我们将其设置为0、它真的会禁用 NMI 吗? 我问这个、因为 NMI 是不可屏蔽的中断、我们真的可以通过这个位设置来禁用它吗?

    当发生 RAM ECC 错误时、DSP 如何处理该问题? DSP 是否会重试、忽略(旁路)或使用错误数据继续执行?

    此致、

    Luke

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

    Luke、您好!

    在 NMICFG 寄存器中、有 NMIE 位可禁用 NMI。 如果我们将其设置为0、它真的会禁用 NMI 吗? 我提出这个问题是因为 NMI 是不可屏蔽的中断、我们是否可以通过此位设置来禁用它?

    不可以、该位"设置一次"、并且 ROM 中的引导代码设置了该位、因此不能由应用程序代码清除。

    发生 RAM ECC 错误时,DSP 如何处理此问题? DSP 将重试、忽略(旁路)还是使用错误数据继续执行?

    如果是一位错误、它会得到纠正、CPU 继续按预期执行。 如果用户针对一位错误启用了中断、则会生成中断。 如果存在两位错误、CPU 接收到不正确的数据/指令、但会生成 NMI、如果用户已设置、CPU 将跳转到 NMI 处理程序。 否则、它会转到默认 NMI 处理程序、NMIWD 将在计数器溢出后触发复位。

    此致、

    Vivek Singh

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

    您好、Vivek、

    是的、回答正确。 启动代码会将 NMIE 位设置为1、我们无法通过应用程序代码清除该位。

    说到 RAM ECC 错误、我知道 NMI 流程。 我的问题是、如果客户不想 NMIWD 重置 DSP、他们应如何处理 ECC 错误? 例如、如果客户只需清除 NMI ISR 中的 NMI 标志、然后返回、将会发生什么情况? 发生 ECC 错误时、是否需要复位 DSP? 当 CPU 接收到错误的数据/指令时、CPU 是否会再次尝试访问该存储器地址以获得正确的数据/指令?

    我的客户想知道是否有任何建议的流程来处理内存 ECC 错误问题、以便系统正常工作?

    此致、

    Luke

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

    Luke、您好!

    说到 RAM ECC 错误,我知道 NMI 流程。 我的问题是、如果客户不想 NMIWD 重置 DSP、他们应如何处理 ECC 错误? 例如、如果客户只需清除 NMI ISR 中的 NMI 标志、然后返回、会发生什么情况?

    客户需要确保 在清除 NMI 标志之前清除 UCERRFLG 寄存器中的 RAM 错误标志、否则将再次进行设置。 一旦它们能够清除标志并且没有额外的 RAM ECC 错误、NMIWD 计数器将停止并且不会发出复位。  

    发生 ECC 错误时是否需要 DSP 复位?

    由于它是不可纠正的错误并且 CPU 已经访问了不正确的数据、因此最好对器件进行复位。

    当 CPU 收到错误的数据/指令时,CPU 是否会再次尝试访问此内存地址以获得正确的数据/指令?

    不、它不是自动完成的。

    我的客户想知道是否有任何建议的流程来处理内存 ECC 错误问题,以便系统能够正常运行?

    这很难说。 用户需要根据导致错误的数据/代码来分析错误的关键性、然后需要确定操作。

    此致、

    Vivek Singh

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

    作者:Vivek、

    我执行该实验并发现如果我不清除 NMI ISR 中的 UCERRFLAG 寄存器、将不会再次触发 NMI。 但是、如果我清除 NMI ISR 中的 UCERRFLAG 寄存器、则当不可纠正的标志下次设置为1时将触发 NMI、这看起来只是标志0 -> 1转换触发 NMI。

    如果我们说 CPU 不会再次尝试访问该存储器地址、那么 CPU 将做什么? CPU 是否会忽略/旁路这一错误数据/指令并执行下一条指令? 或者 CPU 将继续处理这种错误的数据/指令?

    此致、

    Luke

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

    Luke、

    我进行实验并发现如果我未在 NMI ISR 中清除 UCERRFLAG 寄存器、则不会再次触发 NMI。 但是、如果我在 NMI ISR 中清除 UCERRFLAG 寄存器、则当下次不可纠正的标志设置为1时将触发 NMI、这看起来就像仅标记0 -> 1转换触发 NMI。

    这是正确的、但需要同时清除 NMI 处理程序内部的两个内容。

    如果我们说 CPU 不会再次尝试访问该内存地址,那么 CPU 将做什么? CPU 是否会忽略/旁路这一错误数据/指令并执行下一条指令? 或者 CPU 将继续处理此错误数据/指令?

    CPU 将继续处理不正确的数据/指令。 请参阅器件 TRM 中的以下注释-

    此致、

    Vivek Singh