Windows Embedded CE 6.0特性及系統(tǒng)結構
Windows Embedded CE 6.0是非常優(yōu)秀的嵌入式系統(tǒng),對其內核的學習對我們開發(fā)、移植驅動和應用程序,對開發(fā)、移植嵌入式系統(tǒng)都非常有好處。
1.Windows Embedded CE 6.0系統(tǒng)的一些關鍵特性
◆32位多任務操作系統(tǒng)。
◆多任務搶占、硬實時。
◆支持的處理器體系結構:ARM, x86, SH4, MIPS。
◆組件化。
◆Based on Win32 API Set,桌面系統(tǒng)的一個擴展子集,超過2000個函數(shù)可以使用。
◆標準的Portable Executable(PE)文件格式。
另外需要注意的是Platform Builder開發(fā)工具集成的Visual Studio中,作為后者的一個插件。開發(fā)Windows Mobile 6.x時使用的還是獨立的Platform Builder for Windows Mobile,相信到Windows Mobile 7.0時會有所變化。
作為通用性桌面操作系統(tǒng)的Windows XP取得了巨大的成功,關于其系統(tǒng)特性請看這。所以微軟又推出了Windows XP Embedded。與Window XP Embedded需要借助第三方插件才能實現(xiàn)實時操作系統(tǒng)相比,Windows Embedded CE 6.0是具有32 位本機實時支持的統(tǒng)一內核的。微軟另一款具有本機實時支持統(tǒng)一內核的嵌入式操作系統(tǒng)是Windows Embedded NavReady。
2.系統(tǒng)架構
下圖為Windows CE 5.0系統(tǒng)架構,與下下6.0的架構圖相比,我們發(fā)現(xiàn):
(1).5.0時的NK.EXE被分為6.0的NK.EXE(交給OEM開發(fā))和Kernel.DLL(微軟開發(fā))。
(2).驅動分成內核態(tài)和用戶態(tài)。
(3).從圖上看不出來的內存架構變化。 #p#
以下為Windows Embedded CE 6.0系統(tǒng)總架構:
以下為更詳細的架構圖,結合上圖我們可以看到:
1.OEM商主要承擔OAL模塊(包括:NK.EXE和Bootloader)以及內核態(tài)驅動的開發(fā)。
2.其實從現(xiàn)在的市場來看OEM商有時也會負責應用和用戶態(tài)驅動的開發(fā)。
注:ISV(Independent Software Vendors):獨立軟件開發(fā)商。
3.中斷機制
下圖為中斷模型:
(1).設備發(fā)起一個硬件中斷。->
(2).內核(Kernel.DLL)響應該中斷,并call對應的中斷服務例程(ISR)。->
(3).中斷服務例程快速處理該中斷。->
(4).驅動中的中斷服務線程(IST)被通知處理該中斷,這里內核使用Event通知IST。
這個過程中涉及到的ISR和IST都會處理中斷,但有所不同,前者的中斷級別更高,所做的工作也很簡單,而后者做主要的處理工作。
4.線程、線程調度、線程同步
線程是被系統(tǒng)獨立調度和分派的基本單位,當系統(tǒng)創(chuàng)建一個進程時,至少會存在一個線程(主線程)。所以進程可以被理解為一個殼子。關于線程更多基本知識在此略去。應用程序一般運行在248-255優(yōu)先級,被創(chuàng)建的線程默認優(yōu)先級為251。
另外我們要注意的一個很重要問題是優(yōu)先級反轉(Priority Inversion)問題,比如現(xiàn)在有三個優(yōu)先級不同的線程A、B、C, A的優(yōu)先級***,B次之,C***。其中A和C需要的資源部分相同。處理器當前執(zhí)行線程C,比C優(yōu)先級更高的B有可能打斷C而進入運行狀態(tài),這樣C占有的資源什么時候釋放就是一個未知的時間。A只有在C釋放了它所需要的資源后才能被調度,A被阻塞的時間也是未知的。這樣,低優(yōu)先級的B先于高優(yōu)先級的A被調度,優(yōu)先級發(fā)生了逆轉。
這個問題在XP里面不是一個嚴重的問題,最多A被多阻塞了一段時間。但是,在實時系統(tǒng)里面,特別是硬實時系統(tǒng)里是個很嚴重的問題。這個問題的解決方法一般有兩種,Windows Embedded CE 6.0采用的后一種方法。
線程同步
被用于線程同步的對象有很多種:臨界區(qū)(Critical Setions)、互斥體(Mutexes)、信號量(Semaphores)、事件(Events)、Interlocked Fuctions,這里對此進行簡單的介紹,關于更詳細的資料(比如臨界區(qū)和互斥體的本質區(qū)別以及性能比較)請從網絡上查閱,比如這里。在CE 6.0系統(tǒng)中每個同步對象都有自己獨立的名字空間,比如一個空字符串"”被作為一個名字對象處理。在桌面系統(tǒng)中所有同步對象是共享名字的空間的。
【編輯推薦】
- Windows Embedded CE 6.0 R3 ***嵌入式系統(tǒng)發(fā)展趨勢
- 淺析Windows Embedded CE下Native C++的開發(fā)
- 點評Windows Embedded CE 6.0 R3的產品差異性
- 微軟發(fā)布Windows Embedded CE 6.0 R3
- 試用Windows Embedded 6.0 R3開發(fā)手記