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.

[参考译文] AM6442:使用外部开关(KSZ9897R)进行以太网通信

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1362623/am6442-using-external-switch-ksz9897r-for-ethernet-communication

器件型号:AM6442

您好!

我们需要使用 KSZ9897R 交换机在 AM64上进行以太网连接。 它们通过 RGMII 连接。 我们尝试使用 SDK 中的 LWIP TCPIP 服务器示例使其正常工作、但网络从未启动:

能否告诉我们、 我们需要在代码中更改哪些内容才能集成  KSZ9897R?

我们使用 SDK v09.01.00

此致、

Andrean

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

    您好、Andrean:

    您是否遵循了任何文档来实现此目的? 您能帮助我解决您对 SDK 示例所做的更改吗?

    此致、

    Nitika

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

    您好、Nitika、

    感谢您的答复!  

    我当时正在尝试了解 Enet 驱动程序是否可以在不对开关进行配置的情况下使用该开关。  我刚刚尝试删除"MDIO 主站"并将端口设置为"捆绑"模式:

    它是否足以 使它正常工作(假设它的配置良好)、或者我是否需要如 https://software-dl.ti.com/mcu-plus-sdk/esd/AM64X/09_01_00_41/exports/docs/api_guide_am64x/enetphy_guide_top.html 中所述实施完整的驱动程序 ?  

    此致、

    Andrean

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

    您好、Andrean:

    我已将您的问题指示给我们更熟悉您的问题的专家。

    请允许他们留出一些时间来与您联系。

    此致、

    Nitika

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

    您好、 Andrean:

    您似乎正在使用 AM64x 进行定制电路板设计。

    您能帮我讲一讲定制电路板架构的方框图吗?

    在您的用例中、流量是如何流动的?

    您要配置的接口类型是什么?

    您是否已获得 TI 评估的电路板原理图?

    此致

    Ashwani

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

    Ashwani 您好!

    您似乎正在使用 AM64x 进行定制电路板设计。

    是的、我们计划使用定制电路板。 目前、我们处于评估阶段。

    您能帮我讲一讲定制电路板架构的方框图吗?  在您的用例中、流量是如何流动的? 您要配置的接口类型是什么?

    这是一个有关我们拥有的器件的抽象方框图。  

    KSZ9897R 提供5个 PHY 端口和2个 RGMII 端口。 5个 PHY 连接到不同的器件(为简单起见、我仅在图片中添加了两个)。 其中一个 RGMII 通过评估板上使用的同一接口连接到 AM64芯片:

    目前、我们有一个用于开关配置的 I2C 接口、但我们可以轻松地将其更改为 MDIO 引脚。 我们使用 strap 配置引脚为 RGMII 模式、速度、自动协商等配置开关 如果我们启用交换机的电源并按图中所示连接2台 PC、那么我们可以对这两台 PC 执行 ping 操作。 在下一步、我们希望使用 TI TCP Server 示例在 AM64与其中一台 PC 之间建立通信。 因此、我们禁用了 MDIO 主站并启用了"捆绑模式"。 我们期望它能尽快建立通信、但 ENET 驱动程序似乎需要通过 MDIO 读取 BMSR 寄存器。 是这样吗?  

    您是否已获得 TI 评估的电路板原理图?

    否、我们没有与 TI 进行任何审查。

    此致、

    Andrean

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

    感谢  Andrean 提供详细信息。

    RGMII 连接到 AM64芯片

    您使用的是 CPSW 还是 ICSSG?

    AM64x SIT 处理器数据表(修订版 G)(TI.com)

    AM243x MCU+ SDK:以太网和网络(TI.com)

    3.2.2.9. CPSW 以太网- Processor SDK AM64X 文档

    3.6.3.4. PRU_ICSSG 两端口以太网交换机- Processor SDK AM64X 文档

    此致

    Ashwani

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

    Ashwani 您好!

    我们使用 CPSW。

    此致、

    Andrean

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="475111" url="~/support/processors-group/processors/f/processors-forum/1362623/am6442-using-external-switch-ksz9897r-for-ethernet-communication/5212023 #5212023"]因此、我们禁用了 MDIO 主设备并启用了"捆绑模式"。 我们期望它能尽快建立通信、但 ENET 驱动程序似乎需要通过 MDIO 读取 BMSR 寄存器。 是这样吗?  [报价]

    这意味着您使用的是 MDIO 手动模式、而不是 MDIO 自动模式。 正确吗?

    AM64x MCU+ SDK:MDIO 手动模式启用(TI.com)

    AM64x MCU+ SDK:以太网 PHY 链路配置

    AM64x MCU+ SDK:以太网 PHY 集成指南

    刻度

    Ashwani

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

    Ashwani 您好!

    是的、我们使用 MDIO 手动模式。 我们也选择以下配置("非主设备"和"捆绑模式"):

    此致、

    Andrean

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

    感谢  Andrean、

    [报价用户 id="475111" url="~/support/processors-group/processors/f/processors-forum/1362623/am6442-using-external-switch-ksz9897r-for-ethernet-communication ]KSZ9897R 交换机[/QUOT]

    您正在 将 此交换机模拟为 MAC 还是 PHY?

    此致

    Ashwani  

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

    我们在 PHY 模式中使用它。

    此致、

    Andrean

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我刚刚尝试删除"MDIO 主设备"并将端口设置为"捆绑"模式:

    但是、您能否确认 MDIO 接口正常工作 并提供 PHY 寄存器值以在使用 AM64x-SOC 时检查状态?

    此致

    Ashwani  

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

    Ashwani 您好!

    您是否确认 TI 驱动程序在"捆绑模式"中使用 MDIO?  

    是的、我们可以提供这些值、但我们如何做到呢? 如果是通过 JTAG 进行的、您能否将其指向用于完成该操作的函数或代码?

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="475111" url="~/support/processors-group/processors/f/processors-forum/1362623/am6442-using-external-switch-ksz9897r-for-ethernet-communication/5212023 #5212023"]但 ENET 驱动程序似乎需要通过 MDIO 读取 BMSR 寄存器。 是这样吗?  [报价]

    有。

    您是否确认 TI 驱动程序已在"捆绑模式"下使用 MDIO?  [报价]

    说明文档 《AM243x MCU+ SDK:以太网 PHY 集成指南》中所述的具体情况

    [报价用户 id="475111" url="~/support/processors-group/processors/f/processors-forum/1362623/am6442-using-external-switch-ksz9897r-for-ethernet-communication/5212023 #5212023"]否、我们没有对 TI 进行任何评论。

    我建议审阅原理图以避免硬件问题。

    此致

    Ashwani

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

    Ashwani 您好!

    感谢您的帮助!

    我们调试了 MDIO 通信、发现开关在错误的前面发送了其数据和确认位。 如果我们更改 MDIO_manualModePhyRegRead22函数(在相反的前面读取)、似乎可以工作。 如今、我们将尝试更多地评估以太网连接。

    此致、

    Andrean

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    交换机将其数据和确认位发送到错误的前标

    感谢 Andrean 更新。

    我们将尝试在这些天更多时间评估以太网连接。

    等待您的结果。

    如果出现与此主题无关的其他问题、请单独提出主题。

    此致

    Ashwani

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

    Ashwani 您好!

    因此、我们测试了以太网、它似乎运行良好。 我们可以运行 TCP 服务器和客户端示例。 我们还有两个问题:

    1) 1)更改 IsAlive 函数以始终返回"true"的最简单方法是什么? 当我们通过 RGMII 与交换机通信时、连接始终接通。 RGMII 端口没有 PHY 寄存器。

    2) 2)如何在"捆绑"模式下更改以太网速度配置? 默认情况下、它设置为100Mb/s、但我们想尝试1Gb/s

    此致、

    Andrean

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

    如果它处于捆绑模式、则不应执行该代码。 对吗?

    我们如何在"捆绑"模式下更改以太网速度配置? 默认情况下、它设置为100Mb/s、

    您可以查找函数  

    EnetApp_initLinkArgs()

    和置位

    linkCfg->speed = ENET_SPEED_1Gbit;

    此致

    Ashwani

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

    Ashwani 您好!

    如果它处于捆绑模式、则不应执行该代码。 对吗?

    有。 想法是关闭通过 MDIO 进行的任何通信。 我们正在考虑通过 I2C 编写多个定制的访问功能、并且仅使用来自驱动程序的 RGMII 通信。 通常、自举引脚应该足以满足要求。 您确认吗?

    我考虑过使用驱动程序以及使用 MDIO 接口改变每个状态。 是否有另一种方法可以使用通用 PHY 驱动程序禁用 MDIO 通信?  

    此致、

    Andrean

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果它处于捆绑模式、则不应执行此代码。

    在我们的测试设置中、此代码在启动模式下未执行。

    如果 在您的案例中执行(可能是某些临界情况)、请告知我们。

    此致

    Ashwani

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

    是的、会执行。 我们看到了:

    - Enet 驱动程序进入 ENETPHY_FSM_STATE_INIT 状态。 在此设置默认值

    -然后,它进入 ENETPHY_FSM_STATE_FINING 状态。 在这里、它称为 EnetPhy_findingState、而 EnetPhy_IsAlive . 它还会读取 PHY 的 ID 来绑定正确的驱动程序。 选择通用驱动程序是因为不需要驱动程序。

    -然后进入 ENETPHY_FSM_STATE_LINK_WAIT 状态。 在该地址上、它会读取 PHY_BMSR 寄存器和用于自动协商的值。  

    -然后进入 ENETPHY_FSM_STATE_LINKED 状态。 进行调用 EnetPhy_isPhyLinked 以检测链路。  

    如果 MDIO"主站"为 false 并且端口已绑定、我们需要设置默认通信配置(100MB、全双工)。 EnetPhy_IsAlive  和  EnetPhy_isPhyLinked  应始终返回 true 或具有外部函数来读取此信息。 RGMII 连接没有 PHY 或  PHY_BMSR 寄存器。 因此、应从不同的寄存器读取状态。  

    此致、

    Andrean

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

    感谢 Andrean 提供详细信息。

    如果 MDIO"主设备"为假、端口已绑定

    我将对此进行介绍。

    由于我在6月12日之前不在办公室、所以只能在下周末查看。

    [报价 userid="475111" url="~/support/processors-group/processors/f/processors-forum/1362623/am6442-using-external-switch-ksz9897r-for-ethernet-communication/5237759 #5237759"] EnetPhy_IsAlive  和  EnetPhy_isPhyLinked  应始终返回 true

    同时、您可以尝试权变措施以强制返回 true。

    此致

    Ashwani

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

     Ashwani 您好!

    我们已经尝试了我们的权变措施、它似乎有效。 以太网通过交换机以1Gb 和100Mb 速度工作。 我是否正确理解 AM64的 SDK 不支持 MAC 到 MAC 的通信? 这就是我们要通过所有这些变化实现的目标。  

    此致、

    Andrean

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们已经尝试了我们的解决方法、它似乎可以起作用。 以太网通过交换机以1Gb 和100Mb 的速度运行[/报价]

    感谢您的更新。

    我是否正确理解适用于 AM64的 SDK 不支持 MAC 到 MAC 的通信?

    如果这是关于软件支持的问题。 我们没有任何 SDK 示例来验证 MAC-MAC 功能。

    对于硬件、请提出单独的问题。 我会将其转发给我们的硬件专家进行评论。

    此致

    Ashwani

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

    Ashwani 您好!

    感谢您的帮助!

    此致、

    Andrean