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.

[参考译文] AM3352:EMAC 引导 PHY 地址

Guru**** 2615655 points

Other Parts Discussed in Thread: AM3352

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/581444/am3352-emac-boot-phy-address

器件型号:AM3352

您好!

我正在定制板上使用 AM3352器件。 对于生产编程、我想使用 EMAC1引导。
TRM "26.1.8.4.1器件初始化"描述了以太网 PHY 寻址"在双端口配置中、ROM 代码假定具有最低 MDIO 地址(0-31)的以太网 PHY 连接到 CPGMAC 端口"
我有双端口配置和多(5)个 PHY 连接到 AM3352 MDIO 端口(PHY 地址1-5)、而连接到 EMAC1的 PHY 具有地址"5"(即具有_最高_地址的 PHY、而不是_最低_地址的 PHY)。
根据 TRM 说明、我假设我需要 PHY 地址最低的以太网链路(此处为1)、以便使 EMAC1引导正常工作。 然而、当我在 PHY 地址5有一个以太网链路并且 PHY 地址1-4上没有以太网链路时、EMAC1引导工作正常
这是 TRM 描述问题还是 AM3352内部启动代码问题?
这种行为非常适合我的设置、但我需要确保这不是意外的引导代码偏差、该代码有时会被修复、从而中断我的生产设置。

此致

Tom

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

    从同一 TRM 部分:

    器件检测 MDIO 接口上的 PHY 是否处于活动状态、以及:
    –读取状态寄存器以检查以太网链路是否处于活动状态
    –读取控制寄存器以检测自动协商的操作模式
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我知道 AM3352会检测 PHY 是否处于活动状态并检查链路状态。
    我的问题是 PHY MDIO 地址、即检查哪个 PHY 是否处于活动状态、如果有多个 PHY 连接到 MDIO 总线、则询问哪个 PHY 的链路状态。
    TRM 表示仅使用具有最低 MDIO 地址的 PHY、但我可以看到使用了具有最高 MDIO 地址的 PHY。

    此致
    Tom
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的设计中其他 PHY 是如何连接的? 您能看到 MDIO 轮询所有这些内容吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    所有5个 PHY 都与 AM3352 MDIO 总线并联、并设置为不同的 MDIO 地址(1-5)。
    我可以按预期轮询所有这些地址、并且可以在 Linux 运行时验证5个不同 MDIO 地址的正确分配。
    当 AM3352启动 EMAC1启动时、我可以通过示波器看到 MDIO 总线上 PHY 的轮询(但我需要手动读取这些位并将其全部组合在一起)、我可以看到具有 MDIO 地址1-5的 PHY 正在响应。
    但是、当我检查通过 MDIO 返回的寄存器值时、我可以看到 MDIO 地址为1-4的 PHY 返回0x3808的寄存器1 (这意味着"无链路")、而 MDIO 地址为5的 PHY 返回0x382c (检测到链路)。
    从 TRM 的角度来看、我假设 AM3352正在评估具有最低 MDIO 地址(=1)的 PHY、但这个地址返回"无链路"。 看起来、AM3352使用地址5评估 PHY、因为它会根据该 PHY 的设置生成 BOOTP 帧。

    此致
    Tom
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 USER="Thomas Langammer "]但是、当我检查通过 MDIO 返回的寄存器值时、我可以看到 MDIO 地址为1-4的 PHY 返回0x3808作为寄存器1 (这意味着"无链路")、MDIO 地址为5的 PHY 返回0x382c (检测到链路)。[/QUESP]

    就是这样。 这是唯一链接到网络的 PHY。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、唯一链接到网络的 PHY 是具有 MDIO 地址"5"的 PHY。
    但 TRM 在26.1.8.4.1中说"在双端口配置中、ROM 代码假定具有最低 MDIO 的以太网 PHY
    地址(0-31)连接到 CPGMAC 端口1"
    因此、这意味着对于 ME ROM 代码、假设 MDIO 地址最低的 PHY (此处为1、来自地址1-5)连接到 CPGMAC 端口1。
    但我已将地址最高的 PHY (此处为5)连接到 CPGMAC 端口1、并且 ROM 代码会扫描此 MDIO 地址(5)而不是地址最低的 MDIO 地址(1)的链路可用性。
    因此、测量的行为看起来与 TRM 描述不匹配。
    此致
    Tom
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tom、

    为了澄清 ROM 的作用、它确实循环使用从地址0开始的 PHY 地址。  对于每个地址、它专门查找每个 PHY 中的链接状态(在 MII_STATUS_REG 中)。  在这种情况下、由于 PHY 地址1-4的链路状态失败、因此它在 PHY addr 5上建立、因为它从该 PHY 读取活动链路状态、并开始向该地址发送 BOOTP 数据包。  这样可以清除它吗?  如果是、我可以在 TRM 中添加一些措辞。

    此致、

    James

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

    您好、Tom、我想知道您的设计中是如何连接5个 PHY 的?  它们连接到哪些 MAC、或者两者之间有一个开关?

    对我最后一句的更多说明:  在您的情况下、由于 PHY 地址1-4的链路状态失败、因此它在 PHY addr 5上建立、因为它从该 PHY 读取活动链路状态、因此 ROM 假定 PHY addr 5连接到 EMAC1端口、并开始向该端口发送 BOOTP 数据包。  如果在引导期间 PHY 1-4上的链路处于活动状态、ROM 将假定 PHY 连接到 EMAC1 (第一个 PHY 从 PHY addr 0开始遇到活动链路)、并开始向 EMAC1端口发送 BOOTP 数据包。

    此致、

    James

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

    在您的描述中、现在一切都很清楚、因此我可以确保我的设计在生产时是安全的。 谢谢!
    TRM 澄清可能会有所帮助、但也许我是唯一这样理解的人。
    关于5个 PHY 的问题:我有一个5端口开关、此开关将集成 PHY (Micrel KSZ8895)连接到 AM3352。 这个开关有一个分离的 PHY、我通过 MII 连接到 EMAC1。 具有4个 PHY 的交换机具有第二个 MII 端口、我将其连接到 EMAC2。
    PHY 地址在芯片内部是固定的、因此我为连接到 EMAC1端口(我要用于 BOOTP 的端口)的单个 PHY 设置了 MDIO 地址5。 默认情况下,其它4个端口被禁用,因此我只能将端口5用于 BOOTP。

    此致
    Tom