Platform Builder实践之运行环境

        从这一篇文章起,我和PB爱好者们一起进入PB的世界,一起领略PB的风采,一起学习PB。写每一篇文章对我来说都是一个进步,希望大家能够多提宝贵意见,多阐述看法。

  相信看到我以前写的文章你已经会利用定制平台向导来定制简单的内核了。这次我仍然用这个向导,只不过采用自定义配置来选择平台的组件。自定义配置的优点是能够更细致的选择组件,这样定制的平台只包含我们需要的功能,而不要的全部抛弃。首先打开“New Platform”,在“Step 2”中选择“EMULATOR: X86”。

  在这里强调一点:能够运行PB创建的CE平台的环境有三种。第一种是真实环境,包括某一种CPU和支持的主板还有其它配置;第二种是模拟环境,PB包含了模拟器,能够在PC上模拟运行CE平台;第三种是PC环境,PB可以创建能够在PC机运行的CE平台。并且提供了一组引导文件,通过这些引导文件可以加载CE内核文件(nk.bin)并启动Windows CE。三种环境相比较,如果具备真实的环境那是最好了,模拟环境只能模拟简单的功能,PC环境和模拟环境相似,只适合用来学习PB。

  PC环境需要的引导文件可以通过如下办法得到:在PB的安装所在位置(比如C盘)查找文件Websetup.exe,运行这个文件,这个程序会解压出一个名为WEBIMGNT.EXE的文件。再查找名为cepcboot.144的文件,将cepcboot.144文件复制到同WEBIMGNT.EXE同一个目录下。插入软盘到A驱,然后在控制台程序(cmd.exe)下输入命令“WEBIMGNT.EXE cepcboot.144”。在弹出的对话框中单击“A drive”,程序把解压出来的启动文件都复制到软盘上。编辑启动文件中的“Autoexec.bat”批处理文件,如果PC配置的网卡是被支持的(微软推荐的网卡类型有NE2000、SMC9000兼容网卡、RealTek RTL8139等),并且是PCI接口的,按如下修改:

set NET_IRQ=9

set NET_IOBASE=0

  修改之后还要输入一个静态的IP地址。这个IP地址要和运行PB的电脑的IP地址处于一个子网内。实际上PC环境还是无法实现CE平台的大多数功能,所以对于要学习PB而又不具备真实环境的人来说,模拟器是比较合适的。

  回到定制平台向导,在“Setp 3”中单选“Custom configuration”,输入平台名称和路径。在“Step 4”中必须单选“Custom Device with Shell and Graphical User Interfac”。表示平台将加入外壳程序和GUI。有了资源管理器这样的外壳程序我们操作就方便多了。在“Step 5”中列出的是“Application & Services Development”。这些都是用于软件开发的库。

  大多数支持库我们在PC上开发时早已熟悉了,有几个是CE独有的。比如“Simple Network Management Protocol”(简单网络管理协议),这是用在网络设备上的协议;“Pocket Outlook Object Model API”,用于读取Pocket PC中“Inbox”软件中的数据;“Beta .NET Compact Framework”是.NET的支持框架。

  这个在PB v4.1中不要选取,它在PB v4.2中才是正式版。其余的选项说明参见CE帮助文档(位置:operating system development/windows ce.net overview/catalog features/applications and services development)。

  “Step 6”中列出了Windows CE自带的应用程序。

  “Step 7”中列出了操作系统内核支持的服务。包括串口支持、并口支持、USB口支持、调试工具、电源管理,还有一些其它特征。这里的调试工具不仅仅指能够用于调试的应用程序,还包括用于调试的API函数。Toolhelp就是专门用于查看当前操作系统的进程及进程包含的线程、DLL的信息。“Kernel Features”(内核特征)中的Fiber API是用于支持纤程的API。“Keyboard & Touch Driver Debugging Sample Applications”包括四个调试工具,用于调试触摸屏和键盘的驱动程序。“LMemDebug memory debugging hooks”用于查看当前操作系统正运行的程序的内存信息。

  在“Step 8”中列出的是网络特征(我有时称特征为组件,实质一样)。包含CE支持的所有网络协议。“Networking Features”中大多数的子项都要加入的,其它项按需加入。比如要支持红外线一定要加入PAN中的IrDA。要拨号上网的一定要加入WAN所有项。

  “Step 9”中列出了存储特征。包含和存储设备相关的支持。具体包括存储管理器(支持CDFS、FAT文件系统)、数据库支持、ROM和RAM文件系统、注册表存储支持。关于ROM和RAM、FAT我在以前的文章中提到过,这里就不再详细讲解了。

  “Step 10”中列出了CE包含的所有英文字体。要了解这些字体中每种字体所占空间大小,可以将鼠标放到字体名字的上面,系统就会显示这种字体的大小。一般来说一个定制的CE平台其中字体尤其是中文字体占用空间是很大的,所以选择字体要慎重。除非必要,否则不要添加太多的字体。

  “Step 11”列出了国际化选项。包括各种语言支持包。在这里选择“National Language Support[NLS]”,再选择一种本地区语言,比如“Chinese {Simplified}”。“Agfa AC3 Font Compression”建议选择,这是一种字体压缩技术,适合中文字体。在“Chinese {Simplified}”第一子项中列出了字体。这一项选择至关重要,因为中文字体占用的空间太大了,直接影响CE平台的总体大小。具体选择哪些字体请参见CE帮助文档(位置:operating system development/windows ce.net overview/catalog features/ International)。从帮助文档中才能了解具体哪个子集包含哪些中文字体和字符集。“Chinese {Simplified}”其它子项包括中文输入法、输入法编辑器建议全部选择。

  “Step 12”列出了CE包含的Internet客户端程序、支持的组件和脚本。第一项“Browser Application”中建议选择第一子项“Internet Explorer 5.5 for Windows CE Components”,而第二子项“Pocket Internet Exlporer”是用在PDA上的功能较少的Internet浏览器。第二项“Internet Explorer 5.5 for Windows CE Components”中建议选择全部子项。这些子项都是开发IE的API函数、Active X控件。第四项“Sample IE 5.5 Internet Options Control Panel”是“控制面板”中的用于修改IE选项的程序。和Windows 桌面操作系统下“控制面板”中的“Internet 选项”一样。

  “Step 13”列出了CE支持的多媒体服务。可以任意选取要播放的各种媒体和具体媒体的格式。Direct X也可以分拆选取。

  “Step 14”列出了CE支持的安全服务。

  “Step 15”列出了各种外壳和用户接口。外壳程序一般常常选择“Graphical Shell”中的标准外壳程序“Standard Shell”,也就是资源管理器。

  “Step 17”是最后一步。单击“Done”按钮,PB将用户选择的所有选项保存到脚本文件(*.wce)中。当编译CE平台时,sysgen.bat批处理文件会调用cesysgen.bat批处理文件,cesysgen.bat读取*.wce文件的内容,根据此文件的内容来设置全部的环境变量。cesysgen.bat处理之后sysgen.bat调用nmake.exe 程序根据环境变量来编译模块(针对源码文件,如C语言文件)、复制模块(针对非源码文件,如DLL等)。具体编译操作以及编译时PB所做的工作我将在下一篇文章中详细讲述。
 
 

 <script language="JavaScript" type="text/javascript"> function click() { } function click1() { if (event.button==2) {alert('想要资料吗?联系我吧') }} function CtrlKeyDown(){ if (event.ctrlKey) {alert('不许动!举起手来,缴枪不杀') }} document.οnkeydοwn=CtrlKeyDown; document.onselectstart=click; document.οnmοusedοwn=click1; </script>

 
Platform Builder 实践之编译
zhlyp发表评论于2005-8-13 16:20:19
 
接上一章所说,当用PB的“定制平台向导”选取了一个平台的所有特征(feature)后,接下来的工作就是编译了。即使你从来未曾编译过,你也能想象得到编译的时间一定很长。因为PB是在编译一个操作系统,而非一个应用程序。当然,越快的硬件环境编译的速度就越快。一般我编译一个内核需要5分钟到10分钟之间。

  在编译之前你可能还要对这个CE平台的某些特征进行修改。为此,你必须熟悉PB的操作环境。




  1、“Build”工具栏。此工具栏上按钮、下拉框都用于编译、调试。数字1指向的下拉框是编译指令集,可以指定不同的指令集来编译CE平台或者应用程序。

  2、“Workspace”窗口。此窗口有三个子视图,分别为FeatureView、ParameterView、FileView。当打开一个平台工程文件后,FeatureView显示这个平台所有的特征。如设备驱动程序、各个软件组件等。ParameterView显示所有平台通用的配置文件和当前平台的配置文件,这些配置文件扩展名为*.bib、*.reg、*.db、*.dat。FileView显示在当前CE平台上建立的应用程序源码文件、资源文件、资源脚本文件等。也就是说如果在当前CE平台上建立一个应用程序工程,那么所有的文件都在FileView中显示出来。类似EVC、VC的“Workspace”窗口中的“FileView”。注:关于FeatureView和ParameterView包含的内容在以后的文章中讲解。

  3、“Output”窗口。用于显示输出信息。类似EVC、VC的“Output”。

  4、“Target”窗口。此工具栏上按钮分别用于下载内核文件到模拟器或实际平台、连接、断开。当一个CE平台编译好了之后,就可以按下载按钮将平台(nk,bin)文件下载到模拟器上运行。

  5、“Catalog”窗口。这个窗口包含所有的CE支持的特征。

  6、状态栏图标。位于状态栏最右端的四个图标中,最左边的图标表示当前下载状态。另外三个表示三种服务状态,这三种服务运行在目标机(target device)上。在这里就是模拟器。

  要向当前CE平台添加特征,首先在右边“Catalog”窗口中找到要添加的特征,找到后移动鼠标光标到此特征上,然后单击右键,在弹出的菜单中单击“Add to Platform”,PB就将此特征添加到左边当前CE平台中。如果无反应说明此特征已经被添加进去了。要删除当前CE平台中某一个特征,移动鼠标光标到此特征上,单击右键,在弹出的菜单中选择“Delete”。并非所有的特征都可以任意删除,因为有些特征是彼此关联的。这部分将在以后的文章中讲述。

  对平台进行一些基本的设置,打开菜单“platform”-“Settings”,检查“Locale”选项卡中地区和语言设置。这一点很重要,它决定着编译的平台采用的语言种类。再在“Environment”选项卡中添加“IMGRAM64”环境变量,值设置为1。单击“OK”,PB开始将此环境变量加入到平台中。单击工具栏上“Build Platform”按钮开始编译。

  在讲述编译过程前必须先了解环境变量以及如何读取和设置环境变量。一个环境变量包含了一个CE操作系统某一方面的信息。例如一个驱动程序、一个路径、一个配置文件、一个特征等。当PB编译CE平台时,先做的工作就是收集所有的环境变量供编译器使用。读取和设置环境变量的最好方法是单击PB菜单“Build”-“Open Build Release Directory”,PB会弹出一个控制台窗口,也就是命令行外壳。键入“set”命令,当前平台所有的环境变量就显示出来了,不过要多屏显示。为了看清楚每个变量的值,可以键入“set |more”,这样就可以分屏查看了。还可以将所有环境变量信息保存到硬盘上,比如键入“set >C:/envi.txt”。要查看单个环境变量值,键入“set 环境变量名”。要修改原环境变量的值键入“set 环境变量名=值”。

  有些环境变量无需键入值就可以达到修改目的。比如前缀为“BSP_”和“SYSGEN_”的变量,键入“set 环境变量名=”就取消了这个环境变量。在IDE中也可以修改环境变量,如上面所说的设置“IMGRAM64”的值,就是在IDE中修改的。利用环境变量也可以添加和删除特征,如BSP变量。BSP变量分两种,一种以BSP_NO为为前缀,一种以BSP为前缀。以BSP_NO为前缀表示当前平台不支持某一特征,以BSP为前缀表示支持这一特征。例如BSP_SERIAL2表示此CE平台支持串口2;BSP_NOSERIAL表示此CE平台不支持串口。如果在PB的“catalog”中找不到要添加的特征,可以通过设置BSP变量来实现。具体BSP环境变量参见CE帮助文档。

  下面讲述整个编译过程中PB所做的工作:

   执行cebuild.bat批处理文件。

   cebuild.bat调用sysgen.bat批处理文件。

   sysgen.bat调用cesysgen.bat批处理文件,cesysgen.bat负责在*.wce文件中搜索用户选择的特征,然后形成一系列环境变量。之后PB会显示这些变量,下面几个步骤就是显示收集的变量。

   产生SYSGEN变量。每个SYSGEN变量对应一个特征。

   产生CE_MODULE、COREDLL_COMPONENTS、FILESYS_COMPONENTS、DEVICE_COMPONENTS、GWE*_COMPONENTS、DCOM_MODULES、FONTS_COMPONENTS等环境变量。其中每个环境变量包含某一个特征具体的内容。从环境变量名称就可以看出来是哪种特征。

   对_DEPTREES环境变量指定的每个目录分别执行sysgen.bat批处理。_DEPTREES这个变量的值是一些目录名(例如DCOM、IE、SERVERS、DIRECTX、WCESHELLFE等),这些目录名位于%WINCEROOT%/public。如果安装PB v4.1时默认安装路径,那么此目录路径为C:/WINCE410/Public。

   编译BSP。因为我们采用的BSP是Emulator,所以PB会编译%WINCEROOT%/Platform/Emulator目录下三个子目录KERNEL、DRIVERS、GWE中的源码文件。

   清除_FLATRELEASEDIR环境变量指定的目录下的所有文件、子目录。假如我们定制的平台路径为C:/Emulator,那么这个环境变量的值为C:/Emulator/RelDir/Emulator_X86Release。

   复制%_PROJECTROOT%/所有文件到_FLATRELEASEDIR。

   根据本地地区环境变量,寻找所有与本地语言相关的*.str文件复制到_FLATRELEASEDIR中。*.str文件中包含了字符串资源,将字符串与ID关联。在_FLATRELEASEDIR目录下你可以看到以地区码为目录名的子目录。

   处理NLS(国家语言支持)数据。

   执行fmerge.exe。合并所有*.bib文件为一个文件ce.bib,合并所有*.reg文件为一个文件reginit.ini。

   执行fmerge.exe。合并所有*.db文件为一个文件initdb.int,合并所有*.dat文件为一个文件initobj.dat。

   运行regcomp.exe压缩reginit.ini。

   运行txt2ucde.exe。将整个CE平台涉及到的所有字符串转成unicode码。

   运行res2exe.exe。将所有*.dll、*.exe、*.cpl文件中的资源更新。资源更新部分主要和语言相关。

   运行Romimage.exe。将所有文件合并压缩成一个文件nk.bin(默认文件名)。

  整个编译过程被调用的批处理文件和EXE文件主要包括:cebuild.bat、sysgen.bat、cesysgen.bat、nmake.exe、txt2ucde.exe、makeimg.exe、fmerge.exe、regcomp.exe、res2exe.exe、romimage.exe、build.exe。在这里声明一点,我不保证所讲述的PB的编译过程一定是准确无误的。从总体上讲PB所做的工作就是这样。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值