当前位置: 代码迷 >> WinCE >> WINCE5.0+S3C2440上DM9000驱动上的移植
  详细解决方案

WINCE5.0+S3C2440上DM9000驱动上的移植

热度:8994   发布时间:2013-02-26 00:00:00.0
WINCE5.0+S3C2440下DM9000驱动下的移植
   由于我的2440的BSP包里面只有CS8900的驱动程序,所以我把优龙的DM9000的驱动程序直接拷到
我的BSP包DRIVERS的目录下面,然后做如下修改:
 1。修改DRIVERS下的DIR目录,添加对DM9000的编译的支持
 2. 由于我使用的是GCS5作为DM9000的片选,所以修改注册表和DM9000驱动程序中g_szDm9ConfigParams参数的
    IO_BASE_ADDRES的地址,由0x20000300改为0x28000300。
 3. 由于我使用EINT9作为中断信号,所以就修改cfw.c文件中当产生EINT9号中断时就产生SYSINTR_DM9000
    事件,并修改armint.c文件中的程序使在处理完该事件后能清除中断。
    经过以上编译之后,然后进行烧写之后,在启动之后一直循环出现如下信息:
    ENTER MiniportReset
[dm9: Chip signature is 90000A46
ENTER MiniportSetInformation
ENTER MiniportSetInformation
ENTER MiniportQueryInformation
ENTER MiniportCheckForHang
ENTER MiniportReset
[dm9: Chip signature is 90000A46
ENTER MiniportSetInformation
ENTER MiniportSetInformation
ENTER MiniportQueryInformation
ENTER MiniportCheckForHang
ENTER MiniportReset
[dm9: Chip signature is 90000A46
。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。

从调试信息可以看到DM9000启动后MiniportReset、MiniportSetInformation、MiniportQueryInformation、MiniportCheckForHang
被反复调用,请各位高手指点一下是怎么会事,还有哪些地方做些修改?还有一个比较奇怪的问题就是怎么在DM9000驱动中没有对IO口的定义呢(即定义GPG1口为ENIT9口),请各位高手指点一下。

------解决方案--------------------------------------------------------
我记得三星的芯片总线需要配置一下你配置了没有。
------解决方案--------------------------------------------------------
在BSPIntrInit()中设置GPIO为EINT,看我的
 // Set GPG1 as EINT9
    value = INREG32(&pOalPortRegs->GPGCON);
    OUTREG32(&pOalPortRegs->GPGCON, (value & ~(3 << 2))
------解决方案--------------------------------------------------------
(2 << 2));

    // Disable pullup
    value = INREG32(&pOalPortRegs->GPGUP);
    OUTREG32(&pOalPortRegs->GPGUP, value 
------解决方案--------------------------------------------------------
 (1 << 1));

    // High level interrupt
    value = INREG32(&pOalPortRegs->EXTINT1);
    OUTREG32(&pOalPortRegs->EXTINT1, (value & ~(0x7 << 4))
------解决方案--------------------------------------------------------
(0x1 << 4));

------解决方案--------------------------------------------------------
ID号都能读对了,还是看看什么地方一直调用 MiniportReset、MiniportSetInformation、MiniportQueryInformation、MiniportCheckForHang 这几个吧。

------解决方案--------------------------------------------------------
该回复于2011-08-24 10:32:20被版主删除
  相关解决方案