wince中的BSP工程的相关文件介绍

转自:http://blog.csdn.net/churenxh/archive/2008/12/09/3485011.aspx

 

一.pbcxml分析

       

每一个BSP都有一个工程文件,比如MyBSP.pbcxml,里面描述了BSP的信息。下面就来介绍一下BSP的pbcxml文件。

 

文件的大致格式应该是这样的:

<CatalogFile …>

<FileInformation ….>

….

</FileInformation>

<BSP …>

</BSP>

<Item …>

</Item>

<Item …>

</Item>

<Item …>

</Item>

<Item …>

</Item>

</CatalogFile>

 

实际上<CatalogFile>…</CatalogFile>相当于一个入口,在这里面包含的就是WinCE BSP的所有内容了,里面包含几个部分,下面分别介绍每个部分。

 

1. <FileInformation>…</FileInformation>项:这里面包含了BSP的基本信息,比如BSP的名字,描述,厂家等。下面是一个模板:

<FileInformation Id="FileInformation: VENDOR:CATALOGFILENAME ">

    <Title>Title Name</Title>

    <Description>BSP Description</Description>

    <Vendor>Vendor Name</Vendor>

    <OSVersion>WinCE Version</OSVersion>

    <FileVersion>File Version</FileVersion>

</FileInformation>

 

这里不做过多介绍了,一看就应该明白,下面给个实际BSP中的用到该项描述的例子:

<FileInformation Id="FileInformation:Cirrus Logic:EP94xx">

    <Title>EP94xx</Title>

    <Description>EP94xx BSP Catalog Items</Description>

    <Vendor>Cirrus Logic</Vendor>

    <OSVersion>6.00</OSVersion>

    <FileVersion>1.0.0</FileVersion>

</FileInformation>

 

2. <BSP>…</BSP>项:该项一般在<FileInformation>项后面,用来描述当前的BSP中都有哪些组件,或者说有哪些Items。具体模板如下:

<Bsp Id="Bsp: VENDOR: BSPDIR: CPU">

    <Title>BSP Title</Title>

    <Description>BSP Description</Description>

    <PlatformDirectory>Platform Directory</PlatformDirectory>

    <CpuId>Cpu:CPU ID</CpuId>

    <BspItemId>Item: VENDOR: VARIABLE</BspItemId>

    <BspItemId>Item: VENDOR: VARIABLE</BspItemId>

    …

</Bsp>

 

这里需要做一下解释:

    VENDOR:厂家名称,比如三星提供的BSP,那么就应该是SAMSUNG。

    BSPDIR:指该BSP在”/Platform”文件夹下的路径。

    CPU:指该BSP所支持的CPU,比如ARMV4I。

    MODULE:指BSP中的各个模块被编译后所生成的dll或者exe的名字,比如audio.dll,那么这里就应该是audio。

    VARIABLE:指BSP中和某个模块相关的环境变量。

 

    <Title>…</Title>:指BSP的标题

    <Description>…</Description>:指BSP的一些描述

    <PlatformDirectory>…</PlatformDirectory>:指该BSP在”/Platform”目录下的路径。

    <CpuId>…</CpuId>:指所支持的CPU,比如ARMV4I。

    <BspItemId>…</BspItemId>:指BSP中都包含了哪些模块。

 

 

这里要注意的是,<BspItemId>…</BspItemId>有两种表示方法如下:

Method 1:<BspItemId>Item: VENDOR: VARIABLE</BspItemId>

Method 2:<BspItemId>Item: VENDOR: MODULE: BSPDIR</BspItemId>

 

可以看一下WinCE6.0中Platform目录下的一些微软提供的BSP的pbcxml文件,大多采用第二种方法,我个人更喜欢第一种方法,简单。

 

下面也给个例子:

<Bsp Id="Bsp:Cirrus Logic:EP94xx:ARMV4I">

    <Title>EP94xx: ARMV4I</Title>

    <Description>Cirrus EP94xx BSP for WinCE 6.0</Description>

    <PlatformDirectory>EP94xx</PlatformDirectory>

    <CpuId>Cpu:ARMV4I</CpuId>

    <BspItemId>Item: Cirrus Logic: bsp_ep94xx_i2s_audio</BspItemId>

    <BspItemId>Item: Cirrus Logic: bsp_ep94xx_flash</BspItemId>

    <BspItemId>Item: Cirrus Logic: bsp_ep94xx_nandflash</BspItemId>

    <BspItemId>Item: Cirrus Logic: bsp_ep94xx_ethernet</BspItemId>

    <BspItemId>Item: Cirrus Logic: bsp_ep94xx_serial</BspItemId>

    <BspItemId>Item: Cirrus Logic: bsp_ep94xx_usb</BspItemId>

    <BspItemId>Item: Cirrus Logic: bsp_ep94xx_touch</BspItemId>

    <BspItemId>Item: Cirrus Logic: bsp_ep94xx_rtc</BspItemId>

</Bsp>

 

 

3. <Item>…</Item>项:它会在<BSP>项后面,详细描述<BSP>项中的每一个模块,也就是描述BSP中的每一个驱动的相关信息。模板如下:

<Item Id="Item: VENDOR: VARIABLE">

    <Title>Driver Title</Title>

    <Description>Driver Description</Description>

    <Type>BspSpecific</Type>

    <Variable>Variable</Variable>

    <Location>Device Drivers</Location>

    <SourceCode>

    <Title>Source Code Title</Title>

    <Path>Source Code Path</Path>

    </SourceCode>

</Item>

 

前面我们提到了<BSP>项中的<BspItemId>…</BspItemId>有两种表示方法,那么实际上和这里的每一个模块的<Item>项是对应的,上面的用哪种方法表示,这里也同样要用相同的方法如下:

Method 1:<Item Id=”Item: VENDOR: VARIABLE”> …… </Item>

Method 2:<Item Id=”Item: VENDOR: MODULE: BSPDIR”>  …… </Item>

 

这里再对一些定义作个解释:

    VENDOR:厂家名称,比如三星提供的BSP,那么就应该是SAMSUNG。

    CPU:指该BSP所支持的CPU,比如ARMV4I。

    VARIABLE:指BSP中和该模块相关的环境变量。

 

    <Title>…</Title>:该驱动的标题。

    <Description>…</Description>:该驱动的描述。

    <Type>…</Type>:对于BSP中的Item来说,这里必须是”BSPSpecific”。

    <Variable>…</Variable>:该驱动用到的环境变量,可以不止一个。

    <Location>…</Location>:指在PB中的Catalog Items View中的位置。

    <SourceCode>…</SourceCode>:描述该驱动的源代码。

    <Path>…</Path>:指向该驱动的源代码的路径。

    <HelpLink>…</HelpLink>:描述一个帮助链接链接到帮助页。

 

下面举个例子:

<Item Id="Item:Cirrus Logic:bsp_ep94xx_i2s_audio">

    <Title>Audio I2S</Title>

    <Description>Audio Driver for I2S</Description>

    <Type>BspSpecific</Type>

    <Variable>BSP_EP94XX_AUDIO</Variable>

    <Variable>BSP_EP94XX_I2S_AUDIO</Variable>

    <Location>Device Drivers</Location>

    <SourceCode>

        <Title>$(_WINCEROOT)/PLATFORM/EP94XX/SRC/DRIVERS/WAV</Title>

        <Path>$(_WINCEROOT)/PLATFORM/EP94XX/SRC/DRIVERS/WAV</Path>

    </SourceCode>

</Item>

 

 

上面对WinCE中的BSP的工程文件pbcxml做了个介绍,相信有点描述语言基础,了解一些WinCE知识的看懂绝对没有问题了。很多时候,在向BSP中添加驱动或者删除驱动的时候,我们就可以直接用记事本打开该文件,然后在里面编辑就可以了,这样很方便。

 

二.REG文件和DB文件

   

1.       REG文件

注册表文件,这个和Windows操作系统中使用的注册表文件基本一样,在BSP中主要是Platform.reg,该注册表文件描述了和硬件平台相关的配置,大部分是用来描述驱动的相关信息。

注册标的格式如下:

[KEY1]

"ValueName1"={Value Type}:{data}

"ValueName2"={Value Type}:{data}

[KEY2]

"ValueName1"={Value Type}:{data}

 

其中Value Type和data相互对应,不同的Value type对应不同的data,具体如下:

Value Type
 data
 
 
REG_SZ
 ”my string”
 字符串类型
 
REG_DWORD
 dword:NNNN(hex number)
 DWORD类型
 
REG_MULTI_SZ
 multi_sz:”my_string_1”,”my_string_2”
 多字符串类型
 
REG_BINARY
 hex:xx,xx,xx
 二进制类型
 
HEX
 hex(xxxxxxxx):xx,xx,xx,xx
 十六进制类型
 


 

在注册表中,同样可以使用IF/ENDIF来进行条件包含,其中条件可以是一个WinCE中的环境变量,还可以在该环境变量后加一个空格再加一个惊叹号(“!”),表示没有设置或者不等于的情况,比如:

IF environment variable [= value] [!]

[KEY1]

"ValueName1"={Value Type}:{data}

"ValueName2"={Value Type}:{data}

[KEY2]

"ValueName1"={Value Type}:{data}

ENDIF

 

如果注册表某一行是以分号(“;”)开始,表示这行是被注释掉的。当然也有一些例外,比如在支持Hive注册表的时候,如下:

; HIVE BOOT SECTION

 ... reg data...

; END HIVE BOOT SECTION

 

关于Hive注册表,以前介绍过,这里不多说了。我们在注册表中无非就是创建,删除key,赋值等操作。

创建一个注册表key:

[Key1]

"ValueName"="Value Type"

 

删除一个注册表key:

[-KEY1]

 

删除一个注册表值:

"ValueName1"=-

 

和BSP以及硬件平台相关的注册表配置都放在platform.reg文件中,和WinCE工程相关的配置应该放在project.reg文件中。

 

 

2.       DB文件

数据库文件,同样也有platform.db和project.db两个文件。但是很少会被用到,特别是platform.db,这些数据库文件都是基于WinCE的对象存储的,会在WinCE启动以后被加载到RAM中,掉电就会丢失,具体格式如下:

Database : "db_name" : hex_type : num_sort_order : <sort order specifier> 1

Record :

Field : field_hex_propid : value

End

End Database

 

可以使用上面的格式在.db文件中添加数据库记录,由于本人从未使用过,所以对上述格式没有太多了解,相信搞过数据库的人士,看看上面的格式可能就明白了。

 

 

三.Dirs文件和Sources文件

   

1.  Dirs文件

关于Dirs文件,就是指定要编译的路径,这个地球人都知道。还是简单介绍一下。按照文档上面介绍有三种定义:DIRS,DIRS_CE和OPTIONAL_DIRS。

 

DIRS:就是指定要编译的目录。

DIRS_CE:只有目录下的源代码用于WinCE的映像文件时,才编译该目录。

OPTIONAL_DIRS:指定可以选择编译的目录。比如:OPTIONAL_DIRS=proj1,如果想编译proj1目录,可以设置BUILD_OPTIONS=proj1,然后运行build命令就可以了。

 

举个例子:

DIRS= common /

            drivers /

            oal /

            bootloader

表示需要编译common,drivers,oal和bootloader目录。

 

 

DIRS=* 

表示编译当前的所有目录。

 

 

 

2. Sources文件

在WinCE BSP中会看到很多sources文件,一般会和源代码放在同一个目录,当然不是绝对的。这些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:用于定义用户自己的编译器参数取代默认的编译器参数。

 

 

举个例子:

TARGETNAME=serial_smdk2410

TARGETTYPE=DYNLINK

RELEASETYPE=PLATFORM

TARGETLIBS=$(_COMMONSDKROOT)/lib/$(_CPUINDPATH)/coredll.lib /

        $(_SYSGENOAKROOT)/lib/$(_CPUINDPATH)/ceddk.lib

 

SOURCELIBS=$(_SYSGENOAKROOT)/lib/$(_CPUINDPATH)/serpddcm.lib /

        $(_SYSGENOAKROOT)/lib/$(_CPUINDPATH)/com_mdd2.lib

 

DEFFILE=serial.def

DLLENTRY=_DllEntryCRTStartup

 

SOURCES= ser_smdk2410.cpp /

        pdds3c2410_ser.cpp

 

需要编译的文件为ser_smdk2410.cpp和pdds3c2410_ser.cpp,DEF文件为serial.def,DLL的入口函数是_DllEntryCRTStartup,静态连接serpddcm.lib和com_mdd2.lib两个库,动态链接coredll.lib和ceddk.lib两个库,最终编译为dll文件,文件名为serial_smdk2410.dll。

 

 

最后总结一下,Dirs文件会和Sources文件配合使用,但是他们不可能存在同一个目录下面。Dirs文件指定编译目录,Sources文件指定如何编译.

 

 

四.DAT文件介绍

  

DAT文件用于在WinCE启动的时候,定义文件系统的结构,也就是定义有哪些文件夹,哪些文件在什么位置等。每次冷启动的时候,Filesys模块会根据.dat文件中的内容来创建目录以及目录下的文件。

 

在BSP中我们可以找到platform.dat。在创建一个WinCE的工程以后,可以在工程目录下面找到project.dat。可以在这两个.dat文件中定义我们所需的根目录以及相应的子目录和文件,当然Windows文件夹及其包含的子文件夹除外。用户可以通过定义快捷方式的方法来引用Windows目录下的文件。

 

关于DAT文件的具体格式,来举个例子:

root:-Directory("My Documents")

root:-Directory("Program Files")

Directory("/Program Files"):-Directory("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")

 

简单解释一下,上面的内容是先创建My Documents和Program Files两个根目录,然后在Program Files下面创建My Projects,Accessories和Communication三个子目录,然后拷贝被定义在Windows目录下的存在于ROM中的Myproj.exe文件到My Projects目录下面,且名字为My Project Program。这里需要说明的一点就是,像Myproj.exe这样的文件都是从ROM中拷贝出来的,所以必须在BIB文件中包含了该文件。最后一行意思是在根路径下创建control.lnk,该文件来自ROM中的control.lnk文件,是一个快捷方式文件。

 

对上面的一些格式做个解释:

 

1.Root Directory的语法格式:

root:[-Directory("dir_name")] [-Permdir("dir_name")]

[-File("target_filename", "source_location")]

 

root:表示根目录。

-Directory(“dir_name”):定义根目录下的目录名。

-Permdir(“dir_name”):定义一个永久的目录,用户是不能通过RemoveDirectory函数删除的。

-File(" target_filename", " source_location"):定义一个目标文件,该文件从ROM中拷贝过来。target_filename为目标文件的文件名,source_location为ROM中的文件,指Windows目录下的某路径下的文件名。

 

 

2.Directory的语法格式:

Directory("dir_name"):[-Directory("dir_name")]

[-File("target_filename", "source_location")]

 

Directory(“dir_name”):表示目录名。”/”表示根目录。

-Directory(“dir_name”):表示目录下的路径,就是子目录。

-File(" target_filename", " source_location"):定义一个目标文件,该文件从ROM中拷贝过来。target_filename为目标文件的文件名,source_location为ROM中的文件,指Windows目录下的某路径下的文件名。

 

 

DAT中所使用的语法定义比较简单,看看例子就知道如何修改了,一般我们会通过修改project.dat和platform.dat来改变WinCE启动后的文件路径结构。其中platform.dat是和平台相关的,而project.dat是和WinCE工程相关的。

 

五.BIB文件介绍

   

在WinCE中使用的一个重要的文件就是BIB文件,全称Binary Image Builder File。在WinCE的编译过程中会用到BIB文件,应该是在最后的Makeimg阶段。所有的BIB文件会被合并成CE.bib文件,然后Romimage.exe会根据BIB文件中的描述来决定哪些文件最终被包含到WinCE image中。当然,BIB文件还决定了WinCE设备内存的分配,其中定义了WinCE image占用哪块内存,Framebuffer占用哪块内存等。

 

在BIB文件中分为4大项:MEMORY项,CONFIG项,MODULES项和FILES项。下面分别作个解释:

MEMORY:定义了内存分配的相关设置,一般在BSP中的config.bib文件中。

CONFIG:在最后的Makeimg阶段,为Romimage.exe提供一些生成WinCE image的配置属性。该项是可选的,一般也在BSP中的config.bib文件中定义。

MODULES:定义了一些会被打包到WinCE image中的模块或者文件,比如dll,exe等。这些文件会被Romimage.exe标记为加载到RAM中或者XIP。我们可以在这里添加自己的WinCE应用程序或者模块,但是不要添加Managed Binaries,一般指.NET的程序。

FILES:定义了一些操作系统会用到的其他的文件,比如字体文件,图片等。这些文件也会在WinCE运行的时候被加载到RAM中。

 

 

下面会详细介绍上面的4大项:

 

1.       MEMORY项

一般都在config.bib文件中定义,开头会有MEMORY的字样。这里定义了为WinCE image以及其他模块预留的RAM,同时也定义了WinCE可以使用的RAM。具体格式如下:

MEMORY

    NAME    Start Address        Memory Size        Type

 

NAME:该内存区域的名字,必须是唯一的。

Start Address:该内存区域的起始地址,用十六进制表示。

Memory Size:该内存区域的大小,用十六进制表示。

Type:内存区域的类型。包涵的多种类型如下。

 

类型值
 描述
 
FIXUPVAR
 用于在WinCE编译的Makeimg阶段,就初始化一个内核中的全局变量。
 
NANDIMAGE
 当创建了一个使用BinFS的image的时候,NAND设备上的WinCE kernel重定向到RAM中的区域,当系统访问该区域的时候,BinFS会负责访问Nand设备上相应的位置,并返回数据给系统,实际上就是在Nand设备上面实现了XIP的功能。
 
RAM
 定义了被WinCE系统使用的RAM区域,这块内存必须是连续的,这里有一点要注意就是从硬件的角度来说,这块内存不能跨越两片SDRAM,也就是说整个区域空间必须在一片硬件SDRAM上。
 
RAMIMAGE
 定义了一块内存区域用于加载WinCE image,实际上WinCE启动以后,image会被拷贝到这块内存区域上面运行。一个image只能有一个连续的RAMIMAGE区域。
 
RESERVED
 这块内存区域会被预留出来,一般用于Frambuffer或者是DMA Buffer,或者是一块共享内存用于EBOOT传递参数给WinCE系统。
 
EXTENSION
 定义了一块WinCE image中的区域作为ROMHDR extension的数据区域。
 


 

 

2.CONFIG项

一般在config.bib文件中定义,定义了一些额外的配置参数,其中一些对于WinCE image来说也很重要。具体格式如下;

CONFIG

    ITEM=Parameter

 

ITEM
 描述
 
AUTOSIZE
 允许未被使用的WinCE image的RAM被用作WinCE系统的RAM。默认值为ON。
 
COMPRESSION
 允许Romimage.exe压缩WinCE image中的可写入部分。默认值为ON。
 
BOOTJUMP
 定义了跳转跳转页在RAMIMAGE空间的地址。而不是默认情况下的RAMIMAGE的首地址。默认值为NONE。
 
FSRAMPERCENT
 定义了文件系统使用的内存的百分比。默认值为0x80808080。

Byte 0:第一个2MB中,每1MB所包含的4KB的倍数。

Byte 1:第二个2MB中,每1MB所包含的4KB的倍数。

Byte 2:第三个2MB中,每1MB所包含的4KB的倍数。

Byte 3:剩下的内存中,每1MB所包含的4KB的倍数。
 
KERNELFIXUPS
 定义了Romimage.exe是否重新定向内核的可写入区域。默认值为ON,内核的可写入区域被重新定向到RAMIMAGE的起始位置。
 
OUTPUT
 定义了最终生成的image存放的路径。默认为%_FLATRELEASEDIR%。
 
PROFILE
 定义了是否在WinCE image中包含profiler的结构和符号。默认值为OFF。
 
RESETVECTOR
 重新指定跳转页的位置,一般针对MIPS芯片从0x9FC00000开始引导的问题。
 
ROMFLAGS
 内核标记位,可以进行组合:

0x01表示禁用按需分页。

0x02表示禁用完全内核模式,完全内核模式表示所有的线程都运行在内核模式。

0x10表示只信任ROM MODULES中的模块。

0x20表示停止刷新TLB。

0x40表示按照/base链接选项中的地址加载DLL。
 
ROMSTART
 指WinCE image在内存中的起始地址。
 
ROMSIZE
 指WinCE image的大小。
 
ROMWIDTH
 指数据总线的宽度。
 
ROMOFFSET
 指定一个偏移量来修改.bin文件中的每一个记录的地址。一般用于ROM中的.bin文件加载到RAM来运行的情况,主要是表示存储.bin的位置和运行.bin的位置不一样。
 
SRE
 使Romimage.exe产生一个.sre文件。默认值为OFF。
 
X86BOOT
 定义是否插入一条跳转指令,在x86复位向量地址的时候。
 


 

 

3.MODULES项和FILES项

该项列出了所有被包含在WinCE image中的模块以及文件,以及这些模块和文件以什么方式被加载到内存中。具体格式如下:

MODULES

    Name    Path            Memory            Type

 

Name:模块的名字,比如一个dll或者exe文件的文件名。

Path:路径,一般都是WinCE的工程的Release目录。

Memory:指定该模块被放在哪个区域,一般都是NK区域。

Type:定义了文件的类型。具体如下:

 

类型
 描述
 
S
 系统文件。
 
H
 隐藏文件。
 
R
 只压缩模块的资源部分。
 
C
 压缩模块的所有部分。
 
D
 禁止调试。
 
N
 模块是不可信任的。
 
P
 告诉Romimage.exe不需要检查CPU的类型。
 
K
 告诉Romimage.exe必需固定该模块的内核地址。有该标记的模块只能被LoadKernelLibrary函数加载。
 
X
 告诉Romimage.exe对该模块签名。
 
M
 运行时加载整个模块,不要按需分页。
 
L
 告诉Romimage.exe不要分离ROM DLL。
 


 

一般FILES项的Type只支持S,H,N,D几个类型,而MODULES项的Type是都支持的。

 

举个例子吧:

    INIT.EXE            %_WINCEROOT%/RELEASE/INIT.EXE            NK    SH

    MYDLL.DLL        %_WINCEROOT%/RELEASE/MYDLL.DLL       NK    SHC

 

 

对于BIB文件来说同样支持“条件编译”,我们可以通过设置环境变量来选择性地将某些模块打包到WinCE image中。一般在BSP中,对于一些驱动模块的环境变量我们IF来进行条件判断。而对于WinCE的系统模块来说,一般都是SYSGEN变量,应该使用@CESYSGEN IF来判断。

 

 

我们在BSP的开发中最常见的主要就是eboot.bib,config.bib,platform.bib和project.bib。下面简单介绍一下:

project.bib:该文件主要自创建的WinCE工程中所需的一些文件。

platform.bib:该文件包含了和硬件平台相关的文件,主要以驱动程序为主。

config.bib:该文件描述了WinCE系统的内存的配置。

eboot.bib:该文件描述了WinCE的eboot的内存的配置。

 

还有其他的一些bib文件,在WinCE系统编译后都会背拷贝到工程的release目录下面。比如common.bib,ie.bib等。这些文件列出了WinCE的组件相关的文件,根据用户订制的系统,会被选择性的打包到WinCE image中。

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/churenxh/archive/2008/12/09/3485011.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ATHEROS The Licensed Software includes software developed by Atheros Communications, Inc. (“Atheros”). You must separately obtain rights beyond evaluation and demonstration in connection with the Licensed Software from Atheros. ARM The Licensed Software may include software developed by ARM, Ltd. The software may only be used with an ARM microprocessor, which includes the Freescale i.MX and MXC product lines. CODEC STANDARDS This software includes codec standards for encoding and decoding audio and visual content. You are not licensed for any implementation or distribution of the technology in any commercial product or service such as runtime images that you develop using this software. You are responsible for determining and securing these license rights. CSR The Licensed Software includes software and hardware developed by Cambridge Silicon Radio, Inc. (“CSR”). You must separately obtain rights beyond evaluation and demonstration in connection with the Licensed Software from CSR. AVC/H.264 VISUAL STANDARD. This software may include AVC/H.264 video decoding technology, MPEG LA, L.L.C. requires this notice: THIS PRODUCT IS LICENSED UNDER THE AVC/H.264 PATENT PORTFOLIO LICENSES FOR THE PERSONAL AND NON-COMMERCIAL USE OF A CONSUMER TO (A) ENCODE VIDEO IN COMPLIANCE WITH THE AVC/H.264 STANDARD (“AVC/H.264 VIDEO”) OR (B) DECODE AVC/H.264 VIDEO THAT WAS ENCODED BY A CONSUMER ENGAGED IN A PERSONAL AND NON-COMMERCIAL ACTIVITY AND/OR WAS OBTAINED FROM A VIDEO PROVIDER LICENSED TO PROVIDE AVC/H.264 VIDEO. NO LICENSE IS GRANTED OR WILL BE IMPLIED FOR ANY OTHER USE. If you have questions about the AVC/H.264 visual standard, please contact MPEG LA, L.L.C., 250 Steele Street, Suite 300, Denver, Colorado 80206; www.mpegla.com. MPEG-2 VISUAL STANDARD. This software includes MPEG-2 visual decoding technology. MPEG LA, L.L.C. requires this notice: USE OF THIS PRODUCT IN ANY MANNER THAT COMPLIES WITH THE MPEG 2 VISUAL STANDARD IS PROHIBITED, EXCEPT FOR USE DIRECTLY

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值