IT技术互动交流平台

MAC to MAC环境下修改嵌入式linux系统

作者:deep_pro  发布日期:2012-10-24 09:01:50

正常情况下,完整的网卡由MAC和PHY两部分组成。
PHY的含义很广,不知道的wiki之。http://en.wikipedia.org/wiki/PHY
简单地说,是物理层芯片。在TCP/IP协议中,数据链路层之上的所有数据,都可以在你的内存里由软件来访问控制。但是最终在网线和光纤上的数据,不会严格按照内存里的数据发送。这是由物理特性决定的。例如高速串行总线上,如果有大量连续的1出现,会导致AC耦合电容充满,影响信号完整性。所以4/5b 、 8/10b转换是phy常见的工作。
MAC和phy之间是由MII以及衍生升级的RMII、RGMII、SGMII 连接。其中还有2根类似i2c的MDC/MDIO总线。MII用来传输大量的数据。MDC/MDIO用来访问PHY的寄存器,获取和配置链路状态。
phy的另外一头,再经过网络变压器,出来的就是熟悉的RJ45 了。
典型用法如下:

MAC ----MII及其衍生总线----PHY  -------网线、光纤------  PHY ----MII及其衍生总线---- MAC

MAC和PHY可以集合在一个芯片内,也可以分开,都很常见。phy寄存器也有一部分是遵循通用标准的。


在嵌入式产品中,典型的如交换机,很可能核心就是一个交换机芯片。高级的交换机芯片允许通过管理口IMP进行配置,这个IMP口通常连接到嵌入式cpu的网口上。这个cpu和交换机芯片都在同一个紧凑电路板上,如果它们之间再经过2个phy,实在浪费钱和电。
于是另一种经典应用诞生了: MAC to MAC


MAC ----MII及其衍生总线---- MAC


在这种配置下,因为缺少了关键的phy,对于软件的影响很严重。没办法进行链路自动配置了,不知道速度、link、全双工/半双工。
在嵌入式linux环境下,需要uboot和linux都进行修改。
uboot需要配置交换机,强行设置交换机端的MAC为需要的速度和工作模式,强行设置为link 。
然后也需要强行设置cpu的对应网口,忽略phy的操作,强行配置速度和工作模式。然后才能在uboot下使用这个网口。

linux下也一样,会简单些,因为交换机端MAC已经配置好了。
linux的操作有些通用的可能么就简单写一下:
genphy_config_init 开头添加,


#if 1
//xy add
    if(phydev->addr==0x1e)
        {
            printk("p1013 eth1 has no phy,force to fixup ,step 1\n");
            features |= SUPPORTED_Autoneg;
            features |= SUPPORTED_1000baseT_Full;
            goto end;
        }
#endif


在phy_state_machine 的开头添加
www.it165.net

在phy_state_machine 的开头添加
#if 1
//xy add
    if(phydev->addr==0x1e)
        {
            phydev->link=1;
            phydev->speed = SPEED_1000;
            phydev->duplex = DUPLEX_FULL;
            phydev->autoneg = AUTONEG_DISABLE;
            phydev->state = PHY_RUNNING;
            if(phydev->fix==0)
                {
                    printk("p1013 eth1 has no phy,force to fixup,step 2 \n");
                    netif_carrier_on(phydev->attached_dev);
                    phydev->adjust_link(phydev->attached_dev);
                    phydev->fix=1;
                }
        }
#endif

这里增加了一个struct phy_device的成员fix,记录只需要修复一次。
 

Tag标签: 嵌入式   linux系统  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规