工具/软件:Linux
DRA7xx MII 与 TJA1100
各位专家:
我将 DRA7xx 客户电路板与 MII 模式上配置的 TJA1100以太网 PHY 搭配使用。
SDK 版本为6.1.3、请访问以下链接 :omapedia.org/.../6AM.1.3_Release_Notes
如客户描述的那样、如果处理器以太网接口被配置为 MII 模式、TJA1100就会工作、而无需使用特定的 TJA1100驱动程序。
我尝试在 U-Boot 和内核上将以太网配置为 MII 模式、但似乎不正确。
我可以使用 MII 命令读取 PHY 寄存器、但 U-Boot 日志显示无法找到 PHY:
NET:无法获取以太网@48484000的 PHY:Addr 3
eth0:以太网@48484000
我使用 ifconfig 命令可以看到有一个 eth0设备、但 Kernel lod 显示:
[27.717882] net eth0:正在初始化 cpsw 版本1.15 (0)
[27.723239] net eth0:已初始化 cpsw ale 版本1.4
[27.72929293] net eth0:ALE 表大小1024
[27.736542] libphy:PHY 4848485000.MDIO:03未找到
[ 741365] net eth0:PHY 480.03[27.48err 0:在 MDIO 上未找到从设备上找到[27.480.03]
作为 U-Boot /内核日志、DRA7x 似乎找不到 PHY。
我已经检查了 TJA1100寄存器和硬件配置、PHY 地址为0b11、因此我只需修改 U-Boot /内核上的以下设置:
1.引脚复用:修改 MII 的默认 RGMII 接口、并将 MDIO 引脚从(V1、U4)修改为(D3、F6)。
PHY ID:默认 cpsw_emac0在器件树设置中为 phy_id 使用0、将0修改为3。
PHY 模式:将默认"RGMII"修改为"MII"
以下是我对 U-Boot 和内核器件树的修改:
U-Boot mux_data.h
//删除原始 MDIO 定义(V1、U4),添加新的 MDIO 定义(D3、F6)。 #if 0 {MDIO_MCLK、(M0 | PIN_INPUT_PULLUP | SLEWCONTROL)}、 /* MDIO_MCLK/MDIO_MCLK * {MDIO_D、(M0 | PIN_INPUT_PULLUP | SLEWCONTROL)}、 /* mdio_d.mdio_d */ 其他 {VIN2A_D10、(M3 | PIN_INPUT_PULLDOWN | SLEWCONTROL)}、// vin2A_d10.mdio_MCLK * {VIN2A_D11、(M3 | PIN_INPUT_PULLDOWN | SLEWCONTROL)}、// vin2A_D11.mdio_d * #endif //删除原始 RGMII 定义,添加新的 MII 定义。 #if 0 {RGMII0_TXC、(M0 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、// rgmii0_txc.rgmii0_txc * {RGMII0_TXCTL、(M0 | PIN_INPUT_PULLUGD | MANUAL_MODE)}、 /* rgmii0_txctl.rgmii0_txctl * {RGMII0_TXD3、(M0 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、// rgmii0_txd3.rgmii0_txd3 * {RGMII0_TXD2、(M0 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、// rgmii0_txd2.rgmii0_txd2 * {RGMII0_TXD1、(M0 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、// rgmii0_txd1.rgmii0_txd1 * {RGMII0_TXD0、(M0 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、// rgmii0_txd0.rgmii0_txd0 * {RGMII0_RXC、(M0 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、// rgmii0_RXC.rgmii0_RXC * {RGMII0_RXCTL、(M0 | PIN_INPUT_PULLUGD | MANUAL_MODE)}、 /* rgmii0_rxctl.rgmii0_rxctl * {RGMII0_RXD3、(M0 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、// rgmii0_rxd3.rgmii0_rxd3 */ {RGMII0_RXD2、(M0 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、// rgmii0_rxd2.rgmii0_rxd2 */ {RGMII0_RXD1、(M0 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、// rgmii0_rxd1.rgmii0_rxd1 */ {RGMII0_RXD0、(M0 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、// rgmii0_rxd0.rgmii0_rxd0 */ 其他 {MDIO_D、(M3 | PIN_INPUT 下拉| MANUAL_MODE)}、 /* mdio_d.mi0_txer * {UART3_RXD、(M3 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、/* uart3_Rxd.mii0_rxdv * {UART3_TXD、(M3 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、/* uart3_TXD.mii0_rxclk * {RGMII0_TXC、(M3 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、// rgmii0_txc.mii0_rxd3 * {RGMII0_TXCTL、(M3 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、//* rgmii0_txctl.mii0_rxd2 * {RGMII0_TXD2、(M3 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、// rgmii0_txd2.mii0_rxer * {RGMII0_TXD1、(M3 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、// rgmii0_txd1.mii0_rxd1 */ {RGMII0_TXD0、(M3 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、// rgmii0_txd0.mii0_rxd0 */ {RGMII0_RXC、(M3 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、// rgmii0_RXC.mii0_txclk * {RGMII0_RXCTL、(M3 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、//* rgmii0_rxctl.mii0_txd3 * {RGMII0_RXD3、(M3 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、// rgmii0_rxd3.mii0_txd2 */ {RGMII0_RXD2、(M3 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、// rgmii0_rxd2.mii0_txen */ {RGMII0_RXD1、(M3 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、// rgmii0_rxd1.mii0_txd1 */ {RGMII0_RXD0、(M3 | PIN_INPUT_PULLUGDOWN | MANUAL_MODE)}、// rgmii0_rxd0.mii0_txd0 */ #endif
U-Boot dra7-EVM.dts
cpsw_default:cpsw_default{ pinctrl-single、pins =< /*从属设备1 */ 0x240 (PIN_INPUT | MUX_MODE3)/* MDIO_d.mii0_txer * 0x248 (PIN_INPUT | MUX_MODE3)/* uart3_Rxd.mii0_rxdv * 0x24c (PIN_INPUT | MUX_MODE3)/* uart3_TXD.mii0_rxclk * 0x250 (PIN_INPUT | MUX_MODE3)/* rgmii0_txc.mii0_rxd3 * 0x254 (PIN_INPUT | MUX_MODE3)/* rgmii0_txctl.mii0_rxd2 * 0x25c (PIN_INPUT | MUX_MODE3)/* rgmii0_txd2.mii0_rxer * 0x260 (PIN_INPUT | MUX_MODE3)/* rgmii0_txd1.mii0_rxd1 */ 0x264 (PIN_INPUT | MUX_MODE3)/* rgmii0_txd0.mii0_rxd0 */ 0x268 (PIN_INPUT | MUX_MODE3)/* rgmii0_RXC.mii0_txclk * 0x26c (PIN_INPUT | MUX_MODE3)/* rgmii0_rxctl.mii0_txd3 * 0x270 (PIN_INPUT | MUX_MODE3)/* rgmii0_rxd3.mii0_txd2 */ 0x274 (PIN_INPUT | MUX_MODE3)/* rgmii0_rxd2.mii0_txen */ 0x278 (PIN_INPUT | MUX_MODE3)/* rgmii0_rxd1.mii0_txd1 */ 0x27c (PIN_INPUT | MUX_MODE3)/* rgmii0_rxd0.mii0_txd0 */ >; }; cpsw_sleep:cpsw_sleep{ pinctrl-single、pins =< /*从属设备1 */ 0x240 (MUX_MODE15) 0x248 (MUX_MODE15) 0x24c (MUX_MODE15) 0x250 (MUX_MODE15) 0x254 (MUX_MODE15) 0x25c (MUX_MODE15) 0x260 (MUX_MODE15) 0x264 (MUX_MODE15) 0x268 (MUX_MODE15) 0x26c (MUX_MODE15) 0x270 (MUX_MODE15) 0x274 (MUX_MODE15) 0x278 (MUX_MODE15) 0x27c (MUX_MODE15) >; }; DaVinci_MDIO_DEFAULT:DaVinci_MDIO_DEFAULT{ pinctrl-single、pins =< 0x190 (PIN_OUTPUT 上拉| MUX_MODE3)/* vin2A_D11.MDIO_d * 0x194 (PIN_INPUT_PULLUP | MUX_MODE3)/* vin2a_d10.mdio_clk * >; }; DaVinci_MDIO_SLEEP:DaVinci_MDIO_SLEEP{ pinctrl-single、pins =< 0x190 (MUX_MODE15) 0x194 (MUX_MODE15) >; }; &Mac{ 状态="正常"; pinctrl-names ="default"、"sleep"; pinctrl-0 =<&cpsw_default>; pinctrl-1 =<&cpsw_sleep>; DUAL_EMAC; }; cpsw_emac0{&cpsw_emac0} PHY_ID =<&Davinci_MDIO>、<3>; PHY 模式="MII"; DUAL_EMAC_res_vlan =<1>; }; cpsw_emac1{&cpsw_emac1} PHY_ID =<&Davinci_MDIO>、<0>; PHY-MODE ="RGMII"; DUAL_EMAC_res_vlan =<2>; }; DaVinci_MDIO{ pinctrl-names ="default"、"sleep"; pinctrl-0 =<&Davinc_MDIO_default>; pinctrl-1 =<&Davinc_MDIO_SLEEP>; };
kernel dra7-evm.dts
Mac{(&M) pinctrl-names ="default"、"sleep"; pinctrl-0 =<&cpsw_default>; pinctrl-1 =<&cpsw_sleep>; 状态="正常"; }; DaVinci_MDIO{ pinctrl-names ="default"、"sleep"; pinctrl-0 =<&Davinc_MDIO_default>; pinctrl-1 =<&Davinc_MDIO_SLEEP>; 状态="正常"; }; /*WPI Roger ++++++++++++++ * cpsw_emac0{&cpsw_emac0} PHY_ID =<&Davinci_MDIO>、<3>; PHY 模式="MII"; };
是否有人告诉我在 DRA7xx 上配置 MII 接口时出现了问题?
非常感谢。
此致、
郭恩