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.

[参考译文] DP83822HF:通过固件进行 DP83822HF PHY 模式配置

Guru**** 2529560 points
Other Parts Discussed in Thread: DP83822HF

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1553278/dp83822hf-dp83822hf-phy-mode-configuration-via-firmware

器件型号:DP83822HF


工具/软件:

您好、

我目前正在使用  DP83822HF PHY  连接的  AM437x 处理器 、并且我在加电期间遇到了与 PHY 的模式配置相关的问题。

由于启动时硬件自举引脚上的电压电平不一致、PHY 有时会进行初始化  模式 3 、这将使其进入  光纤模式 。 这种行为是意外的、因为我们的应用需要在中运行  双绞线模式

我尝试通过配置相关寄存器、通过内核驱动程序将 PHY 切换到双绞线模式。 但是、PHY 没有按预期响应 LED1 保持熄灭 、它与光纤模式行为保持一致—表示模式更改可能不会完全成功。

 请任何人确认:

  1. 上电后、是否可以通过固件或内核驱动器可靠地将 DP83822HF 从光纤模式切换到双绞线模式?
  2. 是否有任何硬件限制或限制阻止此类模式在初始化后更改?
  3. 是否有任何建议的步骤或寄存器配置、来确保 PHY 在双绞线模式下运行、而不管初始自举状态如何?

非常感谢你就此问题提供指导。

此致、

Bhavya

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

    您好 Bhavya、

    通过寄存器切换到 CU 模式不应有任何限制。  LED1 是否在良好的引导状态下正常工作? CU 与 FX 最大的信号灯标志之一是处于 CU 模式时存在 FLP。 当您通过使用 TX 线路上的差分探头进行测量的寄存器切换到 CU 时、是否存在这种情况?

    此外、最好在任何操作更改后启动软件重新启动(寄存器 0x1F[14])。 这是否也得到实施?

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

    您好、Gerome、

    请查找问题的答案。

    1. LED1 在良好的引导状态下是否正常工作?  

    >是。 正常状态下工作正常。

    2 当处于 CU 模式时、CU 与 FX 的最大信号指示符之一是存在 FLP。 当您通过使用 TX 线路上的差分探头进行测量的寄存器切换到 CU 时、是否存在这种情况?

    >我没有检查 Tx 线路上的信号。 但为了识别光纤模式、我使用的是 ethtool 命令、从那里我发现它正在进入光纤模式。

    3 最好是在任何操作更改后启动软件重新启动(寄存器 0x1F[14])。 这是否也得到实施?

    >否 我在变革之前就这样做了。 我会尝试此器件、并告诉您它是否有效。

     

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

    您好 Bhavya、

    感谢您提供的信息。 我期待 MDI 的示波器截图、以及功能检查软件重启是否有助于应对您的情况。

    此致、

    Gerome

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

    您好、

    我能够通过内核更改引导配置。 之后、它能够在铜缆模式下正常工作。 但是、我发现、即使在进行更改之前以及进行更改后、我也面临着速度双工方面的一个问题。

    根据我的分析、我愿提出以下意见:

    1. PHY 状态寄存器 (0x10) 不反映预期的更新。
    2. 最近的内核修改似乎对该问题没有影响、因为即使不进行这些更改、也可以观察到类似的行为。
    3.  ethtool 提供的信息 与从 PHY 状态寄存器读取的值明显不匹配。
    4. 无论系统是处于故障模式还是在正常条件下运行、该行为都保持一致。

     

    为清楚起见:

    • 失效模式 是指器件最初引导进入光纤模式、并且内核尝试通过寄存器更新将其切换到铜缆模式的情况。
    • 正常模式 是指器件通过自举配置直接引导至铜缆模式的情况、无需更改内核级寄存器

    此致、

    Bhavya

     

    请查看随附的数据并分享您的反馈或 suggestions.e2e.ti.com/.../TiSpeedDuplexingData.xlsx

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

    大家好:

    要补充一点、 我想澄清一下、我当前面临的问题与任何内核更改无关。 我在未应用任何内核修改的情况下验证了行为、结果保持一致。

    此外、我已经使用两台标准的托管交换机测试了设置—Hirschmann RSPS25 和  Siemens Scalance XC206-2。 在这些交换机上观察到的结果与 PC 在 10 Mbps 和 100 Mbps 速度下获得的结果相同、表明问题在不同的硬件配置中仍然存在。

    目前、 10Mbps 半/全双工 和  100Mbps 半/全双工的配置 未按预期运行。 我提到的交换机不支持  1Gbps 速度、因此目前我需要确定支持  1Gbps 的标准交换机、我将很快分享该测试的结果。

    同时、我建议我们集中精力解决与 10 Mbps 和 100 Mbps 配置相关的问题。

    如果您有任何问题、或者您希望我深入了解其他问题、请随时与我们联系。  

    此致、

    Bhavya  

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

    您好、Nick、

    请查找您以下查询的回复

    1. CPSW 以太网与 PRU 以太网当前我们使用 PRU 固件。 我不理解 cpsw 与 PRU 的要点、因为我从未使用 CPSW 进行过尝试、因此对此我不知道。 请您澄清这一点。
    2. SDK 版本和内核版本(如果不使用 TI SDK)TI SDK 8.02   
    3. 什么是内核修改通过邮件共享您

    如果您有任何其他疑问或疑问、请告知我。

    此致、

    Bhavya

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

    您好、Nick 和 Gerome、

    我尝试对此问题进行调试、发现 PHY 的内部寄存器值没有正确更新的原因、我在 dts 文件  ti、no-half-douplex 中发现已启用、我禁用了此器件、并在其中添加了一些其他相关内容。 我已通过邮件向您分享了旧的和新的 DTS 文件。 但双工的问题仍然存在。  

    Name 说明 DTS 更改前 DTS 更改后
    值 0x7849 值 0x786D
    15 支持 100Base-T4 支持 100Base-T4:
    此协议不可用。 始终读为 0
    0 0
    14 支持 100Base-X 全双工 支持 100Base-TX 全双工:
    1 =器件能够执行全双工 100Base-TX
    0 =器件无法执行全双工 100Base-TX
    1. 1.
    13 支持 100Base-X 半双工 支持 100Base-TX 半双工:  
    1 =器件能够执行半双工 100Base-TX  
    0 =器件无法执行半双工 100Base-TX
    1. 1.
    12 支持 100Base-T2 全双工 支持 10BASE-Te 全双工:1 =器件能够执行全双工 10Base-Te 0 =器件无法执行全双工 10Base-Te 1. 1.
    11. 支持 100Base-T2 半双工 支持 10BASE-Te 半双工:1 =器件能够执行半双工 10Base-Te 0 =器件无法执行半双工 10Base-Te 1. 1.
    10:07 保留 保留 0 0
    9. 保留 保留 0 0
    8. 保留 保留 0 0
    7. 保留 保留 0 0
    6. SMI 前导码抑制 支持前导码抑制:
    1 =器件能够在前导码受抑制的情况下执行 SMI 事务
    0 =器件无法使用前导码执行 SMI 事务
    已抑制
    如果该位设置为 1、则仅在复位后需要一次前导码 32 位、
    操作码无效或转换无效。
    1. 1.
    5. 自动协商完成 自动协商完成:
    1 =自动协商过程已完成
    0 =自动协商过程未完成(仍在进行中,
    禁用或复位)
    0 1.
    4. 远程故障 远程故障:
    1 =检测到远程故障情况
    0 =未检测到远程故障情况
    远端故障指示或来自远程链路伙伴的通知
    FAULT。 该位会在读取或复位时被清除。
    0 0
    3. 自动协商能力 自动协商能力:
    1 =器件能够执行自动协商
    0 =器件无法执行自动协商
    1. 1.
    2. 链路状态 链路状态:
    1 =已建立有效链路(适用于 10Mbps 或 100Mbps 运行)
    0 =未建立链路
    如果链路随时变为低电平、则在链路后首次读取时此位值将读取为 0
    下降事件。 仅当第二次读取状态时、才会清除为 1
    建立链路后。
    0 1.
    1. Jabber 检测 Jabber 检测:
    1 =检测到 Jabber 条件
    0 =未检测到 Jabber 条件
    该位仅对 10Base-Te 运行有意义
    0 0
    0 扩展功能 扩展功能:
    1 =扩展寄存器功能
    0 =仅基本寄存器组功能
    1. 1.

    如果您有任何其他建议或意见、我应该检查一下、以便我们能够很容易地找到问题、请告诉我。

    此致、

    Bhavya

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

    您好、

    在调查  与 emac_adjust_link()  prueth_core.c 文件中的功能中的速度配置相关的问题时。 在使用 1Gbps 链路进行测试期间、我观察到函数最初会进入未检测到速度的默认条件。 但是、它随后意外地转换到 100Mbps 全双工模式。

    为了解决此问题、我修改了默认条件以将速度设置为 10Mbps 半双工。 尽管进行了这种更改、系统仍会切换到 100Mbps 全双工模式。 下面是相关的代码片段:

    下面是代码片段

    else if (emac->link) {
    		new_state = true;
    		emac->link = 0;
    		/* defaults for no link */
                    printk("default to 10 half \n");
    		/* f/w only support 10 or 100 */
    		emac->speed = SPEED_10;
    
    		/* half duplex may not be supported by f/w */
    		emac->duplex = DUPLEX_HALF;
    	}

    和相应的 LOG 输出:

    [  287.137600] emac_update_phystatus 
    [  287.137626] default to 10 half 
    [  287.137646] prueth pruss1-eth: emac_update_phystatus 
    [  287.137684] prueth pruss1-eth eth0: Link is Down
    [  287.142189] remoteproc remoteproc1: stopped remote processor 54434000.pru
    [  287.142438] net eth0: stopped

    如果您对代码或固件中可能影响速度配置的其他方面有任何见解、我非常感谢您的指导。 我将继续进行调查、并尝试找出根本原因。

    感谢您的支持。

    此致、

    Bhavya

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

    您好 Bhavya、

    我将在星期五上留出一些时间来查看您分享的信息。

    此致、

    Nick

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

    您好、Nick、

    请分享您的见解。

    此致、

    Bhavya

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

    您好 Bhavya、

    在这种情况下,我有了一个很好的机会,我也有一个很好的机会。 我将在星期五和星期一上休息更多时间。

    Linux SDK 8.2 上的 AM437x PRU 以太网仅支持 100M FD。

    如果您需要千兆位链路速度、则需要改用 CPSW 接口。 AM437x 上的 PRU-ICSS 链路速度限制为 100M、不过 AM64x 等器件上的 PRU_ICSSG 速度可以达到千兆位)。

    AM437x SDK 9.1 和 9.3 中放弃了 PRU 以太网支持、但我们将在即将推出的 AM437x SDK 11.1 (Linux 内核 6.12) 中重新添加对 PRU 以太网的支持。 有人告诉我,他们增加了对 10M FD 和 HD 以及 100M HD 的支持。 我要求确认这些其他速度已经过测试。

    此致、

    Nick

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

    您好 Bhavya、

    摘要 — 请与 Linux 链路伙伴(而不是 Windows)一起运行链路速度测试  

    根据我们的离线讨论、当 AM437x 设置为自动协商、以及链路伙伴设置为特定频率时、您会看到以意外频率和双工建立的链路:

    但是、您在 Windows 计算机上使用 GUI 界面设置链接速度、并且无法实际看到设置在 Windows 端生效。

    我怀疑 Windows 是“撒谎“给你的。 请使用运行 Linux 的链路伙伴(例如,运行 Ubuntu 的计算机或其他 AMxx Linux 电路板)。 这样、您就可以使用 ethtool 实际验证链路设置、并查看合作伙伴的统计信息:
    *确认您的速度和双工速度符合预期
    *链接状态应为“是“
    *应能同时看到 TX 和 RX 数据包

    为什么我认为这些测试无效?  

    PHY 在 2 个 PHY 之间协商链路速度。 因此、如果 MAC 只能以固定链路设置(例如 10M HD)与 PHY 交互、那么操作系统需要告诉 PHY 允许的链路速度是多少。 如果链路无法设置为允许的链路速度之一、那么我预计会看到链路无法建立。 ping 应该是不可能的。

    让我们来看看 1Gbps 全双工用例。 让我们假设 Windows MAC 和 PHY 之间发生了一些问题、即使 MAC 位于固定的 1Gbps 链路中、也允许 PHY 建立 100Mbps 全双工链路。 会发生什么情况?

    设置为固定链路模式的 MAC 将以 1G 速率生成 TX_CLK 和 TX 数据。 PHY 会将 RX_CLK 和 RX 数据设置为 100M 速率。 则 MAC 和 PHY 将无法相互通信。 ping 应该是不可能的。

    据我所知、AM437x 在自动协商设置下的行为似乎符合预期。 如果链路伙伴是强制执行较低或较高链路速度的链路伙伴、则在建立不同的链路速度时、可能是链路伙伴出现了错误行为。

    此致、

    Nick

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

    您好、Nick、

    感谢您的及时答复。

    我还怀疑我的 Windows 系统可能无法按预期运行、这导致我使用标准托管交换机进行进一步测试。 结果清楚地显示了不同设置之间的一致行为—无论是使用 PC 连接的 LAN 卡、禁用了外部适配器和自动协商的 Linux 系统、还是托管交换机。

    在最近对 DTS 文件进行更改后、我注意到前面所述的行为发生了变化。 如果您仔细查看 DTS 修改并确认它们是否正确、我将不胜感激。

    此外、我已经通过电子邮件分享了关于 IEEE 标准合规性的观察结果。 如果您能核实这些结果、我将不胜感激、因为在 Linux 系统上获得的结果与这些结果一致。

    需要强调的一个具体要点:

    • 执行命令时ethtool -s eth0 speed 1000 duplex full autoneg on、设备会执行 不会 回退到 100 Mbps 全双工。
    • 但是、在使用时ethtool -s eth0 autoneg on、设备 使用 按预期回退到 100 Mbps 全双工。

    除此之外、一切似乎都正常运行。

    为了您的方便、请查看随附的数据。我还在邮件中分享了相同的 Excel。

    场景 1 Autoneg off 命令: ethtool -s eth0 速度 xx 双工 xx 自动协商关闭
    Lenovo 适配器与 Linux 系统 速度和双工 Ping   ethtool eth1 信息 内部寄存器值
    0 1. 4. 5. 0x10 0x467 0x468
    10Mbps 半 正常工作 10Mbps 半 0x3100 0x786d 0x01e1 0x0021 0x0913 0xffea 0xffea
    10Mbps 已满 正常工作 10Mbps 半 0x3100 0x786d 0x01e1 0x0021 0x0913 0xffea 0xffea
    100Mbps 半速率 正常工作 100Mbps 半速率 0x3100 0x786d 0x01e1 0x0081 0x0f11 0xffea 0xffea
    100Mbps 全速 正常工作 100Mbps 半速率 0x3100 0x786d 0x01e1 0x0081 0x0f11 0xffea 0xffea
    1Gbps 完整 无法正常工作 10Mbps 半 0x3100 0x7849 0x01e1 0x0000 0x4902 0xffea 0xffea
    场景 1 Autoneg off 命令: ethtool -s eth0 速度 xx 双工 xx 自动协商打开
    Lenovo 适配器与 Linux 系统 速度和双工 Ping   ethtool eth1 信息 内部寄存器值
    0 1. 4. 5. 0x10 0x467 0x468
    10Mbps 半 正常工作 10Mbps 半 0x3100 0x786d 0x01e1 0x4c21 0x0913 0xffea 0xffea
    10Mbps 已满 正常工作 10Mbps 已满 0x3100 0x786d 0x01e1 0x4c41 0x4917 0xffea 0xffea
    100Mbps 半速率 正常工作 100Mbps 半速率 0x3100 0x786d 0x01e1 0x4c81 0x4f11 0xffea 0xffea
    100Mbps 全速 正常工作 100Mbps 全速 0x3100 0x786d 0x01e1 0x4d01 0x4f15 0xffea 0xffea
    1Gbps 完整 无法正常工作 10Mbps 半 0x3100 0x7849 0x01e1 0x0000 0x4902 0xffea 0xffea
    场景 1.
    RSP 25 赫希曼交换机 速度和双工 Ping   ethtool eth1 信息 内部寄存器值
    0 1. 4. 5. 0x10 0x467 0x468
    10Mbps 半 正常工作 10Mbps 半 0x3100 0x786d 0x01e1 0x0021 0x0913 0xffea 0xffea
    10Mbps 已满 正常工作 10Mbps 半 0x3100 0x786d 0x01e1 0x0021 0x0913 0xffea 0xffea
    100Mbps 半速率 正常工作 100Mbps 半速率 0x3100 0x786d 0x01e1 0x0081 0x0f11 0xffea 0xffea
    100Mbps 全速 正常工作 100Mbps 半速率 0x3100 0x786d 0x01e1 0x0081 0x0f11 0xffea 0xffea
    Autonego 正常工作 100Mbps 全速 0x3100 0x786d 0x01e1 0xcde1 0x0f15 0xffea 0xffea
    场景 1.  
    Scalance XC206-2 网管交换机 速度和双工 Ping   ethtool eth1 信息 内部寄存器值
    0 1. 4. 5. 0x10 0x467 0x468
    10Mbps 半 正常工作 10Mbps 半 0x3100 0x786d 0x01e1 0x0021 0x0913 0xffea 0xffea
    10Mbps 已满 正常工作 10Mbps 半 0x3100 0x786d 0x01e1 0x0021 0x0913 0xffea 0xffea
    100Mbps 半速率 正常工作 100Mbps 半速率 0x3100 0x786d 0x01e1 0x0081 0x0f11 0xffea 0xffea
    100Mbps 全速 正常工作 100Mbps 半速率 0x3100 0x786d 0x01e1 0x0081 0x0f11 0xffea 0xffea
    Autonego 正常工作 100Mbps 全速 0x3100 0x786d 0x01e1 0xcde1 0x0f15 0xffea 0xffea

    期待您的确认和反馈。

    此致、

    Bhavya

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

    您好 Bhavya、

    此命令是您在 Linux 系统上还是在 AM437x 板上运行的命令? 请提供在链接两端使用的命令。

    此致、

    Nick

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

    您好、Nick、

    我通过 Linux 系统提供了此命令。 我使用的是 Linux PC、通过它发出了以下命令

     ethtool -s eth0 速度 xx 双工 xx 自动协商关闭

    ethtool -s eth0 速度 xx 双工 xx 自动协商开启

    我在结果顶部一列中也提到过。 (例如方案 1 Autoneg off 命令:ethtool -s eth0 speed xx duplex xx autoneg on) 。 如果您有任何疑问、请告诉我。

    此致、

    Bhavya  

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

    您好、Nick、

    在设备端、我会将其保持在自动协商模式、只是设备端不会有任何变化 因此、在器件端、我不给出任何命令。 我仅从前面提到的 Linux 系统发出命令。

    此致、

    Bhavya