**:
wince6.0的體系結構圖如下圖所示:
圖1 wince的體系結構
根據上圖可以把wince6.0體系結構分為硬體層、oem層、作業系統層和應用層,這四層緊密合作,相互配合來完成從應用程式的呼叫到對硬體的操作和互動。
1. 硬體層
硬體平台的核心是嵌入式處理器,而嵌入式處理器的種類很多,處理能力和主頻的速度各有差異,如果要跑wince作業系統,需要處理器包含mmu單元。wince6.0支援的arm、mips、x86、shx這四種cpu體系,在這點上嵌入式linux支援更多cpu體系結構的處理器。
2. oem層
oem(original equipment manufacturer,原始裝置製造商)層位於wince的作業系統層和硬體層,主要的作用是對硬體進行抽象並且提供統一的介面讓作業系統來和硬體互動。oem層主要包括oal(oem abstraction layer,oem抽象層)、bootloader、配置檔案和驅動程式。
3. 作業系統層
由圖1可知作業系統層包括coredll、檔案系統、gwes、裝置管理器、驅動(分為使用者模式和驅動模式的驅動)、services服務和核心(kernel)這些部分組成。
3.1 coredll
coredll.lib,coredll模組為其他wince模組提供核心(core)功能,此模組是wince作業系統的乙個不可或缺的模組,但它不一定需要所有的組成部分。coredll模組包含配置os的結構體、巨集定義、函式等重要的內容,這些資訊定義在celog.h、pkfuncs.h、pwinreg.h、pwinuser.h和windbase.h標頭檔案中,為了引入(import)這些功能,必須鏈結coredll.lib檔案。
coredll模組包含很多部分,比如battery、cormain等部分,這些部分都是以lib的形式提供,具體看help文件developing an os design->windows embedded ce moudules and components->common windows embedded ce modules下的介紹。
3.2 檔案系統(filesys.dll)
filesys.dll主要實現檔案系統和儲存管理
圖2 filesys.dll的功能架構
3.3 gwes(gwes.dll)
wince把微軟win32 應用程式設計介面(api)、使用者介面(ui)和圖形裝置介面(gdi)的庫整合到圖形視窗和事件子系統模組(gwes)中,gwes是使用者、應用程式和os之間的介面,它支援構成wince使用者介面的所有視窗、對話方塊、控制項、選單和資源,還提供了游標、位圖、文字和圖示資訊,gwes負責載入及管理hid驅動、顯示驅動和鍵盤驅動。
3.4 裝置管理器(device.dll)
裝置管理器被kernel載入並且一直執行,它負責載入、解除安裝和管理裝置驅動及他們的介面,當裝置管理器載入的時候,它同時載入i/o資源管理器來從登錄檔中讀取可用資源列表。
4. 應用層
從系統的角度來看,每個應用程式都是wince中的乙個單獨的程序,應用程式執行在優先順序較低的許可權下它使用作業系統提供的win32 api來進行系統呼叫基互動。
體系結構學習15 cache coherence
現代處理器的並行 或執行緒共享記憶體,需要保證資料一致性。從軟體 硬體兩個角度考慮解決cache一致性。現代處理器cache一般對程式設計師透明,isa一般只提供cache flush命令。如果靠軟體解決,對程式設計師負擔太大。要求cache有雙埠,接受匯流排和相應cpu的資訊 cache bloc...
winCE6 0 學習筆記之記憶體管理
wince 6.0 是乙個32 位的作業系統,提供了 4gb的虛擬位址空間,其中系統核心使用高區的 2gb,使用者程序使用低區的 2gb。我們的記憶體管理單元 memory management unit 用來管理虛擬記憶體和實際物理記憶體的對映。在wince 6.0 中,虛擬記憶體的頁面有三種情況...
體系結構學習筆記 白話理解Tomasulo演算法
單位時間執行的指令數目是衡量cpu的一項重要指標,為了讓各個部件盡量處於工作狀態,於是提出了指令流水,但是隨之而來的問題就是因為程式之間的相關性,從而引起的流水線堵塞,影響了流水線效能。為了進一步提高流水線效能,就提出了亂序執行,也就是部分程式不需按照原先的順序執行。可以試想,若有一指令執行時間非常...