移植DM9000网卡驱动到uboot

1.      其实DM9000网卡驱动的移植已经有很多前辈做过了,网络上有很多可以参考的资料。通过两天的努力,终于把在移植上遇到的问题给解决了,顺利的给uboot添加了网络功能,在这里顺便做个记录。

2.      我的开发板是OK6410,发现飞凌官网上提供的uboot源代码针对的是CS8900不是DM9000,我在他移植的uboot源代码的基础上加入了dm9000网卡驱动。

1)   首先熟悉uboot结构,通过参看顶层的Makefile,以及config.mk等等相关文件弄清楚。

2)   查看Makefile,看Makefile里面的交叉工具链的路径CROSS_COMPIKE=是否是的你的交叉工具链的路径

3)   修改include/configs/smdk6410.h.如图


4)   

5)   这个版本的dm9000网卡驱动代码dm9000x.c和dm9000x.h不稳定,我移植好后,发现有时候ping的通,有时候ping不通,最好重新从其他地方获取这个两个文件,在这里非常感谢吴老师给我提供这两个文件,将dm9000x.c中的

    i= 0;

       while(!(phy_read(1) & 0x20)) {  /*autonegation complete bit */

              udelay(1000);

              i++;

              if(i == 10000) {

                     printf("couldnot establish link\n");

                     return0;

              }

       }

 

       /*see what we've got */

       lnk= phy_read(17) >> 12;

       printf("operatingat ");

       switch(lnk) {

       case1:

              printf("10Mhalf duplex ");

              break;

       case2:

              printf("10Mfull duplex ");

              break;

       case4:

              printf("100Mhalf duplex ");

              break;

       case8:

              printf("100Mfull duplex ");

              break;

       default:

              printf("unknown:%d ", lnk);

              break;

       }

       printf("mode\n");

注释掉,不然会让你抓狂。如果出现ping不通,把

DM9000_DBG("eth_halt\n");

 

       /*RESET devie */

       phy_write(0,0x8000);   /* PHY RESET */

       DM9000_iow(DM9000_GPR,0x01);   /* Power-Down PHY */

       DM9000_iow(DM9000_IMR,0x80);   /* Disable all interrupt */

       DM9000_iow(DM9000_RCR,0x00);   /* Disable RX */也注释掉。

6)   其他的就OK了,只要把Uboot的结构弄明白,其实还是很简单的。另外我还修改了lib_arm/board.c的代码,将eth_init函数加入到了start_armboot里面去了,这样在启动的时候会打印出网卡信息。Ping命令实现函数do_ping里面调用了Netloop函数,这个函数调用了eth_init函数,所以每次ping的时候也会打印网卡信息。

7)   最后总结,能看懂Makefile才是王道,只要能看懂Makefile,就能理解一个软件的架构,就能够解决一切。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值