魏萬根,張永俊,黃志剛
(廣東工業(yè)大學(xué)機電工程學(xué)院,廣東廣州 510006)
微軟推出的嵌入式操作系統(tǒng)Windows CE 是一個基于32 位、嵌入式、多任務(wù)、實時性能好、通信能力強大、具有模塊化特性的操作系統(tǒng),適應(yīng)各種嵌入式系統(tǒng)和產(chǎn)品。Windows CE 的可裁剪特性與模塊化設(shè)計方式,使系統(tǒng)及應(yīng)用開發(fā)人員能夠為各種不同的產(chǎn)品來定制它。由于擁有自己的系統(tǒng)結(jié)構(gòu),具備獨立開發(fā)的內(nèi)核,因此被廣泛應(yīng)用于移動計算設(shè)備、工業(yè)控制、車載電子、智能家電、移動通信等領(lǐng)域,使其成為當今嵌入式領(lǐng)域應(yīng)用最廣泛、市場增長最快、最具發(fā)展?jié)摿Φ那度胧讲僮飨到y(tǒng)。本文基于Windows CE 嵌入式移植Windows 軟件,是滿足嵌入式應(yīng)用軟件快速增長需求的一個重要途徑;而移植后的基于Windows CE 平臺的WEDM(電火花線切割)數(shù)控自動編程系統(tǒng),將克服惡劣工業(yè)環(huán)境下控制系統(tǒng)的嚴重不足。
(1)可裁剪定制內(nèi)核
Windows CE 是為嵌入式系統(tǒng)設(shè)備(如手持移動設(shè)備)而設(shè)計的操作系統(tǒng),一般這類設(shè)備的硬件資源有限(包括RAM、CPU 處理能力等)。這樣,用戶在定制操作系統(tǒng)時,根據(jù)功能需求,在滿足設(shè)備功能要求的前提下,盡可能地只選擇必需的模塊加入操作系統(tǒng)中,不需要的模塊組件裁剪出去,最后生成的操作系統(tǒng)映像體積小,能滿足在硬件資源受限的設(shè)備上正常運行。Windows CE 內(nèi)核的最小容量只占200 kB,如果增加圖形界面或網(wǎng)絡(luò)支持,內(nèi)核體積大概4 MB 左右。
(2)跨平臺支持
由于嵌入式設(shè)備的CPU 體系多種多樣,為了適應(yīng)Windows CE 嵌入式系統(tǒng)在異構(gòu)平臺上的正常運行,微軟設(shè)計的Windows CE 操作系統(tǒng)支持包括x86、ARM、MIPS、SuperH 等主流的CPU 體系結(jié)構(gòu)。
(3)出色的圖形界面
Windows CE 之所以取得巨大的成功,其中一個主要原因就是具有出色的圖形交互界面,極大地方便了非專業(yè)用戶的使用,人們不再需要死記硬背大量的命令,而是能通過窗口和菜單方便的操作。
(4)良好的通信能力
Windows CE 廣泛支持各種通信硬件、局域網(wǎng)連接和撥號連接,可用于各種級別的數(shù)據(jù)傳輸和設(shè)備之間的連接。由于同為微軟公司的產(chǎn)品,因此它還提供與Windows 9x/NT/XP 的整合及通信。
(5)高效的開發(fā)工具支持
從Windows CE 6.0 開始,微軟已將Platform Builder for Windows CE 6.0 作為Microsoft Visual Studio 2005(簡稱VS.NET 2005)的插件集成進VS.NET 開發(fā)平臺中,這就將Windows CE 操作系統(tǒng)定制、驅(qū)動程序開發(fā)、應(yīng)用程序開發(fā)全部統(tǒng)一到VS.NET 2005 環(huán)境中,使Windows CE 的系統(tǒng)開發(fā)與桌面開發(fā)共享一種開發(fā)平臺。
雖然Windows CE 系統(tǒng)屬于Windows 家族,但兩者具有不同特性,主要體現(xiàn)在:
(1)Windows CE APIs和Win32 API 的不同
與Windows 95/NT/2000/XP/Vista 的API 相比,Windows CE API 是Win32 API 的一個子集,且其中部分函數(shù)的功能已精簡,如對顏色和字體的支持更加有限。Windows CE APIs 相對于Win32 API 擴展了一些特定功能,如通知(notification)和觸摸屏(touch screen)需要硬件功能的支持。此外,對異常處理也具有使用限制等。因此,桌面上正常運行的應(yīng)用程序都不能直接在Windows CE 上運行,開發(fā)者需通過其他辦法重新編排程序結(jié)構(gòu)和函數(shù)來實現(xiàn)這些功能。
(2)Windows CE 的MFC和標準MFC 的不同
Windows CE 不支持桌面MFC 所有類,如Windows CE 中的MFC 不支持數(shù)據(jù)庫連接中的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 內(nèi)存,如今已發(fā)展到1~2 GB,但Windows CE 設(shè)備一般都配置少量的RAM、頻率較低的微處理器,且像臺式PC 上大容量的存儲設(shè)備和磁盤基本都沒有。Windows CE在內(nèi)存管理方面必須要比其他Windows 操作系統(tǒng)更節(jié)約物理內(nèi)存和虛擬地址空間。當移植一個應(yīng)用程序到Windows CE 時,應(yīng)著眼于頻繁使用的功能。在程序中建立全局內(nèi)存使用機制,自行監(jiān)控、管理內(nèi)存及GDI 對象,避免頻繁的內(nèi)存分配和GDI 創(chuàng)建、銷毀操作。
(4)測試和調(diào)試的不同
開發(fā)Win32 目標系統(tǒng)應(yīng)用程序,所有的測試和調(diào)試直接在PC 上完成。但Windows CE 卻不同,如果為一個標準的Windows CE 目標系統(tǒng)開發(fā)程序,基本上所有的開發(fā)和調(diào)試工作在開發(fā)工具提供的Windows CE 仿真環(huán)境中進行。而如果是基于非標準的硬件平臺,當仿真環(huán)境中調(diào)試成功的程序真正運行在目標系統(tǒng)上時,難免出現(xiàn)許多意外的故障,因此,需考慮采用另一種辦法替代虛擬的檢測環(huán)境。Windows CE API 包含了用于調(diào)試的接口(如DebugActiveProcess和DebugEvent),以此建立系統(tǒng)內(nèi)測試;或依據(jù)目標硬件和應(yīng)用程序,使用Windows CE 的Remote API 功能進行輔助調(diào)試。
此外,Windows CE 設(shè)備電源有限;Windows CE縮減了C/C++運行庫(RTL);由于大部分Windows CE 設(shè)備采用觸摸屏設(shè)計,沒有鼠標,人機交互方式由指示筆輕擊屏幕完成;硬件平臺是一個嵌入式系統(tǒng)存在的必要條件,是嵌入式操作系統(tǒng)運行的基礎(chǔ),Windows CE 不像PC 那樣有標準的配置,硬件并不標準化,在嵌入式系統(tǒng)領(lǐng)域,由于設(shè)備制造商都是由不同領(lǐng)域不同的應(yīng)用廠商發(fā)展而來,所以硬件結(jié)構(gòu)相對復(fù)雜、不盡相同,僅CPU 體系結(jié)構(gòu)就有多種,因此會加大程序開發(fā)的難度;Windows CE 驅(qū)動程序有內(nèi)核和用戶2 種模式,默認運行在內(nèi)核模式,這有利于性能設(shè)備的提高,但也增加了影響系統(tǒng)各方面性能的不確定因素,如不穩(wěn)定的驅(qū)動被加入到內(nèi)核,將會對嵌入式系統(tǒng)的可靠性、穩(wěn)定性等多方面性能產(chǎn)生致命的影響。
第一步:搭建應(yīng)用程序開發(fā)平臺,按順序安裝軟件。
第二步:設(shè)計系統(tǒng)硬件。不同于PC 機追求容量大、功能全,嵌入式系統(tǒng)的硬件選型設(shè)計,在功能符合要求的條件下,盡量去除不需要的硬件部件,以此降低開發(fā)成本和增加系統(tǒng)穩(wěn)定性。
第三步:開發(fā)BSP。BSP 是介于主板硬件和操作系統(tǒng)之間的一件軟件層,有了BSP 抽象層后,Windows CE 就能通過它間接地和硬件進行通信,讓操作系統(tǒng)在不同體系結(jié)構(gòu)的硬件平臺上移植運行。BSP 與特定的嵌入式操作系統(tǒng)相關(guān),并與開發(fā)板一一對應(yīng)。
第四步:定制操作系統(tǒng)模塊。
第五步:完成以上定制后,編譯形成nk.bin 或nk.nb0 文件,至此,Windows CE 的內(nèi)核定制完成。
第六步:定制與安裝SDK,聯(lián)機調(diào)試建立開發(fā)環(huán)境。
第七步:開發(fā)應(yīng)用程序,最后形成用戶程序文件.exe、.cab。
第八步:安裝并通過同步軟件ActiveSync 或網(wǎng)絡(luò)功能下載至Flash,脫機運行。
Windows 嵌入式系統(tǒng)的開發(fā)比PC 機端開發(fā)復(fù)雜得多,因為PC 機端開發(fā)基本上是純軟件的應(yīng)用開發(fā),而嵌入式系統(tǒng)開發(fā)既要考慮硬件平臺設(shè)計,又要開發(fā)平臺上的應(yīng)用軟件以及庫函數(shù)兼容等各類問題。
(1)當從PC 平臺移植已有的Win32 應(yīng)用程序到Windows CE 時,主要工作是找到合適的Windows CE API 來替換原有的Win32 API。如Windows CE 去掉了桌面Windows 中的一些用來向前兼容DOS和Windows 3.x 的函數(shù)。因此,移植程序往往考慮改變程序邏輯繞過這些函數(shù)或類;或是提供另一個函數(shù)或一系列函數(shù)的組合,來實現(xiàn)那個函數(shù)的功能;再者,自己編寫函數(shù)或類執(zhí)行與所缺函數(shù)和類相同的任務(wù);最后,尋找其他組織的解決方案。
(2)由于EVC 只支持單文檔的應(yīng)用程序,所以應(yīng)將多文檔程序轉(zhuǎn)換為單文檔程序,該過程主要在VC 平臺上進行。主要步驟是:首先,查找代碼中的CMultiDoc 將其替換為CSingleDoc;其次,查找到CProjectApp 類中的InitInstance 函數(shù),將多文檔模塊改為添加單文檔模塊;最后,在頭文件和源文件中分別找到CMainFram 函數(shù),將其繼承關(guān)系改為CFrameWnd。相應(yīng)地將CMainFrame 里面頭文件內(nèi)的宏改為DECLARE_DYNCREATE(CMainFrame),同時,源文件里面的宏也相應(yīng)地改為IMPLEMENT_DYNCREATE(CMainFrame,CFrameWnd)。
(3)VC 編程使用的是ASCII 文本,而在Windows CE 系統(tǒng)環(huán)境下使用的是Unicode 碼。因此,在編譯過程中,一些輸出文本語句會報錯。解決的辦法是:包含Tchar.h 文件;使用Win32 字符串函數(shù)而不是C 運行時態(tài)庫的函數(shù);聲明中使用TCHAR、LPTSTR和其他類型;增加一個數(shù)組指針或字符計數(shù)時,使用sizeof;使用TEXT 宏和_T 宏進行字符串映射。另外,數(shù)據(jù)結(jié)構(gòu)類型的不匹配也會導(dǎo)致報錯。
(4)用戶界面問題。Windows CE 設(shè)備的屏幕空間較小,為了減少占用,菜單和工具欄不再設(shè)計為獨立的,而是都被包含在命令欄中。命令欄中包含了菜單、按鈕和組合框等,有效節(jié)省Windows CE 設(shè)備較小的屏幕空間,這也正是其界面的獨特所在。但命令欄沒有停靠功能,通常被指定在屏幕的頂部?;赪indows CE MFC 的窗口創(chuàng)建函數(shù)的主要代碼為:
因此,在掌握CAWEP 功能設(shè)計、數(shù)據(jù)設(shè)計、界面設(shè)計的前提下,按照以上要點將不符合Windows CE 運行環(huán)境的部分進行刪減、替換或重構(gòu),使移植后的CAWEP 在滿足圖形處理和代碼輸出兩大功能的前提下,外觀精簡舒適、系統(tǒng)穩(wěn)定高效。
在定制Windows CE 操作系統(tǒng)后,安裝SDK,對于如何實現(xiàn)宿主機與目標機同步是開發(fā)應(yīng)用程序的重要環(huán)節(jié)(圖1)。基于天嵌TQ2440 開發(fā)板為硬件平臺,論述以下幾個主要步驟:
(1)安裝ActiveSync_4.1_setup.exe。
(2)啟動Windows CE 系統(tǒng),將PC 的USB 接口與Windows CE 的USB Device 接口連接,PC 端會要求安裝USB 驅(qū)動,在網(wǎng)上下載或直接使用商家提供的驅(qū)動程序,安裝SECBULK 文件。
(3)連接同步時,需要將目標機時間修改為宿主機當前時。
圖1 宿主機與目標機建立同步
在宿主機上先編寫一個程序,建立與目標機同步后,向目標機發(fā)送指令代碼,可看到其在目標機上的運行情況。主要操作過程如下:
(1)調(diào)出程序。
(2)選擇菜單“工具欄”—“連接到設(shè)備”,前提是安裝好TQ2440A_SDK。連接成功后(圖2),對話框顯示“至‘TQ2440A_SDK ARMV4I Device’連接成功”。
圖2 TQ2440A_SDK ARMV4I Device 連接成功
(3)選擇菜單“調(diào)試”—“啟動調(diào)試”,在開發(fā)工具下端窗口顯示編譯過程。編譯成功后,生成.exe或.cab 文件后,發(fā)送至目標機執(zhí)行程序。程序結(jié)果見圖3。
圖3 程序運行結(jié)果
同步工作完成后,即可在PC 端自由設(shè)計程序,根據(jù)Windows 與Windows CE 的異同,及移植程序要素,實戰(zhàn)裝載進目標機測試,從而完成軟件的開發(fā)、移植。
計算機輔助線切割數(shù)控編程系統(tǒng)CAWEP 在Windows 上運行的界面、功能模塊及結(jié)構(gòu)關(guān)系見圖4和圖5。移植到Windows CE 系統(tǒng)后,基本上繼承了在Windows 環(huán)境下運行的絕大部分功能,能實現(xiàn)在設(shè)備屏幕上創(chuàng)建和編輯2D 矢量制表及模板、文件轉(zhuǎn)換、仿真加工、模擬軌跡、生成輸出B 及ISO 代碼(G 代碼),再通過使用點對點協(xié)議(PPP)和串行線路互聯(lián)協(xié)議(SLIP)進行直接或撥號連接,傳輸代碼至解釋模塊,從而實現(xiàn)一體化控制線切割機床的加工,這種新型的加工控制方式,也將給用戶帶來全新的創(chuàng)意體驗。CAWEP 移植后,在Windows CE上運行的初期預(yù)想界面見圖6。
圖4 CAWEP 在Windows 上運行的界面
圖5 CAWEP 系統(tǒng)功能設(shè)計
圖6 CAWEP 在Windows CE 上運行的預(yù)想界面
工業(yè)化PC 數(shù)控系統(tǒng)由于振動、灰塵、潮濕、高溫及其他環(huán)境影響,經(jīng)常會出現(xiàn)故障和數(shù)據(jù)丟失。而正值Windows CE 操作系統(tǒng)被嵌入式領(lǐng)域廣泛應(yīng)用的數(shù)字時代,基于該平臺應(yīng)用軟件的開發(fā)需求已成為不可抵擋的趨勢。在掌握Windows CE 與Windows 應(yīng)用程序之間的聯(lián)系和區(qū)別之后,將對Windows CE 應(yīng)用軟件的開發(fā)提供方便與科學(xué)依據(jù),Windows 程序移植到Windows CE 儼然成為加快軟件開發(fā)效率和提高軟件質(zhì)量的重要途徑?;赪indows CE 的線切割數(shù)控編程廉價微小型控制系統(tǒng),將能在工業(yè)極端環(huán)境里連續(xù)長期高效穩(wěn)定地工作,具有很強的適應(yīng)性,克服PC 的弊端,提供統(tǒng)一的、可伸縮的解決方案,將專用硬件的耐用性與PC的靈活性結(jié)合在一起。因此,Windows CE 在工業(yè)控制領(lǐng)域有著很好的應(yīng)用前景。
[1]周振喜,戴國駿.Windows 應(yīng)用程序移植到Windows CE下的策略[J].計算機工程與設(shè)計,2004(9):1560-1562.
[2]范躍華,張素芹,徐飛.基于WinCE 平臺的應(yīng)用程序移植研究[J].西安工業(yè)大學(xué)學(xué)報,2007,27(1):91-94.
[3]徐陽.Windows CE 6.0 嵌入式應(yīng)用程序開發(fā)初探[J].科技廣場,2010(12):4-9.
[4]贠汝文,祁廣云.基于VS2005 的WinCE 應(yīng)用程序開發(fā)環(huán)境研究[J].大慶師范學(xué)院學(xué)報,2010,30(3):20-22.
[5]傅曦,齊宇.嵌入式系統(tǒng)Windows CE 開發(fā)技巧與實例[M].北京:化學(xué)工業(yè)出版社,2004.
[6]汪兵,李存斌,陳鵬,等.EVC 高級編程及其應(yīng)用開發(fā)[M].北京:中國水利水電出版社,2005.
[7]何宗鍵.Windows CE 嵌入式系統(tǒng)[M].北京:北京航空航天大學(xué)出版社,2006.
[8]王浩,楊正校.Windows CE 系統(tǒng)應(yīng)用開發(fā)編程[M].北京:中國水利水電出版社,2011.
[9]姜波.Windows CE.NET 程序 設(shè)計[M].北 京:機械工業(yè)出版社,2007.
[10]尹成,黃永兵,胡耀文,等.Windows CE 7 開發(fā)實戰(zhàn)詳解[M].北京:人民郵電出版社,2012.
[11]郭磊.基于ARM 的嵌入式線切割系統(tǒng)設(shè)計與實現(xiàn)[D].南昌:南昌大學(xué),2008.
[12]黃志剛.電火花線切割計算機輔助數(shù)控編程系統(tǒng)的研究和開發(fā)[D].廣州:廣東工業(yè)大學(xué),2003.