阅读:1752回复:3
**Enable KITL系统启动不了,请教wxl_50685330版主^_^
开发环境 :yl2410开发板 + wince5.0
工程文件是从开发光盘中的yl2410.pbxml 扩充而来的。 platfrom->Settings->build options 选中 1、Enable Eboot Space in Memory 2、Enable full kernel mode 3、Run-time Image can be larger than 32 MB 编译系统,下载、运行没有问题。为了调试驱动,查看信息,又选择了 4、Enable kernel debugger 5、Enable kitl 编译,下载没有问题,启动系统的时候,在dnw中输出信息 +OEMKitlInit OEMKitlInit()IPAddress:0.0.0.0 OEMKitlInit()NetMask:0.0.0.2 VBridge::NK and MAC:[0-0-0-0-0-0] 然后,就停在这里不动了。 查找了一下资料,输出这几个信息的个函数分别位于halether.c 、halkitl.c 、vbridge.c中 但是,对于怎么使能kitl,让ce内核输出调试信息给PB,还是没有头绪 ================== 文件halether.c中 BOOL OEMEthInit(EDBG_ADAPTER *pAdapter) { PBYTE pBaseIOAddress; // Driver globals from the bootloader. // if (pDriverGlobals->eth.EbootMagicNum == EBOOT_MAGIC_NUM) { memcpy(pAdapter, &pDriverGlobals->eth.TargetAddr, sizeof(EDBG_ADAPTER)); switch(pDriverGlobals->misc.EbootDevice) { case(DOWNLOAD_DEVICE_PCMCIA): // NE2000 CF card. pBaseIOAddress = (PBYTE)PCMCIA_Init(); if (pBaseIOAddress) { // Initialize the built-in Ethenet controller. // if (!NE2000Init((PBYTE)pBaseIOAddress, 1, pAdapter->Addr.wMAC)) { EdbgOutputDebugString("ERROR: OEMEthInit: Failed to initialize Ethernet controller.\r\n"); return(FALSE); } } pfnEDbgInit = NE2000Init; pfnEDbgEnableInts = NE2000EnableInts; pfnEDbgDisableInts = NE2000DisableInts; pfnEDbgGetPendingInts = NE2000GetPendingInts; pfnEDbgGetFrame = NE2000GetFrame; pfnEDbgSendFrame = NE2000SendFrame; pfnEDbgReadEEPROM = NE2000ReadEEPROM; pfnEDbgWriteEEPROM = NE2000WriteEEPROM; pfnEDbgSetOptions = NE2000SetOptions; #ifdef IMGSHAREETH pfnCurrentPacketFilter = Ne2000CurrentPacketFilter; pfnMulticastList = NE2000MulticastList; #endif // IMGSHAREETH. break; case(DOWNLOAD_DEVICE_CS8900): // CS8900A. // Initialize the CS8900. // if (!CS8900DBG_Init((PBYTE)CS8900DBG_IOBASE, CS8900DBG_MEMBASE, pAdapter->Addr.wMAC)) { EdbgOutputDebugString("ERROR: OEMEthInit: CS8900 initialization failed.\r\n"); return(FALSE); } pfnEDbgInit = CS8900DBG_Init; pfnEDbgEnableInts = CS8900DBG_EnableInts; pfnEDbgDisableInts = CS8900DBG_DisableInts; pfnEDbgGetFrame = CS8900DBG_GetFrame; pfnEDbgSendFrame = CS8900DBG_SendFrame; pfnEDbgGetPendingInts = CS8900DBG_GetPendingInts; #ifdef IMGSHAREETH pfnCurrentPacketFilter = CS8900DBG_CurrentPacketFilter; pfnMulticastList = CS8900DBG_MulticastList; #endif // IMGSHAREETH. break; default: EdbgOutputDebugString("ERROR: OEMInit: Unknown download NIC (0x%x).\r\n", pDriverGlobals->misc.EbootDevice); return(FALSE); } } else { // TODO - retrieve CS8900 MAC address from flash... // TODO - intialize the CS8900 from scratch... } 网上查到“2410、2440的用户在不使用eboot的情况下,总是不能使用kitl的原因,在于找不到eboot在DriverGloabal中留下的MagicNumber” ---- // TODO - retrieve CS8900 MAC address from flash... // TODO - intialize the CS8900 from scratch... ---- 又如何实现呢? 请热心的版主多帮忙:) |
|
沙发#
发布于:2007-03-10 09:42
这个需要网络支持KITI
|
|
板凳#
发布于:2007-03-14 08:05
是啊 ,我怀疑吧 // TODO - retrieve CS8900 MAC address from flash...
// TODO - intialize the CS8900 from scratch... 这部分代码补充好,可能就能用kitl了,呵呵,,不知道对不对? |
|
地板#
发布于:2007-03-16 21:56
好像你的网卡mac地址没有取到
还有你的eth kitl是dhcp的?还是自己分配ip的呢? -------------------------- 说的不好,大家不要骂我 |
|