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.

[参考译文] AM5749:以太网交换机 KSZ9896

Guru**** 2555630 points
Other Parts Discussed in Thread: AM5728, AM3352

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1052592/am5749-ethernet-switch-ksz9896

器件型号:AM5749
主题中讨论的其他器件:AM5728AM3352

为了使用 AM5947向定制板添加额外的网络接口、我们考虑使用外部以太网交换机 KSZ9896。

从 KSZ9897数据表中:
KSZ9897R 是一款七端口管理型千兆位以太网交换机。 它具有五个10BASE-Te/100BASE-TX/1000BASE-T 物理层收发器(PHY)和相关 MAC 单元、以及两个具有可单独配置的 RGMII/MII/RMII 接口的 MAC 端口。
这两个端口可用于直接连接主机微处理器或微控制器、另一个以太网交换机或以太网 PHY。"

KSZ9896是同一器件、但只有一个 MAC 端口 可配置 RGMII/MII/RMII 接口。

为了评估板上的 KSZ9897、 已将开发板 (EVB-KSZ9897)连接到定制板、以替换 Marvell 以太网千兆 PHY 88E1510 (mac0)中的一个。

硬件更改

KSZ9897可通过三条不同的总线连接到 CPU SoC:I2C、SPI 和 MDIO (除了 RGMII 总线)。 但一次只能使用其中一个。
为了简化硬件更换、KSZ9897与 SPI 总线(SPI1)相连。
但对于最终的定制板、首选 MDIO 总线。

定制板的 RGMII0总线连接到 EVB-KSZ9897上的 RGMII 端口6 (取代 EVB-KSZ9897上的 KSZ9031器件)。

定制板的 SPI1总线连接到 EVB-KSZ9897上的 SPI 总线、 EVB-KSZ9897上的自举开关(SW4)必须处于"关闭"设置(以启用 SPI 接口)。

EVB-KSZ9897必须由其自己的电源链供电。

KSZ9897 devicetree 绑定

devicetree 绑定已经针对 ksz件进行了标准化、但在发布此提交的内核4.19之前添加了对 KSZ9897的支持。

它需要在控制器板 devicetree 上添加和启用 SPI1。 我们可以添加 mcp23s08 devicetree 节点来检查 SPI 总线是否正常工作(因为它是一个简单/基本的器件)。

mcspi1{(&M) 
状态="正常";

/* SPI1仅使用 cs0、CS1和 CS2 */
TI、SPI-num-cs =<3>;
gpio1:GPIO@1{ 
兼容="微芯片、mcp23s08";
GPIO 控制器;
#GPIO-cells =<2>;
Microchip、SPI-Present 掩码=<0x1>;
reg =<1>;
SPI-max-frequency =<1000000>;
};
};

通过这一点、我们可以在 dmesg 中看到:

# dmesg | grep spi 
[3.190319] OMAP2_mcspi 480980.SPI:注册主器件 SPI1
[3.190432] SPI spi1.0:设置:速度24000000、样本后缘、clk 反转
[3.190445] SPI spi1.0:设置模式3、8位/w、44000000 Hz 最大值--> 0
[3.190618] OMAP2_mcspi 480980.SPI:注册的儿童 spi1.0
[9.288140] gpiochip_find_base:找到新的基址为504
[9.288466] GPIO gpiochip8:(mcp23s08.0):添加了 GPIO 特性(254:8)
[9.288619] gpiochip_setup_dev:在器件上注册了 GPIO 504至511:gpiochip8 (mcp23s08.0)

SPI 侧添加 KSZ9897 devicetree 节点(未完成)可检测器件:

ksz9897: switch@0{
    compatible = "microchip,ksz9897";
    reg = <0>;
 
    spi-cpha;
    spi-cpol;
 
    phy-mode = "rgmii-rxid";
 
    spi-max-frequency = <44000000>;
 
    ethernet-ports {
        #address-cells = <1>;
        #size-cells = <0>;
 
        port@0{
            reg = <0>;
            label = "lan1";
            // local-mac-address = [00 00 00 00 00 00];
        };
 
        port@1{
            reg = <1>;
            label = "lan2";
        };
 
        port@2{
            reg = <2>;
            label = "lan3";
        };
 
        port@3{
            reg = <3>;
            label = "lan4";
        };
 
        port@4{
            reg = <4>;
            label = "lan5";
        };
 
        port@5{
            reg = <5>;
            label = "cpu";
            ethernet = <&cpsw_emac0>; // probably wrong should be something like "mac: ethernet@48484000" but how to select one of the two cpsw_emac ?
            phy-mode = "rgmii-id";
 
            fixed-link {
                speed = <1000>;
                full-duplex;
            };
        };
    };
};

# dmesg | grep spi 
[3.190319] OMAP2_mcspi 480980.SPI:注册主器件 SPI1
[3.190432] SPI spi1.0:设置:速度24000000、样本后缘、clk 反转
[3.190445] SPI spi1.0:设置模式3、8位/w、44000000 Hz 最大值--> 0
[3.190618] OMAP2_mcspi 480980.SPI:注册的儿童 spi1.0
[3.190645] SPI spi1.1:设置:速度1000000、采样前沿、clk 正常
[3.190657] SPI spi1.1:设置模式0、8位/w、1000000 Hz 最大值--> 0
[3.190821] OMAP2_mcspi 480980.SPI:注册的儿童 spi1.1

spi1.1上有一些内容(我们可以使用 spidev 驱动程序进行测试)、但其他任何驱动 程序都不使用该驱动程序(我们期望使用 ksz9477_spi.ko 驱动程序)。

您可以看到、KSZ9897端口5和 cpsw mac0之间的链接无法轻松描述。
在其他示例中、没有模糊之处、因为只有一个 Mac。

事实上、TI CPSW 本身就是以太网交换机。
让我们看看我们是否可以为定制板更改 cpsw devicetree。

TI CPSW (TI SoC 以太网交换机控制器)

TI Sitara AM57xx 使用 TI 的 IP 来提供两个千兆位以太网接口。 此 IP 使用具有标准化 devicetree 绑定的上游内核驱动程序。

下面的提取显示了具有两个"从器件"的 CPSW devicetree 节点、每个 EMAC 一个从器件。

mac: ethernet@48484000{
    compatible = "ti,dra7-cpsw","ti,cpsw";
    ...
 
    davinci_mdio: mdio@48485000{
        compatible = "ti,cpsw-mdio","ti,davinci_mdio";
        ...
    };
 
    cpsw_emac0: slave@48480200{
        ...
    };
 
    cpsw_emac1: slave@48480300{
        ...
    };
    ...
};

Mac 节点 cpsw_emac0 和 cpsw_emac1节点已完成、并已从特定于控制器板的 devicetree 中启用:

&mac {
    status = "okay";
    dual_emac;
};
 
&cpsw_emac0 {
    phy_id = <&davinci_mdio>, <0>;
    phy-mode = "rgmii";
    dual_emac_res_vlan = <1>;
};
 
&cpsw_emac1 {
    phy_id = <&davinci_mdio>, <1>;
    phy-mode = "rgmii";
    dual_emac_res_vlan = <2>;
};

实际的 devicetree 绑定的问题是 KSZ9897绑定期望直接使用以太网控制器"Mac:以太网@48484000"的节点。
但 KSZ9897绑定未指定从器件的处理。

此外、TI CPSW 预计会使用 MDIO 总线连接 PHY、而不是 SPI 总线。

对 TI 论坛进行了一些研究后、TI 和 CPSW 驱动程序似乎不支持我们要实现的目标、至少对于 AM3352和 AM5728:

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/649924/am3352-ethernet-switch-with-rmii-interface
"TI 在 Sitara 器件的 CPSW 上不支持 MAC 至 MAC 配置。"

"RMII 规范将接口定义为 MAC 至 PHY、因此 Sitara SoC MAC 不在 MAC 至 MAC 拓扑中进行测试或表征。 这适用于软件和硬件。"

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/711394/linux-am5728-mac-to-external-switch
"TI 不支持将 EMAC 连接到外部交换机的用例。 抱歉、我们无法就此问题提供帮助。"

https://github.com/Microchip-Ethernet/UNG8071/blob/master/KSZ/kernels/linux-3.18/drivers/net/ethernet/cadence/macb.c
"SOC MAC 驱动程序需要进行一些修改。 如需参考、请参阅 macb 驱动程序(Atmel SAMA5 SOC Mac 驱动程序)。"

https://github.com/Microchip-Ethernet/EVB-KSZ9477/tree/master/KSZ/linux-drivers/ksz9897/linux-5.3/drivers/net/ethernet
"内核4.9、4.19、5.3的微芯片攻击驱动程序、但仅适用于某些供应商:Cadence、Freescale、Micrel

DSA (分布式交换机架构)理解

在网络设备(netdev)的公共 Linux 内核邮件列表中、讨论 了带有 AM572x CPU (cpsw IP/驱动程序)和 KSZ9897以太网交换机的 DSA 交换机。

这是有关此类设置的潜在问题的良好信息来源。

它展示了如何修改 devicetree、配置网络接口和使用 ethtool 分析网络统计信息。

最后、用户(在修补/黑客攻击其内核之后)似乎(未确认)能够使用以太网交换机。

至少我们应该能够在定制板上执行相同的步骤。

原型的硬件问题

在测试期间、我们发现了硬件问题。

-电源问题。 绿色(电源)指示灯闪烁、以太网交换机设备真的很热。 3、3V 电源(1、5A)的功耗较高。

这是因为 Microchip 评估板上的屏幕打印有误导性。

在绝对最大额定值范围内、3、3V 电源被长时间(几个小时)连接至1、2V DVDDL。

在调查此问题时、从电路板上移除了多个器件(主要是 LAN7801和 KSZ9031以及一些电阻器)。

- TXC (RGMII)已断开连接(电缆损坏)

以太网交换机和 CPU 之间的链路需要添加一些电缆来将每个 MAC 连接在一起。 其中一根电缆(TXC)损坏。

结论


总结:

- CPSW Linux 驱动程序/devicetree 似乎不支持 MAC 到 MAC、但 有几个(成功?) 尝试

-硬件问题可能会损坏主板。

我们所做的修改似乎是正确的吗? 我们是否还必须进行其他修改才能允许使用此以太网交换机?

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

    您好!

    很抱歉耽误你的时间。 虽然 MAC 2 MAC 在 SDK 中不受官方支持(因为我们无法在 EVM/IDK 上进行测试)、但有几个客户在其器件上启用了它。 您可以使用 DT 的 fixed-link 属性来启用此功能。

    关于硬件问题,您能否提供原理图? 如果 SoC 连接存在问题、我们可以在内部对此进行讨论并返回给您。

    此致

    葡萄园

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

    您好!

    请找到原理图。 这是我们下一个电路板修订版的原理图。 正如我在文章中所述、我们使用原型(我们当前的电路板版本和评估模块、其中包含以太网开关)进行了测试。 我们原型的原理图是相同的、但布线要干净得多、因为我们将引脚连接在一起、而不是将其连接到干净的 PCB 上。

    此致、

    昆廷。