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.

AM3359的rmii2一些问题

Other Parts Discussed in Thread: AM3359

大家好,想使用AM3359的rmii2来作为网络接口,采用LAN8710A,参考时钟ref_clk是从AM3359上产生的,想问几个问题:

1.如果用AM3359产生的ref_clk的话  phy芯片8710a是不是完全不能工作?

2.想在uboot下调试网络,该如何配置才能让rmii2作为接口的网络正常工作?目前知道的需要配置pinmux,phy_id,GMII_SEL,还有什么需要配置的吗?

pinmux配置如下

/*myself*/

static struct module_pin_mux rmii2_pin_mux[] = {
    {OFFSET(gpmc_a11), MODE(3) | RXACTIVE},    /* RMII2_RXD0 */
    {OFFSET(gpmc_a10), MODE(3) | RXACTIVE},    /* RMII2_RXD1 */
    {OFFSET(gpmc_wpn), MODE(3) | RXACTIVE},    /* RMII2_RXERR */
    {OFFSET(gpmc_a0), MODE(3)},            /* RMII2_TXEN */
    {OFFSET(gpmc_a5), MODE(3)},            /* RMII2_TXD0 */
    {OFFSET(gpmc_a4), MODE(3)},            /* RMII2_TXD1 */
    {OFFSET(gpmc_wait0), MODE(3) | RXACTIVE},        /* RMII2_CRS_DV */
    {OFFSET(mii_col), MODE(1)},        /* RMII2_REFCLK */
    {OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN},/* MDIO_DATA */
    {OFFSET(mdio_clk), MODE(0) | PULLUP_EN},    /* MDIO_CLK */
    {-1},
};

GMII_SEL设置为0X5

3.目前在uboot下执行命令,会出现                                               
U-Boot# dhcp                                                                   
link up on port 0, speed 1000, full duplex                                     
BOOTP broadcast 1                                                              
BOOTP broadcast 2                                                              
BOOTP broadcast 3                                                              
BOOTP broadcast 4 

想问下 怎么会出现1000M的情况呢 8710a配置的是自协商模式,  是不是因为ref_clk的原因?port0是怎么回事,我配置的pinmux是rmii2,不应该是port1吗,这是不是由phy_id

决定的?

  • RMII模式下,必须要用PHY提供的50MHZ referrence clock。

    如果是最新的SDK06.00.00,实际上只做了port0的auto-negotiation

  • 你好 Jian Zhou

    我用是最新的SDK06.00.00,我配置的是port1,为什么执行dhcp的时候还会使用port0

    如何给port1增加auto-negotiation,有什么资料吗?

     

  • 请参考AM335X的errata,上面有描述在RMII模式下,AM335X不能提供参考时钟给PHY。

    两种方式解决上述问题:

    (1)外部接50M有源晶振同时给PHY和EMAC供参考时钟;

    (2)通过PHY输出的时钟给AM335X。

    PHY驱动侧的修改,如你提及的,就是这三个方面。

  • 你好 Gary Wu

    感谢你的回答

    时钟这方面准备替换一下,现在还有个疑问

    就是在phy_id和GMII_SEL以及pinmux已经配置的情况下

    我在uboot下执行dhcp 会出现

    link up on port 0, speed 1000, full duplex
    为什么还是port0,而且是1000M的 

    怎么变成port1 speed变成100M

  • 你好 Gary Wu

    我换掉了晶振后,已经解决了部分问题

    但是我想使用rmii2 在uboot下面执行dhcp后出现的还是port0,

    link up on port 0, speed 100, full duplex
    BOOTP broadcast 3
    BOOTP broadcast 4
    BOOTP broadcast 5
    BOOTP broadcast 6

    请问这是为什么呢?phy_id配置的是0 并且做了以下修改

    static struct cpsw_slave_data cpsw_slaves[] = {
    {
    .slave_reg_ofs = 0x208,
    .sliver_reg_ofs = 0xd80,
    .phy_id = 1,
    },
    {
    .slave_reg_ofs = 0x308,
    .sliver_reg_ofs = 0xdc0,
    .phy_id = 0,
    },
    };

    请问还有需要修改的地方吗 ?