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.

[参考译文] AM263X-MCAL SDK:需要有关 AM263x-CC 上双 MAC 端口操作(两个 NETIF +两个 IP)的指南

Guru**** 2693225 points

Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1595715/am263x-mcal-sdk-need-guidance-on-dual-mac-port-operation-two-netif-two-ips-on-am263x-cc

器件型号:AM263X-MCAL SDK
主题: SysConfig 中讨论的其他器件

您好、

我正在使用 AM263x-CC LaunchPad 使用以下软件:

  • SDK: mcu_plus_sdk_am263x_10_02_00_13

  • 示例工程: enet_cpsw_udpclient_am263x-cc_r5fss0-0_freertos_ti-arm-clang

在示例中、CPSW 配置为使用 一个 MAC 端口 单个 lwIPnetif 实例
我的要求是使用 两个 CPSW MAC 端口 、每个都有它 自己的 IP 地址 、充当 两个独立的网络接口

对于如何正确完成此操作、我有几个问题:

   1. Enet CPSW 驱动程序实例的数量

SysConfig 允许配置 两个 Enet 实例

以便使用 两个 MAC 端口 作为独立接口:

  • 我需要创建 两个单独的 Enet CPSW 驱动程序实例 功能吗?

  • 或者是 A 单个 CPSW 驱动程序实例 是否足够、是否在一个驱动程序实例中处理了两个 MAC 端口?

    2. CPDMA 通道配置

    关于该用例的 CPDMA 配置:

    • 我需要吗 分配单独的 TX/RX 通道 每个netif/MAC 端口?

    • 还是可以接受 共享相同的 CPDMA RX 和 TX 通道 在两个netif实例之间、只要它们属于同一个 CPSW 实例?

    如果建议使用单独的通道、您能否说明对于具有两个netif实例的两个 MAC 端口、需要在 CPDMA 配置中进行哪些更改?

    lwIPnetif 实例和 TX/RX 任务

    我的理解是我需要 两个netif实例 、每个 MAC 端口一个、因此每个端口都可以有自己的 IP 地址并独立运行。

    当我创建两个netif实例(例如和)NETIF_INST_ID0NETIF_INST_ID1并尝试使用来调度它们时LwipifEnetApp_startSchedule()、代码会在此行中触发断言:

    EnetAppUtils_assert (netifIdx < LWIPIF_NUM_TX_PACKET_TASKS);

    在安排时会发生这种情况 netif实例。

    在中ti_enet_lwipif.c、这些宏当前定义为:

     
    #define LWIPIF_NUM_RX_PACKET_TASKS  (1U)
    #define LWIPIF_NUM_TX_PACKET_TASKS  (1U)

    我的问题是:

    • 对于两个独立的 MAC 端口/netif实例、
      如何 将其设置为 2. 、 需要更改哪些系统配置选项  

      • 或者是否有将多个netif实例映射到现有任务的推荐方法?

      • TI 建议是否使用任何示例或模式进行配置 多个netif实例 在 CPSW 上和 AM263x 上的 lwIP querry.png

     

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

    您好、

    Im 有点困惑、标题说 MCAL SDK、但屏幕截图来自 MCU_PLUS_SDK、这里使用的 SDK 是什么?

    此致、
    Shaunak

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

    你(们)好  
    我正在使用 MCU_PLUS_SDK、版本为  “ mcu_plus_sdk_am263x_10_02_00_13“

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

    Chethanrajtr、

       请查看此帮助。

    e2e.ti.com/.../am2634-syscfg-example-to-configure-cpsw-dual-mac-mode-to-support-2-lwip-netif

    此致

    Andre

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引述 userid=“678089" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1595715/am263x-mcal-sdk-need-guidance-on-dual-mac-port-operation-two-netif-two-ips-on-am263x-cc

    1. Enet CPSW 驱动程序实例的数量

    SysConfig 允许配置 两个 Enet 实例

    以便使用 两个 MAC 端口 作为独立接口:

    • 我需要创建 两个单独的 Enet CPSW 驱动程序实例 功能吗?

    • 或者是 A 单个 CPSW 驱动程序实例 两个 MAC 端口在一个驱动程序实例中处理

    [/报价]

    只需配置一个 Enet (CPSW) 接口。 您不需要两个 CPSW 驱动程序接口。 您可以使用单个接口配置两个 MAC 端口。

    [引述 userid=“678089" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1595715/am263x-mcal-sdk-need-guidance-on-dual-mac-port-operation-two-netif-two-ips-on-am263x-cc

    2. CPDMA 通道配置

    关于该用例的 CPDMA 配置:

    • 我需要吗 分配单独的 TX/RX 通道 每个netif/MAC 端口?

    • 还是可以接受 共享相同的 CPDMA RX 和 TX 通道 在两个netif实例之间、只要它们属于同一个 CPSW 实例?

    如果建议使用单独的通道、您能否说明对于具有两个netif实例的两个 MAC 端口、需要在 CPDMA 配置中进行哪些更改?

    [/报价]

    当您配置两个 netif 时、在每个 netif 的设置中、将有一个选项可选择此 Netif 将使用哪个 dma (RX 和 TX)。 您可以根据您的配置进行选择。

    您可以 Rx 为每个 nettif/Mac 端口添加不同的 Tx/Mac 信道。 根据您的要求分配数据包(请注意,这些数据包将由 enet-LLD 驱动程序重新使用、因此这里不需要过多的 DMA 数据包)。 您可以为的 Mac 端口提供不同的 CPDMA 通道/线程、它们具有相同的通道/线程。  

    您只需在 Enet DMA Channel config 中声明不同的 RX DMA 通道和 TX DMA 通道、然后在 LWIP Interface Config 中为正确的 NETIF 选择正确的通道。

    我的理解是我需要的 两个netif实例 、每个 MAC 端口一个、因此每个端口都可以有自己的 IP 地址并独立运行。

    是的。

    是否有任何 TI 建议的配置示例或模式 多个netif实例 在 CPSW 上和 AM263x
    上的 lwIP

    这里没有具体的指南、您可以直接按照 SDK 中的 enet_lwip_cpsw 示例进行操作(基于 LwIP)、使用两个不同的 Netif 实例。

    断言来自一个检查、该检查尝试获取 NETIF 索引 ID(0 或 1,基于两个端口)。 运行默认的 enet_lwip_cpsw 示例时、是否也运行到此断言?

    此致、
    Shaunak

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

    您好、
    首先、我需要相关答案。在 cpsw_enet UDP 客户端示例中、SysConfig 会生成 TX 和 RX 数据包任务计数、默认为 1。 当我为双 MAC 端口启用两个 netif 时、第二个 netif 触发器会断言、因为生成的任务计数不允许有多个。 由于这些值已锁定在 SysConfig 中、因此我们如何配置双重‑NETIF 操作? 是否有办法在 SysConfig 中增加 TX/RX 数据包任务?

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

    您好、
    这是在示例  enet_lwip_cpsw 中的情况、他们打开两个 netif、但他们调度单个 netif 实例 ID0、如何调度第二个 netif ID1。

    此致、
    Chethanraj T R

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

    尊敬的 Chethanraj:

    只能有一个默认的 Netif、用于路由没有正确目标(默认端口)的数据包。 您只需安排一个端口。 我建议您尝试 SDK 中的双角线示例 (enet-lwip-cpsw)、如果您在这种情况下对双角线接口的实现有任何问题、以防您在标准 SDK 演示中看到任何潜在的限制或阻止因素。

    由于这些值已在 SysConfig 中锁定、因此我们如何配置 dual‑netif 操作? 是否有增加 TX/RX 数据包的数量的受支持方法

    可以这样做、但我想了解要调度两个 NetIfs 的用例。 我们可以修改用于生成 SYSCFG 代码的标准模板、但这会产生不同的含义、因此我想了解此要求的根本原因、以及您在当前实现中观察到的潜在限制

    此致、
    Shaunak

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

    你(们)好  

    感谢您的解释。

    我想澄清我的 实际要求 并使用来确认是否可以实现目标 仅默认 NetIf 计划

    要求

    可以了 两个以太网端口 和:

    • 每个端口都必须配置有 不同的 MAC 地址

    • 每个端口必须具有 不同的 IP 地址

    • 每个端口与通信 进行通信 (不同的 MAC 和 IP)

    • 我需要发送 不同的数据流 传出的电流

    这对我的应用来说是一项严格的要求。

    需要澄清

    您提到:

    只能有一个默认的 NetIf、用于路由没有正确目标的数据包、并且只需要安排一个端口。

    我的问题是:

    1. 是否可以通过仅计划默认的 NetIf 来实现上述双端口要求?

    2. 如果两个端口都具有唯一的 MAC 和 IP 地址、lwIP/CPSW 如何决定在仅调度默认 NetIf 时在哪个物理端口 (NetIf) 上传输数据包?

    3. 当前 SDK 实现中是否有任何限制会阻止真正的双 NetIf 操作(每个端口独立的 MAC/IP)?

    有关示例

    我当前正在使用 enet_cpsw_udpclient示例。

    • 使用此示例、我能够为每个端口配置不同的 MAC 和 IP 地址。

    • 为我选中了 其中概述了 SysConfig 、我没有注意到以下两者之间的任何重大区别:

      • enet_cpsw_udpclient

      • enet_lwip_cpsw(您提到的双嵌套示例)

    根据我的理解、两个示例中似乎都可能出现类似的配置。

    请您澄清一下:

    • 是否enet_cpsw_udpclient足以满足此用例、或者

    • 如果enet_lwip_cpsw是特别需要的 支持真正的双 NetIf 操作 、主要区别是什么(特别是在调度和数据包路由方面)?

      如果可能的话、我也希望得到一份 短呼叫 澄清这些问题、因为这将有助于避免在实施过程中出现误解。

      此致、
      Chethanraj T R

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

    您好、

    [引述 userid=“678089" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1595715/am263x-mcal-sdk-need-guidance-on-dual-mac-port-operation-two-netif-two-ips-on-am263x-cc/6159728
    • 每个端口都必须配置有 不同的 MAC 地址

    • 每个端口必须具有 不同的 IP 地址

    • 每个端口与通信 进行通信 (不同的 MAC 和 IP)

    • 我需要发送 不同的数据流 传出的电流

    [/报价]

    是、这是可以实现的。 在双 MAC 模式下运行(在软件中为每个端口创建了双网络)时、每个端口可以有不同的 MAC 和不同的 IP 地址、并且每个端口都可以在不同的网络中进行通信。

    [引述 userid=“678089" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1595715/am263x-mcal-sdk-need-guidance-on-dual-mac-port-operation-two-netif-two-ips-on-am263x-cc/6159728

    我的问题是:

    1. 是否可以通过仅计划默认的 NetIf 来实现上述双端口要求?

    [/报价]

    NetIF 调度不是 LwIP 协议栈提供的功能、而是在 lwipIF(lwip 接口层、将以太网低级驱动程序连接到 LwIP 协议栈)中内置的功能。

    您可以通过现有设置本身来实现您的双端口要求。

    如果两个端口都具有唯一的 MAC 和 IP 地址、lwip/CPSW 如何在仅安排默认 NetIf 时决定在哪个物理端口 (NetIf) 上传输数据包?

    在 LwIP 级别、传输根据数据包的目标 IP 和路由表条目进行。 如果没有路由匹配、则仅使用默认的 netf 路由。 Enet-LLD 层将 NetIF 映射到 Mac 端口。 CPSW 硬件根据 ALE 表以及与 MAC 地址相关的 ALE 规则设置的相应端口掩码来转发数据包。

    我认为您错误地解释了安排 NetIf 的概念、计划的默认 nettif 并不意味着另一个 nettif 无法在网络中进行通信。

    当前 SDK 实施中是否存在任何限制、会阻止真正的双 NetIf 操作(每个端口独立 MAC/IP)?

    是的

    此致、
    Shaunak

    我需要更多的细节,这是一个非常开放的问题。 您是否发现当前的开箱即用双角线实施存在任何限制?

    [引述 userid=“678089" url="“ url="~“~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1595715/am263x-mcal-sdk-need-guidance-on-dual-mac-port-operation-two-netif-two-ips-on-am263x-cc/6159728

    我当前正在使用 enet_cpsw_udpclient示例。

    • 使用此示例、我能够为每个端口配置不同的 MAC 和 IP 地址。

    • 为我选中了 其中概述了 SysConfig 、我没有注意到以下两者之间的任何重大区别:

      • enet_cpsw_udpclient

      • enet_lwip_cpsw(您提到的双嵌套示例)

    [/报价]

    我想指出的是、要实现真正的双网络操作、您必须同时为两个端口启用 MAC 端口并将 MAC 标记为仅为两个端口启用。

    根据我的理解、在两个示例中似乎都可以使用类似的配置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:


    感谢您的答复。 我对这一问题仍有几个问题和一些疑问、我觉得通过电话可以更有效地澄清所有问题。


    我们能否在您方便的时候安排电话?

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

    尊敬的 Chethanraj:

    您能否确认用例:工业用例(非 Q1 器件)还是汽车用例(Q1 器件)。 因此、我可以设置合适的人员。

    此致、
    Shaunak

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

    您好、

    工业的用例。

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

    我已经通过电子邮件向您发送了详细信息。

    此致、
    Shaunak