文章介紹了微軟的嵌入式操作系統產品線,分析了WinCE 6.0和.NET Micro framework技術特點。根據嵌入式系統的要求,還比較了微軟和嵌入式Linux、 VxWorkss的差異和各自特色。
引言
在嵌入式操作系統領域,微軟的Windows Mobile正在智能手機市場快速增長,“2007 Windows 硬件工程大會”及“2007 移動與嵌入式開發者大會”的資料顯示,全球55個國家的110個運營商采用Windows Mobile,近50家設備制造商生產了100多款Windows Mobile手機和便攜式設備。微軟的其他嵌入式軟件發展也非常快,51%的零售商考慮使用基于Windows Embedded的POS (銷售點)系統,2005年有60%的瘦客戶端運行著WinCE。微軟發表的面向單片機的.NET Micro Framework在2006發布后,今年3月在美國的ESC(嵌入式系統大會)又發表了一個擴展版本。由此可見,微軟的嵌入式操作系統正在成為商業嵌入式操作系統的重要選擇。
但是比較起不少已經有20多年歷史的老牌嵌入式操作系統公司,微軟還是一個新兵,整個產品線還在發展和豐富之中。
微軟嵌入式產品發展歷史
在探討微軟的嵌入式操作系統技術細節之前,讓我們先了解一下其名稱、相互關系和發展歷史。微軟從96年發表WinCE個版本,到目前為止,可以看到有兩個主要嵌入式操作系統品牌。其一是針對移動終端的操作系統Windows Mobile,在5.0 版本之前,Windows Mobile分為針對智能手機的版本Windows Mobile for SmartPhone,針對PDA 手機的版本Windows Mobile for Pocket PC Phone,針對PDA 的版本Windows Mobile for Pocket PC。
其二是微軟的嵌入式操作系統平臺Windows Embedded ,這個平臺目前包括微軟核心的嵌入式實時操作系統-Windows CE(簡稱WinCE), 它可以支持各種便攜設備和廣泛的嵌入式應用。嵌入式XP—Windows Embedded XP(簡稱XPE),是模塊化的XP版本,支持各種嵌入式應用。嵌入式POS系統-Windows Embedded for POS(簡稱WEPOS),一個專門為零售終端定制的嵌入式XP版本。
微軟這些嵌入式操作系統里面實際上只有兩個內核,一個是WinCE 內核,包括Windows Mobile也是使用這個內核,目前Windows Mobile 5.0 和6.0版本使用的都是WinCE 5.x 版本的內核。該版本2004年推出,是目前廣泛使用的一個產品。WinCE 目前的版本是6.0,2006年底正式發布。另外一個內核是XPE和WEPOS 使用的Windows XP的核心。
由此可見微軟在嵌入式系統的策略,即WinCE 和Windows Mobile 是具有硬實時的嵌入式操系統,目標是移動和通用的嵌入式設備,如手機、導航、PMP、機頂盒、工業控制設備和醫療儀器等。Windows Embedded XP 是一個非實時的可以嵌入的操作系統,目標是瘦客戶機、零售機器、工廠生產線控制和技術外設存儲和顯示設備。另外,微軟推出的.NET Micro Framework是針對微型設備和單片機市場的一個新產品,它補償WinCE不能支持的更小型的嵌入式應用。
微軟嵌入式平臺核心-WinCE 技術特色
WinCE 是一款典型的嵌入式操作系統,具有層次化和模塊化的體系結構。WinCE分為硬件、OEM(委托制造)、操作系統和應用軟件四個清晰的層次,硬件層即WinCE 可以支持不同的微處理器和外設,如x86、ARM、XScale 等,OEM層是指引導程序(boot loader)、設備驅動等,操作系統層是內核模塊、圖形模塊、文件和存儲模塊、設備管理和加載系統的服務模塊組成,應用軟件層是WinCE自身的應用軟件,如MS Office、Media Player、IE和第三方應用軟件。應用軟件層和操作系統層有一個Win32 本地API和基于.Net Compact Framework的被管理代碼。
WinCE內核
WinCE 是微內核操作系統,這是目前嵌入式操作系統都在使用的先進的內核技術,例如,VxWorks、QNX和的L4內核都實現了微內核技術。微內核是指在內核里面只實現一些基本服務,如進程調度、進程間通信和中斷處理等,其他的服務和功能都放在內核外。顯然,微內核的好處是易于移植到不同的處理器和硬件平臺,內核外的服務如設備驅動和文件管理模塊是運行在不同的地址空間,這樣相較于整個系統都是平板結構的實時內核(如uc/os-II、nucleus、threadx)要更加安全和可靠。微內核的核心也非常小巧,一般幾K~幾十K字節。當然事物永遠是辨正的兩個方面,微內核系統因為要經常在內核態和用戶態之間轉換,所以系統的某些性能和實時響應能力可能要比平板結構的實時內核要低(不同的性能指標取決于不同的微內核系統的設計)。
同Windows一樣,WinCE每個運行程序都是一個進程,WinCE 5.0 版本支持32個進程,每個進程有32M的虛擬地址空間,WinCE 6.0 則可以支持3.2萬個進程,每個進程有2G的虛擬地址空間。WinCE 是一個基于搶占的多線程操作系統。在線程這一級,WinCE 可以實現類似嵌入式操作系統任務的調度、通訊、同步功能。為了支持可以搶占的硬實時調度,WinCE 已經實現了優先級反轉機制(priority inversion)。
6.0版本的WinCE內核相較以前的5.0有了很大的改進,重要的一點就是把一部分關鍵文件、圖形管理和驅動程序放到內核里面,好處是減少了模塊在用戶態和內核態切換的開銷,還減少了應用程序訪問這些模塊調用的開銷。WinCE 6.0的內核結構見圖1。
WinCE 的BSP
嵌入式操作系統是運行在不同的微處理器上,如手機和移動設備大量使用的ARM體系結構的CPU,市場上有三星ARM2410/2430、TI OMAP730/1710/2430和Marvel XScale體系的PXA270等,除此之外,還有數字電視、IP機頂盒系統使用的MIPS體系結構,如東芝、博通、IDT等公司的芯片。當然,x86在各種通用嵌入式系統方面也有大量的應用。
微軟的嵌入式操作系統也是使用BSP(Board Support Package)的概念支持各種CPU和硬件平臺的移植工作,在WinCE 5.0里已經有包括三星2410、Marvel PXA270等許多流行的BSP,微軟的OEM廠商如研華、飛思卡爾、NXP等也提供他們移植的OEM BSP。WinCE 6.0將會在CE5.0支持ARM V4基礎上支持ARM V6,包括三星、飛思卡爾的ARM11核的SoC都將得到支持。在x86方面,微軟依托在桌面系統的強勢,得到了眾多IPC(工業PC)和EPC(嵌入式PC)廠家的擁戴和支持。
在BSP結構方面,新的WinCE6.0的內核和OAL是完全獨立的兩個模塊,好處是在修改BSP后,內核不需要重新構建了,減少了多次構建、測試和發布內核的過程,提高了系統的可靠性。這種結構還可以讓微軟發布針對OEM的內核,而OEM可以因為自身知識產權的考慮,以二進制方式向終用戶發布BSP(如圖2)。WinCE自身包含OEM BSP 定制和發布工具,這樣OEM可以很方便地發行自己的BSP SDK包。
圖2 內核和BSP的結構
WinCE 的設備驅動程序
設備驅動程序是嵌入式操作系統中一個重要部分,它是外設和應用軟件的接口,追隨了微軟的一貫風格。
WinCE的設備驅動程序規范和豐富,需要特別指出的是,WinCE 5.0所有的驅動程序全部是采用動態加載方式,即在操作系統內核啟動以后對硬件外設(如USB、LCD) 加載,驅動程序依然運行在內核空間。簡單來講,這種驅動程序是在用戶態和我們熟悉的Windows 系統的DLL方式沒有區別,其好處是程序員調試一個驅動的時候會很方便,和應用程序的調試沒有差異,可以使用正常的函數調用,把驅動的動作和數據顯示在屏幕上;再有,相對用戶自己開發的驅動程序,可能有不穩定和可靠的地方,運行在用戶態,整個系統將會更穩定些。
但是問題和缺陷也顯而易見,就是因為驅動的動態加載和內核的切換代表性能的損失,對于桌面系統這可能沒有太大的影響,但是在嵌入式系統,用戶對實時性能的要求要嚴格得多。為了解決這個問題,在新的WinCE6.0里面的驅動程序將分為內核模式和用戶模式兩種,內核模式側重效率,用戶模式側重穩健和可靠。微軟力求保證驅動程序的主體結構沒有大的變化,微軟資料顯示大約有幾天的時間可以完成一個一般規模的驅動的移植過程,微軟公司和微軟的增值代理都提供了相應的課程。
WinCE開發工具
微軟工具新的策略是使用一個標準的Visual Studio 2005平臺支持全部的微軟嵌入式操作系統系列的開發,歷史上支持過WinCE和Windows Mobile 開發的工具有:
*操作系統開發-Platform Builder,它的作用是構建操作系統,設有配置和調試工具,CE6.0以后這個工具就不單獨存在,而是合并到Visual Studio 作為它的一個插件。
*應用程序開發-eMbedded Visual C++,支持本地應用程序開發C, C++, MFC(微軟基礎類), ATL(COM的目標和Active X 控制),這個工具在CE5.0版本以后已經合并到Visual Studio 2005里面。
*Visual Studio 2005-微軟全新的開發工具已經包含了Platform Builder, 值得特別提到的是Visual Studio 2005支持微軟托管的應用代碼編寫和調試,即.NET Compact Framework,它是NET Framework專門針對WinCE優化后的一個簡化版本。在嵌入式設備上可以大幅提高軟件開發生產力,對于軟件越來越成為嵌入式設備的主要成本之一將會起到積極的作用,是一次編程多次使用的軟件重用理想的實現。Visual Studio 2005為了方便嵌入式系統應用軟件開發而設計的支持不同硬件平臺的“軟仿真器”也給用戶留下很深的印象。
圖3 基于NET Compact Framework的汽車外接顯示裝置
面向微型設備的.Net Micro Framework
前面提到的.NET Compact Framework雖好,但因為依托WinCE平臺要求的硬件資源比較大,微軟的 .NET Micro Framework 是微軟面向嵌入式系統中微型設備和單片機(MCU)市場的一個新的產品,是WinCE, Windows Mobile和Windows XP Embedded 在嵌入式市場的一個補充。.NET Micro Framework應用可能是小型工業網關、家庭能源管理裝置、遙控器,也可以是Windows Vista PC 的sideshow(枝節)設備,如筆記本電腦的副屏(可以播放MP3、顯示日歷、行程等)等,如圖3所示。微軟.NET Micro Framework 目前支持基于32位微處理器ARM7和9的硬件平臺,已經移植好的參考硬件平臺有飛思卡爾iMXS、DIGi Connet ME和EmbeddedFusion。
.NET Micro Framework 把通用的I/O設備,如UI、GPIO、SPI、Comm等做好一個類庫(見圖4),其他和應用相關的硬件設備由合作伙伴(如DIGi)完成,值得注意的是,.NET Micro Framework還可以運行在一個小RTOS(實時操作系統)上,如DIGI平臺運行的是Threadx RTOS, 微軟認證的合作伙伴使用微軟提供的porting kit把這些設備類庫移植好,這樣使得嵌入式工程師能在不了解單片機硬件的前提下開發單片機的應用。.NET Micro Framework 里面有一個重要的部件叫CLR—可以理解為是個運行代理,它的作用是個實時的編譯器,負責執行被用戶提交的管理代碼,CLR還負責內存和線程管理,如圖4所示類庫以上的應用層都是被管理代碼(managed code),下面還是C/C++本地代碼(native code),這樣整個.NET Micro Framework代碼非常的小,大約是250~500K。(WinCE 大約是1~12M左右)。需要指出的是,.NET Compact Framework不是一個傳統意義的實時多線程操作系統,但是它可以支持多線程的操作,可以滿足一定范圍上實時要求,如通過設置UI是主線程滿足一定的顯示面板輸入響應的要求,通過看門狗定時器和中斷方式滿足和實時設備接口數據通訊的要求。.NET Compact Framework的編程方式更接近微軟的桌面圖形編程界面,如,同樣使用delegate、callback處理外部事件。
.NET Micro Framework的SDK是開放給所有用戶的,但是要得到porting kit需要得到微軟的認證。信息產業部集成電路和軟件促進中心(CSIP)是微軟授權的.NET Micro Framework在中國的技術培訓和合作伙伴。
.NET Micro Framework面向的是一個對于微軟來講全新的市場,可以說這種開發方式是對這個市場久已習慣的嵌入式軟件開發方式的一次革命性的改變,從技術發展趨勢看,無疑是一個正確的方向。在近的技術大會上,微軟.NET Micro Framework產品經理和主要設計者Colin Miller非常有信心的給大家分享了微軟.NET Micro Framework下個版本開發計劃,比如支持TCP/IP、USB、 BT/ZIGBEE、CAN總線和文件系統等等。但是應該看到,由于嵌入式系統的特殊性和多樣性,微軟目前支持的平臺還比較少,合作伙伴的設計和應用還待成熟和完善,.NET Micro Framework在國內的發展還需要一定的時間。
圖4 .NET Micro Framework的結構圖
微軟產品和其他RTOS比較
嵌入式系統畢竟不是桌面系統,用戶需求的差異和環境差異很大,平臺的變化也多,用戶的選擇余地就大。為了方便用戶比較和選擇一個合適的嵌入式操作系統,微軟官方網站上提供了第三方的評測報告供用戶閱讀和分析;國內外基于微軟的嵌入式成熟應用也可以供參考;微軟中國的市場和教育普及工作也對用戶了解微軟嵌入式操作系統大有幫助。下面僅對目前國內嵌入式系統比較流行的嵌入Linux 和VxWorks 進行分析,比較他們和微軟嵌入式操作系統的差異和各自特色。
嵌入式Linux
近結束的LinuxWorld China 2007 大會上,Linux基金會執行總監Jim Zemlin展望未來時再次強調,嵌入式和移動應用是除標準、虛擬計算和桌面外的一個重要的發展領域。比較微軟和其他的嵌入式操作系統,Linux和嵌入式Linux(經過嵌入式優化的Linux商業和非商業版本)的優勢在于:1,開放性,Linux源代碼公開;2,廣泛性和成功的開發模式,全球化的社區開發和維護方式已經被驗證是一種高效率和成功的軟件開發模式;3,各種CPU和的硬件器件和系統的支持;4,豐富的開源資源和第三方應用軟件。
Linux的缺點是,,實時性。Linux本身并不是為嵌入式系統而設計的,從操作系統系統結構設計偏重于可靠性和網絡的效率,雖然商業嵌入式Linux公司如MontaVista 在2.4內核上實現了可搶占的實時調度,開源社區也有了2.6 RT補丁,但是比較WinCE 和VxWorks 實時性都略遜一籌,來自南京大學的文章中有一個可以參考數據表格,見表1。
第二,開發工具。Linux的開發工具一直是一個軟肋,從開源社區分工講。內核和工具鏈是兩個完全獨立的部分,內核的開發和維護人員主要依賴于命令行工具。可喜的是,開源的Eclipse框架已經成為包括嵌入式Linux 在內的傳統嵌入式操作系統的集成開發環境(IDE),基于Eclipse的商業嵌入式軟件如DevRocket、Workbench和Linuxscope也正在成熟。但是相對微軟的Visual Studio 2005,應該說中國的用戶更加熟悉微軟的開發工具。
第三,完整應用軟件方案,嵌入式系統要求的是有針對性的應用軟件方案,嵌入式Linux雖然已經有完整的操作系統組件,但是缺少針對具體應用的軟件方案,舉個智能手機的例子,微軟的 Windows Mobile for SmartPhone基本含有了手機硬件驅動(BSP)、內核、TCP/IP、文件系統基本組件、手機軟件和多媒體辦公軟件等豐富的應用軟件,這些基本涵蓋了整個智能手機所需要的全部軟件。但是相比較而言,嵌入式Linux的方案就顯得單薄多,雖然借助于包括Trolltech(奇趣) 的qtopia在內的手機應用軟件或者Access 的整套手機Linux軟件方案,Linux手機軟件仍缺少完整性和成熟性,這點對于包括中國手機企業在內的2~3線的手機制造和設計公司帶來一定的壓力。
第四,商業化產品和服務。比較微軟,Linux和嵌入式Linux的商業公司規模小而且沒有標準化,雖然社區具有豐富的開發和創意的資源,但是社區沒有義務提供商業的服務和承諾。
風河的VxWorks
VxWorks是傳統嵌入式操作系統中的佼佼者,特別是在通信、國防和工業控制領域具有較強的優勢。VxWorks是基于微內核技術的實時內核,從設計和實際的使用情況看,完全可以滿足硬實時性的要求,這點較Linux有較強的優勢。相較于WinCE,VxWorks的實時性要更好一點,設備管理和驅動要簡練和高效些。VxWorks6.1的版本之后還提供基于MMU內存保護和錯誤管理的機制(目前CE和.NET MicroFramework 還不支持),使系統的可靠性更有保證。VxWorks系統的配置靈活,代碼尺寸相較于WinCE和Linux要小得多,基本系統甚至比.NET Micro Framework還要小,這樣適合更低配置和成本要求的嵌入式設備。
VxWorks的網絡功能強大,風河公司和第三方都有大量的網絡協議和應用軟件支撐,VxWorks的API 是POSIX 兼容,這樣通信行業的標準代碼就很容易移植進來了(Linux 有相同的特點),這可以說是WinCE的一個弱點。
但是,VxWorks 在消費電子和手持移動設備方面應用比較微軟操作系統甚至Linux都相對少得多,從技術和商業層面看,筆者認為主要是這樣幾個原因:1,VxWorks是從內核發展成為一個比較完整的嵌入式OS,但是API和圖形系統并不是十分標準和流行,單靠VxWorks自己的產品和松散的第三方資源還很難形成完整和公認的消費電子中間件。2,VxWorks早期是采用開發授權加上版稅的方式收取費用,這種方式不能為強調成本控制的OEM/ODM(委托制造/委托設計)廠商所接受,比如在過去的5年里,中國臺灣OEM/ODM生產的家用無線網絡產品多數都轉到Linux平臺,手機和GPS轉到上市比較快的WinCE和Window Mobile平臺。OEM/ODM不能接受為售價只有15~25美元的無線路由器再支付哪怕是1美元(甚至更少)的版稅了。
當然,風河公司已經充分意識到這個問題,并在過去幾年改變了商業模式,比如以收取年費的方式取代版稅模式,同時風河正式采用雙OS的策略,進軍嵌入式Linux 市場,推出風河通信和消費電子用Linux 平臺,以期和微軟抗衡,這是因為它的實質也是一個基于開源的嵌入式Linux版本。
結語
從前面的分析我們不難看出,微軟嵌入式操作系統產品線完整,開發工具成熟,產品的市場定位明確,可以為OEM/ODM提供從操作系統到應用的全面解決方案和到后臺服務器的無縫連接方案。面對強手如林、需求獨特的嵌入式世界,微軟面臨的挑戰和困難要比其他領域大得多。中國是世界消費電子產品的生產和消費大國,手機、GPS、多媒體移動終端、電視、機頂盒這些嵌入式裝置都是微軟嵌入式操作系統的重要目標市場。近,“2007 Windows 硬件工程大會”及“2007 移動與嵌入式開發者大會”和.NET Micro Framework大會在北京召開,說明了微軟對中國嵌入式市場的重視,以及中國用戶對微軟嵌入式操作系統的關注。微軟的嵌入式操作系統將為絢麗多彩的嵌入式世界增添一朵奇葩。
參考文獻:
1. 何宗鍵,‘WinCE 嵌入式系統’,北京航空航天大學出版社.
2. 李慶誠、唐德凱,‘嵌入式操作系統實時性對比與評價’,單片機和嵌入式系統雜志,2007.6.
3. Dedicated System, RTOS state of art www.microsoft.com
4. MEDC 2007移動和嵌入式開發者大會會議手冊.
5. 杜偉,‘微軟嵌入式技術發展趨勢’,2007年北京高校嵌入式教學會議。
6. 何小慶、比爾·溫博戈,‘移動電話挑戰嵌入式linux’,電子產品世界,2006.9.
7. www.digi.com