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:多核系统 CLB 所有权和 ISR

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1491853/tms320f28379d-multicore-system-clb-ownership-and-isrs

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

工具/软件:

您好:

我正在尝试设置一个多核工程、该工程利用3个 CLB 来对通过 GPIO 引脚接收的串行数据执行一些布尔逻辑。 我对系统进行了测试、并正在处理一个核心工程。 我很想了解有关 CLB 模块实例所有权的更多信息。 E2E 论坛上似乎有一些相互冲突的信息、即:

- CLBx 所有权源自 EPWMx 所有权(1<x<4)、因为时钟是共享的

- sysctl_selectcpu... 可用于更改 CLB 模块的所有权

但是、c2000ware v5.04.00的 SYSCTL API 文档似乎没有提及 CLB 所有权。 此外、CPU2调试视图中缺少 CLB 寄存器、仅在 CPU1调试视图中可见。  

尝试在空多核工程中使用 GUI syscfg 工具-将 CLB 模块添加到 CPU2子系统- init ()代码看起来与我在多核基础上执行的操作相同-但无法从 CPU2调试视图查看 CLB 寄存器。

我想知道
-是否甚至可以在不同的 CPU 子系统之间移动 CLB 所有权?

-属于 CPU1的 CLB 可以连接到由 CPU2管理的 GPIO/ePWM clk/XBAR 吗?

-属于 CPU1的 CLB 是否可以将其 ISR 置于 CPU2中(而不生成 CPU1->CPU2中断)?


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

    值得注意的是、我使用 EPWM4-12来驱动某些输出。 我想使用 EPWM1 在 CPU 子系统2上进行 SOC 触发。 如果我在为 EPWMx 上的 CPU2设置 CPUSEL 之前执行该操作、则 CLBX 初始化似乎可以正常工作。 但是、CLB 配置(在 CPU1上进行)会在所有权更改后复位。 是否有办法配置 CLB1-3、以便 EPWM1归 CPU2所有?

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

    尊敬的 Prakhar:

    请参阅此主题:

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/982088/tms320f28379d-cpusel-for-clb

    CLB、GPIO 和 XBAR 之间的连接不受 CPU 所有权的影响。

    您可以使用 IPC 从 CPU1 CLB ISR 触发 CPU2中断。

    谢谢您、

    Luke

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

    您好 Luke、

    如果关联的 ePWM 模块已由 CPU2拥有、则是否可以由 CPU2管理 CLB 模块仍不清楚。  

    谢谢

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

    尊敬的 Prakhar:

    我与团队的其他成员讨论了这个问题。 我误认为、您可以使用 CPUSELx 位和 EPWM1的 PCLKCRx 位将 CLB1分配给 CPU2。

    谢谢您、

    Luke

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

    Luke 您好、根据 SYSCTL API 文档、不支持为 CLB 设置 CPUSELx。 不过、CCS 的 CPU2调试视图不支持查看 CLB 寄存器

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

    尊敬的 Prakhar:

    如果为 CPU2设置了 EPWM1的 CPUSELx 位、您是否仍然能够通过 CPU1配置 CLB1寄存器?

    谢谢您、

    Luke

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

    您好 Luke、

    很抱歉您稍后再回来。 TRM 中提到 f28379d 上有4个逻辑块。 我假设这适用于整个 DSP、而不是每个 CPU 子系统? 明确提及这一点可能会使 TRM 受益。


    我做了一些测试、并观察到一些值得注意的奇怪行为:

    -当为 CPU2-分配 epwm1的 CPU SEL 然后在 CPU2上初始化 CLB 时-当我初始化我的逻辑块时, CLB ctrl 寄存器似乎没有变化。 此外、在调试模式下、这很难验证、因为 CCS 未从 CPU2视图显示 CLB 的寄存器。 从 CPU1视图中选中时、CLB Regs 为其原始启动值。 此外、不会触发 HLC ISR (在 CPU2上注册和启用)

    -当 EPWM1的 CPUsel 设置为 CPU1并且在 CPU1上初始化 CLB 时,寄存器设置正确。 这与之前场景中执行的初始化过程完全相同、但在 CPU1上完成。 在这种情况下、会触发 HLC ISR (在 CPU2上注册和启用)。 但标签信息似乎不正确(标签预计为1、在 CPU2上的 ISR 中始终读取为0)

    -最后,当 EPWM1的 CPUSEL 位于 CPU1上时, CLB 初始化在 CPU1上完成, HLC ISR 也位于 CPU1上-标签读取功能正常。



    这让我认为4个 CLB 逻辑块和相关寄存器只能从 CPU1子系统1访问。 您是否能够确认这一点? 在这种情况下、TRM 应提及这一点、因为它可以节省大量的开发/调试时间。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉这么晚回复您。 TRM 中提到 f28379d 上有4个逻辑块。 我假设这适用于整个 DSP、而不是每个 CPU 子系统? 明确提及这一点可能会使 TRM 受益。

    是、整个 DSP 上总共有4个 CLB。

    让我尝试在我这边进行测试、并与团队分享我的调查结果、我认为对于 CPU"所有权"对 CLB 的含义存在一些混淆。

    谢谢您、

    Luke

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

    嗨、Luke。 我想知道是否有任何更新?

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

    尊敬的 Prakhar:

    明天我就不在办公室、下次我回来时我会试一下。

    谢谢您、

    Luke