正文

WinCE EBOOT中的Boot Args与Driver Globals2009-08-04 15:44:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/liyutai/46067.html

分享到:

在EBOOT中包含的一个重要的缓冲区叫Driver Globals,它用于在设备驱动和WinCE OS之间共享数据。而在EBOOT中会用到的启动参数结构被称为Boot Args,是指用于EBOOT和WinCE OS之间共享一些参数信息。一般来说Boot Args会在EBOOT运行的时候被赋值或者更新,最常用的就是网络设备的相关信息设置,比如IP地址,MAC地址,中断等信息。


Driver Globals包含了Boot Args,也就是说Driver Globals是一块内存缓冲区,其中里面也包含了Boot Args的内存缓冲区。这里要说明的是Driver Globals是一个可选用的功能,无非就是一块内存,在EBOOT和WinCE OS之间进行数据共享。如果你想用,你就用,不想用,也可以不用。我们在使用Driver Globals的时候,一般会在eboot.bib和config.bib文件定义一块预留的内存区域,在这两个文件中定义的这块内存区域的起始地址和大小必须一致,相信这个大家都能理解,至于类型肯定是RESERVED。这样一来,在EBOOT和WinCE运行的时候,这块共享内存就被预留出来了。当然,我们还需要在BSP中通过宏定义来定义这块内存的起始地址和大小,这样就可以在BSP中访问这块内存了。举例:


首先在eboot.bib和config.bib都要有下面的定义:


MEMORY
;   Name     Start     Size      Type
;   -------  --------  --------  ----
   ARGS     80020800  00000800  RESERVED


上面的描述表示Driver Globals的共享内存的起始地址是0x80020800,大小是0x800。


然后还要在BSP中对其起始地址和大小进行宏定义,如下:


#define IMAGE_SHARE_ARGS_UA_START       0xA0020000
#define IMAGE_SHARE_ARGS_CA_START       0x80020800
#define IMAGE_SHARE_ARGS_SIZE           0x00000800


这样,EBOOT就可以通过上面的宏定义的地址来访问共享内存了。这块共享区域是用Driver Globals结构来描述的,具体定义如下:


typedef struct _DRIVER_GLOBALS
{
    //
    // 之后,可以定义用于驱动程序和WinCE OS之间的共享信息
    //


    BOOT_ARGS        bootargs;
} DRIVER_GLOBALS, *PDRIVER_GLOBALS;  


可以看出里面包含了用于描述Boot Args的BOOT_ARGS结构,当然用户也可以在结构中添加用于驱动和WinCE OS之间共享的数据类型。


下面介绍一下Boot Args的BOOT_ARGS结构,定义如下:

......

更多内容请点击查看全文:http://www.hzlitai.com.cn/article/ARM9-article/system/1709.html

阅读(2594) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册