WinCE BSP工程文件分析

分类:  Wince学习2011-06-02 16:35 45人阅读  评论(0)  收藏  举报

>

原文地址: http://blog.mcuol.com/User/iwillbeback008/Article/14010_1.htm

 

 

一.pbcxml分析

       

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

 

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

<CatalogFile …>

<FileInformation ….>

….

</FileInformation >

<BSP …>

</BSP >

<Item …>

</Item >

<Item …>

</Item >

<Item …>

</Item >

<Item …>

</Item >

</CatalogFile >

 

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

 

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

VENDOR:CATALOGFILENAME ">

    

    BSP Description

    Vendor Name

    WinCE Version

    File Version

 

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

    

    EP94xx BSP Catalog Items

    Cirrus Logic

    6.00

    1.0.0

 

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

    

    BSP Description

    Platform Directory

    Cpu:CPU ID

    Item: VENDOR: VARIABLE

    Item: VENDOR: VARIABLE

    …

 

这里需要做一下解释:

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

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

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

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

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

 

     : 指 BSP的标题

    … : 指 BSP的一些描述

    … : 指该 BSP ”/Platform”目录下的路径。

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

    … : 指 BSP中都包含了哪些模块。

 

 

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

Method 1 : Item: VENDOR: VARIABLE

Method 2 : Item: VENDOR: MODULE: BSPDIR

 

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

 

下面也给个例子:

    

    Cirrus EP94xx BSP for WinCE 6.0

    EP94xx

    Cpu:ARMV4I

    Item: Cirrus Logic: bsp_ep94xx_i2s_audio

    Item: Cirrus Logic: bsp_ep94xx_flash

    Item: Cirrus Logic: bsp_ep94xx_nandflash

    Item: Cirrus Logic: bsp_ep94xx_ethernet

    Item: Cirrus Logic: bsp_ep94xx_serial

    Item: Cirrus Logic: bsp_ep94xx_usb

    Item: Cirrus Logic: bsp_ep94xx_touch

    Item: Cirrus Logic: bsp_ep94xx_rtc

 

 

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

    

    Driver Description

    BspSpecific

    Variable

    Device Drivers

    

    

    Source Code Path

    

 

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

Method 1 : ……

Method 2 :   ……

 

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

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

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

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

 

     : 该驱动的标题。

    … : 该驱动的描述。

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

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

    … :  PB中的 Catalog Items View中的位置。

    … : 描述该驱动的源代码。

    … : 指向该驱动的源代码的路径。

    … : 描述一个帮助链接链接到帮助页。

 

下面举个例子:

    

    Audio Driver for I2S

    BspSpecific

    BSP_EP94XX_AUDIO

    BSP_EP94XX_I2S_AUDIO

    Device Drivers

    

        

        $(_WINCEROOT)/PLATFORM/EP94XX/SRC/DRIVERS/WAV

    

 

 

上面对 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 : 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//

         LOCAL ,生成的文件当前路径下

         CUSTOM ,生成的文件 TARGETPATH指定的位置

         MANAGED ,生成的文件 %_PROJECTROOT%/OAK//Managed

         OAK, SDK, DDK ,生成的文件 %_PROJECTROOT%/Oak/  

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")

  • 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、付费专栏及课程。

余额充值