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.

[参考译文] AM2634:用于多核的 Enet CPSW

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1481463/am2634-enet-cpsw-for-multicore

器件型号:AM2634

工具与软件:

大家好、团队成员:

我需要使用 Enet CPSW 启用两个 RGMII 端口、每个端口都分配给不同的内核。 但是、在试图启用它们时、冲突正在发生。 如何正确配置 CPSW 以启用两个 RGMII 端口而不发生冲突?

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

    Anjana、您好!

    能否提供有关发生冲突的更多详细信息?

    可以配置 SoC、以便由给定内核管理来自每个 CPSW 端口的数据、但是 CPSW 外设的初始配置必须仅由单个内核完成。

    此致、

    Zackary Fleenor

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

    您好、Fleenor:

    我担心我们无法同时在两个内核中启用 CPSW 配置、对吗? 启用 ENET_CPSW0 、它包括两个 RGMII 端口、但我的要求是将每个 RGMII 端口分配到不同的内核。 不过、由于 ENET_CPSW0 那么我们如何正确地处理这种情况呢?

    如果我的理解不正确、请更正我。

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

    嘿 Anjana、

    这是什么意思:

    将每个 RGMII 端口分配到不同的内核

    一个内核负责 CPSW0的初始配置,但任何内核都可以使用 EnetApp_acquirehandleInfo()执行相关的 API。   如需更多信息、请参阅 AM263x MCU+ SDK:Enet 迁移指南。

    我将邀请我们的软件专家提供更多反馈。

    此致、

    Zackary Fleenor

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

    Anjana、您好!

    正如 Zack 所指出的、只有1个内核可以配置 CPSW。 syscfg 不会让您在设计系统时添加两个 CPSW 实例(每个内核一个)。 此外、两个 RGMII 端口还会链接到将添加 ENET CPSW0的内核。

    您是否想解释您的应用设计以及为什么要在其他内核上专门进行一个端口处理? 网络应用是否占用大量 CPU 资源?

    此致、
    Shaunak

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

    你好、Shaunak

    对于 AM263x 上的 CPSW (以太网交换机)配置、我有点困惑。 我的理解是、CPSW 的单个实例可以支持两个 RGMII 端口、可以在一个内核上配置一个 RGMII 端口、而在另一个内核上配置第二个 RGMII 端口。

    根据 Fleenor 的解释,我的解释如下:

    • 一个内核应负责通过启用CONFIG_ENET_CPSW0和设置来初始化 CPSW 端口1 与其中一个 RGMII 接口配合使用。
    • 然后、另一个内核应使用获取对 CPSW 实例的访问权限EnetApp_acquireHandleInfo()、从而允许它进行配置和使用 端口2 同步。

    在我们的特定设计中、有两个不同的网络应用在单独的内核上运行。 每个应用应使用一个专用以太网端口进行通信。

    您能否确认我的理解是否正确、或者我是否需要重新考虑任何方面?

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

    Anjana、您好

    让我在内部与其他以太网专家讨论这一点、并在一天结束或明天上半年回来。

    此致、
    Shaunak

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

    你好、Shaunak

    您能否提供有关我们问题状态的最新信息? 我们希望了解有关此事的任何新信息或进展详情。

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

    Anjana、您好!

    我在此想对用例有一个深入的了解。 这是可能实现的、但我们没有任何开箱即用的解决方案。 我可以简单介绍一下、但首先要访问该设计。 您能否分享介绍为不同 R5F 内核保留端口的任何方框图或系统用例图?

    如果不是通过公共论坛、您可以通过电子邮件与我共享、也可以在 E2E 个人聊天中分享。

    此致、
    Shaunak

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

    你好、Shaunak

    我提供了一个表格、其中列出了分配给每个内核的端口。 这两个内核通过处理器间通信(IPC)相互通信。 该表概述了每个内核的特定端口分配、确保它们之间进行适当的协调和数据交换。

    磁芯- 1
    1个 SPI
    2个罐
    2个 I2C
    磁芯- 2.
    1个 UART
    磁芯- 3.
    1个 UART
    1倍 ETH
    磁芯- 4.
    1个 UART
    1个 EMMC
    1倍 ETH

    请为我们提供后续步骤的指导。

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

    Anjana、您好!

    我与团队内部进行了讨论。 一些后续问题:

    1.您在两个 R5F 内核上运行哪些以太网应用程序?
    2.仅1个 R5F 核心应用程序处理所有需求的限制是什么?
    3.您的吞吐量和延迟要求是什么? (两个内核)
    4.您的应用程序中的最大数据包速率是多少? (两个内核)

    此致、
    Shaunak

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

    你好、Shaunak

    您在两个 R5F 内核上运行哪些以太网应用?

    →我将运行两个不同的以太网服务器应用程序、每个应用程序分配给单独的 R5F 内核。 这些服务器将独立运行、确保单独处理每个应用程序的网络通信。 每个内核将管理其各自的以太网端口、从而允许高效且隔离地处理网络流量。

    仅使用一个 R5F 内核来处理所有要求有什么限制?

    →管理两个以太网服务器应用程序的单个 R5F 内核可能会导致资源争用、增加处理负载和潜在的调度冲突。 通过将每个内核分配给专用以太网端口、系统可确保隔离和高效的处理、防止服务器之间的干扰、并提高整体性能和可靠性。

    您的吞吐量和延迟要求如何? (两个内核)

    → 该系统旨在实现1Gbps 的吞吐量、同时保持每个数据包50–200 µs 的延迟、从而确保高效高速的以太网通信。

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

    Anjana、您好!

    感谢您分享详细信息、我这边有一些要点:
    1.由于当前软件设计和复杂性、MCU 上的多核以太网很复杂。
    2.配置中存在歧义、因此根据设计、建议仅使用1个内核来配置 CPSW。 两个内核不应同时访问 CPSW 寄存器。 TI 已有一些面向多核 CPSW 的现有解决方案(EthFW 模型)、但不适用于 MCU、近期没有支持该解决方案的计划。  EthFW 设计使一个内核成为 CPSW 主内核、而其他是 CSPW 客户端内核(AM26x MCU 上不存在)。 在 EthFW 中、主器件通过 IPC 执行所有 CSPW 配置、如果客户端要更改配置、则会向主器件发送信息。
    3.在 MCU 上、此型号不可用。 (software-dl.ti.com/.../ethfw_c_ug_top.html)

    此处有两种方法:
    1.实现 EthFW 模型,让 Core-3成为主处理器,而 Core-4成为客户端(通过硬编码流 ID 仅打开 DMA 通道)。 必要时调用 Enet DMA 相关函数。 这可能很复杂、根据当前的路线图、AM26x MCU 上没有计划支持该功能。 因此、这必须在您的末端进行驱动
    2.根据某些数据包内容,将数据包传输到另一个 R5F 内核。 让一个内核处理所有 CPSW 配置、 通过 IPC 或 LwIP 桥接器根据某些数据包内容将数据传输到其他内核。 一个内核负责所有配置和 CPSW 处理、另一个内核负责数据处理。 这可能会增加一些软件开销、但这是一种可能且更简单的解决方案。

    此致、
    Shaunak