WINCE BIB文件相关资料(2)

2019-03-27 19:36

编译平台的时候被使用; --#CUSTOM():在编译的时候运行批处理文件或可执行文件; --#COPY():从一个位置复制文件到另一个位置; --#ENV():设置环境变量; --#SRCCODE():指定了包含源程序文件的文件夹,只在编译所选组件时应用。

对于以上每个条目的具体用法可以参阅PB的帮助文档。为了获得感性认识,我们最好用记事本打开几个CEC文件来看一下。比如打开serial.cec看看串口驱动组件的实现方法等。 以上我们了解了CEC文件,我们再来解决后面的问题,即假设我从别的供应商处拿到了一个设备的驱动程序,它带了CEC文件,那么我要如何把这个组件加入到PB的组件包中呢?这个问题其实很简单,只要在PB的File菜单下使用\命令即可。在这个弹出的对话框中的内容和使用方法就不用我说了吧。

再来解决下一个问题,我要如何为我开发的组件编写CEC文件呢?这个也好办,在Tools菜单下使用\Editor\命令即可,如果不会写,可以先打开一个现有的CEC文件看看是如何组织的,然后再仿照它来写自己的就可以了,别忘了写完后要保存哦,同时也要注意GUID的问题。

此次内容的最后,我们再来看一下BSP。什么是BSP呢,其实就是为某一种开发板实现了设备驱动的软件包,它包含了源程序文件,二进制文件等,还有OAL适配层,Bootloader 和其他有关的配置文件。比如CE5的评估版就带了x86的BSP,AMD的BSP和Emulator的BSP。

通常对BSP的操作都在BSP向导中进行,它位于Platform菜单中,利用它可以新建自己的BSP,复制现存的BSP,修改现存的BSP或创建全局的驱动程序。如果你准备好了BSP所需要的那些东西就可以用它来生成你的BSP了,它会选择必须的CE内核组件。

WinCE BSP中的DAT 文件介绍

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

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

关于DAT 文件的具体格式,来举个例子: root:-Directory(\root:-Directory(\

Directory(\Directory(\Directory(\

Directory(\root:-File(\

简单解释一下,上面的内容是先创建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(\[-File(\root:表示根目录。

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

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

-File(\:定义一个目标文件,该文件从ROM中拷贝过来。target_filename为目标文件的文件名,source_location为ROM中的文件,指Windows目录下的某路径下的文件名。 2.Directory的语法格式:

Directory(\[-File(\

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

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

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

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

WinCE BSP中的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%OAKManaged 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文件指定如何编译。

WinCE BSP工程文件pbcxml分析

本文详细介绍WinCE BSP工程文件pbcxml分析

每一个BSP 都有一个工程文件,比如MyBSP.pbcxml,里面描述了BSP 的信息。下面就来介绍一下BSP 的pbcxml 文件。 文件的大致格式应该是这样的: ….

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

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

Title Name

BSP Description Vendor Name

WinCE Version File Version

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

EP94xx BSP Catalog Items Cirrus Logic 6.00 1.0.0

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

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 文件,大多采用第二种方法,我个人更喜欢第一种方法,简单。 下面也给个例子:


WINCE BIB文件相关资料(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:技术标 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: