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.

ifconfig eth1 up :PHY 0:01 not found



大家好,我用的是sdk06版本的内核,然后它里面的phy芯片是ar8031,我板子的是ar8035(感觉里面的寄存器和8031的没啥区别,就一id不同),然后我板子只有一个网口,接在rgmii2,我只是改了驱动中的phy id(把0x4dd074改为0x4dd72),结果当我 ifconfig eth1 up 时,返回PHY 0:01 not found,也就是说我的phy没链接上,导致我无法ping通。。。。请问我需要改动sdk代码的哪里才能使我的网口正常工作呢?

eth1      Link encap:Ethernet  HWaddr 54:4A:16:F3:14:D0       

     inet addr:172.16.31.146  Bcast:172.16.255.255  Mask:255.255.0.0     

      UP BROADCAST MULTICAST  MTU:1500  Metric:1

       RX packets:0 errors:0 dropped:0 overruns:0 frame:0         

     TX packets:0 errors:0 dropped:0 overruns:0 carrier:0        

     collisions:0 txqueuelen:1000      

     RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

  • 主要修改的地方有三处:MII_SEL, PHY_ID, PINMUX.

    具体的可以参考这个帖子:http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/45981.aspx

  • 在SDK06的U-boot中的这个变量:

    static struct cpsw_platform_data cpsw_data = {
     .mdio_base  = AM335X_CPSW_MDIO_BASE,
     .cpsw_base  = AM335X_CPSW_BASE,
     .mdio_div  = 0xff,
     .channels  = 8,
     .cpdma_reg_ofs  = 0x800,
     .slaves   = 1,
     .slave_data  = cpsw_slaves,
     .ale_reg_ofs  = 0xd00,
     .ale_entries  = 1024,
     .host_port_reg_ofs = 0x108,
     .hw_stats_reg_ofs = 0x900,
     .mac_control  = (1 << 5),
     .control  = cpsw_control,
     .host_port_num  = 0,
     .version  = CPSW_CTRL_VERSION_2,
    };

    还有在uboot   mux.c里只初始化了rgmii1:

    static struct module_pin_mux rgmii1_pin_mux[] = {
    {OFFSET(mii1_txen), MODE(2)}, /* RGMII1_TCTL */
    {OFFSET(mii1_rxdv), MODE(2) | RXACTIVE}, /* RGMII1_RCTL */
    {OFFSET(mii1_txd3), MODE(2)}, /* RGMII1_TD3 */
    {OFFSET(mii1_txd2), MODE(2)}, /* RGMII1_TD2 */
    {OFFSET(mii1_txd1), MODE(2)}, /* RGMII1_TD1 */
    {OFFSET(mii1_txd0), MODE(2)}, /* RGMII1_TD0 */
    {OFFSET(mii1_txclk), MODE(2)}, /* RGMII1_TCLK */
    {OFFSET(mii1_rxclk), MODE(2) | RXACTIVE}, /* RGMII1_RCLK */
    {OFFSET(mii1_rxd3), MODE(2) | RXACTIVE}, /* RGMII1_RD3 */
    {OFFSET(mii1_rxd2), MODE(2) | RXACTIVE}, /* RGMII1_RD2 */
    {OFFSET(mii1_rxd1), MODE(2) | RXACTIVE}, /* RGMII1_RD1 */
    {OFFSET(mii1_rxd0), MODE(2) | RXACTIVE}, /* RGMII1_RD0 */
    {OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN},/* MDIO_DATA */
    {OFFSET(mdio_clk), MODE(0) | PULLUP_EN}, /* MDIO_CLK */
    {-1},
    };

    slaves的值为1,所以应该是只初始化了一路以太网,而且是eth0,我的板子只有一路接在rgmii2的网口。

    在uboot里修改如下:

    第一步,是定义GPIO的引脚mux:rgmii2;

    第二步,configure_module_pin_mux(rgmii2_pin_mux);

    然并不能在uboot里ping通。。。

    是不是我接了rgmii2就说明我就要用eth1呢?用eth0和eth1是在哪里设置的呢?