积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> 嵌入式软件 >> XP Embedded
  相关分类: LINUX | WINCE | UC/OS | Bootloader | 下载 | VXWORKS | 网络协议 | JAVA | 汇编 | 驱动设计 | Symbian | XP Embedded | Nucleus | 新产品 | 相关文章 | 综合技术 |
Windows XP Embedded 体系结构基础
 
作者:Jon Fincher   来源:Microsoft    点击数:794   更新时间:2007-9-14
您可以添加到网摘 让更多人关注此文章:

    


    Windows XP Embedded 于十一月末在拉斯维加斯的 Devcon 发布并引起极大的反响。我们所有的论坛都已人满为患(实际上,有些已过于拥挤,结果导致了 SRO 事件),并且专家讲座也受到同样热烈的欢迎。我有幸与许多客户进行交谈和工作,他们所提出的问题的数量和水平给我留下了深刻印象。这是一个了不起的活动,我衷心感谢其中的每一位参与者!


在开始之前,我先澄清一个小问题:专栏主页上的照片是我和我的朋友 Mike Hall(左边)。在 Devcon,有许多人认出了我,但却把我当成了 Steve Maillet,因为第一篇文章是由 Steve 和 Mike 写的。结果,现在别人叫我的名字我要回答,叫我 Steve 我也要回答。


在上篇文章中,我答应要介绍 Windows XP Embedded 体系结构,通过一个标准的构建过程来说明其引入的缘由。Windows XP Embedded 的体系结构很复杂,一篇文章的篇幅是远远不够的。因此,我只是以一种结构化的方式着重讲述个别工具背后的体系结构。但是,我首先要介绍这些工具的一个组成部分,这就是大家都比较陌生的 CMI。


CMI:技术的核心


正如您从我的上一篇文章(以及所有出版物)中所了解到的,Windows XP Embedded 使用基于 SQL 的数据库来存储所有组件。数据库可以是本地或远程的 Microsoft® SQL Server,也可以是本地的 Microsoft® 数据引擎 (MSDE)(可在 Windows XP Embedded CD 上找到)。而 Windows NT Embedded 4.0 则使用一个单一的本地 Jet 数据库 .mdb 文件来存储所有的组件和配置。


为了能够从一组工具中无缝访问本地和远程数据库,同时提供快捷的数据库切换,整个体系结构中设置了一个数据库通信层。该层称为 CMI,或组件管理接口。它的主要目的是在 Windows XP Embedded 工具(Target Designer、Component Designer 和 Component Database Manager)和组件数据库之间提供一个标准接口,而不管数据库驻留在哪里(本地或远程、SQL Server 或 MSDE)。只要与组件数据库中的内容有关,CMI 就会被调用。


因为所有工具都依赖于活动的数据库连接来进行工作,所以任何工具所做的第一件事都是请求 CMI 提供一个活动数据库连接。如果没有可用的数据库连接,CMI 将返回一个失败,而工具将报告一个错误。总之,没有数据库连接,Windows XP Embedded 将不能进行任何工作。


CMI 也支持某种级别的异步数据库访问,这种情况通常发生在远程 SQL Server 数据库和多个客户端之间。所有涉及数据库更改的操作都在 SQL 中处理,并在操作失败时提供复原功能。CMI 还可以区分只读模式和独占模式。任何工具要从数据库中删除信息(当前仅限于组件数据库管理器),都必须具有独占访问权限,如果任何其他工具打开了数据库,该工具将不能获得这一权限。另一方面,如果某工具已经被授予独占访问权限,其他工具将不能访问数据库,直到该工具释放这一权限。


此对象非彼对象


注意:下面的讨论中将使用两个术语 - 组件和实例,二者很容易混淆。简单地说,组件只是一组驻留在数据库中的资源和属性。组件添加到配置中便称为实例,可以修改、处理和构建。可以把组件视为 cookie 模式,而实例是从该模式中创建的实际 cookie。更改 cookie 剪裁模式并不容易,但在剪裁 cookie 后,可以随意对 cookie 进行处理。了解组件和实例之间的这种差异很重要,在本文和以后的文章中都将涉及这一问题。

因为 CMI 是工具的 COM 服务器,这使得 Windows XP Embedded 体系结构形成这样一个基本特性 - 把任何事物都视为对象。配置、组件、实例、资源、文件、注册项、存储库都是 CMI 覆盖下的对象。因此,Windows XP Embedded 体系结构体现了面向对象 (OO) 思想的三个原则:封装、继承和多态。这里我们不对 OO 设计做详细讨论,只解释其中与 Windows XP Embedded 体系结构有关的几个方面。讨论的重点将集中在组件上,但相关的概念可以扩展到所有 Windows XP Embedded 对象。


每个 Windows XP Embedded 对象都是一个独立的单元。组件带有自己的属性和内部代码,以此来封装自己,并与其他对象区分开来。


组件也能够继承其他组件的属性。例如,假定一组设备都基于同一芯片组:假设为声卡驱动器,使用虚构的 SoundExplosion 1A 芯片组。有三个声卡使用该芯片组,但提供不同的功能:一个用于游戏端口,一个用于 MIDI 端口,另一个用于 SCSI 接口。我们不用创建三个大同小异的组件来适应不同的要求,而只需创建一个组件,将基本功能封装进去。然后针对三种差异创建三个组件,并将基本功能组件列为“原型”。这三个组件将继承与原型相关联的属性和资源,但同时也添加了自己的资源。


Windows XP Embedded 对象中的多态通常由 DHTML 配置脚本和构建脚本来处理。DHTML 配置脚本允许组件的最终用户在组件实例中动态设置属性,然后在构建脚本中检查这些属性并对其做出反应。这样,您就可以在构建配置时更改组件的行为,以满足开发人员的需求。


这最后一部分会进一步体现 CMI 面向对象的特性:Windows XP Embedded 中的每个对象都具有一组属性和方法,某些对象甚至能够对事件做出反应。属性可以分为标准属性(如组件名称、组件作者和版权)和高级属性(cmiNoHelpFiles 是组件的一个常用高级属性)。对象的方法可以简单地继承自基本组件(如基本构建行为),也可以是该组件所特有的(如用户接口核心组件,它包含 DHTML 配置脚本以及构建脚本,可以实现不同的 UI 功能)。可以在构建过程中引发事件,并可由组件脚本做出反应。


某些高级属性已经被预定义,组件最常见的高级属性有 cmiNoHelpFiles(构建脚本用它从构建中删除帮助文件)、cmiLangEnableMUI(构建脚本用它来启用组件的多语言用户接口 [MUI] 支持)以及 cmiProtPropList(Target Designer 用它来保护预定义的属性)。要检查组件的高级属性,可以在 Target Designer 中将组件添加到某个配置,然后在 Configuration Editor 中单击该组件,再单击 Advanced


扩展对象模型


Windows XP Embedded 的对象特性和 CMI 应用不仅限于组件和实例,CMI 也把配置当作对象处理。配置的标准属性包括配置名称、所有者、作者和版权。高级配置属性包括有关目标启动驱动器、启动 ARC 路径和帮助文件的设置。要检查这些属性,可以在 Target Designer 的 Configuration Editor 中选择配置名称,然后在 Details 窗格中单击 Advanced


与组件和实例的对象身份一样,它们的组成部分也都被视为对象。组件中的每个文件、注册表或其他资源都是对象,分别具有一组属性。要检查这些属性,可以在 Configuration Editor 中展开实例,然后选择 Files、Registry Data 或 Resources。在 Details 窗格中右击所要检查的资源,这时便会显示该资源的标准属性,同时显示 Advanced 按钮,单击该按钮可以显示资源的高级属性。这同样适用于与该配置相关联的 Extra Files、Extra Registry Data 和 Extra Resources。要完成所有内容,每一个组、包、存储库和存储库集也都被作为对象处理,它们都有自己的标准属性和高级属性。


CMI 的运作


假设我们有一个应用程序要包含到一个运行时映像中。一般的过程是先为应用程序创建一个组件,将组件导入数据库,将组件包含在某个配置中,然后构建运行时映像。现在我们看一下 CMI 在其中的作用。(由于要在接下来的两篇文章中详细探讨组件的创建,因此这里只做一个简单的介绍。)


当启动 Component Designer 时,CMI 首先确保具有一个数据库连接。如果创建新组件,CMI 将创建一个新的组件对象,然后 Component Designer 使用该对象作为所定义的所有组件信息的存储位置。基本的创建过程包括定义组件的名称、指定要复制的文件和将其放在运行时映像中的位置,以及指定使用哪个注册表主键并将其放在何处。名称是组件的标准属性,因此它包含在组件对象中。所指定的文件和注册项是 CMI 创建的对象,它们将附加到组件对象中。


导入组件时,先启动组件数据库管理器。数据库管理器首先调用 CMI 来连接安装时指定的数据库,如果 CMI 连接成功,则可以将 SLD 导入到该数据库。(SLD 表示资源级别定义,并称为“滑动”。由 Component Designer 输出。)组件数据库管理器再将 SLD 传递到 CMI,以便进行处理。浏览数据库、删除包和组件以及检查对象的属性都由 CMI 处理,CDM 的作用相当于基本 COM 对象层的 UI。


当最终准备构建运行时映像时,CMI 将再次验证数据库连接。(是否看到了一个模式?)创建新的配置需要由 CMI 来创建相应的对象,完成整个组件浏览器的内容也是如此。要将组件添加到配置,CMI 首先要基于选定的组件创建一个实例,然后将其附加到打开的配置中。同时也要为该实例的文件、注册表和其他资源创建资源对象。在相关性检查过程中,CMI 将负责标识相关性,并创建相关性解析所需的组件列表。在构建过程中,将调用 CMI 来访问要复制的实际文件,同时提供详细的属性信息来处理相应的构建。


总结与展望


上面我们简单介绍了 Windows XP Embedded 的基本体系结构。CMI 是该体系结构的核心,用于实现 COM 服务器的功能,为 Windows XP Embedded 工具提供标准的组件数据库访问。CMI 赋予该体系结构面向对象的特性,为运行时开发过程中所需的各项内容创建相应的对象。


那么,从这篇文章中我们可以获得什么启发呢?当然,本文不能说是 Windows XP Embedded 体系结构的详尽介绍。我只是希望它能提供一些基础知识,我们将在以后的文章中详细讨论每个工具,以及每个工具的 UI 中明显(或并不十分明显)的体系结构。在讨论每个工具时(接下来的两篇文章准备讨论 Component Designer),我们将尽力给出从 UI 到基本体系结构的完整概念。同样,敬请留意 Windows XP Embedded Web 站点 http://microsoft.com/windows/embedded/xp/default.asp(英文)以获取新的信息。节日快乐,一月份新闻组再见。



 Get Embedded


Jon Fincher 是土生土长的新英格兰人,1995 年加入 Microsoft Product Support Services 部门。在那之前,他是 UNIX 系统管理员和数据库程序员。1999 年,他开始从事 Windows NT Embedded 4.0 的支持服务工作,现在是 Windows XP Embedded 的软件测试工程师。Jon Fincher 整年都骑着他的哈雷,无论上下班还是去玩,也无论刮风下雨。

[1]



相关文章
· Windows CE和Windows XP Embedded比较[315]
· Windows XP Embedded中基于文件的写入过滤器[778]
· Microsoft Windows XP Embedded技术常见问题[2479]
· Windows CE和Windows XP Embedded比较[834]
· Windows XP Embedded中基于文件的写入过滤器[418]
热门评论排行
·VHDL设计中电路简化问题的
·江苏嵌入式Linux教育培训
·锐极LINUX驱动培训班定于
·基于实时操作系统μC/OS-
·ARM嵌入式系统基础教程(N

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
华虹NEC的0.13微米嵌入式工艺取
映绿色风潮 奇美电子在日发
尔必达注资力晶半导体新台币35亿-4
WSTS调降近三年IC市场预期&nb
Vishay 推出具有业界
具备革命性数字安全特性的英飞凌SLE
祥硕科技采用一系列 MIP
安森美半导体荣获德尔福苏州E&S优质
赛普拉斯为用于机器视觉与运动分析应用
赛普拉斯针对机器视觉与全息数据存储应
 
热门下载 [更多]
 
[ PCB设计] Protel99教程下载
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
 
论坛新帖 [更多]
 
硬件工程师面试题及答案(模拟电...
如何在C语言中跳出多重循环?—...
ARM入门开发步骤...
linux学习点滴...
在linux上安装配置samb...
[转帖]WinCE 5 mem...
四折批发各种数码相机,摄相机等...
最低价销售各种品牌手机...
震撼出售各种品牌笔记本电脑等!...
IC design 的流程...

 
赞助商 [更多]
 

ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网