首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

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

2013-02-20 
WINCE5.0+S3C2440下DM9000驱动下的移植由于我的2440的BSP包里面只有CS8900的驱动程序,所以我把优龙的DM900

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被版主删除

热点排行