转自: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