XFD6410 uboot支持DM9000驱动

Topic:XFD6410 uboot下支持DM9000驱动(作者:Sturtle)

//----------------------------------------------------------------------------------------------------------------------------

// 作者:XFDarm([email protected]

// 论坛ID:Sturtle

// 版权:XFDarm(www.xfdarm.com)

// 平台:芯飞达科技 XFD6410开发板+uboot1.1.6

// 发布日期:2011-12-23

// 最后修改:2011-12-23

// 注意事项:未经作者同意,商业网站不能转载,更不得在转载的时候擅自修改、删除文章的任何部分

//------------------------------------------------------------------------------------------------------------------------------

 1、  对照原理图修改include/configs/smdk6410.h
#define CONFIG_DRIVER_DM9000    1

#define CONFIG_DM9000_BASE 0x18000300

#define DM9000_IO       CONFIG_DM9000_BASE

#define CONFIG_DM9000_USE_16BIT

#define DM9000_DATA  (CONFIG_DM9000_BASE + 4)

2、  注释掉dm9000x.c中如下内容:

/* Set Node address */

/*     for (i = 0; i < 6; i++)

        ((u16 *) bd->bi_enetaddr)[i] = read_srom_word(i);

*/     

添加以下内容,参考1.3的dm9000x.c中的     

char *e,*s;

s = getenv("ethaddr");

for(i=0;i++;i<6)

{

               bd->bi_enetaddr[i] = s ? simple_stroul(s,&e,16) : 0;

                      if(s)

                             s = (*e) ? e+1 : e;

        }

3、  smdk6410.c中的CS1的bank要正确配置

SROM_BW_REG &= ~(0xff << 0);

SROM_BW_REG |= (1<<7) | (1<<6) | (1<<4)

4、  在dm9000.c的eth_rx()中添加do while循环,参考kernel下的dm9000.c,并在do之前将寄存器清空:

DM9000_ior(DM9000_MRRH);

DM9000_ior(DM9000_MRRL);    //要加,不然还是ping不通

至此,重新make即可。


//如有错误,请留言指正;同时希望有更好的方法与大家交流和分享,让我们大家一起学习,共同进步!

你可能感兴趣的:(c,IO,idea,平台)