U-Boot:TI Sitara AM335X MII 连接到 Marvell 开关

U-Boot: TI Sitara AM335X MII connected to Marvell switch

我们有一款基于 AM335X Beaglebone black 的新板。我正在使用 Beagle U-Boot 和内核,看起来除了网络之外一切正常。不同之处在于,在我们的电路板上,AM3352 通过 MII 连接到 Marvell 5 端口交换机 (88e6341)。

我应该在 U-Boot 源代码(或内核)中做哪些修改以支持该架构?

谢谢。

在 U-Boot 中,非常粗略地说,您需要更改 board/ti/am335x/board.c::board_eth_init 以设置您拥有的内容,而不是默认选项,并且至少要查看 board/ti/am335x/mux.c 以确保您仍在根据需要设置 pinmux。并且您需要启用适当的以太网驱动程序。

然后,对于 Linux 内核,您需要根据您从参考平台所做的更改,编写一个正确描述您的硬件的设备树。

如何修改 u-boot 以支持基于 beagle bone black 而不是以太网 PHY 的板的解决方案,它具有与 MII 连接的 Marvell 交换机(在我的例子中是 88e6341):

首先,使用修复 PHY 驱动程序 - 它旨在与 DT 一起使用的唯一问题,因此如果它不是 ETH DT - 更改代码以忽略 CONFIG。确保软件将 Fix 驱动程序作为端口 phy 驱动程序。将其硬编码设置为 100 MB 速度和全双工。

另一个问题是交换机 CPU 端口和交换机端口的初始化:

在例程board_eth_init中(在board.c中)添加以下初始化(在cpsw初始化之后):

// Set port 0,1,2 to forwarding Mode (through Switch Port registers)

miiphy_write(name, 16,4, 0x7f);
miiphy_write(name, 17,4, 0x7f);
miiphy_write(name, 18,4, 0x7f);

/* RGMII Delay on Port 0 (CPU port), force link to 100Mbps */

miiphy_write(name, 16,1, 0x283d);

/* Power up PHY 1, 2, 3 (through Global 2 registers) */
miiphy_write(name, 28,25, 0x1140);
miiphy_write(name, 28,24, 0x9620);
miiphy_write(name, 28,24, 0x9640);
miiphy_write(name, 28,24, 0x9660);

在内核代码中只需更改文件 iam335x-bone-common.dts:

   &cpsw_emac0 {

\-       phy_id = <&davinci_mdio>, <0>;

\+       fixed-link = <1 1 100 0 0>;

phy-mode = "mii";

 };

祝你好运

阿夫纳