Chinaunix首页 | 论坛 | 博客
  • 博客访问: 138182
  • 博文数量: 38
  • 博客积分: 1605
  • 博客等级: 上尉
  • 技术积分: 370
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-12 14:59
文章分类

全部博文(38)

文章存档

2013年(3)

2012年(8)

2011年(28)

分类: 嵌入式

2012-04-11 15:01:45

BootLoader获取的数据信息,有些要传递给Windows CE系统使用。途径是在RAM中开辟一块存储区域,通过一个结构体来保存这些信息。

EBOOT下有一个loader.h文件,其中有如下定义:
// Driver globals pointer (parameter sharing memory used by bootloader and OS).
#define pBSPArgs ((BSP_ARGS *) IMAGE_SHARE_ARGS_UA_START)


从注释可以看出,pBSPArgs指向一块内存,用来保存bootloader和OS之间的共享参数。pBSPArgs是一个结构体((BSP_ARGS)类型的指针。BSP_ARGS结构体的成员中,就保存了这些共享参数。这个结构

IMAGE_SHARE_ARGS_UA_START宏在image_cfg.h文件中定义:
 #define IMAGE_SHARE_ARGS_UA_START 0xA0020000
 #define IMAGE_SHARE_ARGS_CA_START 0x80020000
 #define IMAGE_SHARE_ARGS_SIZE     0x00000800

实际上0xA0020000和0x80020000虚拟地址都映射到0x30020000物理地址,大小为0x00000800,也就是2KB。在Config.bib文件中,也有相关定义:

MEMORY

ARGS
80020000
00000800
RESERVED


BSP_ARGS结构体的定义在\INC\args.h文件中:
———————————————————————————————————————
typedef struct {
OAL_ARGS_HEADER header; // 是信息头,用来指示pBSPArgs所指内存是否包含有效信息
UINT8 deviceId[16];// Device identification
OAL_KITL_ARGS kitl;// CAUTION: The DeviceEmulator contains hard-coded knowledge of the addresses and contents of these

...


} BSP_ARGS;

header是信息头,用来指示pBSPArgs所指内存是否包含有效信息。
deviceId是设备ID,用来标识KITL使用的端口外设。
kitl用于存储KITL端口的相关配置信息。

可以向 BSP_ARGS 添加字的数据成员,完成特殊用途!!! 例如 iboot等功能!


 参考:http://blog.csdn.net/zhandoushi1982/article/details/4581226

阅读(1543) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~