?? 前段時間遇到一個問題:在使用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打包進內核。