前段时间遇到一个问题:在使用GEODE和CEPC的BSP定制系统时,CEPC的可以跳转,GEODE的停留在jumping to ..上,两种情况下的CATALOG配置相同.下面是GEODE下的串口信息
Debug Serial Init
SysInit: GDTBase=80ad70e8 IDTBase=80b28ec0 KData=80b49800
Windows CE Kernel for i486 Built on Jun 24 2004 at 18:23:42
g_pPageDir = 80b4a000
InitKitlNIC: Searching for PCI Ethernet NIC (dwIrq = 0, dwI
oBase = 0, dwDfltType = 0) ...
RTC - Status Reg B - 0x02
Double Fault -- backlink=0048
TSS=80b296c0 EIP=802398be Flags=00210086
Eax=00000000 Ebx=80b49a84 Ecx=03bb0045 Edx=80b49b50
Esi=a4000000 Edi=80b49780 Ebp=80b49a78 Esp=80b49a14
CS=0019 DS=0040 ES=0040 SS=0021 FS=0000 GS=0000
Blog by Braden
说...
好像你启用了KITL,把KITL去掉看看
我把KITL去掉了,还是停留在jumping to ox00224FB8
调试信息如下:
Debug Serial Init
SysInit: GDTBase=80ac20e8 IDTBase=80ae3860 KData=80ae9800
Windows CE Kernel for i486 Built on Jun 24 2004 at 18:23:42
g_pPageDir = 80aea000
RTC - Status Reg B - 0x02
Double Fault -- backlink=0048
TSS=80ae4060 EIP=802353f3 Flags=00210086
Eax=00000000 Ebx=80ae9a84 Ecx=03bb0045 Edx=80ae9b50
Esi=a4000000 Edi=80ae9780 Ebp=80ae9a78 Esp=80ae9a14
CS=0019 DS=0040 ES=0040 SS=0021 FS=0000 GS=0000
我看着像是在初始化CPU寄存器时停了.后来发现是我扩大物理内存时,在config.bib里没有把原来的 28MB 段给屏蔽掉造成的.
不过对KITL关注了一下.
KITL全称为Kernel Independent TransportLayer。它的主要用途是提供更方便的调试手段。KITL出现在Windows CE.net之后,把软件传输协议与硬件传输层隔离开。KITL使得开发者不必了解硬件传输层如何与软件协议层接口。
以下是应该在OEMInit函数中加入的KITL初始化代码。
①初始化所有PCI桥和设备,枚举它们并且给它们分配资源,然后使能,使他们能正常工作。注:此条适于有KITL网络接口卡(NIC)和NIC桥的情况。
② 对相关总线进行初始化,使得CPU能够正确识别NIC。
③通过调用KitlInit函数来初始化KITL。这部分代码可参照其它平台,代码文件为Halkitl.c。
④执行0EMKitlInit函数,进行相关的硬件初始化工作。搜索是否存在KITL 网口、串口或并口连接。
⑤执行完OEMKitlInit后,把Kitl.1ib和Kitleth.1ib包含入平台资源文件\<Platform>\Kernel\Buildexe\Kernkitl,以便把KITL打包进内核。