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.

[参考译文] Linux/DRA745:带 TJA1100的 DRA7xx MII

Guru**** 2581345 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/632559/linux-dra745-dra7xx-mii-with-tja1100

器件型号:DRA745

工具/软件: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 接口时出现了问题?

非常感谢。

此致、
郭恩

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

    我已将您的问题转交给以太网专家。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Wayne、
    我不是 Yordan 帖子的专家。
    据我了解、PHY 未被发现、应通过 MDIO 接口(类似 I2C)来完成。 由于您有定制板、SoC 允许 MDIO 引脚(CLK 和数据)在许多焊球上进行多路复用、您能否查看用于 MDIO 的焊球的原理图?

    即、您的 DTS 现在设置为:
    焊珠 D3 -用于 CLK 的 vin2a_d10
    焊珠 F6 - vin2a_D11表示数据

    但在您的电路板上可能不是这样。

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

    感谢您的建议。

    我检查了原理图、MDIO 设置为客户设计。
    我能够使用 MII 命令读取 U-Boot 中的 PHY 寄存器。
    我认为 MII 命令使用 MDIO 接口来读取/写入 PHY 寄存器、对吗?
    我将尝试探测 MDIO 引脚(D3、F6)以确保信号输出正确。

    此致、
    韦恩