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.

[参考译文] TMS320F28379D:CPU2 上的看门狗和 CPU1 上的 NMI

Guru**** 2611705 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1572988/tms320f28379d-watchdog-on-cpu2-and-nmi-on-cpu1

部件号:TMS320F28379D


工具/软件:

您好:

我需要看门狗管理方面的建议。

在微控制器的两个 CPU 上、我为看门狗配置了一个导致 PIE 中断 (WAKE) 的看门狗

在关联的 ISR 中:

-我在 CPU 的闪存中写一些东西

-我将看门狗的模式切换为 RESET_MODE

-由于 driverlib 函数 sysctl_resetDevice (),我要求一个看门狗复位。 此函数实际上会在看门狗寄存器中放置一些错误的内容、这会导致看门狗事件(这就是我将此事件设置为“复位“的原因)

当 CPU1 中有阻塞任务时、一切都正常:两个内核都会复位。

当 CPU2 中有阻塞任务时、我预计:

- CPU2 重置并等待 IPC_SYNC 继续其程序

- CPU1 看门狗到达(因为 CPU1 将许多数据传输到 CPU 并等待确认)并请求 CPU1 复位

- CPU1 和 CPU2 复位(CPU2 第二次复位)

-整个程序第一次运行

但有时、在仿真模式下、当 CPU2 上的看门狗出现时、CPU1 会跳入此函数:

我在参考手册中看到、CPU2 看门狗复位导致 NMI。 所以,我有很多问题:

1) NMI 处理程序在 driverlib 文件中定义。 如果我必须管理 NMI、我该怎么做、因为我“无法“修改 driverlib 文件?

2) 我注意到每次引起 CPU2 看门狗事件时、我都没有进入此处理程序。 怎么会这样? (在我的应用程序中,仅当之前出现 CPU1 看门狗时才进入此处理程序)

3) 我在独立模式下运行我的项目,程序不会进入无限循环。 一切似乎都还可以。 NMI 是否可能是由于仅出现在仿真模式中的其他原因(时钟故障,错误...)造成的

4) 我在参考手册中读到、当信号 WDINT 处于活动状态 (512 SYSCLK) 时、不得更改看门狗模式。 但我确实改变了它。 我应该先等待才能做到这一点吗? 使看门狗事件引起复位是否真的有用?

5) 最后,在我的应用程序中,如果看门狗出现,阻止 CPU2 程序是否更安全? (由于应用程序的原因,这将导致 CPU1 上出现看门狗)

感谢您的建议。 我努力做到总的和明确的。

Vincent。

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

    您好:

    因为我写了第一条消息、所以我进行了一些测试。

    首先、我通过更改表中相应中断的地址来管理 NMI ISR 的内容:

    INTERRUPT_REGISTER (INT_NMI、&INT_MyNMI_ISR);

    我检查了 CPU 由于看门狗而复位是否是此进入 ISR 的来源。

    但我仍然想知道为什么这个 CPU2 看门狗使程序进入这个 ISR、尽管我没有启用 NMI 中断。

    我第二次使用 sysctl_enableNMIglobalInterrupt () 启用此中断;

    这样、程序似乎进入 ISR、但也有 NMIWatchdog 重置。 我错了吗? 此外,这似乎是得到之前 ESTOP0;这是可能的?

    感谢你的帮助。

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

    您好、

    对于 NMI、请找到以下信息:  

    每个 CPU 都有自己的 NMI 模块。 传入的 NMI 会设置 NMIFLG 寄存器中的状态位并启动 NMI 看门狗计数器。 此计数器由 SYSCLK 计时、如果达到 NMIWDPRD 寄存器中的值、则会触发 NMI 看门狗复位 (NMIWDRS)。 为了防止出现这种情况、NMI 处理程序必须使用 NMIFLGCLR 寄存器清除标志位。 一旦所有标志位都清除、NMIFLG 寄存器中的 NMIINT 位也可以清除、以允许将来获取 NMI。 NMI 模块在启动过程中由引导 ROM 启用。 为了响应 NMI、必须将 NMI 处理程序向量写入 PIE 向量表。

    谢谢

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

    你好 Pratthan。 非常清楚。 谢谢你