WINCE平台初始化配置文件

转自:http://blog.csdn.net/joyzml/archive/2009/11/12/4802708.aspx


REG文件:

WINCE的REG文件用来向生成的运行时映像的注册表中添加默认的键值。在REG中写入的注册表值,会被默认的放到运行时映像的初始注册表中,这对于给操作系统添加一些默认配置非常有用。

下面是一个典型REG文件示例:

———————————————————————————————————————

[HKEY_LOCAL_MACHINE/SOFTWARE/Tongji/MyApp]   (注册表键)

“Version”=dword:0500

“Build”=dword:0b3f

“Greeting”=”Hello!”

“Messages”=multi_sz:”Windows CE is Cool!”,”Myapp is also cool”

“AppData”=hex:01,00,02,00,03,00

———————————————————————————————————————

这段注册表文件含义如下:

注册表值的名称
 数据类型
 数据
 
Version
 REG_DWORD
 0x0500。DWORD值总被当做十六进制数,因此没有使用“0x”前缀。
 
Build
 REG_DWORD
 0x0b3f
 
Greeting
 REG_SZ
 “Hello!”
 
Messages
 REG_MULTI_SZ
 “Windows CE is Cool!/0Myapp is also cool/0/0”
 
AppData
 REG_BINARY
 01,00,02,00,03,00同样总是假设采用十六进制
 


DAT文件:

DAT文件用来指定当系统冷启动时,FileSys.exe应当如何初始化RAM文件系统结构。可通过DAT文件在Windows CE文件系统的根目录上挂接其他文件夹,也可使用DAT文件把已经存在的文件复制到指定的目录中。

示例:

———————————————————————————————————————

root: - Directory(“My Documents”)

root: - Directory(“Program Files”)

Directory(“/Program Files”): - Driectory(“My Projects”)

Directory(“/Program Files”): - Directory(“Accessories”)

Directory(“/Program Files”): - Directory(“Communication”)

Directory(“/Program Files/My Projects”): - File(“My Project Program”,”/Windows/Myproj.exe”)

root: - File(“/control.lnk”,”/Windows/control.lnk”)

———————————————————————————————————————

此例中,首先用root命令在WINCE文件系统根目录中建立两个新文件夹:“My Documents”“Program Files”;然后,又使用Directory命令在Program Files文件夹中建立3个子目录:“My Projects”“Accessories”“Communication”;最后两句分别把/Windows/Myproj.exe复制到了My Projects目录中,并重命名为My Project Program,把/Windows/control.lnk复制到了根目录下,命名为control.lnk。

DB文件:

DB文件用于为对象存储区定义默认的基于RAM的数据库。WINCE构建系统,除了为ActiveSync设置自动连接外,很少使用默认数据库。

———————————————————————————————————————

Database: "DB_notify_events" : 0 : 1 : 0001001F : 0

Record :

Field : 0001001f : "repllog.exe"

Field : 0002001f : " AppRunAtRs232Detect"

Field : 00030013 : 9

End

End Database

———————————————————————————————————————

此DB文件建立了一个名为“DB_notify_events”的数据库,并且建立了3个Field。这样一旦检测到RS232事件,就可运行repllog.exe程序。因此ActiveSync在串口上也可实现“热插拔”操作。

BIB文件:

Binary Image Builder。作用:指示构建系统如何构建二进制映像。BIB文件会指示哪些文件被打包到运行时映像中,同时还会指示如何往目标板上加载模块和文件。

BIB文件共分为:MEMORY , CONFIG , MODULES , FILES 。


 描述
 
MEMORY
 定义可用物理内存,包括起始地址,大小,内存类型。此节必须被放在config.bib文件中,放在Platform/MyBSP/Files目录中
 
CONFIG
 定义了一些附加选项来定制输出。默认情况下,此节也要被放在config.bib文件中
 
FILES
 指定放在运行时映像中的文件列表
 
MODULES
 指定放在运行时映像中的模块列表,包括EXE和DLL文件,与FILES的区别是放在MODULES中的文件通常是代码文件,并且构建系统不会压缩这些文件,因此代码可实现本地执行XIP
 


MEMORY节的格式非常简单,如下:

Name[空格]          Address[空格]                     Size[空格]             Type

———————————————————————————————————————

MEMORY

       NK                8C200000  01C00000  RAMIMAGE

       RAM                     8DE00000  02200000  RAM

; Common RAM areas

       AUD_DMA               8c002000  00002000  RESERVED

       DRV_GLB                    8c010000  00010000  RESERVED

       SD_DMA                     8c028000  00008000  RESERVED

 

       EDBG                   8c030000  00020000  RESERVED

       DISPLAY                     8c160000  000a0000  RESERVED

———————————————————————————————————————

此段代码取自config.bib。表示从地址0x8C200000开始的1C00000大小的空间用来存放运行时映像;从0x8DE00000地址开始的2200000大小的内存是RAM区。还保留了几块内存,是一些音频,SD卡等DMA区域。

内存类型(Type):

FIXUPVAR:用此选项可改变内存模块中的全局变量的值。

NANDIMAGE:如果开发板上有NANDFLASH,那么可把此段内存标为NANDIMAGE类型。如果BootLoader支持BinFS,那么就可使放在NAND中的bin文件支持本地执行XIP(默认情况下只有NOR的Flash才可支持本地执行XIP)。此段内存必须页对齐。

RAM:指定此段内存是RAM。用来执行程序,存放RAM文件系统。此区域必须连续,同时必须页对齐。

RAMIMAGE:运行时映像放在此段内存上。物理上,此段内存可为RAM也可为NOR Flash,但通常为NOR Flash。标为RAMIMAGE内存的名称必须与bib文件中的运行时名称相同,一般为NK。

RESERVED:声明此段内存为保留区,WINCE不会使用此段内存。通常此关键字保留DMA缓冲。

 

CONFIG节是一些附加的选项,用来告诉系统如何生成运行时映像。

AUTOSIZE 如果运行时映像在RAM中,此选项允许自动把运行时映像没有使用的RAM分配给WINCE操作系统,当做物理RAM使用,而无须更改.bib文件。

PROFILE 指定是否在运行时映像中包含用来性能剖分(profile)符号和结构。

BOOTJUMP 指定启动时系统的跳转地址。默认会跳向Startup函数的地址。

COMPRESSION 指定构建系统是否压缩运行时映像中的可写部分。如果此部分被压缩,那么WINCE运行时会把这部分解压缩到RAM中;如果没有被压缩,则直接把这部分复制到RAM中。

KERNELFIXUPS 指定构建系统是否对内核的可写区域进行重定位。如果设为ON,则默认会把内核的可写区域重定位到物理RAM的起始地址。

RAMFLAGS 指定内核特性的一些位掩码。0x00000001表示禁用按需调页,这样某个模块在运行前就要被完全装入物理RAM中;0x00000002表示禁止Full Kernel Mode;0x00000010表示只信赖bib文件中放在MODULES块中的文件;0x00000020指示内核不要清空X86的TLB;0x00000040表示启用DLL的/base连接选项,这样DLL就可被加载到某个预先定义的地址。

ROMSTART 指定ROM映像的起始地址。

ROMWIDTH 指定ROM的宽度。可为8,16,32.32表示构建系统会把整个ROM映像为一个文件。

ROMSIZE 指定ROM映像的大小。通常也就是开发板上ROM的大小。

 

例:

———————————————————————————————————————

CONFIG

       COMPRESSION=ON

       KERNELFIXUPS=ON

       PROFILE=OFF

       ROMFLAGS=0

ROMWIDTH=32

IF IMGFLASH!

       AUTOSIZE=ON ;Use Autosize to utilize unused RAM for NK.BIN

       ROMSIZE=01A00000 ;Change this size if your image is bigger

       ROMSTART=88200000  ;Run for SDRAM Version  

ENDIF

IF IMGFLASH

       ROMSTART=90000000 ;Run for ROM version

       ROMSIZE=02000000 ;32MB ROM size

ENDIF          

       这段代码启用了压缩和内核重定位。禁用了PROFILE,ROMFLAG设置为0,表示默认启动Full Kernel Mode和按需调页,并且把ROM映像放在一个文件中。然后判断是否设置了IMGFLASH环境变量,如果没有设置,就打开ARTOSIZE,同时把ROMSTART设定到SDRAM上,如果设置了IMGFLASH,就把ROMSTART设置到ROM上。

MODULES和FILES用来指定打包到运行时映像中的文件。不同的是构建系统压缩FILES中的文件而不压缩MODULES中的文件。因此,通常把WAV,BMP等数据文件放在FILES中,而把EXE,DLL等代码文件放在MODULES中,这样,没有经过压缩的代码就可以本地执行。

       MODULES和FILES语法一样。

Name[空格]          Path[空格]            Memory block[空格]     Section override[空格]   Type

       Name是在运行时映像中文件的名称。Path是要打包文件的完整路径和名称。Memory block指定把此文件放在MEMORY节的哪一段内存中。Section override可被设置成MODULES,FILES或置空,如果设置了此项,那么构建系统会根据此设置来决定这一项是MODULES还是FILES,而不管文件在哪个节中。Type是文件的类型,常用的标志有:S表示系统文件,H表示隐藏文件,U表示不压缩此文件,D标示不能对此文件进行调试。N表示此文件不受信任,M表示对此文件禁止按需调页。

例:

———————————————————————————————————————

; @CESYSGEN IF CE_MODULES_DEVICE

device.exe      $(_FLATRELEASEDIR)/device.exe      NK  SHM

devmgr.dll      $(_FLATRELEASEDIR)/ devmgr.dl      NK  SHM

regenum.dll     $(_FLATRELEASEDIR)/ regenum.dll   NK  SH

busenum.dll    $(_FLATRELEASEDIR)/ busenum.dll   NK  SH

; @CESYSGEN ENDIF

———————————————————————————————————————

       此段代码表示如果设置了CE_MODULES_DEVICE,就把_FLATRELEASEDIR目录的device.exe , devmgr.dll , regenum.dll 和 busenum.dll 打包到运行时映像中,放在NK内存段,并且制定device.exe , devmgr.dll为系统文件,隐藏文件,禁止按需调页;同时把regenum.dll 和 busenum.dll指定为隐藏文件和系统文件。


 

       以common命名的Common Files作用域是所有的OS Deign。对common.*文件的修改会影响到所有的OS Design,因此common.*文件一般不需改动,使用默认文件即可满足要求。Platform.*文件的作用范围是使用该BSP的OS Design,因此一般把与硬件相关的配置信息放到platform。*文件中。Project.*文件作用范围仅仅是当前OS Design。一般在Project.*文件中只存放与本项目相关的一些配置信息。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/joyzml/archive/2009/11/12/4802708.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值