24h購物| | PChome| 登入
2008-01-22 01:52:50 | 人氣122| 回應0 | 上一篇 | 下一篇
推薦 0 收藏 0 轉貼0 訂閱站台

Windows CE開發中最常用的概念和知識

這篇文章的目的並不是介紹Windows Embedded CE開發的方方面面,只是用一個初涉嵌入式領域的軟體開發者的視角來介紹Windows CE開發中最常用的概念和知識,解決大家會在實際開發中碰到的一些小問題,讓大家了解嵌入式開發與應用程式開發,到底有哪些不同。

  Windows CE概述

  從6.0版本開始,Windows CE的名字改為Windows Embedded CE,當然這也是為了結合Windows Embedded品牌作出的改變。CE經過了十年的風風雨雨之後,終於在CE 6.0這個版本上再次浴火重生了。CE 6.0經歷了CE歷史上第二次內核重寫,使CE作業系統更加符合當今嵌入式開發的方向。

  CE 6.0在內核方面的改變主要是為了適應嵌入式設備硬體發展的要求,在進程數量方面,從過去最多運行32個進程,改變為最多運行3萬2千個進程,記憶體方面從每個進程最多擁有32M虛擬記憶體空間改為最多擁有2G虛擬記憶體空間。在OS佈局方面,將關鍵的驅動程式、文件系統和圖形介面管理器(GWES)移到了內核中,這樣可以更好解決因為CPU在內核態和用戶態間切換而造成的性能損失。

  當然,從以上的改變,我們可以看到CE 6.0較之前版本更加“重量級”了。作業系統領域關於“微內核”的爭論已經持續了很多年,CE的改變也許會為某個學派的觀點提供支援。但我們必須指出的是,正因為目前的嵌入式設備硬體已經可以支援比較“重量級”的作業系統了,所以CE 6.0才會做出如此改變。

  CE針對開發者的另一個轉變開始自CE 5.0,將開發環境Platform Builder整合到Visual Studio中,這種做法無疑減輕了微軟維護兩套IDE的負擔,從另外一個方面來看,CE的開發者也可以享受到更好的開發體驗了。

  嵌入式開發流程

  也許很多初涉嵌入式開發領域的程式員會被一系列的新名詞搞得頭昏腦脹,在這裡,我希望能夠將嵌入式開發的流程展現給大家。

  嵌入式開發主要分為三個比較大的部分:

  1 驅動程式開發

  這部分開發是從硬體設計開始的,硬體工程師會設計PCB板,為我們提供標準開發板(SDB,standard development board)。當我們拿到開發板之後的第一件事情就是編寫boot-loader,讓開發板啟動起來,一般是通過JTGA將boot-loader燒錄到開發板中的。我們可以將boot-loader看作PC中的BIOS,負責硬體設備的初始化工作,並且將作業系統運行起來。在此之後,我們需要根據開發板上的硬體開發各種驅動程式,比如串口、USB、滑鼠、視頻輸入等。最後將這些驅動程式和boot-loader打包,稱為一個板級支援包(BSP)。BSP是和開發板的具體硬體緊密相關的。

  所以從事這方面開發的工程師往往具有比較強的硬體知識水準。

  2 平臺定制

  我們可以將Windows CE想像為一盒積木,根據不同的應用場景和設備要求,我們要對這盒積木進行定制,堆積出不同形狀的城堡、動物和生活用品。這個過程稱為“平臺定制”,定制產生的平臺往往和具體的硬體設備相關,直接將平臺下載到硬體設備上就可以運行了。整個開發過程,需要選擇不同的組件來搭配出最適合當前硬體的軟體平臺。所以要對Windows CE的組件,也就是Catalog Item,有相當程度的了解。

  3 應用程式開發

  嵌入式設備上的應用程式開發與傳統應用程式開發類似,只是要借助於硬體模擬器或者實際設備對程式進行調試。最常見的嵌入式設備應用程式開發,就是Windows Mobile的移動應用開發。平臺定制工程師會在硬體出廠之前先提供平臺相關的SDK,SDK中會包括模擬器。應用開發者可以首先使用模擬器對程式進行開發和調試。等實際硬體出來之後,再將程式轉移到實際硬體中。因為Windows CE採用了很多措施,這種“轉移”幾乎是無縫的,所以我們並沒有使用“移植”這個詞。

  嵌入式領域的應用開發其實是普通軟體工程師就可以進行的。

  下圖是對嵌入式開發整個流程的圖示,Windows CE開發流程圖

        

台長: Kenny
人氣(122) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: Win 2003 Srv |
此分類下一篇:Windows XP系統超強支援工具全面接觸
此分類上一篇:Win2003作路由 局域网共享多出口上网

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文