经过前两次的边做边学,我们已经创建并可以自由修改自己的平台了,这次我平来补充一点理论知识,以便加深对CE生成过程的了解。在此之前,需要说明的是CE的目录结构是很庞大而复杂的,在以后的工作中很多事情会取决于你对目录结构的了解程度,在此,CE5的文件夹结构未发生大的改变,因此想了解此部分内容的朋友可直接参阅本人的《WinCE实验教程》相关部分。与CE4稍有不同的是在CE5中你自己的平台不在存放于Public文件夹中了,而是专门有一个PBWorkspaces的文件夹,这样更加方便管理且结构清晰了。
相关术语
0)PC机(Personal Computer)就是指你的电脑,OS(Operating System)是指操作系统!
1)BSP(Board Support Package,板级支持包),介于硬件平台和操作系统之间的一层,属于操作系统;不同的操作系统对应于不同定义形式的BSP。
2)Bootloader与BIOS:Bootloader是引导程序,就是对实验平台进行初始化,设定一些相关参数等等。就我现在使用的WinCE5.0来说,根据个人理解,Bootloader与BIOS是一个东西,就是在ADS1.2下的一个工程而已,里面含有start.s及其它的一些相关代码。这个现在我还有些模糊,仅谈到此。
3)OEM:Original Equipment Manufacturer原始设备制造商
4)OAL:OEM Abstraction Layer
5)DLL:Dynamic Link Library,动态链接库
6)MFC:Microsoft Foudation Class,微软基础类
7)API:Win32 Application Programming Interface,Win32应用程序编程接口
8)SDK:Software Development Kit,使用WinCE时必须安装SDK,你不必在网上找SDK的安装包,对于每个具体实验板都对于一个SDK,这个可以用PB生成。
9)PB、VS、EVC:PB是Platform Builder的简称,VS是Visual Studio的简称,EVC是Embedded Visual C++的简称。
10)Nand flash与Nor flash:与非flash和或非flash,前者价格便宜,后者较贵。
所需开发软件
1)Platform Builder 5.0:此软件用来定制操作系统,生成内核,生成SDK,编译驱动程序等。
2)Visual Studio 2008:我用的是此版本,当然也许不许这么高版本,网上用的多的是VS2005,还有使用EVC++的。此软件用来编写应用程序。
3)ActiveSync 4.5:此软用来同步PC机与实验板进行同步。此软件可以在微软中国网站。
4)DNW:串口调试工具,在上电时用来显示BIOS发往串口的相关信息,也可以输入相关参数进行设置的。
5)USB同步驱动:必备!!!
VS2008的安装按提示按装即可,PB5.0的安装可以参考天嵌科技的手册进行安装,讲的很好很详细,至于PB5.0补丁的安装只需安装Net2.0与Net3.5的那一个即可,其实安装与否我原由我也不清楚,好好参考天嵌科技术的手册吧。另外要参考天嵌科技术的手册添加BSP,生成相应的SDK,然后安装SDK,这些都安装好后还有一个工作就是安装USB驱动,这一关一定要过,安不上的话就等着安上再说!
我们已经掌握了生成CE的过程及编译的几个阶段,这次我们再来了解一下Platform Builder中为我们提供的组件包的管理方式以及如何管理自己的组件。
在Platform Builder(以下简称PB)中的右侧有一个"Catalog"窗口,其中列出了所有可供使用的组件,我们可以看到其内容是非常之多的,现在的疑问就产生了,PB是如何管理这些组的呢?如果我有一个新设备的驱动组件要如何才能放到这个组件包窗口中呢?如果我开发了一个设备驱动以供其他人使用那我要如何才能发布我的驱动呢?下面,我们就来解决这些问题。
在PB中,这些组件的管理都是能过一种组件文件(。cec文件)来实现的。在CE4中,系统自带的CEC文件都位于PB的安装文件夹下的CEC文件夹,我们可以在那里很容易的找到它们,但是在CE5中,它的位置变了,你可以在WINCE500\PUBLIC\COMMON\OAK\CATALOG\CEC下找到他们。
如果你开发了OAL,设备驱动或其他组件,你就可以能过CEC文件来把它们加入到PB中。通过在PB环境中导入CEC文件,其他的平台开发人员就可以使用这些组件了。CEC文件是用来描述组件信息的文本文件,它包括了一些块的列表,主要包括以下四种信息块:
--CECInfo块,用来描述此CEC文件的信息,每个CEC文件只能含有一个此信息块,从中你可以看到该CEC的名称、GUID、版本、供应商和简要描述。
--ComponentType块,它描述了别的组件类型,在一个CEC文件中可以有多个此信息块,它通过Group,RequiredCEModules,ExcludeWhenSet,MaxResolvedImplsAllowed等条目来描述此组件所在的组,需要的CE组件,排除的组件及允许在一个CE平台中存在的数量等信息。
--Implementation块,用来描述此组件在编译时需要的各种信息,每个CEC文件中也可以有多个此信息块,它是 ComponentType块的一部分,其中的BSPPlatformDir,Children,OptionalChildren,DefaultDrivers,ExcludeWhenSet,FeatureVariable,ImplSize等条目的具体含义可以在PB的帮助文档中找到,在此不一一细述。
Action的意义如下:
Action则描述了组件编译的行为,有效的行为与编译阶段的对应关系如下所示:
--#BUILD():使用DIRS文件或SOURCES文件或MAKE文件来调用build.exe,在完全编译平台的时候被使用;
--#CUSTOM():在编译的时候运行批处理文件或可执行文件;
--#COPY():从一个位置复制文件到另一个位置;
--#ENV():设置环境变量;
--#SRCCODE():指定了包含源程序文件的文件夹,只在编译所选组件时应用。
对于以上每个条目的具体用法可以参阅PB的帮助文档。为了获得感性认识,我们用记事本打开几个CEC文件来看一下。比如打开serial.cec看看串口驱动组件的实现方法等。
以上我们了解了CEC文件,我们再来解决后面的问题,即假设我从别的供应商处拿到了一个设备的驱动程序,它带了CEC文件,那么我要如何把这个组件加入到PB的组件包中呢?这个问题其实很简单,只要在PB的File菜单下使用"Manage Catalog Items"命令即可。在这个弹出的对话框中的内容和使用方法就不用我说了吧。
再来解决下一个问题,我要如何为我开发的组件编写CEC文件呢?这个也好办,在Tools菜单下使用"CEC Editor"命令即可,如果不会写,可以先打开一个现有的CEC文件看看是如何组织的,然后再仿照它来写自己的就可以了,别忘了写完后要保存哦,同时也要注意GUID的问题。
此次内容的,我们再来看一下BSP。什么是BSP呢,其实就是为某一种开发板实现了设备驱动的软件包,它包含了源程序文件,二进制文件等,还有OAL适配层,Bootloader和其他有关的配置文件。比如CE5的评估版就带了x86的BSP,AMD的BSP和Emulator的BSP。
通常对BSP的操作都在BSP向导中进行,它位于Platform菜单中,利用它可以新建自己的BSP,复制现存的BSP,修改现存的BSP或创建全局的驱动程序。如果你准备好了BSP所需要的那些东西就可以用它来生成你的BSP了,它会选择必须的CE内核组件。
好了,已经写了不少了,唉,写这东西真是费时啊,不说了,希望我们能一起获得更多的知识。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。