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

淺談Windows中的PNP和電源特性

評論