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:看门狗管理

Guru**** 2416110 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1528546/tms320f28379d-watchdog-management

部件号:TMS320F28379D
主题:C2000WARE 中讨论的其他器件

工具/软件:

你好。

我在 TMS320F28379D 上使用 2 个内核

由于采用了 IPC 和 MSGRAM、这两个内核经常相互发送消息。

在 CPU1 main 函数开始时、我将以下行放到脚本中:

所以

-在仿真引导结束时,每个内核都会在其 main() 函数处跳转

-在 独立启动结束时, CPU2 会收到它必须跳转到 main 之前的地址

此外,我还通过 ipc_sync () 同步 2 个内核:

我在中断模式下在 CPU1 上实现了看门狗。 ISR 结束时、我要求 CPU1 重置。

我有很多问题。

1) CPU1 复位后、“引导 ROM 将清除两个 CPU 上的所有系统和消息 RAM “(TRM)  

所以我需要将 CPU2 复位。 复位 CPU2 的正确方法是什么?

2) 这些重置是否与模拟模式兼容?

3) 仅在 CPU1 上实现看门狗时、此行为会让我感到惊讶:CPU1 已复位、但 CPU2 似乎暂停、并有一个我未实现的断点:

我不是自己调用 sysctl_delay ()。 你有什么想法会发生什么? (解决方案可能是重置 CPU2)

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

    您好、

    对于 CPU2、您还可以触发 CPU2 看门狗复位、并将 CPU2 内核复位。

    但 CPU1 WD RESET 会复位整个器件、包括 CPU2 内核

    这些重置是否与模拟模式兼容?

    任何 CPU 复位都通过 BootROM 运行、其中相同的逻辑适用于引导模式选择  

    CPU2 似乎已暂停并带有断点

    在 CPU1 WD 重置触发器之前、CPU2 是否已暂停/停止? 如果您点击 CPU2 上的 RUN、它会重置什么?  

    谢谢

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

    你好。 我很高兴有人帮助我解决这个问题。

    首先、感谢您发送给我的关于 CPU2 复位的提取。

    在 CPU1 WD 复位触发之前 CPU2 是否已暂停/停止?

    否、在复位发生之前 CPU2 未停止。

    如果您在 CPU2 上点击“Run",“,它、它会重置什么?

    在复位之前、CPU2 正在管理 CAN 堆栈。 一切都按预期运行。

    复位后、尽管我没有 按“Run"按钮“按钮、但 CPU1 仍在运行。 如果按下暂停按钮、我可以看到它正在等待 IPC 确认、可能是 IPC_SYNC 函数所需的确认。

    如果让 CPU1 运行 ET、然后在 CPU2 上按 Run、我就可以看到 CAN 堆栈不起作用。 通过按下暂停按钮、我可以看到 CPU2 正在与之前的相同点等待:

    我希望你能帮我!

    Vincent

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

    您好、

    重置后、尽管我没有 按“run"按钮“按钮、但 CPU1 仍在运行。 如果我按下暂停按钮、我可以看到它正在等待 IPC 确认、可能是 IPC_SYNC 函数所需的确认。

    是的。 CPU1 执行复位并等待来自 CPU2 的 IPC 同步。

    f 我让 CPU1 运行并按 CPU2 上的 Run、我只是看到 CAN 堆栈不起作用。 通过按下暂停按钮、我可以看到 CPU2 在与之前相同的位置等待:

    我不太明白上面的内容、“按 CPU2 运行“-因此当 CPU1 WD 重置生效时、CPU2 未运行?

    “CPU2 正在运行与之前相同的点“- CPU2 是像在 CPU1 复位生效之前那样运行应用程序代码吗。

    您是否可以尝试使用 C2000Ware 中的多核示例并查看是否能够在复位后引导 CPU1/CPU2。 我希望当 CPU1 WD 复位生效时、CPU1 和 CPU2 会进行复位并再次启动。

    谢谢。

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

    您好:

    首先,对不起,如果我不够清楚。

    下面是我的程序的行为。

    1) 启动调试会话。

    两个 CPU 在 main() 点等待。

    2) 我运行 CPU1 程序

    在 其 main 函数开始时,有 board_init () 函数,其中看门狗没有启动,并且与 CPU2 同步

    3) 运行 CPU2

    在  main 函数开始时、存在 board_init () 函数、以及与 CPU1 的同步

    3) 程序正在运行 。  

    就在 while (1) 之前、我启用看门狗。  

    这不会导致 CPU1 的复位、而是中断。 我在 ISR 中要求进行复位:

    4) 由于附加条件的 while 循环、使看门狗溢出

    CPU1 似乎已自动启动。 这会让我失望,因为我预期 CPU1 将在 main() 点停止

    5) 已支持 CPU2

    正如我所说的“按 CPU2 上的运行“、我指的是我点击了“Resume"按钮“按钮:

    然后、CPU 似乎正在运行、但我的应用程序根本无法运行

    按下 Suspend(暂停)按钮、程序将处于与之前相同的位置

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

    您好、

    由于我预计 CPU1 将在 main() 点停止
    而使我吃惊

    当 CPU 复位时、如果 BootROM 配置为引导至闪存、它会开始执行闪存、除非在 main 处有断点、否则不会在 main 处停止。 main 处的断点通知调试器停止、否则它会继续执行

    [引述 userid=“573787" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1528546/tms320f28379d-watchdog-management/5888546 #5888546“]

    已支持 CPU2

    正如我所说的“按 CPU2 上的运行“、我指的是我点击了“Resume"按钮“按钮:

    [/报价]

    CPU2 是否配置为从闪存引导?

    您能否查看 c2000ware 多核示例以了解 CPU2 引导模式是如何配置的?

    如果 CPU 似乎在运行、但我的应用程序根本无法运行

    您能否查看 CPU2 所在的位置? 我看到了 SysCtl_delay 函数、但您能否在您的代码中找到该函数的调用位置、以及它为何到达该位置?

    您是否可以在 CPU2 main 处放置断点并查看复位后是否到达 main()。

    谢谢

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

    你好 Prarthan、

    很抱歉耽误你的时间。 我根据 TI 工程花时间创建了一个示例。 这些示例必须在 Launchpad 上运行。 你能看看它吗?  

    如果要测试工程、只需在运行时设置变量 uint16_Freeze:

    我通过放置断点来检查 CPU 是否到达主函数:不、它不会到达主函数

    e2e.ti.com/.../2025_5F00_07_5F00_04_5F00_TISupport.zip

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

    嗨、

    我能够尝试之前发送的代码、可以看到上面显示的行为、但此时设置 EMU 引导模式。

    连接到调试器时、您需要从 CCS 将仿真引导模式设置为器件闪存、如下所示

    执行上述操作后、您会看到 CPU2 引导至闪存、如下所示

    谢谢

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

    你好 Prarthan、

    首先、感谢您抽出时间来运行我发送给您的项目。

    您的答案解决了我的问题。 但在我关闭这个主题之前、我想问您...我使用 C2000 器件已经 2 年了。 我从未轻触过该脚本菜单。 为什么我没有任何问题因此?

    您能告诉我有关 EMU 引导的更多信息吗? 你有这方面的任何文件吗?

    非常感谢。

    Vince

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

    Vince、

    是、技术参考手册的 BootROM 一章中提到了仿真引导。 连接到调试器时、我们需要正确设置仿真引导、如下所示

    谢谢

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

    您好、当然、

     此脚本是否使值 EMU_BMODE = 0x0A 或 0x0B? 所以微控制器知道在哪里跳?

    我说你解决了我的问题、说得太快了。 对于 FLSH 配置似乎没问题、但对于 RAM 配置则不行:

    -我打开一个调试会话

    -我为每个项目选择正确的 EMU 模式:

    -我启动了两个项目

    -我强迫程序的冻结

    =>似乎向 CPU2 发出了复位命令、但 CPU1 已暂停:

    你能解释一下为什么吗?

    谢谢

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

    您好、

    用户可以在 GEL 文件中查看这些函数、如上所示。

    [引述 userid=“573787" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1528546/tms320f28379d-watchdog-management/5924374

    -我强迫程序的冻结

    =>似乎向 CPU2 发出了复位命令、但 CPU1 已暂停:

    [/报价]

    我不知道您的意思-“已向 CPU2 请求重置、但 CPU1 已暂停“?

    此外、由于您的原始看门狗复位问题已得到解决、因此您能够使其适用于闪存启动。
    我建议您再制作一个 e2e 主题来解答引导 ROM 问题、引导 ROM 专家将能够回答您的问题

    谢谢。