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.

am3352的网口配置成mii模式网络ping不通

Other Parts Discussed in Thread: AM3352

am3352使用port1连接marvell6095,使用mii模式。管脚配置如下:

static struct pinmux_config mii1_pin_mux[] = {
{"mii1_rxerr.mii1_rxerr", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
{"mii1_txen.mii1_txen", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
{"mii1_rxdv.mii1_rxdv", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
{"mii1_txd3.mii1_txd3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
{"mii1_txd2.mii1_txd2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
{"mii1_txd1.mii1_txd1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
{"mii1_txd0.mii1_txd0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
{"mii1_txclk.mii1_txclk", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
{"mii1_rxclk.mii1_rxclk", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
{"mii1_rxd3.mii1_rxd3", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
{"mii1_rxd2.mii1_rxd2", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
{"mii1_rxd1.mii1_rxd1", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
{"mii1_rxd0.mii1_rxd0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
{"mdio_data.mdio_data", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"mdio_clk.mdio_clk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT_PULLUP},
{NULL, 0},
};

设置网卡工作模式:

static void setup_cm335x(void)
{
/* DEVKIT8600 has Micro-SD slot which doesn't have Write Protect pin */
am335x_mmc[0].gpio_wp = -EINVAL;

_configure_device(EVM_SK, cm335x_dev_cfg, PROFILE_NONE);

am33xx_cpsw_init(AM33XX_CPSW_MODE_MII, NULL, NULL);
}

mdio可以扫描到所有phy,mii时钟测试是25mhz。其他地方没有修改,但是ping不通。原始代码是使用rgmii和ar8035网络是通的,rgmii的管脚配置如下:

static struct pinmux_config rgmii1_pin_mux[] = {
{"mii1_txen.rgmii1_tctl", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT},
{"mii1_rxdv.rgmii1_rctl", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
{"mii1_txd3.rgmii1_td3", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT},
{"mii1_txd2.rgmii1_td2", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT},
{"mii1_txd1.rgmii1_td1", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT},
{"mii1_txd0.rgmii1_td0", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT},
{"mii1_txclk.rgmii1_tclk", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT},
{"mii1_rxclk.rgmii1_rclk", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
{"mii1_rxd3.rgmii1_rd3", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
{"mii1_rxd2.rgmii1_rd2", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
{"mii1_rxd1.rgmii1_rd1", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
{"mii1_rxd0.rgmii1_rd0", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
{"mdio_data.mdio_data", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
{"mdio_clk.mdio_clk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT_PULLUP},
{NULL, 0},
};

请问我这样修改为mii为什么网络会不通?

请帮忙分析下,谢谢

  • 在linux user space下,用的devmem2打印上面的pinmux相应寄存器和gmii_sel寄存器,确认配置生效了吗?还有PHY_ID设置对了吗?

  • gmii_sel:

    root@cm335x:~# devmem 0x44e10650
    0x00000000

    gmii_sel = 0x00000000

    管脚配置:

    root@cm335x:~# devmem 0x44e10908
    0x00000027
    root@cm335x:~# devmem 0x44e1090c
    0x00000036
    root@cm335x:~# devmem 0x44e10910
    0x00000020
    root@cm335x:~# devmem 0x44e10914
    0x00000000
    root@cm335x:~# devmem 0x44e10918
    0x00000020
    root@cm335x:~# devmem 0x44e1091c
    0x00000000
    root@cm335x:~# devmem 0x44e10920
    0x00000000
    root@cm335x:~# devmem 0x44e10924
    0x00000000
    root@cm335x:~# devmem 0x44e10928
    0x00000000
    root@cm335x:~# devmem 0x44e1092c
    0x00000020
    root@cm335x:~# devmem 0x44e10930
    0x00000020
    root@cm335x:~# devmem 0x44e10934
    0x00000020
    root@cm335x:~# devmem 0x44e10938
    0x00000020
    root@cm335x:~# devmem 0x44e1093c
    0x00000020
    root@cm335x:~# devmem 0x44e10940
    0x00000020
    root@cm335x:~# devmem 0x44e10944
    0x00000027
    root@cm335x:~# devmem 0x44e10948
    0x00000030
    root@cm335x:~# devmem 0x44e1094c
    0x00000010

    conf_mii1_col = 0x27

    conf_mii1_crs = 0x36

    conf_mii1_rx_er = 0x20

    conf_mii1_tx_en = 0x0

    conf_mii1_rx_dv = 0x20

    conf_mii1_txd3 = 0x0

    conf_mii1_txd2 = 0x0

    conf_mii1_txd1 = 0x0

    conf_mii1_txd0 = 0x0

    conf_mii1_tx_clk = 0x20

    conf_mii1_rx_clk = 0x20

    conf_mii1_rxd3 = 0x20

    conf_mii1_rxd2 = 0x20

    conf_mii1_rxd1 = 0x20

    conf_mii1_rxd0 = 0x20

    conf_mdio = 0x30

    conf_mdc = 0x10

    phyid配置是正确的,可以正确读到id,我双向互相ping,我示波器看信号,看不到tx_en,rx和tx都没有信号

    麻烦看下是否有问题?谢谢

  • 如果是没有信号,要仔细检查下pinmux

  • 除了col和crs管脚,我对过手册配置应该都是正确的(具体值在上面的打印中),参考设计里,col和crs都是不配置的,我把这两个信号直接接地了

  • mii需要格外配置时钟吗?

  • marvell6095这颗料只是一个百兆的PHY么?在U-boot下有测试过么?

  • 你好,请问你调通了么?我现在也是改成mii模式,文件系统中ifconfig 网口的时候 能读到phy id ;net eth1: CPSW phy found : id is : 0x2430d80

    但是没有ping通