主题中讨论的其他器件:SysConfig
尊敬的专家:
我的客户正在将 LWIP 和 Layer2示例组合用于其应用程序。 但 syscfg 中的以下设置是不同的、它们无法找到适用于这两个示例的通用配置。 有什么方法可以解决该问题?
此致、
挂起
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.
尊敬的 Hang:
实现上述目标的步骤如下:
1. 必须创建多个(例如两个) Rx 流和两个 Tx 通道、每个 Rx 流都与一个 PSIL 线程(主机端口)相关联。 请参阅多通道(请参阅此处)示例、了解如何执行此操作。
2.然后,应用适当的 ALE 分类器, 根据不同的参数将以太网数据包映射到。 采用此配置时、两个不同的协议栈(LwIP 和 EtherCAT 主站) 只能接收相关数据包。
在我详细介绍之前、您可以帮助我回答一些其他问题:
1.客户是否使用 MAC 模式?
2.数据包应该如何进行路由? 它将基于端口还是 Ethtype?
3.客户正在寻找的吞吐量是多少? 预期的 Lwip Tx 和 Rx 吞吐量以及 EtherCAT Rx 和 Tx 吞吐量?
4.数据包大小是多少? 他们将处理的最大数据包大小是多少?
此致、
Nitika
嗨、Nitika、
以下是您的问题的答案。
1.你的意思是双 Mac 模式还是开关模式? 它们使用双 Mac
2.它基于端口。 LWIP 和 EtherCAT 主站使用不同的端口。
客户确认使用3和4、但我们可能假设吞吐量和数据包大小与目前的示例类似。 也许我们可以 先完成这项工作、然后处理数据速率。
能否详细介绍一下如何做到这一点? (尤其是对于 ALE 分类器)
此致、
挂起。
尊敬的 Hang:
对延迟响应深表歉意。
您可以执行以下操作来实现上面给出的步骤:
步骤1:MCU+SDK 中的多通道示例实现了与 PSIL 线程(主机端口)和 Tx 通道关联的两个 Rx 流。 链接: https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/09_02_00_50/exports/docs/api_guide_am243x/EXAMPLES_ENET_LAYER2_MULTI_CHANNEL.html
第2步: 我们必须添加一个 ALE 分类器规则,以根据 EtherType 将数据包分类到 PSIL 线程(因此分类到不同的 Rx 流)。
示例 ALE 规则:将以太网数据包的 EtherType 映射为'EtherCAT,PSIL tp 线程 ID'1',其余数据包映射到 PSIL 线程'1'。
然后、RxFlow"1"的 DMA 中断回调函数应设置为"EtherCAT stack"、而 RxFlow"0"的 DMA 中断回调函数应设置为"LwIP stack"。
通过此配置、两个不同的堆栈(LwIP 和 EtherCAT 主站)将能够仅接收相关数据包。
您可以参考此处的 ALE 分类器实现: https://github.com/TexasInstruments/mcupsdk-core/blob/next/examples/networking/tsn/enetapp_cpsw.c#L197
此致、
Nitika
您好!
首先,在上面共享的 ALE 分类器参考代码中,有额外的检查"dstMacAddr"和"VLAN",你可以忽略。 您可以直接查看 ioctl CPSW_ALE_IOCTL_SET_POLIER 的使用情况。
上面的参考代码适用于 gptp_lwip_cpsw 示例采用与您所用方法相同的方法、但示例中有许多与您无关的 GPTP 相关配置、因此请仅将其用于参考: https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/09_02_00_50/exports/docs/api_guide_am64x/EXAMPLES_ENET_CPSW_TSN_LWIP_GPTP.html
对于 SysConfig 设置、您可以保留 ALE 配置的 layer2示例的默认设置。
此致。
Nitika
尊敬的 Hang:
在 layer2示例中启用"only enable packet info"设置也有问题。 示例无法正常工作。
我建议您从 LwIP 示例开始、并包含 Nitika 建议的更改。
1. 必须创建多个(例如两个) Rx 流和两个 Tx 通道、每个 Rx 流都与一个 PSIL 线程(主机端口)相关联。 请参阅多通道(请参阅此处)示例、了解如何执行此操作。
2.然后,应用适当的 ALE 分类器, 根据不同的参数将以太网数据包映射到。 采用此配置时、两个不同的协议栈(LwIP 和 EtherCAT 主站) 只能接收相关数据包。
步骤1:MCU+SDK 中的多通道示例实现了与 PSIL 线程(主机端口)和 Tx 通道关联的两个 Rx 流。 链接: https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/09_02_00_50/exports/docs/api_guide_am243x/EXAMPLES_ENET_LAYER2_MULTI_CHANNEL.html
第2步: 我们必须添加一个 ALE 分类器规则,以根据 EtherType 将数据包分类到 PSIL 线程(因此分类到不同的 Rx 流)。
示例 ALE 规则:将以太网数据包的 EtherType 映射为'EtherCAT,PSIL tp 线程 ID'1',其余数据包映射到 PSIL 线程'1'。
然后、RxFlow"1"的 DMA 中断回调函数应设置为"EtherCAT stack"、而 RxFlow"0"的 DMA 中断回调函数应设置为"LwIP stack"。
"only enable packet info"复选框
此复选框应针对您的用例设置勾号。
如何配置数据包池?
大数据包池计数= 48
其他设置与 LwIP 相同
此致
Ashwani
6月26日会议记录
进行上述更改后、针对(默认) RGMII 用例成功构建示例(R5F_0_0和 FreeRTOS 上的 enet_lwip_cpsw)。
请告诉我您还有进一步的疑问。
此致
Ashwani
7月2日会议纪要
使用以下代码作为 L2应用程序集成的参考:
void EnetL2App_mainTask(void *args) { Enet_Type enetType; uint32_t instId; EnetApp_GetDmaHandleInArgs txInArgs; EnetApp_GetTxDmaHandleOutArgs txChInfo; EnetApp_GetDmaHandleInArgs rxInArgs; EnetApp_GetRxDmaHandleOutArgs rxChInfo; /* TX channel handle */ EnetDma_TxChHandle hTxCh; /* TX channel number */ uint32_t txChNum; /* RX channel handle */ EnetDma_RxChHandle hRxCh; EnetApp_getEnetInstInfo(CONFIG_ENET_CPSW0, &enetType, &instId); Enet_Handle hEnet = Enet_getHandle(enetType, instId); EnetApp_setCpswAleClassifier(hEnet); EnetApp_getTxDmaHandle((ENET_DMA_TX_CH1), &txInArgs, &txChInfo); txChNum = txChInfo.txChNum; hTxCh = txChInfo.hTxCh; EnetApp_getRxDmaHandle((ENET_DMA_RX_CH1), &rxInArgs, &rxChInfo); hRxCh = rxChInfo.hRxCh; //Change layer-2 code to use above channel handles to Rx and Tx EtherCAT frames while(1) { DebugP_log("==========================\r\n"); DebugP_log(" L2 channel Test \r\n"); DebugP_log("==========================\r\n"); //Now we will receive EtherCAT frames on channel-1 } }
此致
Ashwani
尊敬的 Hang:
根据7月3日至3日的离线讨论内容、以下是完整的项目文件供您参考。
/cfs-file/__key/communityserver-discussions-components-files/908/enet_5F00_lwip_5F00_cpsw.zip
如果您需要任何进一步的帮助、请告诉我。
此致
Ashwani
你好、 Ashwani
与我的工程合并后、LWIP 任务现在可以正常通信、 ECAT 主站可以成功发送帧、但无法接收帧。 我发现其 RXDMA 回调函数没有响应、仍然没有检测到传入的 RXDMA 数据。 我想知道是否需要对 RXDMA 配置进行任何其他调整。
我还在您的参考项目中进行了以下调整。
1.当我运行 LWIP 任务时,如果 NETIF 的数目是2,我不成功,如果数字是1,我成功,所以我删除了一个 NETIF。
2.当 "ENET R x DMA 通道1"的"MAC 地址数量"为0时、Lay2任务将发生错误、并且代码中需要数字为1、所以我将 DMA 0和 DMA 1都改为1。
这是我与method./cfs-file/__key/communityserver-discussions-components-files/908/3146.LWIP.zip 合并的例程
此致
LAN
LWIP 任务现在可以正常通信
也就是说、无需进行您提到的调整、LWIP Rx 和 Tx 工作正常。 正确吗?
基本上、您需要进行调整才能使 EtherCAT Rx 正常工作。 正确吗?
、我不会成功当我运行 LWIP 任务时、如果 NETIF 的数量是2
NETIF= 0默认连接到 LwIP。
注释 :
在我的设置中、LwIP 应用正在使用 ENET_DMA_RX_CH0。
2. 当 "ENET R x DMA 通道1"的"MAC 地址数量"为0时、层2任务将发生错误、代码需要数字为1、因此我将 DMA 0和 DMA 1都更改为1。[/QUOT]
- 应该没有问题。 在我的设置中、为 LwIP 用例分配了2个 MAC 地址。
- 您的此更改是否会在 LwIP 端引起任何问题?
============================================================
- 您能否在问题发生后提供 CPSW 统计信息?
- 您可以参考 enet_layer2_cpsw 示例中的"EnetApp_printStats"。
此致
Ashwani
你好、 Ashwani
我的意思是、LWIP 任务可以在上面进行调整后正常通信。 也就是说、只有一个 NETIF 可以成功。 如果我将一个添加到 EtherCAT、LWIP 任务将不会成功。 我在没有选择默认值的情况下添加了第二个 NETIF、但它仍然不起作用。
在我调整 "MAC 地址数量"后、EtherCAT 任务还设法发送了帧、但无法接收帧、如上所述。
我不知道是否必须添加 NETIF 才能使 EtherCAT 任务成功接收帧。 但在我的尝试中,添加后,LWIP 将有问题。
此致
LAN
NETIF 必须添加才能执行 EtherCAT 任务
NETIF 仅与 LwIP 相关。
它无法接收帧
您可以检查的是
此致
Ashwani
LWIP 任务有以下错误。
这是因为您为 LwIP 使用单端口、而不是双 MAC (两个端口)。
ALE 分类器是否正常工作?[报价]
- 在问题发生后提供 CPSW 统计信息?
- 它有更多的计数"
- /*! ALE 策略器匹配*/
uint64_t alePolicyMatch;"- 您可以参考 enet_layer2_cpsw 示例中的"EnetApp_printStats"。
您能检查这些并提供更新吗?
此致
Ashwani
如何设置为双 Mac?
但是、为什么要设置双 MAC 模式?
我认为、您的要求是对两种类型的流量使用单一接口。 正确吗?
因此、只需一个 NETIF 就可以了。
[报价用户 id="606743" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1351767/am2432-sysconfig-conflicts-when-combining-lwip-and-layer2-example/5297550 #5297550"]"alePolicyMatch"=0这是主要问题。 策略在后续帧中不匹配。
您需要调试 L2路径(EtherCAT 帧的策略设置)。
此致
Ashwani
、 即对每种流量使用两个接口。
1. 具有 EtherCAT 流量的端口不需要 NETIF。
因此、SysConfig 中的单个 NETIF 足以实现 LwIP。
==================================
2.用于 LwIP 应用的 DMA 通道0。
DMA 通道1用于 EtherCAT
==================================
3.根据此代码、我假设 EtherCAT 帧来自 CPSW-MAC-Port2。 正确吗?
此致
Ashwani
我 得到以下信息
此硬件统计信息表明端口2已正确获得帧(Rx 计数)。 之后它会下降到某个位置。
[报价 userid="606743" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1351767/am2432-sysconfig-conflicts-when-combining-lwip-and-layer2-example/5297550 #5297550"]"alePolicyMatch"=0;这显然是与政策有关的问题。
您需要调试 L2路径(EtherCAT 帧的策略设置)。
您还可以查看以下几点:
EtherCAT 端口 MAC 地址设置?
EtherCAT 端口的 SysConfig MAC 地址?
来自端口2 EtherType 的帧?
将断点放在 EtherCAT 代码中并在接收 EtherCAT 帧时得到命中?
此致
Ashwani