一、dir文件:
- DIRS= /
- drivers /
- kernel /
- gwe /
- eboot
dir文件用来指定需要编译的目录。
若设为:DIRS = *,则表示编译当前所有目录。
二、sources文件:
一般和源代码放在同一目录下。主要是定义一些编译所需的宏。告诉 Build.exe在编译源代码的时候应该如何编译和链接,告诉 Nmake.exe如何编译源代码以及最后生成什么类型的文件。
TARGETNAME:最后编译完后生成的目标文件的名字,不包括扩展名。
TARGETTYPE:生成的文件的类型。具体值如下:
LIBRARY,一个.lib文件
DYNLINK,一个.dll文件
PROGRAM,一个.exe文件
RELEASETYPE:该宏设置两个环境变量RELEASEDIR和RELEASELIBDIR,就是设置编译后生成文件存 放的路径。具体值如下:
PLATFORM,生成的文件在PLATFORM/<BSP NAME>/<Target>
LOCAL,生成的文件在当前路径下
CUSTOM,生成的文件在TARGETPATH指定的位置
MANAGED,生成的文件在%_PROJECTROOT%/OAK/<Target>/Managed
OAK, SDK, DDK,生成的文件在%_PROJECTROOT%/Oak/<Target>
TARGETPATH:当上面的RELEASETYPE=CUSTOM的时候,该宏指定路径。
SOURCELIBS:静态链接。函数的实体被链接过来,生成一份拷贝。
TARGETLIBS:动态链接。函数的地址被链接过来,系统执行时会加载该库。
INCLUDES:指定额外的要搜索的头文件的路径。
SOURCES:指定要被编译的文件。
ADEFINES:指定汇编器要使用的参数。
CDEFINES:指定编译器要使用的参数。
LDEFINES:指定连接器要使用的参数。
RDEFINES:指定资源编译器Rc.exe的参数。
DLLENTRY:指定dll的入口函数。
DEFFILE:指定该模块的.def文件。
EXEENTRY:指定可执行文件的入口函数。
SKIPBUILD:不做实际的build操作,直接返回成功。
WINCECOD:编译后生成一个.cod的汇编文件,用于查看汇编代码调试。
WINCECPU:用于说明为指定的CPU编译,这样被编译出来的目标文件会被放在_TGTCPU环境变量所指定的子目录下 面,一般该宏在sources.cmn中定义。
WINCEMAP:编译后生成一个.map文件,用于调试。
WINCEOEM:设置该值表示需要使用WinCE下的一些公用的库和头文件,该值一般在BSP中的sources.cmn中 定义。
WINCETARGETFILE0:用于告诉编译系统在编译当前路径下的源码文件之前,要先由Build.exe编译的目标文 件。
WINCETARGETFILES:用于告诉编译系统在链接当前路径下所有的目标文件之前,要先由Build.exe编译的目 标文件。
WINCE_OVERRIDE_CFLAGS:用于定义用户自己的编译器参数取代默认的编译器参数。
.bib文件是用来指导WinCE的编译系统产生可执行二进制文件的,其中使用的地址都是虚拟地址。
三、boot.bid文件
先来看boot.bib。boot.bib用来设置Eboot程序中的虚拟内存分配。
- ;******************************************************************************
- ; TITLE: BOOT.BIB
- ;
- ; Ethernet Boot Loader Source Module
- ;******************************************************************************
- MEMORY
- ; Name Start Size Type
- ; ------- -------- -------- ----
- PTS 8c000000 00020000 RESERVED
- DRV_GLB 8c020000 00001000 RESERVED
- BIN_FS 8c021000 00005000 RESERVED
- RAM 8c026000 00006000 RAM
- STACK 8c02c000 00004000 RESERVED
- EBOOT 8c038000 00020000 RAMIMAGE
- ; 16 MB area used to cache nk.bin while programming boot media.
- ; TBD: we may need to adjust to 01400000 (20 MB) to cache PPC 2003.
- FLSCACHE 8D000000 01000000 RESERVED
- CONFIG
- COMPRESSION=OFF
- PROFILE=OFF
- KERNELFIXUPS=ON
- SRE=ON
- ROMSTART=8c038000
- ROMWIDTH=32
命名为EBOOT的起始地址为0x8c038000的RAM区域用来存放Eboot镜像(即Nboot将Eboot.nb0复制到起始地址为 0x8C038000的RAM区域),大小为128KB。
命名为PTS的起始地址为0x8c000000的RAM区域用来存放页表(地址 转换表 ,包含g_oalAddressTable),大小为128KB。
三、config.bib文件
再看config.bib。config.bib用来设置WinCE系统的虚拟内存分配。
- ; NK name
- #define NKNAME NK
- ; NK Start address
- #define NKSTART 8C200000
- #define NKLEN 01D00000
- #define RAMSTART 8E000000
- #define RAMLEN 01F00000
- $(NKNAME) $(NKSTART) $(NKLEN) RAMIMAGE
- RAM $(RAMSTART) $(RAMLEN) RAM
- ; NK 8C200000 01D00000 RAMIMAGE
- ; RAM 8E000000 01F00000 RAM
- ; Common RAM areas
- AUD_DMA 8c002000 00002000 RESERVED
- DRV_GLB 8c010000 00010000 RESERVED
- DBGSER_DMA 8c022000 00002000 RESERVED
- SER_DMA 8c024000 00002000 RESERVED
- IR_DMA 8c026000 00002000 RESERVED
- SD_DMA 8c028000 00008000 RESERVED
- EDBG 8c030000 00020000 RESERVED
- CPXIPCHAIN 8c050000 00008000 RESERVED
- SLEEP_BUFF 8c058000 00004000 RESERVED
- DISPLAY 8c100000 00100000 RESERVED
RESERVE属性表明该片内存是BSP自己使用的,系统不必关心其用途;RAMIMAGE说明它是一片存放OS IMAGE的内存;而RAM则表示些片内存为RAM,系统可以在其中分配空间,运行程序。