时间:2024-08-31
魏万根,张永俊,黄志刚
(广东工业大学机电工程学院,广东广州 510006)
微软推出的嵌入式操作系统Windows CE 是一个基于32 位、嵌入式、多任务、实时性能好、通信能力强大、具有模块化特性的操作系统,适应各种嵌入式系统和产品。Windows CE 的可裁剪特性与模块化设计方式,使系统及应用开发人员能够为各种不同的产品来定制它。由于拥有自己的系统结构,具备独立开发的内核,因此被广泛应用于移动计算设备、工业控制、车载电子、智能家电、移动通信等领域,使其成为当今嵌入式领域应用最广泛、市场增长最快、最具发展潜力的嵌入式操作系统。本文基于Windows CE 嵌入式移植Windows 软件,是满足嵌入式应用软件快速增长需求的一个重要途径;而移植后的基于Windows CE 平台的WEDM(电火花线切割)数控自动编程系统,将克服恶劣工业环境下控制系统的严重不足。
(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 的系统开发与桌面开发共享一种开发平台。
虽然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 种模式,默认运行在内核模式,这有利于性能设备的提高,但也增加了影响系统各方面性能的不确定因素,如不稳定的驱动被加入到内核,将会对嵌入式系统的可靠性、稳定性等多方面性能产生致命的影响。
第一步:搭建应用程序开发平台,按顺序安装软件。
第二步:设计系统硬件。不同于PC 机追求容量大、功能全,嵌入式系统的硬件选型设计,在功能符合要求的条件下,尽量去除不需要的硬件部件,以此降低开发成本和增加系统稳定性。
第三步:开发BSP。BSP 是介于主板硬件和操作系统之间的一件软件层,有了BSP 抽象层后,Windows CE 就能通过它间接地和硬件进行通信,让操作系统在不同体系结构的硬件平台上移植运行。BSP 与特定的嵌入式操作系统相关,并与开发板一一对应。
第四步:定制操作系统模块。
第五步:完成以上定制后,编译形成nk.bin 或nk.nb0 文件,至此,Windows CE 的内核定制完成。
第六步:定制与安装SDK,联机调试建立开发环境。
第七步:开发应用程序,最后形成用户程序文件.exe、.cab。
第八步:安装并通过同步软件ActiveSync 或网络功能下载至Flash,脱机运行。
Windows 嵌入式系统的开发比PC 机端开发复杂得多,因为PC 机端开发基本上是纯软件的应用开发,而嵌入式系统开发既要考虑硬件平台设计,又要开发平台上的应用软件以及库函数兼容等各类问题。
(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 在满足图形处理和代码输出两大功能的前提下,外观精简舒适、系统稳定高效。
在定制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 宿主机与目标机建立同步
在宿主机上先编写一个程序,建立与目标机同步后,向目标机发送指令代码,可看到其在目标机上的运行情况。主要操作过程如下:
(1)调出程序。
(2)选择菜单“工具栏”—“连接到设备”,前提是安装好TQ2440A_SDK。连接成功后(图2),对话框显示“至‘TQ2440A_SDK ARMV4I Device’连接成功”。
图2 TQ2440A_SDK ARMV4I Device 连接成功
(3)选择菜单“调试”—“启动调试”,在开发工具下端窗口显示编译过程。编译成功后,生成.exe或.cab 文件后,发送至目标机执行程序。程序结果见图3。
图3 程序运行结果
同步工作完成后,即可在PC 端自由设计程序,根据Windows 与Windows CE 的异同,及移植程序要素,实战装载进目标机测试,从而完成软件的开发、移植。
计算机辅助线切割数控编程系统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 上运行的预想界面
工业化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.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!