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.

[参考译文] DP83849I:具有单个 MAC 的外部模式 LWIP 堆栈编程层次结构

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1413477/dp83849i-exterder-mode-lwip-stack-programming-hierarchy-with-single-mac


尊敬的 TI 专家:关于使用单个 Mac 驱动至双端口 PHY 的正确驱动、我需要您的宝贵建议、建议和指导。

我的问题。
LWIP 堆栈传入数据会生成中断、但出于某种原因、UDP 接收或 TCP 接收回调函数无法正常工作。 我不确定接收过程中卡住了什么地方。

是否有相关的应用程序代码示例?

我看了论坛上几乎所有的主题,但我找不到解决方案。 任何信息都是我认可的

此致

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

    你好、Volkan!

    我通读了你的消息以及你 在这里的上一篇文章。 我想后退一步、从高层次开始讨论、然后慢慢地深入讨论细节。 下面我总结了我对最终用途应用的理解、如果我误解了我、请纠正我。

    MAC A 已连接、MAC B 悬空。  

    在正常模式下、数据流将从 MAC A 传输到端口 A。 您已确认此案例适用于您的应用。

    在扩展器模式下、数据流将从端口 A 流向端口 B、完全绕过 MAC 接口

    根据我的理解、您希望根据以太网数据包的目标地址在正常模式和扩展器模式之间切换。 我认为没有一个简单的方法可以做到这一点。 例如、如果我们处于扩展器模式、则 MAC A 上绝不会收到任何数据包、这意味着 MCU 将永远不会收到任何数据来决定何时通知849切换模式。

    作为一个快速实验来确认这一点、您能不能

    1. 将849开发套件板配置为扩展器模式
    2. 确认扩展器模式按预期工作、即发送到端口 A 的流量从端口 B 流出(反之亦然)
    3. 确认扩展器模式正常工作后、探测 MAC A 的 RX_D[1..0]线路、以查看是否可以看到任何活动
      1. 从 AN-1509应用手册的电缆扩展器部分中 、我们可以看到下图、其中的一个注释提到未使用 MAC 接口。

    此致、

    Alvaro

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

    嗨、阿尔瓦罗!
    感谢您的快速回复、提供了宝贵的意见和建议。 我很乐意分享该项目的细节和逐步取得的进展。 我会尽量简单地解释应用。
    如您在帖子中所述、PHY 的 MAC-A 通过 RMII 接口直接连接到 MCU 的 MAC。 MAC B 保持悬空。

    任何想法和建议
    此致
    Volkan

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

    尊敬的 Volkan:

    感谢您提供方框图、它对您很有帮助。 由于我在下面提到的原因、当前配置将无法实现。

    例如、如果我们处于扩展器模式、则 MAC A 上不会接收到任何数据包、这意味着 MCU 永远不会收到任何数据来决定何时让849切换模式。

    解决方案是同时使用 MAC、A 和 B 以及端口 A 和 B。这与在电路板上安装两个以太网 PHY 基本相同。

    此致、

    Alvaro

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

    尊敬的 Alvaro:
    我感到震惊的是,我一直在工作7个月的项目是垃圾。

    例如、如果我们处于扩展器模式、则 MAC A 上将不会接收到任何数据包、这意味着 MCU 将永远不会收到任何数据来决定何时让849切换模式。

    关于你的最后评论,我有点困惑,一些问题需要澄清。
    此致
    Volkan

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

    尊敬的 Volkan:

    感谢您的答复、我想道歉、因为我误导了您。 是的、RX 监控功能将允许 MAC A 查看从端口 A 接收的数据包。请参阅下面的我的响应(1-3)以了解更多详细信息。

    1. 阅读这篇文章后,我相信有几个错误的沟通。 其中最大的一项是:
      1. "关于这个实现如果我想通过 RMII 接口只连接 MAC-A' s (或仅连接 MAC-B 的) RX 和 TX 引脚,这意味着我能够同时作为双 PHY 的发送器和接收器与 PHY-A 和 PHY-B 端口通信? (某些延迟可能会被忽略)"
        1. 这不是真的。 MAC A 可以针对端口 A 进行配置  或者 端口 B、但 MAC A 无法同时通过端口 A 和端口 B 进行通信。
          1. 广播传输除外、在广播传输中、单个 MAC 可传输到两个端口
            1. 但单个 MAC 无法同时从两个端口接收数据
    2. 使用 snla086b.pdf 作为参考:
      1. 扩展器模式不包括 MAC 接口、如图6所示
      2. 但您的观点是正确的、  该应用手册的第3.4.1.1节 提到、在接入扩展器模式时、RX 监控默认已 启用、并可通过设置 RBR 寄存器0x17[12:11]= 00来启用
        1. 我很抱歉误解,这将允许您的应用程序运行.
    3. 这是一个很好的问题、我对误导你表示歉意。  您的理解是正确的
      1. 正常端口和扩展器端口之间的唯一区别是 TX MAC 线路(即从 MCU 到 PHY 的输出)未处于活动状态
        1. 称为 RX 监控
          1. 很抱歉、您的应用程序无法正常工作、但由于出现了混乱、我深表歉意。
    正如我之前所说的、它旨在通过动态配置多路复用器作为 PHY 寄存器的扩展器和正常端口模式、为同一网络中具有不同 IP 地址的多个节点提供数据流。
    PHY 将等待扩展器模式、直到接收到匹配的以太网数据包目标地址、如果需要响应、则将其模式更改为"正常"、以建立 MAC-A 到端口 A TX 引脚有效。[/QUOT]

    理论上这是可能的、但这似乎是菊花链更困难的实现。 您的 MCU 可用 MAC 接口的数量是否受限?  

    您当前的问题出在该 RX 监控功能中。 这到底是如何实现的? 我的理解说明如下

    1. 节点1处于扩展器模式且已启用 RX 监控
    2. 节点1接收到一个 需要响应返回主机 PC 的数据包
      1. MCU 需要写入849寄存器、才能将其配置为正常端口模式
      2. 在此期间、主机 PC 将无法向节点1的下游发送数据包
      3. MCU 将此响应发送至主机 PC、然后使用 RX 监控将 DP83849配置回扩展器模式

    如果主机 PC 尝试 ping 节点1、会发生什么情况?

    此致、

    Alvaro

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

    你好、Alvaro
    首先,感谢你的答案,我一直期待从你的答复:)是的,我问这个问题7个月前,因为我不知道 PHY 的确切细节。  无论如何、我需要你们的帮助和支持来使这个 PHY 正常工作。
    此致
    Volkan

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

    尊敬的 Volkan:

    在当前配置中、您的设置是否使用 ping 命令? 即、节点是否会识别该数据包已寻址、并将849更改为扩展模式?  

    是否仅在发送 UDP 数据包时才有此问题?

    此致、

    Alvaro

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

    嗨、阿尔瓦罗!
    我使用相同的配置执行了测试。
     在相同的配置设置下、在正常模式下启动时、MDIX 模式为1、而在扩展器模式下启动时、MDIX 模式为0。 这会影响吗?
    此致
    Volkan

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

    尊敬的 Volkan:

    目前调试重点是硬件、您能否在正常模式和扩展器模式之间比较 RX_Data 线路上的信号? 数据是否看起来相同?

    这是为了确认 RX 监控是否实际上正在将数据传输到 MAC。

    此致、

    Alvaro

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

    您好 Alvaro ,感谢您的快速响应,并很高兴对我的问题感兴趣。 我真的很满意 我真的很感谢了解我的情况。
    这个周末、我将执行异常 RX 信号的硬件测试。
    此致
    Volkan

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

    尊敬的 Volkan:

    总是很乐意提供帮助。 请探测任何 RX_Data 引脚、即 RX_D0或 RX_D1与50 MHz 时钟。 这是最有用的示波器图。

    感谢您首先澄清问题、星期一再见!

    此致、

    Alvaro

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

    Alvaro、您好、我已经用 RX 线做了一些探测测试;
    RX 线路正常模式和扩展器模式都正常;

    任何评论我赞赏
    此致

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

    你好、Volkan!

    对反应延迟深表歉意。 感谢您捕获这些示波器照片!

    这一点我想证实了 DP83849 RX_Monitoring 功能可以按预期运行、并将数据发送到 MAC。 您怀疑问题可能出在代码中。 遗憾的是、我无法帮助您调试此窗口。  当 PHY 处于扩展器模式且数据正在发送到 MAC 时、MAC 如何接收此数据?

    此致、

    Alvaro

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

    你好 Alvaro。 很高兴再次收到您的回复。
    是的、我同意您的意见、硬件运行良好。 我怀疑编程代码也是如此。
    此致
    Volkan

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

    尊敬的 Volkan:

    我还不熟悉您所指的函数、但我先从"关注数据"开始。 尝试查找数据首先接收的位置并从此处执行每个函数调用。  很抱歉未能提供进一步的帮助。

    此致、

    Alvaro