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.

[参考译文] MSP432E401Y:源 MAC 过滤不起作用

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1124301/msp432e401y-source-mac-filtering-does-not-act

器件型号:MSP432E401Y

您好的支持团队!

我使用 MSP432E401Y。 我在 Code Composer Studio 中编写一个汇编代码。

我想使用标准的 MSP432E401Y 功能进行 MAC 滤波。 首先、我尝试启用目标 MAC 过滤。 我将 MAC 写入 EMACADDR0L 和 EMACADDR0H。 目的 MAC 过滤功能完美。

对于源 MAC 过滤、我将采取以下步骤:

-我将 MAC 地址写入 EMACADDR1L 和 EMACADDR1H;

-我将寄存器 EMACADDR1H 中的第31位(AE)置位(地址滤波器模块使用第二个地址进行完美滤波)、第30位(SA)(MAC Address1[47:0]用于与接收帧的 SA 字段进行比较);

-我将寄存器 EMACFRAMEFLTR 中的位9 (SAF)置位(源地址滤波器被启用)。 EMACFRAMEFLTR 的所有其它位为0。

您将询问我如何检查滤波。 我向 MCU 发送一个具有以下参数的以太网帧:

-帧的目的 MAC 地址与 EMACADDR0x 中的地址不匹配

-帧的源 MAC 地址与 EMACADDR1x 中的地址匹配。

但 DMA 会丢弃帧。 我认为帧应该被接收、因为 EMACFRAMEFLTR 的第31位被清零(MAC RX 模块只传递通过 SA DA 地址滤波器的帧)。

 

此外、我清零 EMACADDR1H 中的位30 (SA)(MAC 地址1[47:0]用于与接收帧的 DA 域进行比较)、并发送与 EMACADDR1x 中的地址匹配的目标 MAC 地址帧。 但 DMA 会再次丢弃数据包。 只有当帧的目的 MAC 字段与 EMACADDR0x 匹配时、EMAC 才会接收帧。

 

我没有发现我的错误。 看起来 EMACADDR1x 始终处于禁用状态。 EMAC“看不到”位于 EMACADDR1x 中的地址。 但位31 (AE)= 1。 我在调试会话期间在"Registers"窗口中进行了检查。

 请帮帮我。 我觉得这个错误很小。

 

此致。

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

    Eugen、您好!

    根据您的解释、我在这里看不到任何明显的错误。  

    [引用 userid="471209" URL"~μ C/support/microriers/arm-based microrims-group/arm -based microrims/f/arm based microrims-forum/1124301/msp432e401y-source-mac-filtering-do-act"] AddressI clear 和 EMACADDR147中用于发送地址帧的位30 (SA)与 EMACADDR1中的 MAC 地址匹配,并与目标地址1:MAC 地址匹配。 但 DMA 会再次丢弃数据包。 EMAC 仅在帧的目的 MAC 字段与 EMACADDR0x 匹配时接收帧。[/QUERP]

    非常有趣。 使用 EMACADDR2x 时是否会发生相同的故障?  

    [~ userid="471209" URL" URL"μ C/support/microrims/arm-based microrims-group/arm -based microrims/f/arm based 微控制器-forume/1124301/msp432e401y-source-mac-filtering-do-act"]

    我没有发现我的错误。 看起来 EMACADDR1x 始终处于禁用状态。 EMAC“看不到”位于 EMACADDR1x 中的地址。 但位31 (AE)= 1。 我在调试会话期间在"Registers"窗口中进行了检查。

    [/报价]

    要清除的是、您是否看到 在调试会话期间正确加载了预期的 MAC 地址?

    在 EMACADDR1H 寄存器的[47:0]位设置为什么 MAC 地址?发送的地址是什么?  

    此致、
    Brandon Fisher

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

    尊敬的 Brandon:

    非常感谢您的回复。 我会回答您的问题。

    我没有尝试使用 EMACADDR2x 和 EMACADDR3x 执行此任务。 我将这样做(星期一,而不是更早)。

    EMACADDR1x 和调试会话。 我有 MAC 00:39:11:2E:EE:22、因此我写:

    EMACADDR1L:= 0x2E113900

    EMACADDR1H:= 0x000022EE

    然后、我修改位31和30:

    EMACADDR1H:= 0xC00022EE

    在调试会话期间,执行所有操作后,我会在 EMACADDR1H 中看到“0xC00022EE”。 因此、我 正确地写入了 EMACADDR1H。

     

    发送 UDP 帧的 SA 字段= 00:39:11:2E:EE:22、DA 字段= 00:39:11:2E:EE:21。 从我的角度来看、EMAC 必须接收帧、因为其 SA 字段与 EMACADDR1x 匹配。 我添加了、为了避免 DA 匹配、我将00:39:11:2E:EE:90写入 EMACADDR0x。

    此致。

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

    Eugen、您好!

    我在这些器件上进行 MAC 过滤的经验有限、但基于源地址和目标地址的寄存器值设置根据 TRM 看起来确实正确。 您可以尝试运行监听器来捕获实际的以太网流量。  

    此致、
    Brandon Fisher

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

    您好、Brandon。

    我也尝试应用 EMACADDR2x 和 EMACADDR3x。 结果是相同的。

    我尝试从另一侧检查滤波功能。 我将 EMACFRAMEFLTR 的位31置位、所有其他位为零。 在此模式下,“MAC 接收器模块将所有接收到的帧传递 给应用程序,而不管它们是否传递地址过滤器。 SA 或 DA 过滤的结果在接收状态字中相应的位被更新(通过或失败)”(SLAU723A、p946)。 在调试会话期间(带有断点)、我检查 RDES0的位30 (AFM)和位13 (SAF)。 我看到,位30变为“1”,但位13始终为“0”。

    是的、我始终使用 Wireshark 检查以太网流量。 此应用对于编程人员非常有用、可用作电工用的示波器。

    请尊敬的 Brandon、如果您发现 MAC 过滤的有用特点、请告诉我。

    此致。

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

    Eugen、您好!

    我将更深入地研究这一点、看看我们是否有类似的示例、您可以对比一下。  我将在明天向您提供最新信息。

    不过、在我看来、您描述的寄存器设置 应该是正确的、以便 进行完美的滤波。  

    此致、
    Brandon Fisher

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

    您好 Brandon。

    感谢您的搜索。 我希望您能找到该示例。

    我找到了一个解决方案、但这是一个糟糕的解决方案。 我以软件的方式过滤帧、但不在硬件中过滤帧。 我知道、这是一种异常的解决方案、但它部分解决了我的问题。 另一方面、通过这种方式、我可以创建更复杂的滤波器、其中包括优先级和各种条件。

    对我来说,真正的解决办法是令人感兴趣的,所以我将等待你的答复。

    此致。

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

    Eugen、您好!

    很抱歉耽误你的时间。 我很高兴您目前至少有某种变通办法。  

    浏览我们的代码库并 与我的一些同事一起检查它似乎没有显示出来、我们有显示完美滤波器设置的示例代码。MSP432E401Y 和 TMP4C129都是如此、它们具有类似的以太网外设、具有相似的配置要求。

    我会要求检查您的源代码、但在汇编语言中编写此代码可能超出了我们的支持范围。

    此致、
    Brandon Fisher

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

    您好 Brandon。

    无论如何、非常感谢您。

    是的、我可以为您提供我的代码的一部分。 整个代码太大。 但有很多事情是无法理解的,没有完整的准则和评论… 我可以将代码的一部分删除、然后删除所有次要详细信息、将评论翻译成英文。 我需要时间来完成它。

    当听到我编写汇编代码时、许多人感到惊讶。 它是如此的陈旧。 但我发现汇编代码更简单、更易于理解。

    此致。