WinCe 配置文件解析
WinCe 配置文件解析
2011年01月20日
WinCE 下配置文件提供主要包括:源代码配置文件,CE镜像配置文件
源码配置文件包括1:Dirs文件,2:Makefile文件,3:Sources文件;Dirs文件是一个文本文件,它指定包含要编译的源码子目录,Dirs文件是当前目录的子目录列表,告诉Build当前目录存在哪些子目录需要编译例如下面的Dirs文件
DIRS = \
DrvLib \
DMA \
Display \
如果想编译当前目录下的所有子目录,那么只需要将dirs文件的内容写为
DIRS=*
Makefile文件,WinCE下Makefile文件内容只要添加如下内容即可
!include $(_MAKEENVROOT)\makefile.def
Sources文件
TARGETNAME=GIO
TARGETTYPE=DYNLINK
RELEASETYPE=PLATFORM
DEFFILE=GPIO.def
DLLENTRY=DllMain
SOURCES= \
GPIO.c
INCLUDES=$(INCLUDES);
TARGETLIBS= \
$(_COMMONOAKROOT)\LIB\$(_CPUINDPATH)\ceddk.lib \
$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib
CE镜像配置文件
Makeimg.exe通过镜像配置文件创建一个运行时的CE镜像,CE镜像配置文件包括二进制镜像构建文件,注册表文件,文件系统文件,数据库文件。二进制镜像构建文件,它定义了包含在运行时镜像中的模块和文件;注册表文件,冷启动时候为运行时CE镜像定义注册键值和值;文件系统文件。冷启动时为运行时镜像创建定义RAM文件系统目录,文件,链接等;数据库文件。冷启动期间为运送时CE镜像创建的存储对象定义的数据库;字符串文件。为了使文本在.reg,.dat,.db文件中队用户可见,须定义本地相关的的字符串替换。
二进制镜像文件
二进制镜像构建文件(.bib)定义了那个模块或者文件被包含到运行时镜像。在编译期间makeimg.exe使若干个.bib文件合并为ce.bib文件。.bib文件包含四个部分。分别为MEMORY,CONFIG,MODULES和FILES;MEMORY。定义可用的物理内存。CONFIG。定义romimage.exe输出的配置选项。FILES,指定放在CE镜像中的文件列表。MODULES。指定放在CE镜像中的模块列表,包含EXE和DLL文件,与FILES的区别是放在MODULES中的文件通常是代码文件,并且构建系统时不会压缩这些文件
按照功能来分,.bib文件可以分为如下几种类型。(1)Platform.bib文件位于BSP中;(2)Project.bib改文件位于创建的BSP项目的FILES文件夹下面..\OAK\FILES下;(3)Common.bib位于目录%_WINCEROOT%\PUBLIC\COMMON\OAK\FILES下它定义了CE包含的通用显示驱动和核心系统模块(4)Config.bib.位于目录%_PLATFORMROOT%\MYBSP\Files下它定义了ROM和RAM的信息
MEMORY部分,MEMORY区域入口格式如下
Name Address Size Type
Type 表示内存的类型WinCE提供如下6中内存类型:FIXUPVAR 当RomImage被调用时,改变一个全局内核变量和内核模块变量;NANDIMGE,如果开发板上有NAND Flash 那么可把该段内存标志位NANDIMGE;RAM 为定位运行进程以及将基于RAM的CE文件系统指定到内核的可用虚拟地址范围,该段内存必须是连续和页对齐的,如果想在RAM中间保留一段内存,则必须在Config.bib文件中进行说明,然后再内核调用OEMGetExtensionDRAM()和pNKEnumExternsionRAM时做相应的处理;RAMIMGE,指定CE镜像会被放在该段内存上RAMIMAGE知道那个的内存名称必须与bib文件中运行的CE镜像相同,一般为NK;RESERVED 指定一段ROM或者RAM的区域CE创建映像时候ROMIMAGE跳过该段保留区;EXTENSION 指定一段CE镜像(.bin)文件区域。
例如
;------------------------------------------------- ----
; NAME ADDRESS SIZE TYPE
;------------------------------------------------- ----
XIPKERNEL 80100000 00300000 RAMIMAGE
NK 80400000 01FFC000 NANDIMAGE
CHAIN $(CHAIN_ADDRESS) $(CHAIN_LENGTH) RESERVED
RAM 80400000 06400000 RAM
ENDIF
; Common RAM areas
AUD_DMA 80002000 00002000 RESERVED;音频DMA
TEMPS 80010000 00010000 RESERVED
DBGSER_DMA 80022000 00002000 RESERVED;驱动的全局内存区
ARGS 80020800 00000800 RESERVED
SER_DMA 80024000 00002000 RESERVED
IR_DMA 80026000 00002000 RESERVED
SLEEP 80028000 00002000 RESERVED
EDBG 80030000 00020000 RESERVED
CMM 85D00000 00300000 RESERVED
FIMG_BUF 86000000 00800000 RESERVED
DISPLAY 86800000 00C00000 RESERVED;显示帧缓冲区
MFC_JPEG 87400000 00C00000 RESERVED
CONFIG部分
在一个.bib文件中Config部分不是必须有的,config部分不是必须有的,它就是一些额外的选项,用于高速系统如何生成CE镜像,常用选项如下:(1)AUTOSIZE 如果镜像再RAM中,此项允许自动把CE镜像没有使用的RAM分配给Wince操作系统,
AUTOSIZE选项格式如下。
(1)AUTOSIZE=[OFF|ON];默认为OFF,CE镜像不在RAM中
PROFILE,指定Romimage.exe是否包含包含用来分析相关特征和机构。
(2)PROFILE选项如下
PROFILE=[OFF|ON|ALL]
(3)BOOTJUMP 指定启动时系统跳转地址,默认调转到Startup()函数的地址配置BOOTJUMP选项如下。
BOOTJUMP=[address|NONE] (4)COMPRESSION 指定rominage.exe是否压缩CE镜像中的可写部分。如果压缩,则CE运行时候会将该部分解压到RAM,如果没有压缩则将该部分直接复制到RAM
(5)KERNELFIXUPS 指定构建系统是否对于内核的可写部分重定位到物理地址RAM的起始位置,配置格式
KERNELFIXUPS=[OFF|ON]
(6)X86BOOT。指定跳转地址是否插入X86的复位向量地址中。配置X86BOOT选项格式如下
X86BOOT=[OFF|ON|address]
MODULES 的语法格式如下
NAME PATH MEMORY block Section override Type
Name:名称,Path:modules路径, Memory Block :该参数指定romimage.exe 加载目标模块到内存区域的ramimage部分。该内存位于config.bib文件中memory部分指定的某段内存,Section Override :该参数是可选的,它可以为modules,files或者空,如果设置了该参数 那么构建系统就会根据它来决定该项是modules或者files。Type:该参数指定文件的类型,主要有以下几种类型
S:System
H:Hide
R:压缩资源,只应用于Modules部分
C:如果应用于一个模块,则压缩全部内容
D:运行时不允许调试
N:表示一个模块为不可信任,只应用于Modules部分
P:指定Romimage.exe禁止检查指定的CPU类型,该标识只用于资源dll
K:表示romimage.exe 必须固定模块的内核地址,romimage.exe分配一个固定的虚拟地址给该DLL设置了改标志的dll只能够被loadKernelLibrary()函数加载。
M:表示对此页禁止按需调页。
U:标识不压缩此文件。
例如
SsapMp4Parser.dll $(_FLATRELEASEDIR)\SsapMp4Parser.dll NK
FrameExtractFilter.dll $(_FLATRELEASEDIR)\FrameExtractFilter.dll NK
MFCDecFilter.dll $(_FLATRELEASEDIR)\MFCDecFilter.dll NK
AACSBREnhancedDecoder.dll $(_FLATRELEASEDIR)\AACSBREnhancedDecoder.dll NK
Files部分,files部分与modules部分的语法功能很相似,唯一不同的是在构建系统时 对于Files部分的文件进行压缩,而对于Modules部分
默认为不压缩。
FILES
; Name Path Memory Type
; -------------- ---------------------------------- -----------
regedit.exe $(_FLATRELEASEDIR)\regedit.exe NK U
recorder.exe $(_FLATRELEASEDIR)\recorder.exe NK U
Bibhelper脚本
通过Bibhelper.vbs脚本,在ce.bib文件已经编译完成后,改变一个模块的文件属性语法格式如下
[Modules Name] [+-=][flag]
注册表文件
Makeimg.exe通过.reg文件为CE镜像来建立注册表并添加默认键值,注册表键值类型:REG_SZ字符串类型,REG_DWORD双字节类型,REGMULTI_SZ表示多字符串类型 REG_BINARY 二进制类型。
文件系统文件
文件系统文件的扩展名为.dat 它为设备的初始化设置而定义目录和文件,在设备冷启动时候Filesys.exe使用这些dat创建目录,快捷方式以及设备上的根文件系统
例如
;在根目录上创建Documents and Settings文件夹
;将GPIOTest.exe 复制到Documents and Settings文件夹下
root:-Directory("Documents and Settings")
Directory("\Documents and Settings"):-Directory("\Administrator"):
Directory("\Program Files"):-File("GPIOTest.exe","\Windows\GPIOTest.ex e")
.dat文件的一些声明
Root 定义CE镜像的跟目录
Root:[-Directory("目录名称")][-Permdir("目录名称")][-File("目标文件名称","源文件")]
root 这个参数指定操作系统根目录
Directory("")定义一个目录名称
Permdir("")定义一个固定目录名称,该声明与Directory("")定义的目录的不同在于Permdir("")创建的固定目录是无法通过RemoveDirectory()函数删除的,试图删除则会报告ERROR_ACCESS_DENIED消息
数据库文件
数据库文件的扩展名闻.db,它用于为对象存储区定义存储。当设备冷启动时makeimg使用.db文件创建默认数据库。WinCE的数据库文件.db的语法格式如下
DataBase:"db_name":hex_type:num_sort_order:1
record:
field:field_hex_proped:value
end
end DataBase
数据库各个参数的含义
#db_name 该参数指定数据库名称
#hex_type 指定数据库标识,通过它来搜索数据库
#num_sort_order 指定数据库派讯索引个数
# 这个参数指定排序次序 1)单一排序
:
2)多属性排序
{::....}
hex_glags 为排序旗标有以下几种取值
0:区别大小写,升序
1:降序
2:不区分大写
3:降序,不区分大小写
# filed_hex_propid 该参数指定属性标识的字段
#value该参数指定一个字符串或者十六进制DWORD类型数值。
猜你喜欢
转载自hmd94hmd.iteye.com/blog/1363209
今日推荐
周排行