APP下载

基于Windows CE 移植电火花线切割加工数控编程系统的研究

2013-09-10魏万根张永俊黄志刚

电加工与模具 2013年5期
关键词:内核应用程序嵌入式

魏万根,张永俊,黄志刚

(广东工业大学机电工程学院,广东广州 510006)

微软推出的嵌入式操作系统Windows CE 是一个基于32 位、嵌入式、多任务、实时性能好、通信能力强大、具有模块化特性的操作系统,适应各种嵌入式系统和产品。Windows CE 的可裁剪特性与模块化设计方式,使系统及应用开发人员能够为各种不同的产品来定制它。由于拥有自己的系统结构,具备独立开发的内核,因此被广泛应用于移动计算设备、工业控制、车载电子、智能家电、移动通信等领域,使其成为当今嵌入式领域应用最广泛、市场增长最快、最具发展潜力的嵌入式操作系统。本文基于Windows CE 嵌入式移植Windows 软件,是满足嵌入式应用软件快速增长需求的一个重要途径;而移植后的基于Windows CE 平台的WEDM(电火花线切割)数控自动编程系统,将克服恶劣工业环境下控制系统的严重不足。

1 Windows CE 与Windows的区别

1.1 Windows CE 的特性

(1)可裁剪定制内核

Windows CE 是为嵌入式系统设备(如手持移动设备)而设计的操作系统,一般这类设备的硬件资源有限(包括RAM、CPU 处理能力等)。这样,用户在定制操作系统时,根据功能需求,在满足设备功能要求的前提下,尽可能地只选择必需的模块加入操作系统中,不需要的模块组件裁剪出去,最后生成的操作系统映像体积小,能满足在硬件资源受限的设备上正常运行。Windows CE 内核的最小容量只占200 kB,如果增加图形界面或网络支持,内核体积大概4 MB 左右。

(2)跨平台支持

由于嵌入式设备的CPU 体系多种多样,为了适应Windows CE 嵌入式系统在异构平台上的正常运行,微软设计的Windows CE 操作系统支持包括x86、ARM、MIPS、SuperH 等主流的CPU 体系结构。

(3)出色的图形界面

Windows CE 之所以取得巨大的成功,其中一个主要原因就是具有出色的图形交互界面,极大地方便了非专业用户的使用,人们不再需要死记硬背大量的命令,而是能通过窗口和菜单方便的操作。

(4)良好的通信能力

Windows CE 广泛支持各种通信硬件、局域网连接和拨号连接,可用于各种级别的数据传输和设备之间的连接。由于同为微软公司的产品,因此它还提供与Windows 9x/NT/XP 的整合及通信。

(5)高效的开发工具支持

从Windows CE 6.0 开始,微软已将Platform Builder for Windows CE 6.0 作为Microsoft Visual Studio 2005(简称VS.NET 2005)的插件集成进VS.NET 开发平台中,这就将Windows CE 操作系统定制、驱动程序开发、应用程序开发全部统一到VS.NET 2005 环境中,使Windows CE 的系统开发与桌面开发共享一种开发平台。

1.2 Windows CE 与Windows 的区别

虽然Windows CE 系统属于Windows 家族,但两者具有不同特性,主要体现在:

(1)Windows CE APIs和Win32 API 的不同

与Windows 95/NT/2000/XP/Vista 的API 相比,Windows CE API 是Win32 API 的一个子集,且其中部分函数的功能已精简,如对颜色和字体的支持更加有限。Windows CE APIs 相对于Win32 API 扩展了一些特定功能,如通知(notification)和触摸屏(touch screen)需要硬件功能的支持。此外,对异常处理也具有使用限制等。因此,桌面上正常运行的应用程序都不能直接在Windows CE 上运行,开发者需通过其他办法重新编排程序结构和函数来实现这些功能。

(2)Windows CE 的MFC和标准MFC 的不同

Windows CE 不支持桌面MFC 所有类,如Windows CE 中的MFC 不支持数据库连接中的Data Access Object(DAO)与Open Database Connectivity(ODBC),以及Multiple-Document Interface(MDI)用户界面、Object Linking and Embedding(OLE)和Rich Edit 控件,因此,需增加、修改和删除一些类。新增类有CCeSocket、CCeDBEnum、CCeDBDatabase、CCeDBProp和IRecord 等类别,删除类如CFontDialog和CPrintSetupDialog,因此,也就没有Font Selection 对话框和Printer Setup 对话框。

(3)存储器容量的不同

桌面Windows 最早拥有512 M 内存,如今已发展到1~2 GB,但Windows CE 设备一般都配置少量的RAM、频率较低的微处理器,且像台式PC 上大容量的存储设备和磁盘基本都没有。Windows CE在内存管理方面必须要比其他Windows 操作系统更节约物理内存和虚拟地址空间。当移植一个应用程序到Windows CE 时,应着眼于频繁使用的功能。在程序中建立全局内存使用机制,自行监控、管理内存及GDI 对象,避免频繁的内存分配和GDI 创建、销毁操作。

(4)测试和调试的不同

开发Win32 目标系统应用程序,所有的测试和调试直接在PC 上完成。但Windows CE 却不同,如果为一个标准的Windows CE 目标系统开发程序,基本上所有的开发和调试工作在开发工具提供的Windows CE 仿真环境中进行。而如果是基于非标准的硬件平台,当仿真环境中调试成功的程序真正运行在目标系统上时,难免出现许多意外的故障,因此,需考虑采用另一种办法替代虚拟的检测环境。Windows CE API 包含了用于调试的接口(如DebugActiveProcess和DebugEvent),以此建立系统内测试;或依据目标硬件和应用程序,使用Windows CE 的Remote API 功能进行辅助调试。

此外,Windows CE 设备电源有限;Windows CE缩减了C/C++运行库(RTL);由于大部分Windows CE 设备采用触摸屏设计,没有鼠标,人机交互方式由指示笔轻击屏幕完成;硬件平台是一个嵌入式系统存在的必要条件,是嵌入式操作系统运行的基础,Windows CE 不像PC 那样有标准的配置,硬件并不标准化,在嵌入式系统领域,由于设备制造商都是由不同领域不同的应用厂商发展而来,所以硬件结构相对复杂、不尽相同,仅CPU 体系结构就有多种,因此会加大程序开发的难度;Windows CE 驱动程序有内核和用户2 种模式,默认运行在内核模式,这有利于性能设备的提高,但也增加了影响系统各方面性能的不确定因素,如不稳定的驱动被加入到内核,将会对嵌入式系统的可靠性、稳定性等多方面性能产生致命的影响。

2 Windows CE 应用程序的开发流程

第一步:搭建应用程序开发平台,按顺序安装软件。

第二步:设计系统硬件。不同于PC 机追求容量大、功能全,嵌入式系统的硬件选型设计,在功能符合要求的条件下,尽量去除不需要的硬件部件,以此降低开发成本和增加系统稳定性。

第三步:开发BSP。BSP 是介于主板硬件和操作系统之间的一件软件层,有了BSP 抽象层后,Windows CE 就能通过它间接地和硬件进行通信,让操作系统在不同体系结构的硬件平台上移植运行。BSP 与特定的嵌入式操作系统相关,并与开发板一一对应。

第四步:定制操作系统模块。

第五步:完成以上定制后,编译形成nk.bin 或nk.nb0 文件,至此,Windows CE 的内核定制完成。

第六步:定制与安装SDK,联机调试建立开发环境。

第七步:开发应用程序,最后形成用户程序文件.exe、.cab。

第八步:安装并通过同步软件ActiveSync 或网络功能下载至Flash,脱机运行。

Windows 嵌入式系统的开发比PC 机端开发复杂得多,因为PC 机端开发基本上是纯软件的应用开发,而嵌入式系统开发既要考虑硬件平台设计,又要开发平台上的应用软件以及库函数兼容等各类问题。

3 移植Windows 程序到Windows CE 的关键要素

(1)当从PC 平台移植已有的Win32 应用程序到Windows CE 时,主要工作是找到合适的Windows CE API 来替换原有的Win32 API。如Windows CE 去掉了桌面Windows 中的一些用来向前兼容DOS和Windows 3.x 的函数。因此,移植程序往往考虑改变程序逻辑绕过这些函数或类;或是提供另一个函数或一系列函数的组合,来实现那个函数的功能;再者,自己编写函数或类执行与所缺函数和类相同的任务;最后,寻找其他组织的解决方案。

(2)由于EVC 只支持单文档的应用程序,所以应将多文档程序转换为单文档程序,该过程主要在VC 平台上进行。主要步骤是:首先,查找代码中的CMultiDoc 将其替换为CSingleDoc;其次,查找到CProjectApp 类中的InitInstance 函数,将多文档模块改为添加单文档模块;最后,在头文件和源文件中分别找到CMainFram 函数,将其继承关系改为CFrameWnd。相应地将CMainFrame 里面头文件内的宏改为DECLARE_DYNCREATE(CMainFrame),同时,源文件里面的宏也相应地改为IMPLEMENT_DYNCREATE(CMainFrame,CFrameWnd)。

(3)VC 编程使用的是ASCII 文本,而在Windows CE 系统环境下使用的是Unicode 码。因此,在编译过程中,一些输出文本语句会报错。解决的办法是:包含Tchar.h 文件;使用Win32 字符串函数而不是C 运行时态库的函数;声明中使用TCHAR、LPTSTR和其他类型;增加一个数组指针或字符计数时,使用sizeof;使用TEXT 宏和_T 宏进行字符串映射。另外,数据结构类型的不匹配也会导致报错。

(4)用户界面问题。Windows CE 设备的屏幕空间较小,为了减少占用,菜单和工具栏不再设计为独立的,而是都被包含在命令栏中。命令栏中包含了菜单、按钮和组合框等,有效节省Windows CE 设备较小的屏幕空间,这也正是其界面的独特所在。但命令栏没有停靠功能,通常被指定在屏幕的顶部。基于Windows CE MFC 的窗口创建函数的主要代码为:

因此,在掌握CAWEP 功能设计、数据设计、界面设计的前提下,按照以上要点将不符合Windows CE 运行环境的部分进行删减、替换或重构,使移植后的CAWEP 在满足图形处理和代码输出两大功能的前提下,外观精简舒适、系统稳定高效。

4 实现Windows CE 与Windows 同步测试环境

4.1 建立同步

在定制Windows CE 操作系统后,安装SDK,对于如何实现宿主机与目标机同步是开发应用程序的重要环节(图1)。基于天嵌TQ2440 开发板为硬件平台,论述以下几个主要步骤:

(1)安装ActiveSync_4.1_setup.exe。

(2)启动Windows CE 系统,将PC 的USB 接口与Windows CE 的USB Device 接口连接,PC 端会要求安装USB 驱动,在网上下载或直接使用商家提供的驱动程序,安装SECBULK 文件。

(3)连接同步时,需要将目标机时间修改为宿主机当前时。

图1 宿主机与目标机建立同步

4.2 同步运行试验程序

在宿主机上先编写一个程序,建立与目标机同步后,向目标机发送指令代码,可看到其在目标机上的运行情况。主要操作过程如下:

(1)调出程序。

(2)选择菜单“工具栏”—“连接到设备”,前提是安装好TQ2440A_SDK。连接成功后(图2),对话框显示“至‘TQ2440A_SDK ARMV4I Device’连接成功”。

图2 TQ2440A_SDK ARMV4I Device 连接成功

(3)选择菜单“调试”—“启动调试”,在开发工具下端窗口显示编译过程。编译成功后,生成.exe或.cab 文件后,发送至目标机执行程序。程序结果见图3。

图3 程序运行结果

同步工作完成后,即可在PC 端自由设计程序,根据Windows 与Windows CE 的异同,及移植程序要素,实战装载进目标机测试,从而完成软件的开发、移植。

5 CAWEP 移植后的初期预想界面

计算机辅助线切割数控编程系统CAWEP 在Windows 上运行的界面、功能模块及结构关系见图4和图5。移植到Windows CE 系统后,基本上继承了在Windows 环境下运行的绝大部分功能,能实现在设备屏幕上创建和编辑2D 矢量制表及模板、文件转换、仿真加工、模拟轨迹、生成输出B 及ISO 代码(G 代码),再通过使用点对点协议(PPP)和串行线路互联协议(SLIP)进行直接或拨号连接,传输代码至解释模块,从而实现一体化控制线切割机床的加工,这种新型的加工控制方式,也将给用户带来全新的创意体验。CAWEP 移植后,在Windows CE上运行的初期预想界面见图6。

图4 CAWEP 在Windows 上运行的界面

图5 CAWEP 系统功能设计

图6 CAWEP 在Windows CE 上运行的预想界面

6 结束语

工业化PC 数控系统由于振动、灰尘、潮湿、高温及其他环境影响,经常会出现故障和数据丢失。而正值Windows CE 操作系统被嵌入式领域广泛应用的数字时代,基于该平台应用软件的开发需求已成为不可抵挡的趋势。在掌握Windows CE 与Windows 应用程序之间的联系和区别之后,将对Windows CE 应用软件的开发提供方便与科学依据,Windows 程序移植到Windows CE 俨然成为加快软件开发效率和提高软件质量的重要途径。基于Windows CE 的线切割数控编程廉价微小型控制系统,将能在工业极端环境里连续长期高效稳定地工作,具有很强的适应性,克服PC 的弊端,提供统一的、可伸缩的解决方案,将专用硬件的耐用性与PC的灵活性结合在一起。因此,Windows CE 在工业控制领域有着很好的应用前景。

[1]周振喜,戴国骏.Windows 应用程序移植到Windows CE下的策略[J].计算机工程与设计,2004(9):1560-1562.

[2]范跃华,张素芹,徐飞.基于WinCE 平台的应用程序移植研究[J].西安工业大学学报,2007,27(1):91-94.

[3]徐阳.Windows CE 6.0 嵌入式应用程序开发初探[J].科技广场,2010(12):4-9.

[4]贠汝文,祁广云.基于VS2005 的WinCE 应用程序开发环境研究[J].大庆师范学院学报,2010,30(3):20-22.

[5]傅曦,齐宇.嵌入式系统Windows CE 开发技巧与实例[M].北京:化学工业出版社,2004.

[6]汪兵,李存斌,陈鹏,等.EVC 高级编程及其应用开发[M].北京:中国水利水电出版社,2005.

[7]何宗键.Windows CE 嵌入式系统[M].北京:北京航空航天大学出版社,2006.

[8]王浩,杨正校.Windows CE 系统应用开发编程[M].北京:中国水利水电出版社,2011.

[9]姜波.Windows CE.NET 程序 设计[M].北 京:机械工业出版社,2007.

[10]尹成,黄永兵,胡耀文,等.Windows CE 7 开发实战详解[M].北京:人民邮电出版社,2012.

[11]郭磊.基于ARM 的嵌入式线切割系统设计与实现[D].南昌:南昌大学,2008.

[12]黄志刚.电火花线切割计算机辅助数控编程系统的研究和开发[D].广州:广东工业大学,2003.

猜你喜欢

内核应用程序嵌入式
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
删除Win10中自带的应用程序
TS系列红外传感器在嵌入式控制系统中的应用
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
谷歌禁止加密货币应用程序
搭建基于Qt的嵌入式开发平台
嵌入式软PLC在电镀生产流程控制系统中的应用
倍福 CX8091嵌入式控制器