北极星主页 | 旧版 | 电力运营 | 电信运营 | 工业控制 | 电子技术 | 仪器仪表 | 大学院校 | 科研院所 | 协会学会
发电设备 输电设备 变电设备 继保自动 直流系统 水电建设 电力系统 交换设备 传输设备 广电通讯 通信终端
通信软件 机房辅设 通信系统 传感器件 智能部件 测控通讯 电气传动 开关电器 设备电源 工控产品 智能器件
电阻电位 电容电感 分立器件 集成电路 功率器件 光电磁敏 电连接件 电路板卡 特殊器件 电子产品 信号示波
电工测量 通讯仪器 环境检测 安规检测 工装工具 仪器产品 民用电器 建筑电器 电工器材 用电设备 电气技术
新闻中心 | 技术天地 | 企业搜索 | 产品中心 | 商务信息 | 人才招聘 | 期刊媒体 | 行业展会 | 热点专题 | 论 坛 | 博 客 | 高级搜索
帐号   密码  个人用户注册 企业免费注册
 

嵌入式Windows XP操作系统开发

冯 峰

(天奥科技公司, 四川 成都 610036)


  摘 要:以开发一个人们不常使用的命令行方式的XP嵌入式操作系统为例,对XP embedded系统及其开发工具进行了简单介绍,并描述了开发过程中的注意事项,以及一些经验技巧。
  关键词:车辆定位系统;嵌入式操作系统;开发

  Development of a Windows XP Embedded System

FENG Feng

(Chengdu Spaceon Technology Co.,Ltd.,Chengdu 610036, China)


  Abstract:This paper introduces an XP embedded system and the developing tools through developing a command line XP embedded system which is seldom used. Some notable issues and know-hows are also illustrated.
  Keywords:
Vehicle locatiom system; Embedded operating system; Development


一、引言
  
所谓嵌入式系统是以应用为中心、以计算机技术为基础的专用计算机系统,软件、硬件可裁减,以适应应用系统对功能、可靠性、体积、功耗、成本等特殊要求的专用计算机系统。
  
Windows XP Embedded是桌面Windows XP桌面操作系统的组件化版本,它能够快速开发出最为可靠的全功能连接设备。Windows XP Embedded采用与Windows XP Professional相同的二进制代码,从而使得嵌入式开发人员能够只选择那些小覆盖范围嵌入式设备所需的丰富定制化特性。
  
本公司承制的某车载定位装置,主要解决包含高楼林立的闹市区之城市中的车辆定位问题。由于“城市峡谷”的存在,GPS信号有被遮挡或发生多径干扰的情况。因此,该装置除了接收GPS信号以外,还采集陀螺和车辆里程脉冲信号进行航迹推算(Dead Reckoning),并基于道路网络的拓扑结构对航迹推算出的轨迹实施地图匹配(Map Matching),以获得更加准确的定位数据。
  
由于地图匹配采用了复杂的算法,道路网络的拓扑结构须采用数据库方式,整个定位系统须采用高级语言编程实现,定位后的结果由用户方的调派控制程序发送给指挥控制中心。基于这些特点,我公司的车载定位装置采用单板工控电脑作为硬件平台,操作系统采用Windows XP Embedded。相对于Linux、Windows CE等其他嵌入式操作系统,选择嵌入式XP的好处是,用户方的现有程序不必重新编程,而研制方的编程人员对基于Windows的编程已十分熟悉,不必学习新的操作系统下如何编程。
  
本文结合作者在车载定位装置开发XP embedded方面的工作经验,介绍使用Windows XP Embedded with Service Pack 1工具定制出自己所需的嵌入式XP操作系统的基本过程、注意事项,以及一些技巧。

二、对车载定位装置及嵌入式XP操作系统的要求
  
车载定位装置正常运行时不接显示器和键盘,只在进行调试时接上键盘和鼠标。
  对于车载定位装置的嵌入式操作系统,要求启动速度快,必须在30 s左右启动完毕。
  整个操作系统所占的容量必须较小。我们选用了512M的CF卡作为操作系统和应用软件的载体,操作系统控制在100M以内比较理想。
  
每个车载定位装置必须有唯一的IP地址,并且有一个共享的子目录,可读写文件。
  
必须实现Modem唤醒和网络唤醒的功能。
  
必须实现ATX电源的关机方式。

三、开发过程描述
  对于嵌入式XP操作系统的开发,大致可分为以下几个步骤,如图1所示。

  下面将分别进行展开描述。
1. XP Embedded开发工具的安装
  
我们采用单板工控电脑作为硬件平台,用一台笔记本硬盘作为主盘,CF卡作为从盘。
  
在主盘上安装了Windows XP Professional操作系统,将XP Embedded开发工具盘从光驱开始安装,选择“Tools Setup”,安装嵌入式操作系统的开发工具。由于一般都是在一台PC机上进行开发,所以请选择将本计算机作为服务器的安装选项。
  
然后,选择“Database Engine Setup”进行安装。微软使用MS SQL Server或Microsoft Data Engine桌面版对XP组件进行数据库管理,一般选用MSDE进行安装。
  
最后,选择“Database Setup”,安装数以万计的XP组件的数据库。
2. 目标机BIOS的设置
  
对目标机BIOS的相关选项进行正确的设置,这一步是为检测出正确的硬件组件做准备。
  
以我们的车载电脑BIOS为例,须将[Power Management Setup]中ACPI Function选项设为[Enabled],Power-On by LAN选项设为[Enabled],Power On by Ring设为[Enabled]。
  
ACPI Function选项设为[Enabled]非常重要。若ACPI Function选项为[Disabled],检测出的硬件组件为Standard PC,则构造出的嵌入式XP操作系统不能实现ATX方式关断电源;若ACPI Function选项为[Enabled],检测出的硬件组件为Advanced Configuration and Power Interface (ACPI) PC。
3. 目标机硬件的检测
  
微软的XP Embedded开发工具提供了tap.exe程序,以检测目标机硬件平台所需的相关组件。
  
建议在Windows Preinstallation Environment预安装环境下进行检测,这样检测出来的硬件组件最为准确、精简。
  
XP Embedded 开发工具光盘1号盘进行启动,启动后的环境即为Win PE操作系统。
  
待检测完毕后,将检测分析好的硬件配置存盘成一个pmq文件。
  
然后再运行Component Designer程序,选取上述检测好了的硬件信息的pmq文件,进行输入。输入完毕后,注意一定要将Component的Prototype类型设置为“Selector Prototype Component”,这一点十分重要。最后将结果存盘为与pmq同名的,后缀为sld的文件。
  
之后再运行Component Database Manager,点击Import按钮,完成将其添加到组件数据库中的工作。
  
上面所有做的工作都是为了形成一个硬件平台的宏组件,所谓宏组件就是将某些功能相关的组件聚集起来,采用一个名字标记该项功能以便于记忆的组件集。
4. 软件组件的选择
  
运行Target Designer,创建一个新的Windows XP Embedded 配置,将该配置的Name 改为便于记忆的名字,如:Arbor_XPE_Cmd。
  
在组件浏览器(Component browser)中可以看到以粗体字表示的Arbor_ATX_WinPE,即目标机硬件平台的宏组件。双击该宏组件,将其加入到配置中。
  
在配置栏(Configuration editor)中将Arbor_ATX_WinPE展开,点击Settings,可以看到在右边的详细情况栏(Details pane)中,列出了硬件平台的所有硬件设备驱动组件,且组件前面打了个“√”,这是我们在前面将硬件平台宏组件的prototype属性设成了“Selector Prototype Component”。(如果不这么设置,则详细情况栏中看不到具体的硬件设备驱动组件) 这时我们还可以将虽然检测出了,但确信我们将不会使用的设备组件Disable掉,即将组件前的“√”去掉。例如System speaker、Standard floppy disk controller、Printer port、Volume Manager等。
  
再加入一些必要的组件。
  为了避免对CF卡频繁读写,我们使用EWF Loader及Enhanced Write Filter组件。
  
我们将CF卡格式化成FAT格式,另外考虑到会使用外置式USB型光盘驱动器,因此添加了FAT、CDFS组件。
  
为了使嵌入式操作系统在硬盘中所占的空间最小,我们仅使用英语作为界面显示的语言。编制应用程序时菜单及对话框也只考虑用英语。因此添加English Language Support组件。
  
为了达到迅速启动,仅选用Minlogon及Command Shell组件。实际上在命令行环境也可以运行含有图形界面的程序,也可以使用Alt+tab键在多个程序间进行界面的切换。
  
为了实现实现网络连接和文件共享,需要添加TCP/IP Networking with File Sharing and Client for Microsoft Networks宏组件。
  
在命令行中进行IP地址配置及共享文件夹,需要运行net及netsh命令。因此net.exe utility、Network Command Shell、Network Command Shell Interface Context这三个组件必不可少。
  
Network Location Awareness Service组件是进行远程访问所必需的。
5. 操作系统映像的构筑
  
组件添加完毕后,在Target Designer中,选择“Check Dependencies”项执行,进行组件的依存关系检查。
  
组件依存关系检查无误后,选择“Build Target Image”项执行,生成操作系统映像。
  
Win98启动软盘从软驱启动。
  
fdisk软件将整个CF卡分为一个Primary DOS分区。
  
重新用Win98启动软盘从软驱启动。运行format程序,将整个CF卡按FAT格式进行格式化。
  
进入c:盘,进入到XP embedded开发环境utilities子目录下,运行bootprep /dD命令。Bootprep.exe是XPE自带的工具,它的功能是在硬盘或CF卡上生成XP启动扇区。第二个大写的D表示CF卡所代表的D盘,而且一定要大写。
  
Windows Embedded Images下的所有文件和子目录拷贝到CF卡上。
6. 首次启动
  
关闭电源,将软驱和笔记本硬盘从单板工控电脑上取出。
  重新开启电源,使单板电脑从CF卡启动,这时可以看到单板电脑正在执行一个叫做“First Boot Agent”的过程,即首次启动形成最终可用的操作系统。
  
FBA执行一些设计嵌入式操作系统时不能完成的任务,例如即插即用的设备检查和配置。FBA还完成一些更适合在首次运行时执行的任务,例如注册DLL及COM控件等。
7. 配置及优化
  
待嵌入式操作系统首次启动完毕,单板电脑正常启动后,输入下面的命令:
  
rundll32 netshell.dll HrRenameConnection
  如果不运行上述命令,在用netsh命令进行IP地址设置时,会报“Invalid interface Local Area Connection”的错误。
  
运行netsh命令,进行IP地址的设置。
  
在我们的单板电脑上需要运行采用综合化手段进行车辆定位的程序,因此我们在CF卡上建立一个名为obudata的子目录,下面存放有地图数据和可执行程序。为了使用方便,要求将此目录共享出来,以便拷贝有关数据,更改地图等。
  
共享obudata子目录,须输入以下命令:
  
Net share obudata=C:\obudata
  
键入以下命令,使其他用户访问时以administrator身份,189406为密码进行访问:
  
Net user administrator “189406”
  
网络中其他机器需要访问obudata子目录时,可选择“开始”→“运行…”,输入以下命令:
  
\\172.16.0.209
  当提示用户输入用户名和密码时请分别输入administror和189406后,即可看到obudata的子目录。
  
我们的综合定位程序是单板电脑上电,操作系统引导完毕以后需要自动运行的。这时可以插入工具USB盘,运行上面的英文版regedit.exe程序,在\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run项下,添加一个字符串项obu_run,其值为c:\obudata\mlocate.exe,mlocate.exe即为综合定位程序。
  
最后再对BIOS的设置进行一下检查。如软驱将不再使用,从BIOS中将其禁用。另外,请注意将First Boot Device设成[HDD-0],Second Boot Device、Third Boot Device、Boot Other Device均设成[Disabled],Quick Power On Self Test设成[Enabled],这样将加快启动的速度。
  
由于车载定位装置平时运行时不接键盘和鼠标,应注意将BIOS中Standard CMOS feature中的Halt On项设为[No Errors]。
8. 工具软件盘
  
从本人对XP Embedded的开发体会到,准备一个工具软件的USB盘是十分重要的。因为有些软件只需在调试时运行,将它们包含在操作系统中既占空间,也没有必要。
  
我们可以选择以下一些英文版的软件:
  
ping.exe,用于检测网络的连通性;
  ipconfig.exe,运行ipconfig /all,可以得到本机的IP地址、MAC地址等信息;
  regedit.exe及其所必需的ulib.dll库。前面提到的让程序自动运行需要用到regedit程序;
  Taskmgr.exe及其所需的taskmon.exe和vdmdbg.dll库。用此程序可以检测CPU占有率、内存使用情况等。

四、结论
  按上述过程对嵌入式XP操作系统进行开发构造,以及对BIOS及注册表进行设置,达到了车载定位装置预期的设计要求,并应用于我们在某海外大都市的智能综合化车辆定位工程中。


参考文献

1]Building a Windows XP Embedded Device[EB/OL]. http://msdn.microsoft.com/embedded/xp/getstart/tutorials/default.aspx
2]Working with Netsh in Windows XP Embedded[EB/OL].http://msdn.microsoft.com/library/en-us/dnxpesp1/html/tchWorkingWithNetshInWindowsXPEmbedded.asp
3]丁雪,朱靖,等.轻松学用注册表与BIOS[M]. 北京:电子工业出版社,2003.

电讯技术

关于网站 | 个人会员 | 企业会员 | 广告联系 | 在线帮助 | 网站地图 | 诚征代理 | 联系我们
    运营总代理:北京火山动力网络技术有限公司
北京光宇华夏科技有限责任公司
Copyright @2000-2006
京ICP证010181号