现用的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