WinCE 的發(fā)展史及相關(guān)基礎(chǔ)知識
這兩天查找了一下 WinCE 的發(fā)展史,及其它一些基本的知識。將這些基礎(chǔ)的東東放在一起,以方便學(xué)習(xí)。如果有什么不對的地方,將提出來。
(1)Windows CE/Windows Embedded 的差別
WindowsCE是微軟公司嵌入式、移動計(jì)算平臺的基礎(chǔ),它是一個(gè)開放的、可升級的32位嵌入式操作系統(tǒng),是基于掌上型電腦類的電子設(shè)備操作系統(tǒng),它是精簡的Windows 95,Windows CE的圖形用戶界面相當(dāng)出色。
Windows XP Embedded是一種嵌入式操作系統(tǒng),可以以組件化形式提供 Windows 操作系統(tǒng)功能。Windows XP Embedded 與 Windows XP Professional 一樣基于二進(jìn)制,包含 10,000 多個(gè)獨(dú)立功能組件,因此開發(fā)人員在自定義設(shè)備映像中管理或降低內(nèi)存占用量時(shí)可以選擇并獲得最佳功能。
(2)WinCE 發(fā)展史?
1996年
第一代微軟移動設(shè)備操作系統(tǒng) Windows CE 1.0
Windows CE 1.0是一種基于 Windows95 的操作系統(tǒng),其實(shí)就是單純的 Windows95 簡化版本。
為手持式PC而設(shè)計(jì)。該手持式PC配有480*240或640*240的屏幕,有一個(gè)很小的矩形鍵盤。
1998年
Fall Comdex 97大會上,升級版本為Windows CE 2.0(設(shè)備稱為Palm-Size PC)
WinCE 2.0 不僅比 CE1.0 快的多,而且是彩色顯示,具有略大一些的鍵盤。Windows CE 2.0仍是基于Win95的操作系統(tǒng)。
2000年 4 月
新的操作系統(tǒng)改名為Pocket PC 2000(也簡稱為 Pocket PC或者Windows CE3.0)
WinCE3.0是微軟的Windows Compact Edition,是一個(gè)通用版本,并不針對掌上產(chǎn)品,標(biāo)準(zhǔn)PC、家電和工控設(shè)備上也可以安裝運(yùn)行。WinCE3.0支持5系列CPU: x86,PowerPC,ARM,MIPS,SH3/4。WinCE3.0屬于付費(fèi)軟件,安裝許可(Licence)費(fèi)用為$20,10份起,批量時(shí)大致能降到$15/一份。在2002年8月,專門為手機(jī)優(yōu)化過的微軟Pocket PC 2002 Phone Edition操作系統(tǒng)匆匆問世,2002年10月,國內(nèi)第一款PPC手機(jī)--多普達(dá)686上市了,隨后熊貓推出了CH860、聯(lián)想推出ET180。
2001年
Pocket PC 2002問世
2002年末
推出增加手機(jī)功能的 Pocket PC Phone 2002,同年,Smartphone 2002(Smartphone不支持觸摸)誕生
2002 年 11 月
Windows CE. NET(即Windows CE 4.0)是微軟于2002年1月份推出的首個(gè)以.NET為名的操作系統(tǒng),從名字上我們就可以知道它是微軟的.NET的一部分。WinCE. NET是WinCE3.0的升級,同時(shí)還加入.NET Framework精簡版,支持藍(lán)牙和.NET應(yīng)用程序開發(fā)。
.NET特別強(qiáng)調(diào)網(wǎng)絡(luò)功能,該操作系統(tǒng)主要為移動用戶提供基于網(wǎng)絡(luò)的服務(wù)和內(nèi)容,它不但能夠支持藍(lán)牙和802.11b無線局域網(wǎng)技術(shù),同時(shí)還可以應(yīng)用于其他設(shè)備,如數(shù)碼相機(jī)、小型客戶端設(shè)備、機(jī)頂盒,以及自動化設(shè)備等。
2003 年 4 月
Windows CE. NET 4.2:Windows CE. NET 4.0 的升級版,對Windows CE先前版本的強(qiáng)大功能進(jìn)行了進(jìn)一步的擴(kuò)充和豐富,基于其開發(fā)的設(shè)備將從這些微小但重要的變化中獲得更好的性能和更強(qiáng)的Windows集成功能。
2003年 6 月
微軟將Pocket PC 2003和Smart Phone 2003統(tǒng)一改稱為Windows Mobile 2003,依然包括Windows Mobile 2003 for Pocket PC、Windows Mobile2003 forPocket PC Phone Edition和Windows Mobile 2003 forSmartphone。
Windows Mobile 2003是以Windows CE 4.2為核心。 ? ??
2004 年 8 月
微軟宣布 Windows CE5.0 擴(kuò)大開放程序源代碼。在這個(gè)開放源代碼計(jì)劃授權(quán)下,微軟開放 250 萬行源代碼程序作為評估套件(evaluation kit),支付 Win CE5.0 核心每臺機(jī)器3美元的授權(quán)費(fèi)用。
? D3D Mobile、FastStart、GDI功能增強(qiáng)。?
? 增強(qiáng)安全性。?
? 廣泛的源代碼訪問和設(shè)計(jì)靈活性。?
? 增加25%的源代碼開放。
2005年
微軟沒有延續(xù)年號的命名方法,采用操作系統(tǒng)所采用的Windows CE內(nèi)核版本命名,將新的操作系統(tǒng)稱為WindowsMobile 5.0。依然包括Windows Mobile 5.0 for Pocket PC、WindowsMobile 5.0for Pocket PC Phone 和Windows Mobile 5.0 forSmartphone。
2006 年 11 月
微軟公司其最新的嵌入式平臺Windows Embedded CE 6.0正式上市。微軟將首次在“共享源計(jì)劃(Microsoft Shared Source programme)”中100%毫無保留地開放Windows Embedded CE 6.0內(nèi)核,(GUI圖形用戶界面不開放)比Windows Embedded CE的先前版本的開放比例整體高出56%。Windows Embedded CE 6.0重新設(shè)計(jì)的內(nèi)核具有32,000個(gè)處理器的并發(fā)處理能力,每個(gè)處理有2GB虛擬內(nèi)存尋址空間,同時(shí)還能保持系統(tǒng)的實(shí)時(shí)響應(yīng)。
2007年
微軟在1月份的SGSM大會上微軟正式推出WindowsMobile6.0移動設(shè)備操作系統(tǒng),包括三個(gè)版本,但是版本分類采用了不同的命名方式:Professional(支持觸摸屏智能手機(jī))、Standard(非觸控屏智能手機(jī))、Classic(不具備手機(jī)功能的手持設(shè)備)。
2008年
微軟推出Windows Mobile 6.1 操作系統(tǒng),其主要的特性在于穩(wěn)定性的提高方面。
2009年
即將發(fā)布Windows Mobile 6.5 操作系統(tǒng),新版系統(tǒng)重點(diǎn)強(qiáng)化了對觸摸操作的支持和優(yōu)化,比傳統(tǒng)方格式界面更易于觸摸點(diǎn)擊,例如蜂窩形的主菜單界面。新版本的Internet Explorer Mobile瀏覽器也增加了可觸摸的頁面縮放滑竿和常用命令。“Windows Marketplace”在線商店將為手機(jī)提供各類應(yīng)用的直接下載
2010 年 6 月
在 2010 年6月1日-5日的臺北 COMPUTEX 展會上,微軟正式公布了其嵌入式產(chǎn)品線最新的一員 Windows Embedded Compact 7。微軟推出的 Windows Phone 7 所采用的內(nèi)核正是使用了類似的 WinCE 7 內(nèi)核。不僅如此,Windows Phone 平臺也是基于 WinCE 平臺而定制出來的產(chǎn)品。
2013 年 3 月
微軟發(fā)布一個(gè)嵌入式系統(tǒng)被公布出來,它的名字叫 Windows Embedded Compact 2013,它可以同時(shí)工作于 x86 和 ARM 架構(gòu)體系下。
核心操作系統(tǒng)的改進(jìn),包括內(nèi)存管理和網(wǎng)絡(luò)功能;
?文件系統(tǒng)的性能改進(jìn),使設(shè)備始終可用;
?啟動優(yōu)化,使用快照啟動,實(shí)現(xiàn)設(shè)備在幾秒鐘內(nèi)進(jìn)入驅(qū)動程序加載,進(jìn)入特定UI等已知狀態(tài);
?內(nèi)置支持Wi-Fi、蜂窩網(wǎng)絡(luò)和藍(lán)牙技術(shù),以及無縫連接到Windows Azure,實(shí)現(xiàn)強(qiáng)大的互聯(lián)智能系統(tǒng);
?對創(chuàng)建了HTML5瀏覽器等附加解決方案的成千上萬開發(fā)者和合作伙伴提供支持
(3)因?yàn)?WINCE 是 32 位的嵌入式操作系統(tǒng),所以 WINCE 的虛擬尋址能力可達(dá)4GB(為什呢,2^32=4GB)。
但是 WINCE5.0 和 XP 操作系統(tǒng)的每個(gè)進(jìn)程獨(dú)享 4GB 虛擬地址空間不同,WINCE5.0 中所有的進(jìn)程共享一個(gè) 4GB 的虛擬地址空間。這 4GB 的虛擬地址空間被分為兩個(gè) 2GB 的區(qū)域,其中低地址的那2GB區(qū)域 (0x00000000~0x7FFFFFFF)是用戶虛擬空間,這塊虛擬空間由應(yīng)用程序的共用,也就是說應(yīng)用程序申請的內(nèi)存都會從低2GB虛擬內(nèi)存空間分配的;而高2GB區(qū)域(0x80000000~0xFFFFFFFF)是操作系統(tǒng)的內(nèi)核虛擬空間,供WINCE操作系統(tǒng)本身使用。
WINCE5.0 的進(jìn)程數(shù)量最多只能達(dá)到 32 個(gè),而且每個(gè)進(jìn)程只能獨(dú)享 32MB 的虛擬空間(這個(gè) 32MB 的空間也叫一個(gè) slot),這33個(gè)進(jìn)程(32+1,這個(gè)1就是指slot0,因?yàn)閟lot0用于映射當(dāng)前在處理器上執(zhí)行的線程所在的進(jìn)程)占用的虛擬空間0x00000000~0x41FFFFFF(slot0~slot32),slot33~slot63對應(yīng)的虛擬地址空間是0x42000000~0x7FFFFFFF,這塊虛擬地址空間是由所有的進(jìn)程共享的,如果每個(gè)進(jìn)程獨(dú)享的32MB虛擬地址空間不夠用,那么進(jìn)程可以在這個(gè)范圍申請?zhí)摂M地址空間,這個(gè)范圍包括對象存儲和內(nèi)存映射文件(.map文件,每個(gè)進(jìn)程都有自己的map文件)。此范圍的最后一個(gè)slot(slot63)從0x7E000000~0x7FFFFFFF用來存放純資源DLL。如果某個(gè)DLL里面只有資源信息(比如圖標(biāo)、位圖、對話框及字符串表燈),這個(gè)DLL就會被加載到這個(gè)空間內(nèi)。
WinCE 6.0 重新設(shè)計(jì)的內(nèi)核具有 32,000 個(gè)處理器的并發(fā)處理能力,每個(gè)處理有 2GB 虛擬內(nèi)存尋址空間,同時(shí)還能保持系統(tǒng)的實(shí)時(shí)響應(yīng)。
(4) 驅(qū)動框架變化
(a)應(yīng)用層/內(nèi)核層
(b)框架的變化:從 4.2 到 5.0/從5.0 到 6.0
(5) 應(yīng)用框架變化
(a) Win32/MFC,變化不大
(b) ActiveSync 通過 USB 與開發(fā)板連接
(c) 模擬器
(6) WinCE 開發(fā)環(huán)境搭建分為兩部分:
(a)WinCE 系統(tǒng)定制與驅(qū)動開發(fā)
Platform Builder 與相關(guān) BSP(Board Support Package:板級支持包) 的開發(fā)。
早期的 PB 是一個(gè)獨(dú)立的工具,從 WinCE5.0 開發(fā) PB 做為 Visual Studio 的一個(gè)插件。所以,安裝 PB 前需要安裝對應(yīng)版本的 Visual Studio。
(b)應(yīng)用開發(fā)環(huán)境
? WinCE 1.0 和 2.0 的開發(fā)環(huán)境不明。
? EVT3.0(Embedded C++ 3.0 和 Embedded VB 3.0),Embedded C++ 4.0(沒有看到對應(yīng)的 VB版本),Visual Studio 2005/2008。
? 應(yīng)用開發(fā)需要安裝 SDK(Software Development Kit:軟件開發(fā)工具包),由于 WinCE 支持不同類型的 CPU,選擇 SDK后,就可以選擇 SDK 支持的 CPU 類型。
(7) 應(yīng)用框架
與 Windows 下的框架基本相同,需要注意的是字符的編碼。Windows CE下所有系統(tǒng) API 只有 Unicode 版本,默認(rèn)的字符串也采用 Unicode 編碼。
API 只有 Windows API 的一個(gè)子集,但增加了一些移動設(shè)備特有的 API。
(a)Win32
(b)MFC
(8) 消息機(jī)制
Windows 的消息系統(tǒng)是由3個(gè)部分組成的:
a)消息隊(duì)列。Windows能夠?yàn)樗械膽?yīng)用程序維護(hù)一個(gè)消息隊(duì)列。應(yīng)用程序必須從消息隊(duì)列中獲取消息,然后分派給某個(gè)窗口。
b)消息循環(huán)。通過這個(gè)循環(huán)機(jī)制應(yīng)用程序從消息隊(duì)列中檢索消息,再把它分派給適當(dāng)?shù)拇翱?,然后繼續(xù)從消息隊(duì)列中檢索下一條消息,再分派給適當(dāng)?shù)拇翱?,依次進(jìn)行。
c)窗口過程。每個(gè)窗口都有一個(gè)窗口過程來接收傳遞給窗口的消息,它的任務(wù)就是獲取消息然后響應(yīng)它。窗口過程是一個(gè)回調(diào)函數(shù);處理了一個(gè)消息后,它通常要返回一個(gè)值給Windows。
注意回調(diào)函數(shù)是程序中的一種函數(shù),它是由 Windows 或外部模塊調(diào)用的。
一個(gè)消息從產(chǎn)生到被一個(gè)窗口響應(yīng),其中有5個(gè)步驟:
a) 系統(tǒng)中發(fā)生了某個(gè)事件。
b) Windows 把這個(gè)事件翻譯為消息,然后把它放到消息隊(duì)列中。
c) 應(yīng)用程序從消息隊(duì)列中接收到這個(gè)消息,把它存放在 TMsg 記錄中。
d) 應(yīng)用程序把消息傳遞給一個(gè)適當(dāng)?shù)拇翱诘拇翱谶^程。
e) 窗口過程響應(yīng)這個(gè)消息并進(jìn)行處理。
步驟c和d構(gòu)成了應(yīng)用程序的消息循環(huán)。
消息循環(huán)往往是 Windows 應(yīng)用程序的核心,因?yàn)橄⒀h(huán)使一個(gè)應(yīng)用程序能夠響應(yīng)外部的事件。消息循環(huán)的任務(wù)就是從消息隊(duì)列中檢索消息,然后把消息傳遞給適當(dāng)?shù)拇翱凇?br />Windows 操作系統(tǒng)最大的特點(diǎn)就是其圖形化的操作界面,其圖形化界面是建立在其消息處理機(jī)制這個(gè)基礎(chǔ)之上的。如果不理解 Windows 消息處理機(jī)制,肯定無法深入的理解 Windows 編程。
(9)WinCE 下路徑的最大長度
一般都未達(dá)到 MAX_PATH(260)的限制,目錄的級數(shù)與目錄名的長度有一定的關(guān)系:目錄名越長,目錄級數(shù)越少。
WinCE 下每個(gè)目錄中最大文件個(gè)數(shù)