在调试Eboot的过程中,OEMPreDownload ()出了问题,发现是EbootInitEtherTransport()这个函数出错,根本就没有进行!
现把其原型列出来:
BOOL EbootInitEtherTransport( EDBG_ADDR* pEdbgAddr, //IP地址、MAC地址、端口 LPDWORD pdwSubnetMask, //子网掩码 BOOL* pfJumping, //由Platform Builder返回的值。默认是BL_DOWNLOAD,如果在IDE中选择了Jump to Image,则返回BL_JUMP。 DWORD* pdwDHCPLeaseTime, //是否使用DHCP UCHAR VersionMajor, //版本号,是BootMe包的一部分 UCHAR VersionMinor, //版本号,是BootMe包的一部分 char* szPlatformString, //平台的名称,如“SMDK2410” char* szDeviceName, //设备名称,如“SMDK241049795” UCHAR CPUId, //CPU标识符,如EDBG_CPU_ARM720,在%_WINCEROOT%/Public/Common/Oak/Inc/Ethdbg.h里面定义 DWORD dwBootFlags //默认为0 );
EbootInitEtherTransport()是Eboot支持库里面的一个函数,负责初始化供下载镜像使用的以太网传输端点。该初始化不同于OEMPlatformInit中的InitEthDevice()是对以太网控制器进行硬件的初始化,而是初始化所需的以太网协议,如通过DHCP协议获得一个动态IP地址、初始化与开发计算机上的Platform Builder工具之间的TFTP协议等。
EbootInitEtherTransport函数的原型在头文件%_WINCEROOT/PUBLIC/COMMON/OAK/INC/halether.h中定义如下:
BOOL EbootInitEtherTransport (EDBG_ADDR *pEdbgAddr, LPDWORD pdwSubnetMask, BOOL *pfJumpImg, // will be set to TRUE if eshell asked us to jump to existing image DWORD *pdwDHCPLeaseTime, // this parameter is overloaded. pass NULL to indicate static IP UCHAR VersionMajor, UCHAR VersionMinor, char *szPlatformString, char *szDeviceName, UCHAR CPUId, DWORD dwBootFlags);