Download presentation
Presentation is loading. Please wait.
1
WinCE Device Manager 電源管理器:管理系統的能源分配策略,決定系統的能量消耗狀態變化。
裝置管理器:包括裝置驅動模型的實作及I/O資源 的管理。 PnP管理器:隨插即用,當系統中硬體設備發生變化時,系統可以自動配置使用新的裝置。 電源管理器:管理系統的能源分配策略,決定系統的能量消耗狀態變化。 支援和管理函式庫:一些內部支撐函數。
2
註冊表 紀錄可以存取的裝置驅動程式資訊 為使用者提供由windows.h裡,定義要用來存取註冊表的Win32 API呼叫介面
具有層次化的組織結構,由若干個機碼 (key) 以及值 (value) 組成,類似檔案系統 ;機碼相當於目錄,而值相當於檔案。
3
註冊表 WinCE 註冊表的根機碼: WinCE 註冊表的一些限制 機碼或者值的名字 : 255 位元
HKEY_LOCAL_MACHINE :硬體和驅動程式配置資訊HKEY_CURRENT_USER :使用者配置資訊HKEY_CLASSES_ROOT : OLE和檔案類型配置資訊 WinCE 註冊表的一些限制 機碼或者值的名字 : 255 位元 位元資料大小 : 4 KB 機碼巢次層級 : 最多16層
4
註冊表 實作程式碼透過在windows.h中定義的註冊表公用函式 存取這些資料。 WinCE 的註冊表函式說明 ___________________________________ RegOpenKeyEx : 打開一個註冊表機碼 RegQueryValueEx : 查詢指定註冊表機碼的值 RegCreateKeyEx : 產生一個新的註冊表機碼 RegSetValueEx : 設置指定的註冊表項的值 RegDeleteKey : 刪除指定的註冊表機碼 RegCloseKey : 關閉指定的註冊表機碼
5
支援平臺機制 HAL (Hardware Abstraction Layer,硬體抽象層) :
HAL提供一般硬體特性的封裝、隱藏,包括特定的硬體抽象機制 (例如記憶映射保護) 和驅動程式機制 (例如I/O位址映射)。HAL通常包含HEL (Hardware Emulation Layer,硬體模擬層),當硬體不具有某個特性的時候,HAL會自動呼叫HEL用軟體模擬該特性。 OAL( OEM Adaptation Layer,原始設備製造適配層) : OAL主要為作業系統的OEM開發者提供作業系統和具體硬體平臺的隔離手段。OAL主要實作硬體平臺初始化、各種中斷服務常式、電源管理、即時時鐘、計時器、除錯支援、中斷開關等,這些為WinCE 的移植提供很大的便利性。
6
中斷處理 各種裝置透過中斷和WinCE的核心通信,在系統發現中斷之後,處理的過程將分為兩個部份實作:核心的ISR和使用者執行IST。
ISR駐留在OEM適配層(OAL),是由OEM編寫的一系列低級功能,介於內核與硬體之間 。 IST駐留在驅動程式中,並可按要求存取硬體以實現核心驅動程式的中斷處理功能。中斷處理完成後,IST發出中斷結束信號,內核重新啟動中斷。
7
中斷處理 WinCE支援兩種類型的ISR 靜態ISR:
只能靜態地編譯核心,運行時不能改變。與IST通信時,只是單向的,由ISR到IST。靜態ISR支援嵌套中斷,並且使用核心堆疊。 可安裝ISR: 由核心管理程式從DLL中動態載入,和靜態的ISR不同,它和IST通信可以是從IST到ISR。多個ISR可以與同一個中斷請求相關聯,系統按照載入驅動程式的順序依次排程。
8
中斷處理 IST: 處理中斷的一般事務性工作,當核心接到ISR傳給自己的中斷標幟之後就發出一個中斷事件,啟動一個正等待在該事件的事件佇列上的IST,一段時間之後,排程器(scheduler)就會排程這個執行緒工作,處理中斷的事務。
9
中斷處理
10
WinCE Device Manager
11
裝置驅動程式 裝置驅動程式可以分為兩種:分層結構驅動程式(Layered Driver)和單層結構驅動程式(Monolithic Driver)。 絕大部份實際的WinCE裝置驅動程式都是分層結構的驅動程式。
12
裝置驅動程式 分層的驅動程式可以適應絕大多數的裝置,它建立在分層的模式下,在分層的通用模型中,裝置驅動程式可分為兩個層次:平臺相關驅動程式(PDD,Platform Dependent Driver)和模型裝置驅動程式(MDD,Model Device Driver)。
13
裝置驅動程式 串流驅動程式需要實作的DLL介面函式名稱描述:
XXX_Close 在驅動程式關閉時由應用程式透過Closehandle函式呼叫 XXX_Deinit 裝置管理器在卸載一個實體裝置時呼叫 XXX_Init 裝置管理器在初始化一個實體裝置時呼叫 XXX_IOControl 在發送命令時由應用程式透過DeviceControl函式呼叫 XXX_Open 在打開一個裝置驅動程式時由應用程式透過CreateFile呼叫 XXX_PowerDown 在系統掛上之前呼叫電源管理器 XXX_PowerUp 在系統重新啟動之前呼叫電源管理器 XXX_Read 在一個裝置驅動程式處於報行中狀態時由應用程式透過 ReadFile函式呼叫 XXX_Seek 對裝置的資料指標進行操作,由應用程式透過 SetFilePointer函式呼叫 XXX_Write 在一個裝置驅動程式處於報行中狀態時由應用程式透過 WriteFile函式呼叫
Similar presentations