這一節(jié)講述一般設備的PNP和電源特性。PNP特性PNP是Plug And Play的簡稱,代表和外部設備插拔有關事件的處理。PNP是現(xiàn)代操作系統(tǒng)必須支持的基本特性,其目的是希望操作系統(tǒng)能夠在軟硬件支援下,在基本無需用戶干預的情況下,即可很好地處理外部設備的接入和移除操作;當設備配置發(fā)生動態(tài)變更時,系統(tǒng)也能悄沒生息地處理好,并一切正常地使用它們。有些筆記本是當成工作站來用的,這樣就需要很多外部接口。但一般的筆記本,局限于物理空間,不能夠提供過多的外部接口,會使用接口塢來擴展。大的接口塢上通常有十幾、數(shù)十個擴展接口,來滿足工作站的接口要求。其實,一些移動設備,如手機、平板電腦,也使用接口塢的方式實現(xiàn)擴展,不過接口少一些。接口塢接入主機的時候,系統(tǒng)如果有PNP支援,就能夠直接使用上面的接口了,不用重啟系統(tǒng),一般也不用手動安裝設備驅(qū)動。PNP特性,需要操作系統(tǒng)、驅(qū)動程序和硬件的三方支持。缺了某一方都不能實現(xiàn)。比如PCI設備,雖然可以在PCI驅(qū)動程序中實現(xiàn)某種程度的PNP支持,但因為設備本身的電氣化特性,是不支持PNP的,所以我們?nèi)圆荒軣岵灏蜳CI設備。另外一種情況是,如果設備驅(qū)動寫得不好,未能正確地處理PNP請求,那么即使設備本身是支持熱插拔的,也會有問題。比如現(xiàn)在很多定制的USB設備,如加密U盤、網(wǎng)銀密碼器等,如果驅(qū)動寫的不好,用戶往往會在插拔設備的時候遭遇藍屏。概括地講,為了很好地支援PNP特性,需要做到下面幾點:運行時識別設備。不僅在系統(tǒng)初始化的時候,能識別并正確配置設備。在系統(tǒng)正常運行的過程中,如果有設備動態(tài)接入,也能夠正確識別并配置設備;如果設備動態(tài)移除,也能夠正確響應并回收系統(tǒng)資源。系統(tǒng)還需要為設備動態(tài)加載設備驅(qū)動程序。設備的驅(qū)動信息保存在注冊表中,系統(tǒng)從注冊表中查找設備的驅(qū)動信息。如果注冊表中找不到相關記錄,系統(tǒng)會嘗試自動為設備安裝驅(qū)動,否則就通過UI界面,要求用戶手動安裝驅(qū)動。動態(tài)配置設備。操作系統(tǒng)為設備動態(tài)地分配系統(tǒng)資源,設備可能需要用到的資源包括:IO地址空間、物理內(nèi)存映射、中斷、DMA等。設備驅(qū)動再根據(jù)它所動態(tài)獲取的資源來配置設備。比如一個支持硬件中斷的設備,它每次從系統(tǒng)處獲得的中斷號,都可能不同。那么設備和驅(qū)動程序,就不能假定設備的中斷號是一個固定的值。PNP接口。操作系統(tǒng)中有一個PNP管理器模塊,包含用戶和內(nèi)核兩個子模塊,所以它能夠?qū)τ脩舫绦蚝蛢?nèi)核驅(qū)動分別提供PNP支持。它們和設備驅(qū)動、用戶程序之間,有一個定義良好的接口。這個接口用來互相通知PNP事件。簡略地講,它包含三個方面:1. 當PNP管理器檢測到PNP事件的時候,能夠把這些事件通知給設備驅(qū)動。包括設備接入、移除、異常移除等。2. 當設備驅(qū)動需要向系統(tǒng)報告子設備的時候,能把這個信息通知給系統(tǒng)。當用戶程序想動態(tài)移除指定設備的時候,也可能通過UI程序?qū)崿F(xiàn),這些UI程序?qū)嶋H上是調(diào)用了系統(tǒng)提供的PNP接口來實現(xiàn)的。比如我們在移除U盤設備的時候,一般不會直接拔除,而是先通過托盤欄中的彈出設備程序移除設備,以免破壞數(shù)據(jù)。3. 驅(qū)動或用戶程序,還可以通過注冊通知函數(shù),來接收PNP通知。比如內(nèi)核驅(qū)動可以通過調(diào)用IoRegisterPlugPlayNotification函數(shù)注冊一個通知函數(shù),當感興趣的目標發(fā)生PNP事件時,PNP管理器就會調(diào)用它的通知函數(shù),并通過參數(shù)告知它PNP事件的詳細信息。用戶程序也可以通過WM_DEVICECHANGE消息來接收設備PNP的通知。這套接口,主要由PNP管理器所提供的若干接口函數(shù),若干類型為IRP_MJ_PNP的IRP包,及驅(qū)動程序所提供的AddDevice回調(diào)來實現(xiàn)。電源特性電源操作的目的是類似的,也是為了能夠在用戶盡量少介入的情況下,就能夠正確地配置和使用外部設備?,F(xiàn)代計算機和操作系統(tǒng),都實現(xiàn)了多個級別的系統(tǒng)和設備電源狀態(tài)。系統(tǒng)和設備可以在這些電源狀態(tài)之間進行切換,并達到正常情況下全力供電,空閑情況下盡量省電的目的。系統(tǒng)的電源狀態(tài)用S0-S5來標識。S0是正常狀態(tài),S1-S3是休眠狀態(tài),但休眠的深度有差別,S4是睡眠狀態(tài),S5是軟關機狀態(tài)(Soft Off,不完全等同于斷電)。除了S0和S5這兩個必須支持的狀態(tài)外,系統(tǒng)還支持哪些電源狀態(tài),是由系統(tǒng)BIOS決定的。一般來講,計算機系統(tǒng)都會支持S3和S4這兩個狀態(tài)。否則除了開機就是關機,電腦用起來會很麻煩。設備的電源狀態(tài)用D0-D3來標識。D0是正常狀態(tài),D1-D2是休眠狀態(tài),但深度有差別,D3是斷電狀態(tài)。其中D3還分Hot和Cold兩種子狀態(tài)。在D3Hot狀態(tài)下,設備的功能已喪失但仍有外部或總線供電,使得設備本身還能被系統(tǒng)檢測到。和設備相連的控制器設備認為此設備還連接著,只要控制器上有設備連接著,控制器就要處于工作狀態(tài)。但在D3Cold狀態(tài)下,系統(tǒng)已檢測不到設備,這可能是由于設備的已經(jīng)斷電了,或者系統(tǒng)本身已經(jīng)處于休眠狀態(tài)而導致的。和設備連接的控制器,已經(jīng)不認為設備和自己連著,在其它條件滿足的情況下,控制器可以進入完全的休眠狀態(tài)。設備電源狀態(tài),需要由設備本身和設備驅(qū)動一起來實現(xiàn)。有些設備只支持正常和斷電兩種狀態(tài)(即D0和D3),而沒有休眠的功能。那么設備驅(qū)動只需要處理D0和D3兩種狀態(tài)即可。有些設備則提供了休眠功能(即可進入D1或D2狀態(tài)),驅(qū)動程序在這種情況下,仍然可以決定支持或不支持設備的休眠狀態(tài)。在支持的情況下,當設備進入休眠狀態(tài)時,驅(qū)動程序負責關閉部分硬件模塊,讓其它模塊繼續(xù)工作。系統(tǒng)中有一個電源管理器模塊,它負責系統(tǒng)范圍內(nèi)的電源策略。當系統(tǒng)的電源狀態(tài)發(fā)生變化時,它負責把要進行的電源操作及電源狀態(tài),通知給每個設備棧,讓它們來處理電源變化。設備驅(qū)動需正確地處理電源事件,有很多系統(tǒng)藍屏就發(fā)生在驅(qū)動程序處理電源事件的過程中。物理設備的功能設備驅(qū)動,一般就是這個物理設備的電源策略制定者,功能設備驅(qū)動在設備初始化的時候,會把設備電源狀態(tài)映射到系統(tǒng)電源狀態(tài),并把這個映射匯報給電源管理器。這樣電源管理器就可以根據(jù)系統(tǒng)電源狀態(tài),發(fā)送相應的設備電源狀態(tài)給設備驅(qū)動。這個映射體現(xiàn)在設備管理器程序中的設備屬性界面中,我們可以通過它來觀察不同設備的電源狀態(tài)映射。
-
WINDOWS
+關注
關注
4文章
3612瀏覽量
91360 -
pnp
+關注
關注
11文章
329瀏覽量
52861 -
電源特性
+關注
關注
0文章
3瀏覽量
2646
發(fā)布評論請先 登錄
如何為電路選型?MDDNPN與PNP三極管的應用區(qū)別與選用要點
電源管理芯片使用中的特性
接近開關PNP與NPN區(qū)別
S8550(PNP型)和S8050(NPN型)的特性分別是什么?
PNP晶體管的工作原理,如何識別PNP晶體管
關于PNP晶體管的常見問題
什么是PNP和NPN晶體管?PNP和NPN有什么區(qū)別?
淺談Windows中的PNP和電源特性

評論