概述
对于一种开发工具的学习,最重要也最困难的阶段就是概念的建立,只要建立了正确的概念,明白整个系统的体系结构和各种工具作用,剩下的工作就是实际操作,积累经验了,最多不过在需要的时候查一查手册。
本文通过指导读者进行实际操作,一步步地完成一次完整的开发工作,从而帮助读者建立一个清晰明确的概念。
因为我们开发的产品不是普通的软件,而是专用的操作系统,所以需要针对某个特定的硬件平台(目标机)来进行开发;首先需要一个强大的工作站来运行开发环境和开发工具,然后根据目标机硬件配置和软件需求进行开发,开发完成后将做好的操作系统影象文件(Image)与目标机硬件结合,运行系统并测试。
配置开发工作站
首先介绍开发用的工作站,一台标准PC机,硬件配置要求如下:
? ? 操作系统Windows XP Professional
? ? PIII 500MHz 以上(建议1GHz以上)
? ? 256MB 内存 (建议512MB)
? ? 3GB 剩余硬盘空间
对该PC机的配置如下:
? ? 将硬盘设置两个分区
? ? 第二个分区分配为700MB,可以是FAT32格式或NTFS格式(这个分区将包含可启动的Windows XP Embedded Image)
? ? 主分区使用所有剩余的硬盘空间,可以设置为FAT32格式或者NTFS格式
? ? 在主分区中安装Windows XP Professional系统,并安装Windows XP Embedded 开发工具
修改BOOT.ini文件,将下面的代码部分增加到该文件中,可以使这台PC机双重启动,作为开发用的Windows XP Professional系统从分区一启动,而开发好的Windows XP Embedded Image从分区二启动。
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\\Windows
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\\Windows="Microsoft Windows XP Professional" /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\\Windows="Microsoft Windows XP Embeddedd" /fastdetect
安装Windows XP Embedded开发工具
将Windows XP Embedded开发包的CD1放入CD-ROM中,在自动运行的提示中, 按照以下顺序安装XPE开发工具:
? ? Tools Setup:安装XPE开发工具(包括Target Designer, Component Designer, Component Database Manager, 以及其他工具)
? ? Database Engine Setup: 安装SQL Server 2000 Desktop Edition database engine (MSDE)
? ? Database Setup: 安装组件数据库及Repositories
开发工作站的其他配置
在C盘新建一个XPE_Demo目录,用来放置开发中生成的配置定义文件和组件定义文件。
从CD-ROM上安装TweakUI示例文件到C:\\Program Files\\TweakUI。
这样我们就完成了开发工作站的准备工作。
硬件平台分析
在开发过程中,首先需要运行硬件分析程序来分析当前机器的硬件配置情况。
操作系统与硬件紧密相关,只用充分地了解和支持硬件,才能让操作系统正常稳定的运行。由于X86结构计算机的硬件比较复杂,普通开发者很难对它充分地理解熟悉,因此,微软提供了一个硬件分析工具来帮助开发者分析硬件。
Windows XP Embedded提供的这个工具叫Target Analyzer,可以自动分析所在设备的硬件信息,Target Analyzer有两个版本:TA.exe和TAP.exe。分析完成后会在同一个目录中产生一个XML格式的输出文件Devices.pmq。
TAP.exe是一个32位的应用程序,运行在Windows XP和Windows 2000上,可以运行一些高级的硬件检测。
TA.exe是一个16位应用程序,运行在DOS上,可以用来检测一些无法安装Windows 2000及Windows XP的系统,但检测的功能要差一些,有的硬件设备无法识别。
下面我们运行TAP.exe来检测这台开发机的硬件配置:
? 进入C:\\Program Files\\Windows Embedded\\Utilities目录
? 运行TAP.exe,会在同目录中生成Devices.pmq
用文本编辑器打开这个Device.pmq文件,文件中用XML语言描述了目标设备的硬件信息,例如:在PCI段中,描述了Intel的21440 Ethernet 控制器。
因为我们是在开发工作站上运行了这个程序,所以Devices.pmq中包含的是开发工作站的硬件信息。
保存硬件平台信息
使用Devices.pmq中的信息有两个办法,其一可以根据这个文件生成一个
XPE组件,为以后开发完整的操作系统作准备;其二可以在开发时将这个文件直接导入;将PMQ文件做成XPE组件的好处是,可以一次工作反复使用:做成XPE组件后保存到组件数据库中,以后每次开发系统都可以调用。
? ? 运行组件设计器 Component Designer
? ? 将刚才生成的Devices.pmq文件导入,选择File/Impot… ,弹出导入对话框
? ? 按下“Start”按钮,开始PMQ文件的导入过程,该过程大约耗时10分钟;完成后,会在Component Designer中显示一个‘Devices.sld’组件,将其改名为‘Demo Platform Component’
? ? 展开Component Designer中目录结构
Windows XP Embedded Client
Components
Devices
选中Devices,将组件的Name属性由‘Devices’改为‘Demo Platform Component’
你可以将该组件设为‘Selector Prototype Component’类型,成为该类型的组件后,可以在Target Designer中单独地选取该组件所关联的各个设备:
? ? 在Prototype栏中按下Browse…,弹出Select Prototype Component对话框。
? ? 在Prototype component source栏中选中Database选项。
? ? 在组件树列表中展开到Software/Test&Developnent,选中Selector Prototype Component组件。
? ? 按下OK确定。
选择File/Save as菜单将该配置保存为“C:\\XPE_Demo\\DemoPlatform.SLD” 这个SLD文件中就包含了前面开发的Demo Platform Component组件,关闭Component Designer。
1. 2. 要在Target Designer中使用这个组件,需要先把这个组件保存到组件数据库中:
? ? 打开Component Database Manager,开始菜单\\所有程序\\Microsoft Windows Embedded Studio\\Component Database Manager
? ? 点击‘Import’按钮,在SLD file:栏中按下浏览按钮,找到“C:\\XPE_Demo\\DemoPlatform.SLD”,点击Import。
? ? Import成功后,关闭Component Database Manager。
? ? 确认工作成果:
打开Target Designer,选择 File/New菜单,建立一个新的配置Configuration,确认Demo Platform Component 是否在Target Designer左侧的组件浏览器中,如果发现该组件,则说明刚才的硬件分析工作顺利完成了。
创建初始化配置
要构造一个完整的XPE系统,首先需要在Target Designer中创建一个配置(Configuration),这个配置仅仅是一个空的开发框架,然后在该配置中添加所有的硬件支持组件,系统内核组件和软件功能组件。添加完成后使用Target Designer自动检测组件的关联关系,并自动把缺少的组件添加到配置中。
? 首先运行Target Designer
? 选择File菜单
? 选择New,创建一个新的Windows XP Embedded 配置
? 将该配置的Name 改为DemoPlatform
在下面的Choose Platform中,选择Windows XP Embedded Client (x86)
按下OK按钮创建该配置并保存
在Target Designer中间的组件列表栏中,选中DemoPlatform.slx,在右边的属性栏中修改配置的属性,添入您的个人信息(Name, Owner, Author, Description等)
设置高级参数
下面设置一些整个系统运行需要的参数
在配置浏览器的顶端,展开DemoPlatform.slx,选中Settings,这时右边的属性设置面板会显示可以设置的选项
在Target Devices Settings下面,点击Show,显示详细的选项
设置下列的配置信息:
? ? Boot Drive = C:
? ? Windows Folder = D:\\Windows
? ? Program Files Folder = D:\\Program Files
? ? Documents and Settings folder = D:\\Documents and Settings
? ? Boot ARC path = multi(0)disk(0)rdisk(0)partition(2)
? ? Boot Partition Size (MB) = 700
设置完成后,将配置信息保存到C:\\XPE_Demo 目录。
创建XPE组件
通常每一个嵌入式设备都会运行一个或多个用户自己的应用程序,另外如果使用了非通用的硬件设备,还需要添加相应的驱动程序;怎样把这些相对独立于操作系统的部分集成到操作系统中来,使其成为一个整体?推荐的方法是,将各个独立的部分做成XPE组件,在开发阶段进行集成;通常该工作可以分成五个阶段:
? ? 确定组件使用的资源以及设置
? ? 在Component Designer中配置组件的资源和设置选项
? ? 创建一个Repository,将该组件使用的文件加入到该Repository中
? ? 保存该组件的配置信息
? ? 将该组件导入到Component Database Manager中
下面我们就以一个实际的例子来说明,为TweakUI Control Panel
程序创建一个XPE组件。
? ? 打开Component Designer。
? ? 选择File\\Import菜单,将浏览的文件类型设置为Setup Information Files(*.inf)
? ? 选择“C:\\Program Files\\TweakUI\\TweakUI.inf”,并将其导入,Component Designer可以根据TweakUI.inf中的信息,自动生成一个组件。
? ? 需要为这个组件添加一个Repository,这个Repository实际上是一个系统目录,该目录中包含组件所需要的文件,每一个带有文件的组件都会对应一个或多个Repository,打开Component Designer中的Repositories文件夹。
点击右键,在弹出菜单中选择“Add Repository”,新建一个Repository。
在该Repository的Name属性中填入Tweak UI Files
点击Source Path栏中的Browse按钮,找到C:\\Program Files\\TweakUI。
在Component Designer中选中TweakUI.inf组件
在该组件的属性栏中,按下Repository按钮
在弹出的Select Repository对话框中,选择Tweak UI Files项目,确定。
最后,选中tweakui.inf组件,在右边的属性设置面板中将该组件的名字改为Tweak UI Control Panel Applet。
选择File/Save as,保存为"C:\\XPE_Demo\\TweakUI.SLD",关闭Component Designer。
到此已经完成了TweakUI组件的创建;同前面创建的硬件信息组件一样,要在Targert Designer中使用这个组件,必须先将其导入到组件数据库中。
打开Component Database Manager,
Import这个TweakUI组件:找到"C:\\XPE_Demo\\TweakUI.sld"并导入
导入完成后,关闭Component Database Manager
打开Target Designer
打开刚才创建的配置DemoPlatform
确认Demo Platform Component 组件和Tweak UI Control Panel Applet组件都在Target Designer的组件浏览器中。
与其他组件不同,利用Target Analyzer的输出文件Devices.pmq生成的组件是一个宏组件,宏组件本身不具备什么功能,仅仅是带有与其他组件的关联关系;前面我们开发了一个名为“Demo Platform Component”的宏组件,利用该组件可以方便的为初始化配置添加硬件支持。
构造XPE 系统影像文件
到此我们已经完成的硬件信息的分析并开发了一个硬件信息组件,开发了一个应用程序的组件,另外还建立了初始化的配置。在本节中我们来完成一个完整配置的开发工作。
打开Target Designer
第一个需要添加的组件是由Devices.pmq文件产生的宏组件Demo Platform Component,加入了这个组件,就把硬件信息全部添加到配置中;只要在Target Designer左侧的组件浏览器面板中双击该组件就可以添加该组件到配置中。
在组件浏览器中,找到Demo Platform Component组件,将该组件加入配置中。
如果没有找到该组件,可以在查找栏中输入它的名字进行检索。