全部博文(38)
分类: 嵌入式
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