当前位置: 代码迷 >> 驱动开发 >> 2416,在U-boot 1.3.4上移植dm9000cep驱动,该怎么处理
  详细解决方案

2416,在U-boot 1.3.4上移植dm9000cep驱动,该怎么处理

热度:399   发布时间:2016-04-28 11:22:46.0
2416,在U-boot 1.3.4上移植dm9000cep驱动
现用的2416核,在u-boot 1.3.4上移植dm9000cep驱动,网卡接片选1, CMD引脚RADDR2,dm9000cep的EECS脚拉低(16bit模式)
在smdk2416.h关于网卡的设置如下:
#define CONFIG_DRIVER_DM9000 1
#define CONFIG_DM9000_BASE 0x09000300
#define DM9000_BASE 0x09000300
#define DM9000_IO CONFIG_DM9000_BASE
#define DM9000_DATA (CONFIG_DM9000_BASE+4)
#define CONFIG_DM9000_USE_16BIT
#define CONFIG_CMD_PING

对BANK1的相关控制寄存器的设置如下:
  SMBIDCYR1_REG = 0; //BANK1 Idle cycle ctrl  
  SMBWSTWRR1_REG = 14; //BANK1 Write Wait State ctrl  
  SMBWSTOENR1_REG = 2; //BANK1 Output Enable Assertion delay ctrl  
  SMBWSTWENR1_REG = 2; //BANK1 Write Enable Assertion delay ctrl  
  SMBWSTRDR1_REG = 14; //BANK1 Read Wait State cont
   
   
  SMBCR1_REG |= 1<<0; //Read Byte Lane Enabl  
  SMBCR1_REG &= ~((3<<20)|(3<<12));//SMADDRVALID = always High when Read/Write  

  SMBCR1_REG &= ~(3<<4);//Clear Memory Width  
  SMBCR1_REG |= (1<<4);//Memory Width = 16bit

现在的状况是:
1.用上述设置,读回的网卡ID为0x2b2a2928, 做ping动作时,CMD一直为低电平。
2.如果我把BANK1的memory width设置为8bit(SMBCR1_REG &= ~(3<<4);),网卡的CMD脚上有信号,可以找到网卡ID,ping主机时,结果为:
rx status: RxStatus = 0X4001, RxLen = 65535;

被这个问题困扰很久了,请各路高手不吝赐教,谢谢!!!!!!!!!!!!!!!!!!!!!!!!!

------解决方案--------------------
看看硬件有没有问题,从网口到隔离变压器到芯片的走线要求很严格,走得不好也会出现PING不通
------解决方案--------------------
楼主,想请教一个问题,
#define CONFIG_DM9000_BASE 0x09000300
你的300是怎么来的啊。在DATASHEET上有明确说明吗,我用的是DM9000AE芯片,上面没有这个说明,但是我翻看DM9000DATASHEET,上面就有明确说明。

#define DM9000_DATA (CONFIG_DM9000_BASE+4)
还有这个4,几乎所有的文档都说要加4,但是在DATASHEET上找不到这样的说明。所以你是怎么知道要加4的。

谢谢,我最近也在调试DM9000AE。S3C2410的。也是UBOOT 1.3.4
  相关解决方案