程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> Windows CE的學習路線

Windows CE的學習路線

編輯:.NET實例教程

Q:什麼是嵌入式系統?  

國際電氣和電子工程師協會(IEEE)對嵌入式系統的定義是這樣的:嵌入式系統是“控制、監視或者輔助設備、機器和車間運行的裝置”(Devices   used   to   control,   monitor,   or   assist   the   Operation   of   equipment,   Machinery   or   plants)。
但是這個定義非常的難於理解——句子的主干:“嵌入式系統是裝置”——並且不太會被計算機行業的人士接受,為什麼呢?因為做出這個定義的組織是IEEE,是搞電子的一群人,在他們眼裡,當然是Device比較重要。Google一下,還可以找到另外一個定義,我覺得這個定義是比較不錯的:
嵌入式系統是以應用為中心,以計算機技術為基礎,並且軟硬件是可裁剪的,適用於對功能、可靠性、成本、體積、功耗等有嚴格要求的專用計算機系統。
這樣句子的主干就成了“嵌入式系統是計算機系統”。我們可以通過上面的定義,挖掘嵌入式系統的三個特點:
(1)   嵌入性:由於是嵌入到對象系統中,必須滿足對象系統的環境要求,如物理環境(小型)、電氣/氣氛環境(可靠)、成本(價廉)等要求。通俗一點說,嵌入式系統通常需要與某些特定的應用領域緊密結合。
(2)   專用性:軟、硬件的裁剪性;滿足對象要求的最小軟、硬件配置等。一般而言,當嵌入式系統開發結束之後,它的用途也就被定下來了,一般不會改變。例如,我們不可能用投影儀去聽mp3,雖然投影儀上的硬件足以應付對mp3的處理。
(3)   計算機系統:嵌入式系統必須是能滿足對象系統控制要求的計算機系統。與上兩個特點相呼應,這樣的計算機必須配置有與對象系統相適應的接口電路。
總之,嵌入式系統與我們平時接觸的桌面PC還有企業後台服務器的差別還是比較明顯的。這些差別會隨著大家的學習而越來越深刻的體會到。
隨著互聯網技術和消費類電子產品的高速發展,嵌入式系統近年來也得到了飛速發展,近年流行的一個概念,叫“泛嵌入式系統”。意思是嵌入式系統原本的概念早就被延伸了。隨著PDA,智能手機等新興的設備加入到嵌入式的陣營,為PDA、智能手機開發應用程序從廣泛意義上來說也可以算得上是嵌入式開發,而為此類設備開發應用程序與為桌面設備開發應用程序的差別不大,因此,嵌入式開發與桌面開發之間的界限越來越模糊了。

Q:什麼是Windows   CE?
Windows   CE是微軟公司開發的一個32位、多任務、多線程的嵌入式操作系統。它可以用在手機、機頂盒、智能手持設備、網關、數字媒體設備、工業控制等多種場合。Windows   CE支持X86、ARM、MIPS和SH四種處理器架構。並支持WiFi,USB   2.0等新型設備,並具有強大的多媒體功能。
Windows   CE操作系統是模塊化設計的,整個系統被劃分為數百個模塊,嵌入式系統開發人員可以根據系統的需要,來選擇自己需要的模塊,從而達到減小系統體積目的。一個最小的Windows   CE可運行內核只需要幾百KB。而一個功能完備的Windows   CE映像也不會超過64MB。此外,微軟開放了部分Windows   CE的源代碼,並且允許開發人員對這部分源代碼進行修改。
Windows   CE自1996年發布了第一個版本,目前最新的版本是5.0。它的6.0版本會在2007年發布。

Q:Windows   CE與微軟其他Windows版本之間的關系怎麼樣?
目前,微軟的操作系統基本可以分為三大領域:桌面OS、服務器OS和嵌入式OS。桌面OS也就是我們熟悉的Windows   XP,Windows   9x等。服務器OS包括Server系列,像Windows   2000   Server和Windows   Server   2003。這裡就不再詳細介紹了。
嵌入式OS也分為兩類,一類是Windows   XP   Embedded,基本上就是把桌面版本的XP做了組件化。另一類就是Windows   CE。Windows   CE和Windows   XPE統稱Windows   Embedded。

Q:什麼是Windows   Embedded?什麼是Windows   Mobile?什麼是Windows   Automotive?
Windows   Embedded是基於Windows的嵌入式操作系統的統稱。

$False$

目前Windows   Embedded家族包含兩款產品:Windows   CE和Windows   XP   Embedded。
Windows   Mobile是搭建在Windows   CE之上的針對移動領域的家族產品集合。也就是說Windows   Mobile的內核還是Windows   CE,只不過在Windows   CE之上搭建了一些針對這個領域一些特有的行業應用組件,例如手機圖形界面,短信息應用等。目前Windows   Mobile包含Pocket   PC和Smartphone兩款產品。Pocket   PC針對PDA設計。Smartphone針對智能手機設計。
Windows   Automotive也是搭建在Windows   CE之上的針對汽車電子領域的產品。包含了一些汽車電子上比較常用的組件,例如導航系統。

Q:Windows   CE與嵌入式Linux等其他嵌入式操作系統如何比較?
由於嵌入式系統的特點而決定的,在嵌入式領域不可能有一款嵌入式操作系統可以一統嵌入式OS的天下。不同的嵌入式操作系統有不同的優缺點。嵌入式開發人員可以根據應用的具體需要進行選擇。
與其他嵌入式操作系統相比,Windows   CE的優點有如下幾點:
學習   /   使用簡單:微軟提供了方便的IDE和開發工具,對於OS的定制、裁減、交叉編譯等都相對簡單。此外,Windows   CE的應用程序開發接口也是Win32   API,與桌面Windows的基本一致。這也方便了桌面Windows開發人員向Windows   CE嵌入式開發過渡。
圖形界面優秀:這個理由或許是許多人員選用Windows   CE的主要原因。Windows   CE的圖形和多媒體能力是非常優秀的,可以方便的支持多種視頻音頻格式。此外還支持DirectX多媒體接口,這對於開發多媒體應用(例如電子地圖導航、多媒體播放器等)非常方便。
應用集成度高:Windows   CE自帶了很多應用程序,例如Web浏覽器,多媒體播放器,Office文件察看器等。這對於快速的開發一款產品相當有用。此外,互聯網上有數以萬計的為Windows   CE開發的應用程序。
與其他嵌入式操作系統相比,Windows   CE可能有如下缺點:
對硬件要求高:Windows   CE要求硬件必須有32位的CPU和MMU,和數MB的RAM,雖然Windows   CE可以裁減到幾百K,但是對於一些小型的設備(例如一些航天設備只有64KB的ROM和幾百KB的RAM),Windows   CE依然不適合這類的領域。
實時性和可靠性:雖然Windows   CE在實時性上下了非常大的功夫,並且實時性與桌面Windows相比已經有了質的提高,但是在一些實時性和高可靠性的場合,Windows   CE可能依然不適合。
授權費用:Windows   CE是按照license方式來收錢的,根據用戶選擇的組件不同,每個Windows   CE的license可能要到十幾美元左右。

Q:學習Windows   CE的方向有哪些?
與桌面操作系統和服務器操作系統下的軟件開發不同,為嵌入式操作系統開發軟件可不只是寫寫應用程序那麼簡單。我們常常要深入到內核,甚至要深入到硬件。根據不同的開發層面,我們把Windows   CE   下的嵌入式軟件開發者分為下面三類:
第一類我們稱之為應用程序開發者。此類開發人員與傳統的通用操作系統下的應用開發人員比較相似。他們通常是利用操作系統提供的API(Application   Programming   Interface,應用程序編寫接口),應用程序庫(例如C   運行時庫,Visual   Basic   運行時庫)或應用開發框架(例如J2EE   與.Net   Framework)來編寫代碼。他們開發的代碼通常運行在用戶態,無需直接對硬件進行操作。他們所關注的是通常是應用功能和業務邏輯的實現。此外,他們的程序通常是直接與最終用戶打交道的。
第二類是操作系統平台的提供者。此類開發人員的主要職責是針對具體的應用環境,對嵌入式操作系統進行裁減,向第一類開發人員提供應用程序運行的平台。他們通常要對所裁減的操作系統的各個模塊的功能了如指掌,這樣才可以針對具體的應用環境,搭建出合適的平台,使資源達到最節省。例如,一個運行在自動取款機上的嵌入式操作系統應不應該加入MPEG4   播放模塊,管理數碼相機的嵌入式操作系統中“藍牙”網絡協議棧是否必要……。此外,為了滿足應用需求,他們有可能還需要對所裁減的嵌入式操作系統進行一些擴充,增加嵌入式操作系統所不支持的功能,編寫一些比較上層的驅動程序通常是必要的。

例如,用於視頻會議的嵌入式系統要用到USB   攝像頭的支持,如果該嵌入式系統沒有提供USB   攝像頭的驅動程序,就需要此類開發者來提供。在現實的世界中,除了微軟向外界提供Windows   Mobile和Windows   Automotive,還沒有發現有公司專門定制操作系統。一般這類角色通常都由第一類或第三類開發人員兼任。
第三類是內核/驅動開發者。嵌入式操作系統與通用操作系統最顯著的區別之一是它的可移植性。一款嵌入式操作系統通常可以運行在不同體系結構的處理器和開發板上。為了使嵌入式操作系統可以在某塊具體的開發板上運行,嵌入式操作系統的編寫者通常無法一次性完成整個操作系統的代碼,而把一部份與具體硬件設備相關的代碼作為抽象的接口保留出來,給提供硬件的OEM   廠商來完成。這樣才可以保證整個操作系統的可移植性。這些代碼通常是BSP(Board   Support   Package,板級支持包)的一部分。例如,不同的處理器和開發板通常都會提供時鐘支持,用來得到當前的時間日期,但是時鐘的實現方式卻不勝枚舉,如何告訴嵌入式操作系統當前的時間,就是此類開發人員要解決的任務。這一類開發人員不但要對嵌入式操作系統提供的硬件接口了如指掌,還要對操作系統運行的硬件有極為深入的了解。有可能此類開發人員會同時身兼軟件工程師和硬件工程師雙種身份——讓嵌入式操作系統在自己設計的硬件平台上運行起來。
通常第一類軟件開發者的數目最多,第三類軟件開發者的數目最為稀少。從軟件角度來看,一般把應用開發稱作上層開發,而把驅動等系統開發稱作底層開發。所以,這三類軟件開發者的結構通常呈現出“倒三角型”。
就目前國內市場上來看,無論是應用開發還是內核/驅動開發都有良好的前途(錢途)。國內基於Windows   CE的應用程序開發主要集中在Windows   Mobile這一塊,也就是給Pocket   PC和Smartphone開發應用程序。此外,還會有一些公司需要開發Windows   CE的BSP和驅動程序。從報酬來看自然是後者要高於前者,這個與開發難度是成正比的。
但是應用開發與內核/驅動開發都有自己的知識體系,而且它們的交集並不多。如果兩者兼顧可能需要花費大量的時間與精力。建議學習Windows   CE的人根據自己的喜好對這兩者進行選擇,對自己的能力有12分自信的則可以“通吃”。

Q:學習Windows   CE需要哪些基礎知識?
根據學習方向的不同,基礎知識的要求也不同。
如果立志做一個優秀的Windows   CE下的應用開發人員,則不需要了解太多的硬件,關鍵是要對應用程序開發接口,包含Win32   API,.NET   Compact   Framework等有詳盡的了解。因此,如果有桌面Windows開發的經驗自然是最好的。例如C   /   C++語言,Windows程序設計經驗。.Net開發經驗等等。
如果要做一個內核/驅動開發人員,則一方面需要了解操作系統的基本原理,另一方面需要了解一些硬件的工作原理等知識。因為無論是編寫BSP還是編寫驅動程序,都需要直接對硬件打交道。具體而言,可能有如下一些知識:匯編語言(ARM,X86)。微機原理,組成原理,操作系統……

Q:目前有哪些比較好的參考書?
由於Windows   CE最近幾年才開始流行,所以市場上的參考書並不是很多,最好的資料還是Windows   CE自帶的幫助文檔。下面幾本書可以讀一下:
《Windows   CE內核定制及應用程序開發》:以Windows   CE   4.2為藍本,基本上是一本platform   builder的用戶手冊。可以熟悉PB,對熟悉內核和驅動幫助不大。
《Windows   CE嵌入式開發入門--基於Xscale架構》:看目錄非常不錯,但是我沒有看過書的具體內容。
《Windows   CE實用開發技術》:作者是北京交通大學的張冬全老師,張老師在國內Win   CE培訓方面很有名氣,可惜我也沒有讀過這本書,看目錄很好。
《Windows   CE.Net系統分析及實驗教程》陳向群老師的作品,主要是分析Windows   CE開放的部分的源代碼,適合想知道CE底層的人閱讀。 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved