最近刚买了块开发板。但是给的BSP的eboot里面用的是CS8900,但是板子上面是DM9000,所以现在主要的事情就是将ether.c换成DM9000的接口。。我在网上copy了一份驱动源代码。。。。但是放上去后我就是读不到ID。。。经过盘查。应该是读写IO口的问题
static UCHAR
ReadReg(USHORT offset)
{
IOWRITE(dwEthernetIOBase, offset);
return IOREAD(dwEthernetDataPort);
}
static void
WriteReg(USHORT offset, UCHAR data)
{
IOWRITE(dwEthernetIOBase, offset);
IOWRITE(dwEthernetDataPort, data);
}
#define IOREAD(o) ((UCHAR)*((volatile UCHAR *)(o)))
#define IOWRITE(o, d) *((volatile UCHAR *)(o)) = (UCHAR)(d)
其实看起来这个读写时很简单的。。。只是做了这样的一个实验WriteReg(0x1f,3)后。。我去读ReadReg(0x28)..但是我却读到的是03.。。似乎我在这个读写的过程中只是像dwEthernetDataPort赋值,然后就去读这个变量而已。。。
我用友善提供的NK是可以正常上网的。。。。说明时序什么的都是正确的。我的DM9000是连接在NGCS4上面的。所以IOBASE是0x20000300.IOPORT = IOBASE + 4;
没有错啊。。。
但是读ID的时候却每次读到的IOPORT是0,
我猜想是不是DM9000在上电需要什么初始化一下寄存器才可以读ID的吧。。。
能不能帮我解答一下
你移植到哪里呢 移植到eboot下吗 还是一只kitl
如果是eboot的话 你找cs8900的地方 然后相应得改到dm9000就可以了
终于自己解决了。。。片选是对的。。但是我用的是物理地址。。应该是虚拟地址
我也想买一块WinCE开发板,做学习用,呵呵,不知楼主或哪位大虾可以给些建议,买哪家的比较好?什么系列的较常用?感谢
您好,不知道前面各位的问题解了没,你们说的问题小弟并不太懂,但我们目前是divacom在中国区域的总代理,从03年来一直专注于做DM9000及DIVACOM全线产品,对于研发来说,首先是产品质量有保证(为当年全新原装最新版本),然后通过我们可以找到原厂的工程师做技术支持,当然,是免费提供的,说不定我能帮得上大家的忙,以下是我的联系方式 QQ:1259987438 电话:027-8765163610 (0)13554272382 王洪武