APP下载

嵌入式操作系统SHELL定制开发

2018-01-17陈天毅周平李政张新民

电子技术与软件工程 2017年23期
关键词:嵌入式操作系统定制开发

陈天毅++周平++李政++张新民

摘 要 介绍了微软嵌入式WindowsXP操作系统的SHELL定制开发方法以及开发中主要考虑的技术问题,并介绍了SHELL实现的主要功能。针对车载嵌入式系统开发的XPe通过对XP的裁减,去掉了不需要的组件和服务,减小了最终操作系统的体积,使系统的实时性得到极大的增强;通过自主开发定制的SHELL,增强了系统的安全性,改善系统的可操作性,在实际的系统调试及试验操作中取得了良好的效果,证明SHELL的定制开发是成功的,所采用的技术适合嵌入式系统远程操作控制使用。

【关键词】嵌入式操作系统 SHELL 定制 开发

某车载移动式设备,为完成特定的功能,其控制系统需要完成比较复杂的时序控制、压力闭环调节、安全连锁以及试验数据实时采集等功能,涉及比较复杂的控制算法及大量的数据采集与远程传输,对系统的可靠性要求较高。系统方案设计时,通过分析比较,我们选择了德国控创的cPCI系统构成测控系统核心控制器硬件平台,选用微软的WindowsXP Embedded为控制系统软件的操作系统平台,为适应车载抗振的需求,用CF卡作为操作系统与应用软件的存贮器,自主开发相关的应用软件。

控制系统正常工作时为无人操作,也无人机接口,所有的操作都通过网络远程进行,为保证各分系统互操作的可靠性,系统中设计了CAN总线网和以太网,CAN主要用于接收系统控制命令与反馈命令操作的结果,以太网主要用于实时数据的传输。系统结构见图1。

由于该系统是一套车载试验设备,控制系统装在车上,在空间狭小的控制车上连接显示器和鼠标键盘技术人员修改系统控制程序和配置参数,非常困难和麻烦。因此,控制系统具有一套远程传输服务管理系统,使最终用户在上位计算机上可以通过以太网远程启停控制软件、远程重启核心控制器、远程传输修改好的控制程序以及修改的系统各种属性参数文件非常重要。

WindowsXP Embedded是微软针对X86体系定制的一款组件化的嵌入式操作系统。目前在工业自动化控制和嵌入式设备中使用相当广泛。与普通桌面XP版本的最大区别是可以定制,针对不同的应用场景选取不同的组件组成不同的XPe目标平台,从而能够极大地减少对存储空间的占用率,提高系统性能;直接开关系统电源就可以使用,没有繁琐的开关机过程,方便作为设备使用。

XPe的组件包括驱动程序、服务和应用程序等,为XP开发的应用程序可以运行在XPe平台上。除了Win32 API外,XPe还支持.NETFramework。本项目采用的版本是Windows XP Embedded SP2 Feature Pack 2007,具有EWF、FBWF等功能,非常适合嵌入式设备所用CF卡的特殊要求。

Windows操作系统一般都需要Explorer shell、Command shell或Task Manager shell等三种程序中的一个作为系统的外壳,其提供的功能供用户与操作系统交互,XPe也不例外。对于本系统,由于无人机界面,因此,我们将自主开发的远程传输服务管理系统作为WindowsXP Embedded操作系统的外壳,简化了系统操作流程,增强了系统的可靠性,降低了系统对操作人员技术水平的要求,为达到最终系统要求的良好可操作性及可靠性起到了很好的作用。

1 SHELL定制

XPe的开发环境主要包括Target Designer,即目标设计器,用于选择加入到目标平台中的组件,进行依赖检查,然后编译成目标平台;Target Analyzer,即目标分析器,用于分析目标设备,获取目标设备的信息;Component Designer,即组件设计器,用于设计自定义组件,可以将应用程序、驱动程序等设计成XPe可以使用的组件;Component Database Manager,即组件数据库管理器,用于管理组件对象库中的组件。

要构造一个完整的XPE系统,首先需要在Target Designer中创建一个配置(Configuration),然后在该配置中添加所有的硬件支持组件、系统内核组件和软件功能组件。添加完成后使用Target Designer自动检测组件的关联关系,并自动把缺少的组件添加到配置中。

我们开发的产品不是普通的软件,而是专用的操作系统,操作系统与硬件紧密相关,所以需要针对某个特定的硬件平台(目标机)来进行开发,只有充分地了解和支持硬件,才能让操作系统正常稳定的运行。由于X86结构计算机的硬件比较复杂,普通开发者很难对它充分地理解熟悉,因此,微软提供了一个硬件分析工具來帮助开发者分析硬件。Windows XP Embedded提供的这个工具是Target Analyzer,可以自动分析所在设备的硬件信息,分析完成后会产生一个XML格式的输出文件Devices.pmq,根据这个文件生成一个XPE组件,并保存到组件数据库中,以后每次开发系统都可以调用,为开发完整的操作系统作准备。

通常每一个嵌入式设备都会运行一个或多个用户自己的应用程序,另外如果使用了非通用的硬件设备,还需要添加相应的驱动程序,将各个独立的部分做成XPE组件,在开发阶段进行集成。

定制SHELL的主要作用是限制用户对系统的访问或者提供采用标准SHELL无法提供的功能。

为了使开发的远程传输服务管理软件成为XPe的SHELL,必须将其做成XPe的component,为此,在Component Designer中新建component,将其Prototype设为Shell prototype component,将其Dependencies设为Shell group,将Categories设为Software\System\User Interface\Shells,然后在Target Designer中删除默认的Explorer shell、Command shell或Task Manager shell,加入新建的SHELL component,进行Dependency Check,选择Auto-Resolve Dependencies,再Build Target Image即可。endprint

SHELL定制的核心是作为SHELL的组件必须继承Shell prototype component的属性。

2 SHELL开发

SHELL要完成的主要工作为远程启停控制软件;远程重启核心控制器(WindowsXP Embedded重新启动);将修改好的控制程序以及修改的系统各种属性参数文件传输到嵌入式控制器中;远程改变XPe的EWF状态,以便于将修改后的程序和属性文件保存在CF卡上,并保护CF卡;操作安全认证,确保只有授权的用户才能对系统进行操作。FTP(可以完成文件传输,但无法对正在运行的控制程序进行更新)或远程桌面可以实现类似功能,但存在的重大问题是系统的安全无法保证,无法确保只有授权用户才能操作设备;另一方面的不足是对操作者的技术水平要求较高,需对系统的配置充分了解。

为了实现以上功能,采用VC++60开发所需的远程传输服务管理软件。

作为操作系统的SHELL,其重要性不言而喻,必须着重考虑的是其自身的稳定性、可靠性、对系统的安全保护以及对系统网络故障的自适应性,最大程度保证系统可用。SHELL除要求自身稳定外,还必须在系统启动完成后,启动控制系统核心控制软件运行,完成系统功能。因此,SHELL的开发主要从以下几个方面考虑:

2.1 网络检查

本系统由于没有人机界面,网络是系统与外部联系的唯一通道,为提高可靠性,在系统中配置了两块以太网卡,从而构成冗余网络系统。通信的实现采用基于MFC的WINSOCKET完成。由于各分系统的工作情况不同,启动时间不同,有可能出现要连接的系统没有响应的情况,因此,在系统启动时必须对网络的连通情况进行检查。为此,将用来LISTEN的SOCKET构建在系统堆上,如果网络不通,则删除SOCKET,然后定时重建。如果试验过程中由于振动等原因,造成网线接触不良导致通信故障时,由SHELL重建SOCKET,从而确保通信可靠。

2.2 安全认证

如果SHELL中用于LISTEN的SOCKET接到连接请求,SHELL在接受连接的同时,对连接的请求方要求必须的特定连接串,如果请求方不能提供要求的连接串,或提供的连接串错误,则切断请求的连接,确保只有授权的用户才能操作系统。

2.3 启动控制软件

SHELL启动完成后,检查网络的连接状态,如果网络良好,则启动核心控制软件,系统进入待命状态,然后等待CAN总线的操作命令,对系统进行控制,完成试验任务。

在Windows系统中,无法对正在运行的程序进行更新,为了能够远程更新控制软件及配置参数文件,必须实现SHELL对控制软件的启停的功能,便于控制软件的更新,为此,在SHELL启动控制软件后,由SHELL向操作系统广播自定义的消息,并在消息中携带SHELL的窗口ID,在控制软件中则响应SHELL发出的消息,并将控制软件的窗口ID返回到SHELL中,从此,SHELL与控制软件互相知道对方的窗口ID,相互之间就可以通过自定义的消息进行通信,从而实现由SHELL控制核心控制软件的启停的目的。其控制原理见图2。

2.4 文件传输

文件传输是一个较简单的功能,采用SOCKET可以较容易地实现。文件传输分为文件的上传与下载,上传用于将cPCI中现用的控制软件及配置参数传回到上位机中进行比较,以确认cPCI中的控制软件的版本及系统配置参数,下载功能用于更新cPCI中的控制软件及配置参数文件。

2.5 EWF功能控制

使用CF卡创建基于Compact Flash? (CF卡)引导运行的XPE操作系统有很多优势,最显著的优势是创建嵌入式装置,这些设备通常较为可靠,因为他们都没有任何活动部件,特别适合车载系统的使用条件。但使用CF卡也有缺点,其主要缺点是它有一定的读写次数限制,当反复对CF进行读写操作的时候,随着时间的推移,CF上的坏块就会越来越多,同时读写速度也会越来越慢,甚至导致最终的系统崩溃或者文件丢失,这种特性对于使用CF卡作为存贮器的系统来说是不利的。

XPe系统提供了EWF功能,可以使用EWF过滤所有向Flash存储介质的写操作,从而保护CF卡。EWF即增强性过滤写入功能的缩写,通过限制直接写入CF的方式,避免了频繁的读写对CF卡造成的损坏,从而延长了CF卡的使用寿命和读写次数。EWF主要的功能是在计算机内存中构建一个覆盖层,这个覆盖层理论上置于被保护卷的上方,所有对保护卷的读写操作都要先经过覆盖层。开启EWF过滤功能后,被保护卷将不能被写入,所有的针对保护卷的写入操作都将记录在覆盖层上,但是可以读取被保护卷的信息。如果目标信息不在覆盖层上,那么覆盖层可以通过读保护卷的操作,但是将会过滤写入的操作。使用该功能的主要目的是用来保证基于CF卡的Windows系统的引导分区避免不必要的写入,增强系统的健壮性,或者保护引导分区避免异常断电带来的损耗。EWF的作用原理见图3。

EWF一般情况下是通过命令行操作来实现开启或关闭的,本系统由于无人机界面,因此,无法使用这种操作方式。XPe提供了EWF的编程接口,即Enhanced Write Filter API(EWF API),因此,在SHELL的开发中,通过在VC++60程序中加入EWF API调用,实现对EWF开启、关闭及查看EWF状态等功能,从而让总控系统可以通过网络远程开启或关闭XPe的EWF功能,既能实现文件保存在CF卡上,同时也能在不传输文件时保护CF卡。

3 应用与结论

本系统开发完成后,经过近一年的系统调试以及5年正式的试验验证,系统稳定可靠,操作方便,增強了系统的可操作性和安全性。

XPe通过对XP的裁减,去掉了不需要的组件和服务,使系统的实时性得到极大的增强,通过自主开发定制XPe的SHELL,增强了系统的安全性,实现了远程启停控制软件、远程重启核心控制器、远程传输修改好的控制程序以及修改的系统各种属性参数文件等功能,大大改善系统的可操作性,取得了良好的效果,证明定制的SHELL是成功的,所采用的技术适合嵌入式系统远程操作控制使用。

参考文献

[1]Microsoft.Windows? XP Embedded Service Pack 2 Feature Pack 2007Documents. Microsoft,2008.

[2]蔡永泉.算机网络安全理论与技术教程[M].市海淀区学院路37号,京航空航天大学出版社,2003.

[3]王达.算机网络远程访问与远程启动[M].大学学研大厦,华大学出版社,2003.

[4]雷斌等.VC++60网络编程技术[M].北京市崇文区夕照寺街14号,人民邮电出版社,2000.

作者简介

陈天毅(1966-),男,重庆市开县人。硕士学位。现为四川绵阳中国空气动力研究与发展中心四所高级工程师,从事控制系统设计与研究。

周平(1963-),男,四川省三台县人。博士学历。现为四川绵阳中国空气动力研究与发展中心四所研究员,从事控制系统设计与研究。

李政(1966-),男,湖北省松滋市人。硕士学位。现为四川绵阳中国空气动力研究与发展中心四所高级工程师,从事控制系统设计与研究。

张兴民(1972-),男,新疆维吾尔自治区乌鲁木齐市人。硕士学位。现为四川绵阳中国空气动力研究与发展中心四所工程师,从事计算机控制。

作者单位

中国空气动力研究与发展中心四所 四川省绵阳市 621000endprint

猜你喜欢

嵌入式操作系统定制开发
典型实时嵌入式操作系统应用分析
汽车“定制”卷土重来
河南方言文化资源的保护及其开发利用的研究
遵义红色旅游开发对策研究
单片机在电子技术中的应用和开发
基于嵌入式操作系统的工业采集板设计
应用服务型人才培养体系下的嵌入式操作系统教学改革探索
计算机嵌入式操作系统研究