這篇文章的目的並不是介紹Windows Embedded CE開發的方方面面只是用一個初涉嵌入式領域的軟件開發者的視角來介紹Windows CE開發中最常用的概念和知識解決大家會在實際開發中碰到的一些小問題讓大家了解嵌入式開發與應用程序開發到底有哪些不同
Windows CE概述
從版本開始Windows CE的名字改為Windows Embedded CE當然這也是為了結合Windows Embedded品牌作出的改變CE經過了十年的風風雨雨之後終於在CE 這個版本上再次浴火重生了CE 經歷了CE歷史上第二次內核重寫使CE操作系統更加符合當今嵌入式開發的方向
CE 在內核方面的改變主要是為了適應嵌入式設備硬件發展的要求在進程數量方面從過去最多運行個進程改變為最多運行萬千個進程內存方面從每個進程最多擁有M虛擬內存空間改為最多擁有G虛擬內存空間在OS布局方面將關鍵的驅動程序文件系統和圖形界面管理器(GWES)移到了內核中這樣可以更好解決因為CPU在內核態和用戶態間切換而造成的性能損失
當然從以上的改變我們可以看到CE 較之前版本更加重量級了操作系統領域關於微內核的爭論已經持續了很多年CE的改變也許會為某個學派的觀點提供支持但我們必須指出的是正因為目前的嵌入式設備硬件已經可以支持比較重量級的操作系統了所以CE 才會做出如此改變
CE針對開發者的另一個轉變開始自CE 將開發環境Platform Builder整合到Visual Studio中這種做法無疑減輕了微軟維護兩套IDE的負擔從另外一個方面來看CE的開發者也可以享受到更好的開發體驗了
嵌入式開發流程
也許很多初涉嵌入式開發領域的程序員會被一系列的新名詞搞得頭昏腦脹在這裡我希望能夠將嵌入式開發的流程展現給大家
嵌入式開發主要分為三個比較大的部分
驅動程序開發
這部分開發是從硬件設計開始的硬件工程師會設計PCB板為我們提供標准開發板(SDBstandard development board)當我們拿到開發板之後的第一件事情就是編寫bootloader讓開發板啟動起來一般是通過JTGA將bootloader燒錄到開發板中的我們可以將bootloader看作PC中的BIOS負責硬件設備的初始化工作並且將操作系統運行起來在此之後我們需要根據開發板上的硬件開發各種驅動程序比如串口USB鼠標視頻輸入等最後將這些驅動程序和bootloader打包稱為一個板級支持包(BSP)BSP是和開發板的具體硬件緊密相關的
所以從事這方面開發的工程師往往具有比較強的硬件知識水平
平台定制
我們可以將Windows CE想象為一盒積木根據不同的應用場景和設備要求我們要對這盒積木進行定制堆積出不同形狀的城堡動物和生活用品這個過程稱為平台定制定制產生的平台往往和具體的硬件設備相關直接將平台下載到硬件設備上就可以運行了整個開發過程需要選擇不同的組件來搭配出最適合當前硬件的軟件平台所以要對Windows CE的組件也就是Catalog Item有相當程度的了解
應用程序開發
嵌入式設備上的應用程序開發與傳統應用程序開發類似只是要借助於硬件模擬器或者實際設備對程序進行調試最常見的嵌入式設備應用程序開發就是Windows Mobile的移動應用開發平台定制工程師會在硬件出廠之前先提供平台相關的SDKSDK中會包括模擬器應用開發者可以首先使用模擬器對程序進行開發和調試等實際硬件出來之後再將程序轉移到實際硬件中因為Windows CE采用了很多措施這種轉移幾乎是無縫的所以我們並沒有使用移植這個詞
嵌入式領域的應用開發其實是普通軟件工程師就可以進行的
下圖是對嵌入式開發整個流程的圖示Windows CE開發流程圖
From:http://tw.wingwit.com/Article/Common/201311/24542.html