EBOOT 学习
Eboot 适合使用以太网下载镜像。
Eboot支持库中函数:
1.EbootInitEtherTransport( ):负责初始化供下载镜像使用的以太网传输点。主要初始化所需的以太网协议,如,通过DHCP协议获取一个动态IP地址,初始化与开发计算机上的Platform Buider 工具之间的TFTP协议等;
2.EbootWaitForHostConnect( ):本函数的功能是与开发计算机上的Platform Builder 软件进行通话以获取一个EDBG_OS_CONFIG_DATA结构体数据。这个结构体中包含的数据包括Platform Builder 的用户设置、开发计算机的ip地址以及端口号等信息,这些信息主要提供WIN CE操作系统使用而不是给BootLoader使用;
3.EbootEtherReadData(): 本函数从以太网端口读取指定数量的字节数据到调用者指定的内存缓冲区中;
//Eboot类型BootLoader中通过以太网端口下载镜像的程序实现的简洁代码
if (! EbootInitEtherTransport(...) )
{
while (1); //spin forever
}
//main loop of download
while ( EbootEtherReadData(...) )
{
//process the data
processData(....);
}
//download complete,wait for host to connect
pcfgdata = EbootWaitForHostConnet(...);
----------------------------------------------------------------------------------------------------------------------------------------------------
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);
pEdbgAddr:该参数是指向一个EDBG_ADDR结构体数据的指针,这个结构体中包含有目标设备的IP地址、MAC地址和UDP端口号等数据。如果BootLoader使用静态IP地址,则这是一个输入参数;如果BootLoader通过DHCP协议获取动态IP地址,则它将输出获取所得的动态IP地址。
pdwSubnetMask:该参数是目标设备IP地址的子网掩码。如果BootLoader使用静态IP地址,则这是一个输入参数;如果BootLoader通过DHCP协议获取动态IP地址,则它将输出获取所得的动态IP地址的子网掩码。
pfJumpImg:这是一个BOOL型的输出参数,它的输出值来源于用户对Platform builder 的选项设置,它决定了OEMpreDownload函数返回值。如果pfJumpImg参数输出TRUE,则OEMPreDownLoad函数返回BL_JUMP,表示BootLoader加载存储在本地的操作系统镜像并且跳转至运行;如果pfJumpImg参数输出FALSE,则OEMPreDownload函数返回BL_DOWNLOAD,表示BootLoader将从网络上下载镜像并且跳转至运行。如果OEMPreDownload函数执行失败,则返回BL_ERROR.
pdwDHCPLeaseTime:如果BootLoader通过DHCP协议获取动态IP地址,则该指针参数所指向的内存区域用于输出动态IP地址的出租(Lease)时间;如果BootLoader使用静态的IP地址,则该参数被赋值为NULL。EbootInitEtherTransport函数工具这个参数的输入数据判断调用者的意图,如果pdwDHCPLeaseTime的输入值为NULL,表示Bootloader使用静态IP地址;如果该参数输入值为非NULL,则BootLoader通过DHCP协议获取动态IP地址。
VersionMajor:BootLoader的主版本号
VersionMinor:BootLoader的次版本号
szPlatformString:用作产生目标设备名字的平台字符串,比如“XSC1BD”
szDeviceName:目标设备的全名字符串,它通常由在平台字符串之后加上由MAC地址计算得到额随机数产生,比如“XSC1BD1234”
CPUId:这个参数是CPU的标识符
dwBootFlags:不使用的参数,取值总为 0
BOOL EbootEtherReadData (DWORD cbData, LPBYTE pbData);
cbData:是输入参数,它的数值是以字节为单位的从以太网端口待读取的数据量。
pbData:是输出参数,它是指向调用者提供用以存放读取到以太网数据的内存缓冲区的指针。
函数的返回值是BOOL型,返回TRUE表示函数执行成功,FALSE表示执行失败。
EDBG_OS_CONFIG_DATA *EbootWaitForHostConnect (EDBG_ADDR *pDevAddr, EDBG_ADDR *pHostAddr);
pDevAddr:是指向存放嵌入式目标设备的指针。
pHostAddr:是指向运行Platform Builder的开发计算机的以太网属性的EDBG_ADDR结构体数据的指针。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/guly699/archive/2009/10/16/4679775.aspx