WinCE 6.0 KITL 不能使用DM900 网卡驱动修改记录

 修改理由:

由于eboot 和KITL 同时调用 DM9000DBG_Init 这个函数,在eboot 掉用时使用的是没有经过映射的地址,当镜像加载完成后,时候的是映射过的地址。  而DM9000DBG_Init 任然时候的是没有经过映射的地址。这样做导致的直接后果是,KITL起来当访问没有这段地址(0x15000000)的时候立马死机。

但是有引出了另外的一个问题,就是这样修改在启动eboot的时候,用的是映射过的地址,在eboot中访问映射过的地址同样会死机(因为mmu还没有起来)。

最后找了一种比较折中的解决方案:

 

在编译eboot的时候用下面代码:

 

DM9000DBG_Init

{

......

 //Add ed by peng
 /OALPAtoVA((UINT32)0x15000000, FALSE);
 //OALPAtoVA((UINT32)0x15000000+ 0x400, FALSE);

 //Mask by peng
 //Give the Index and Data port Address
 dwIndexPortAddress = 0x15000000;
 dwDataPortAddress = 0x15000000 + 0x400;

.......

}

编译内核的时候用下面代码:

DM9000DBG_Init

{

......

 //Add ed by peng
 dwIndexPortAddress = OALPAtoVA((UINT32)0x15000000, FALSE);
 dwDataPortAddress = OALPAtoVA((UINT32)0x15000000+ 0x400, FALSE);

 //Mask by peng
 //Give the Index and Data port Address
 //dwIndexPortAddress = 0x15000000;
 //dwDataPortAddress = 0x15000000 + 0x400;

.......

}

你可能感兴趣的:(WinCE 6.0 KITL 不能使用DM900 网卡驱动修改记录)