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:如何在 TMS320F28388D 控制器的运行时中在 CPU1 和 CM 之间切换?

Guru**** 2774335 points

Other Parts Discussed in Thread: TMS320F28388D, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1617027/tms320f28388d-how-to-switch-between-cpu1-and-cm-in-runtime-for-tms320f28388d-controlller

器件型号: TMS320F28388D
主题中讨论的其他器件: C2000WARE

您好:

我正在测试 CM UART 示例 (uart_ex1_echoback) 来自 TMS320F28388D 的 C2000Ware Resource Explorer。 该示例说明了 UART 引脚从 CPU1 初始化/配置 、因为 CPU1“驱动“CM 内核。

我有几个问题:

  1. 是否可以在运行时使用 在 CPU1 和 CM 内核之间转移应用程序控制/逻辑 (例如,从 CPU1 启动、然后在 CM 上运行部分,然后切换回)?

  2. CAN CM 内核与 CPU1 进行通信 (发送数据/事件)、即通信 双向 CPU1 和 CM 之间?

  3. 如果是、什么是 建议的机制 为此(IPC、共享 RAM/消息 RAM,中断等)以及任何指针/示例都将非常有用。

谢谢您、
Shreyas

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

    尊敬的 Shreyas:

    让我在下周回复您。

    此致、

    Delaney

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

    尊敬的 Delaney:您提到本周我们回来联系您、我只是想查看您是否有更新。 期待您的答复!

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

    尊敬的 Jayashree:

    请允许我再有两天的时间来获得更新。 这是美国的周末、今天也是美国的假日、所以我还没有在办公室调查您的问题、

    此致、

    Delaney

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

    尊敬的 Jayashree:

    对延迟深表歉意。  

    在运行时、是否可以 在 CPU1 和 CM 内核之间转移应用程序控制/逻辑 (例如,从 CPU1 开始、然后在 CM 上运行部分,然后切换回)?

    引导 CM 内核后、CM 内核和 CPU1 内核可以完全同时运行。  从 CM 项目上的 main() 运行的任何代码都开始与 CPU1 程序执行同时执行。 请注意、对于 UART 外设、它由 CM 内核所有、CPU1 无法访问 UART 寄存器、因此只有 CM 内核能够执行 UART 操作。 UART 引脚在只有 CPU1 可以访问的 GPIO 寄存器中进行配置、因此必须在初始化期间由 CPU1 完成。 请参阅 此处的器件方框图 、了解哪些内核可以访问哪些资源。

    可以 CM 内核与 CPU1 进行通信 (发送数据/事件)、即通信 双向 CPU1 和 CM 之间?

    是的、您可以使用 消息 RAM 在每个方向进行通信:

    • CPU 至 CM MSGRAM
    • CM 到 CPU MSGRAM
    如果是、是什么 建议的机制 为此(IPC、共享 RAM/消息 RAM,中断等)、任何指针/示例都非常有用[/报价]

    这取决于数据的性质、如果您只需要从不同的内核中断一个内核、只需使用 IPC 标志。 如果要发送数据流、可以使用 MSGRAM 和 IPC 进行同步。 我建议查看[C2000ware install]/driverlib/f2838x/examples/c28x_cm/ipc 文件夹中的两个 CM IPC 示例。

    如果回答了您的问题、并且您可以随时提出任何其他问题、请支持此回答。 Slight smileμ s

    此致、

    Delaney

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

    感谢您对 CPU1-CM 同时执行和 MSGRAM 通信的澄清。
    我的问题专门关于 GPIO42 (UARTA_TX/USB0_DM) GPIO43 (UARTA_RX / USB0_DP)、其中:

    USB0_DM/USB0_DP 由 CPU1 所有

    UARTA_TX/UARTA_RX 由 CM 内核所有


    问题 1
    在初始化期间、CPU1 将 GPIO42 和 GPIO43 多路复用器配置到 UART、启用所需的时钟、然后 CM 内核开始使用它们进行 UART 通信。
    运行一段时间(例如,1 小时后)后、CPU1 是否可以将同一 GPIO42 和 GPIO43 重新配置回 USB (USB0_DM / USB0_DP) 并再次开始使用 USB?
    简而言之、是否支持在 UART (CM) 和 USB (CPU1) 之间进行这些引脚的动态运行时切换、而不仅仅是在初始化期间进行切换?


    问题 2.
    当 CM 内核使用 GPIO42 和 GPIO43 作为 UART 时:
    如果用户连接了 USB 电缆、USB 模块(CPU1 侧)是否仍会检测/接收任何 USB 中断或连接事件、或者 USB 是否会由于这些引脚多路复用至 UART 而完全处于非活动状态?


    主要要求
    我的目标是将 GPIO42 和 GPIO43 用于 UART 和 USB、并在运行时动态切换功能、而不仅仅是在启动时。
    这种方法是否值得推荐和可靠、或者是否会导致稳定性/资源冲突?

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

    尊敬的 Jayashree:

    1. 我看到、对于问题 1、我不知道有任何问题、但可以让我循环地邀请 GPIO 专家进行评论。
    2. 如果没有为 USB 配置 GPIO、它仍然可以运行、它只是不会将任何信号传递给外界。 从外设的角度来看、它的运行方式与正常相同、外设不知道 GPIO 是否已连接。 我不太了解 USB 中断事件、但如果没有多路复用到 USB 的 GPIO、任何依赖于来自外部信号的信号的东西都无法触发中断。
    3. 我还将推迟到 GPIO 专家进行讨论。 然而、要补充一点、我建议在进行多路复用器切换时将两个模块保持在复位状态、以确保外设不会进入意外状态。

    此致、

    Delaney

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

    尊敬的 Jayashree:

    ]我的目标是将 GPIO42 和 GPIO43 同时用于 UART 和 USB、并在运行时动态切换功能、而不仅仅是在启动时切换。
    这种方法是建议的且可靠的、还是会导致稳定性/资源冲突?

    只要在切换引脚多路复用时正确地将 USB/UART 模块置于复位状态、就可以执行此操作。

    此致、

    彼得