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