專利名稱:內(nèi)置攝像頭的電源管理方法
技術領域:
本發(fā)明涉及通用串行總線設備的電源管理方法,尤指一種內(nèi)置攝像頭的電源管理方法。
背景技術:
隨著USB(Universal Serial Bus,通用串行總線)接口的被動響應的通用串行總線設備的集成度的提高,例如,以攝像頭為例,越來越多的筆記本電腦提供內(nèi)置攝像頭功能。內(nèi)置攝像頭會導致系統(tǒng)功耗增加,主要有兩個原因第一、內(nèi)置攝像頭大部分都是USB(1.1/2.0)接口,即使攝像頭處于不工作狀態(tài)也需要消耗電能。第二、因為系統(tǒng)插入USB設備后,CPU會脫離低功耗狀態(tài);所以,筆記本內(nèi)置攝像頭后,只要在開機狀態(tài)下,從系統(tǒng)角度看USB設備將一直存在,這種情況下CPU就永遠不會進入到低功耗狀態(tài),從而導致功耗的增加。
對于USB設備來說,一但插到系統(tǒng)上。USB的信號線會一直有信號輸出,所以試圖通過改造硬件、增加硬件監(jiān)控電路來判別USB設備是否有信號傳輸狀態(tài)難度很大,即使能實現(xiàn),這種做法成本也很高。
USB攝像頭同樣也存在這種問題。內(nèi)置攝像頭需要從筆記本USB接口取電,所以沒辦法做到根據(jù)需要對自身電源開關的控制,例如在開機狀態(tài)下。攝像頭內(nèi)置后,用戶無法通過插拔攝像頭來降低整個系統(tǒng)功耗。用硬件實現(xiàn)攝像頭自動控制會造成筆記本成本的增加,而且會影響整個筆記本的硬件設計,實現(xiàn)難度也很大。在用戶體驗方面不友好,例如如果開機時用戶忘記打開攝像頭電源,運行攝像頭相關的軟件時,系統(tǒng)會報錯;如果固件(Firmware)在開機時缺省把攝像頭打開,而用戶并沒有使用攝像頭相關軟件,會造成系統(tǒng)功耗上升,影響電池續(xù)航能力。
發(fā)明內(nèi)容
本發(fā)明解決的問題是提供一種內(nèi)置攝像頭的電源管理方法,僅在USB設備工作時供電。
為解決上述問題,本發(fā)明內(nèi)置攝像頭的電源管理方法,包括步驟開關設置步驟,通過主板芯片輸出端口輸出的電平高低控制系統(tǒng)電源和攝像頭通用串行總線接口斷開或接通;電源控制步驟,控制主板芯片輸出端口的電平輸出,使僅在攝像應用加載時為攝像頭供電。
電源控制步驟其中一種實現(xiàn)方式進一步包括
1)創(chuàng)建虛擬攝像模塊,通知操作系統(tǒng)虛擬攝像頭已經(jīng)加載,所述虛擬攝像模塊提供攝像應用的調(diào)用接口;
2)等待系統(tǒng)事件,判斷攝像應用是否加載;
3)如果攝像應用加載,則通過讀取主板芯片輸出端口輸出的電平判斷攝像頭是否上電,在攝像頭沒有上電時,則直接設置主板芯片輸出端口寄存器的值來改寫的該輸出端口的輸出電平值或者通過主板芯片輸出端口模擬攝像頭插入動作,使攝像頭上電;
4)如果攝像應用沒有加載,則在應用列表為空時通知操作系統(tǒng)卸載物理攝像模塊,并控制主板芯片輸出端口的輸出電平使系統(tǒng)電源和攝像頭通用串行總線接口斷開。
所述步驟2)中判斷攝像應用是否加載通過判斷初始化函數(shù)是否被調(diào)用實現(xiàn)。
所述步驟3)中于主板芯片輸出端口模擬攝像頭插入動作進一步包括控制主板芯片輸出端口的輸出電平使通用串行總線接口與系統(tǒng)電源斷開;延時;控制主板芯片輸出端口的輸出電平使通用串行總線接口與系統(tǒng)電源接通。
步驟3)進一步包括等待操作系統(tǒng)加載物理攝像模塊;判斷物理攝像模塊是否加載完畢,如果未加載完畢則繼續(xù)等待,如果加載完畢,則更新應用列表,并進行加載應用。
所述物理攝像模塊是否加載完畢通過操作系統(tǒng)的裝置改變事件,調(diào)用裝置加載控制函數(shù)獲得通用串行總線接口設備名稱、設備標識及設備屬性來判斷。
所述步驟4)進一步包括在攝像應用沒有加載時,虛擬攝像模塊內(nèi)部計數(shù)器的改變判斷攝像應用是否卸載;如果卸載則更新應用列表,如果未卸載則返回步驟1);在應用列表不為空時返回步驟1)。
電源控制步驟另一實現(xiàn)方式進一步包括開啟步驟響應按鍵,在開啟攝像頭應用時則通過讀取主板芯片輸出端口輸出的電平判斷攝像頭是否上電;在攝像頭沒有上電時,則直接在主板芯片輸出端口寄存器改寫的該輸出端口的輸出電平或者通過主板芯片輸出端口模擬攝像頭插入動作,使攝像頭上電;關閉步驟響應按鍵,在關閉攝像頭應用時,則通過讀取主板芯片輸出端口輸出的電平判斷攝像頭是否關電;如果未關電,則控制主板芯片輸出端口的輸出電平使系統(tǒng)電源和攝像頭通用串行總線接口斷開或者通知操作系統(tǒng)將物理攝像模塊從操作系統(tǒng)移除。
操作系統(tǒng)卸載物理攝像模塊的實現(xiàn)方式包括有使用高級配置與電源接口通知操作系統(tǒng)關閉物理攝像模塊;或者,使用操作系統(tǒng)提供的函數(shù)禁用物理攝像模塊;或者,采用驅(qū)動過濾器生成輸入輸出請求包,傳送停止或移出信息給物理攝像模塊;或者,控制主板芯片輸出端口的輸出電平使系統(tǒng)電源和攝像頭通用串行總線接口斷開。
開關設置步驟中進一步包括開關串聯(lián)在系統(tǒng)電源和攝像頭通用串行總線接口之間;主板芯片輸出端口與開關控制端連接。
與現(xiàn)有技術相比,本發(fā)明具有以下優(yōu)點
修改內(nèi)置攝像頭設備的硬件電路,在攝像頭連接的USB接口處,使用GPIO來控制USB接插件的電,通過對GPIO的控制,達到控制攝像頭電源的目的,從而延長電池續(xù)航能力且實現(xiàn)需要的硬件成本很低。
通過本發(fā)明能夠自動檢測攝像頭是否在工作,根據(jù)攝像頭的工作狀態(tài),自動、安全地把攝像頭從操作系統(tǒng)中移除或加載,通知設備內(nèi)置開關關閉或開啟攝像頭電源,達到節(jié)電的功能。
用戶用鍵盤熱鍵/按鈕控制電源開關條件下,關閉電源前能夠保證攝像頭設備已經(jīng)在OS中安全刪除,避免了強制拉電會導致攝像頭燒毀的可能。同時關閉電源前,可以自動把攝像頭攝像應用經(jīng)卸載或者應用收到關閉信息后作一定處理,增強了使用性。
無鍵盤熱鍵/按鈕控制情況下,提供安全的內(nèi)置電源控制方法,不需要用戶干預,無論攝像頭電源開關與否,用戶都能在系統(tǒng)中尋找到攝像頭設備,增強了用戶體驗。
上述兩種情況都可以達到在內(nèi)置攝像頭沒有被用戶使用的情況下,自動把攝像頭從操作系統(tǒng)中卸載(也可以同時關閉攝像頭電源),消除因為攝像頭的存在而導致系統(tǒng)功耗增加的可能。
圖1是本發(fā)明內(nèi)置攝像頭的電源管理方法流程圖。
圖2是本發(fā)明第一實施例流程圖。
圖3a、3b是本發(fā)明電路圖。
圖4是本發(fā)明第二實施例流程圖。
具體實施例方式
請參照圖1所示,本發(fā)明內(nèi)置攝像頭的電源管理方法,包括步驟
開關設置步驟,通過主板芯片輸出端口輸出的電平高低控制系統(tǒng)電源和攝像頭通用串行總線接口斷開或接通;
電源控制步驟,控制主板芯片輸出端口的電平輸出,使僅在攝像應用加載時為攝像頭供電。
請參照圖2所示電源控制步驟的第一實施例,包括
1)創(chuàng)建虛擬攝像模塊(Camera Shadow),通知操作系統(tǒng)虛擬攝像頭已經(jīng)加載(只要Camera Shadow被加載則操作系統(tǒng)就認為攝像頭存在,虛擬攝像模塊在系統(tǒng)啟動時會被加載,只要虛擬模塊加載,操作系統(tǒng)就會認為有攝像設備存在,這樣不會因攝像頭硬件沒上電而導致操作系統(tǒng)不加載攝像模塊,從而不會給用戶尋找攝像應用造成困難),所述虛擬攝像模塊提供攝像應用的調(diào)用接口,如果操作系統(tǒng)是XP,則Camera Shadow為攝像應用提供組件對象模型(COM)接口;
2)等待系統(tǒng)事件,判斷攝像應用是否加載,如果操作系統(tǒng)是XP,每個攝像應用被啟動且用到攝像頭時會調(diào)用到Camera Shadow的COM接口;系統(tǒng)事件指用戶使用鼠標、鍵盤、其他方式(例如系統(tǒng)啟動時自動執(zhí)行)等把攝像應用叫出;
3)如果攝像應用加載,則通過讀取主板芯片輸出端口輸出的電平判斷攝像頭是否上電,在攝像頭沒有上電時,則直接在主板芯片輸出端口寄存器改寫的該輸出端口的輸出電平值或者通過主板芯片輸出端口模擬攝像頭插入動作,使攝像頭上電;
4)如果攝像應用沒有加載,則在應用列表為空時通知操作系統(tǒng)卸載物理攝像模塊,并控制主板芯片輸出端口的輸出電平使系統(tǒng)電源和攝像頭通用串行總線接口斷開。
物理攝像模塊,與攝像頭硬件有關的模塊,只有在設備上電后,才會加載,加載過程完全由OS控制。在XP上可以認為是一個USB攝像驅(qū)動程序,直接操作攝像頭(例如對數(shù)據(jù)的讀、寫);與Camera Shadow通過操作系統(tǒng)進行通訊,具體通訊方法由操作系統(tǒng)實現(xiàn)的)。。
攝像應用通過操作系統(tǒng)提供的接口來獲取Camera Shadow模塊的調(diào)用接口,從而實現(xiàn)攝像應用。
所述步驟2)中判斷攝像應用是否加載通過判斷初始化函數(shù)是否被調(diào)用實現(xiàn)。具體判斷加載應用是否加載的方法很多。
方法一,在XP上,攝像應用一般使用COM來訪問攝像相關接口。例如通過CoCreateInstance()函數(shù)和QueryInterface()可以得到IWiaMiniDrv接口;獲得IWiaMiniDrv后,攝像應用會調(diào)用IWiaMiniDrv:drvInitializeWia來初始化攝像設備。當這一個函數(shù)調(diào)用時,就可以確定有攝像應用加載。IWiaMiniDrv是一個COM接口,有內(nèi)部計數(shù)器。當計數(shù)器變0時,表示沒有任何攝像應用在運行,計數(shù)器不為0就是有相關攝像應用在運行。
方法二同方法一相似,不過使用的是IStiUSD接口和IStiUSD的Initialize()函數(shù)。當這個函數(shù)被調(diào)用時,也可以作為攝像應用初始化的依據(jù)。IStiUSD的計數(shù)器可以作為是否有攝像應用在運行的依據(jù)。
步驟3)中主板芯片輸出端口模擬攝像頭插入動作進一步包括控制主板芯片輸出端口的輸出電平使通用串行總線接口與系統(tǒng)電源斷開;延時(例如2秒);控制主板芯片輸出端口的輸出電平使通用串行總線接口與系統(tǒng)電源接通。
請參照圖3所示,開關設置步驟中進一步包括開關串聯(lián)在系統(tǒng)電源和攝像頭通用串行總線接口之間;主板芯片輸出端口與開關控制端連接。本實施例主板芯片輸出端口以GPIO(通用輸入輸出接口為例)。GPIO可以輸出‘0’或者‘1’。當GPIO為0時,USB1PWR會有電壓輸出給攝像頭通用串行總線接口;當GPIO為1時,USB1PWR沒有電壓存在,攝像頭通用串行總線接口不會有電,反之亦然。
步驟3)直接在主板芯片輸出端口寄存器改寫的該輸出端口的輸出電平值使攝像頭上電,本實施例中以對GPIO的控制為例,只是對主板芯片和該GPIO相關的寄存器的某個bit進行0或1操作。以南橋芯片(ICH6)為例,假設GPIO的物理地址是0x1300,使用的GPIO是33。那么GPIO33的物理偏移是0x1338,相對應的bit是bit1。
對GPIO的控制可以如下實現(xiàn)
......mov dx,1338hin al,dxor al,00000010bout dx,al......<!-- SIPO <DP n="6"> --><dp n="d6"/>也可以使用ACPI的方式來控制,參考如下OperationRegion(GPIO,SystemIo,0x1300,0x3C)Field(GPIO,ByteAcc,NoLock,Preserve){.........Offset(0x38),//GPIO,Level,Bank 1, 1,GP33, 1,GP34,1,, 5,.........}……Method(_Q34){If(GP33){Store(0,GP33)}Else{Store(1,GP33)}}
請繼續(xù)參照圖2,步驟3)進一步包括等待操作系統(tǒng)加載物理攝像模塊;
判斷物理攝像模塊是否加載完畢,如果未加載完畢則繼續(xù)等待,如果加載完畢,則更新應用列表,并進行加載應用。
所述物理攝像模塊是否加載完畢通過操作系統(tǒng)的裝置改變事件,調(diào)用裝置加載控制函數(shù)獲得通用串行總線接口設備名稱、設備標識及設備屬性來判斷。Camera shadow是一直存在的。在XP上可以如下判斷生成一個窗口接收OS發(fā)送出的WM_DEVICECHANGE(裝置改變)事件。如果這一事件發(fā)生,調(diào)用裝置加載控制函數(shù)DeviceIoControl(....,IOCTL_USB_GET_NODE_INFORMATION,....)和DeviceIoControl(...,IOCTL_USB_GET_NODE_CONNECTION_INFORMATION,...)來獲取USB設備信息,根據(jù)USB設備的名稱、設備標識(Device ID)、設備屬性來判斷出物理攝像模塊是否加載完成。
請繼續(xù)參照圖2所示步驟4)進一步包括在攝像應用沒有加載時,判斷攝像應用是否卸載;如果卸載則更新應用列表,如果未卸載則返回步驟1);在應用列表不為空時返回步驟1)。所述攝像應用卸載通過Camera Shadow的調(diào)用接口例如IWiaMiniDrv接口和IStiUSD接口,有內(nèi)部計數(shù)器。每打開一個攝像應用時計數(shù)器加1;反之,每卸載/關閉一個攝像應用時計數(shù)器減1,通過計數(shù)器的加減變化判斷攝像應用是否卸載;當計數(shù)器變0時,表示沒有任何攝像應用在運行,計數(shù)器不為0就是有相關攝像應用在運行。
請參照圖4所示,電源控制步驟的第二實施例通過熱鍵或按鈕響應來實現(xiàn)的,第二實施例具體實現(xiàn)可以參照第一實施例,包括
開啟步驟響應按鍵,在開啟攝像頭應用時則通過讀取主板芯片輸出端口輸出的電平判斷攝像頭是否上電;在攝像頭沒有上電時,則直接在主板芯片輸出端口寄存器改寫的該輸出端口的輸出電平值或者通過主板芯片輸出端口模擬攝像頭插入動作,使攝像頭上電;
關閉步驟響應按鍵,在關閉攝像頭應用時,則通過讀取主板芯片輸出端口輸出的電平判斷攝像頭是否關電;如果未關電,則控制主板芯片輸出端口的輸出電平使系統(tǒng)電源和攝像頭通用串行總線接口斷開或者通知操作系統(tǒng)將物理攝像模塊從操作系統(tǒng)移除;如果關電操作系統(tǒng)會自動卸載物理攝像模塊。
其他處理主要指用戶可以收到熱鍵后在上電后或者關電前作的一些處理。例如可以打開攝像頭應用軟件,或者關閉攝像頭應用軟件。
所述操作系統(tǒng)卸載物理攝像模塊的實現(xiàn)方式包括有
使用高級配置與電源接口通知操作系統(tǒng)關閉物理攝像模塊,例如Notify(xxx,01),其中xxx表示攝像頭設備;或者,
使用操作系統(tǒng)提供的函數(shù)(例如DeviceIoControl()可以通知USB驅(qū)動禁用、關閉端口)禁用物理攝像模塊;或者,
采用驅(qū)動過濾器(Filter Driver)生成輸入輸出請求包(IPR),傳送停止或移出信息(Stop/Remove)給物理攝像模塊;或者,
控制主板芯片輸出端口的輸出電平使系統(tǒng)電源和攝像頭通用串行總線接口斷開,例如如果GPIO1時,電平拉低,直接設置GPIO為0。
修改內(nèi)置攝像頭設備的硬件電路,在攝像頭連接的USB接口處,使用GPIO來控制USB接插件的電,通過對GPIO的控制,達到控制攝像頭電源的目的,從而延長電池續(xù)航能力且實現(xiàn)需要的硬件成本很低。
通過本發(fā)明能夠自動檢測攝像頭是否在工作,根據(jù)攝像頭的工作狀態(tài),自動、安全地把攝像頭從操作系統(tǒng)中移除或加載,通知設備內(nèi)置開關關閉或開啟攝像頭電源,達到節(jié)電的功能。
用戶用鍵盤熱鍵/按鈕控制電源開關條件下,關閉電源前能夠保證攝像頭設備已經(jīng)在OS中安全刪除,避免了強制拉電會導致攝像頭燒毀的可能。同時關閉電源前,可以自動把攝像頭攝像應用經(jīng)卸載或者應用收到關閉信息后作一定處理,增強了使用性。
無鍵盤熱鍵/按鈕控制情況下,提供安全的內(nèi)置電源控制方法,不需要用戶干預,無論攝像頭電源開關與否,用戶都能在系統(tǒng)中尋找到攝像頭設備,增強了用戶體驗。
上述兩種情況都可以達到在內(nèi)置攝像頭沒有被用戶使用的情況下,自動把攝像頭從操作中卸載時關閉攝像頭電源,消除因為攝像頭的存在而導致系統(tǒng)功耗增加的可能。
另外,本發(fā)明也適合于除攝像頭以外的被動的USB設備,只能被動的由系統(tǒng)控制。
權利要求
1.一種內(nèi)置攝像頭的電源管理方法,其特征在于包括步驟
開關設置步驟,通過主板芯片輸出端口輸出的電平高低控制系統(tǒng)電源和攝像頭通用串行總線接口斷開或接通;
電源控制步驟,控制主板芯片輸出端口的電平輸出,使僅在攝像應用加載時為攝像頭供電。
2.如權利要求1所述的內(nèi)置攝像頭的電源管理方法,其特征在于電源控制步驟進一步包括
1)創(chuàng)建虛擬攝像模塊,通知操作系統(tǒng)虛擬攝像頭已經(jīng)加載,所述虛擬攝像模塊提供攝像應用的調(diào)用接口;
2)等待系統(tǒng)事件,判斷攝像應用是否加載;
3)如果攝像應用加載,則通過讀取主板芯片輸出端口輸出的電平判斷攝像頭是否上電,在攝像頭沒有上電時,則直接設置主板芯片輸出端口寄存器的值來改寫的該輸出端口的輸出電平值或者通過主板芯片輸出端口模擬攝像頭插入動作,使攝像頭上電;
4)如果攝像應用沒有加載,則在應用列表為空時通知操作系統(tǒng)卸載物理攝像模塊,并控制主板芯片輸出端口的輸出電平使系統(tǒng)電源和攝像頭通用串行總線接口斷開。
3.如權利要求2所述的內(nèi)置攝像頭的電源管理方法,其特征在于所述步驟2)中判斷攝像應用是否加載通過判斷初始化函數(shù)是否被調(diào)用實現(xiàn)。
4.如權利要求2所述的內(nèi)置攝像頭的電源管理方法,其特征在于步驟3)中主板芯片輸出端口模擬攝像頭插入動作進一步包括
控制主板芯片輸出端口的輸出電平使通用串行總線接口與系統(tǒng)電源斷開;
延時;
控制主板芯片輸出端口的輸出電平使通用串行總線接口與系統(tǒng)電源接通。
5.如權利要求2、3或4所述的內(nèi)置攝像頭的電源管理方法,其特征在于步驟3)進一步包括
等待操作系統(tǒng)加載物理攝像模塊;
判斷物理攝像模塊是否加載完畢,如果未加載完畢則繼續(xù)等待,如果加載完畢,則更新應用列表,并進行加載應用。
6.如權利要求5所述的內(nèi)置攝像頭的電源管理方法,其特征在于物理攝像模塊是否加載完畢通過操作系統(tǒng)的裝置改變事件,調(diào)用裝置加載控制函數(shù)獲得通用串行總線接口設備名稱、設備標識及設備屬性來判斷。
7.如權利要求2、3或4所述的內(nèi)置攝像頭的電源管理方法,其特征在于步驟4)進一步包括在攝像應用沒有加載時,虛擬攝像模塊內(nèi)部計數(shù)器的改變判斷攝像應用是否卸載;如果卸載則更新應用列表,如果未卸載則返回步驟1);在應用列表不為空時返回步驟1)。
8.如權利要求1所述的內(nèi)置攝像頭的電源管理方法,其特征在于電源控制步驟進一步包括
開啟步驟響應按鍵,在開啟攝像頭應用時則通過讀取主板芯片輸出端口輸出的電平判斷攝像頭是否上電;在攝像頭沒有上電時,則直接在主板芯片輸出端口寄存器改寫的該輸出端口的輸出電平或者通過主板芯片輸出端口模擬攝像頭插入動作,使攝像頭上電;
關閉步驟響應按鍵,在關閉攝像頭應用時,則通過讀取主板芯片輸出端口輸出的電平判斷攝像頭是否關電;如果未關電,則控制主板芯片輸出端口的輸出電平使系統(tǒng)電源和攝像頭通用串行總線接口斷開或者通知操作系統(tǒng)將物理攝像模塊從操作系統(tǒng)移除。
9.如權利要求2或8所述的內(nèi)置攝像頭的電源管理方法,其特征在于,操作系統(tǒng)卸載物理攝像模塊的實現(xiàn)方式包括有
使用高級配置與電源接口通知操作系統(tǒng)關閉物理攝像模塊;或者,
使用操作系統(tǒng)提供的函數(shù)禁用物理攝像模塊;或者,
采用驅(qū)動過濾器生成輸入輸出請求包,傳送停止或移出信息給物理攝像模塊;或者,
控制主板芯片輸出端口的輸出電平使系統(tǒng)電源和攝像頭通用串行總線接口斷開。
10.如權利要求1所述的內(nèi)置攝像頭的電源管理方法,其特征在于,開關設置步驟中進一步包括開關串聯(lián)在系統(tǒng)電源和攝像頭通用串行總線接口之間;
主板芯片輸出端口與開關控制端連接。
全文摘要
本發(fā)明公開一種內(nèi)置攝像頭的電源管理方法,包括步驟開關設置步驟,通過主板芯片輸出端口輸出的電平高低控制系統(tǒng)電源和攝像頭通用串行總線接口斷開或接通;電源控制步驟,控制主板芯片輸出端口的電平輸出,使僅在攝像應用加載時為攝像頭供電。本發(fā)明修改內(nèi)置攝像頭設備的硬件電路,在攝像頭連接的USB接口處,使用GPIO來控制USB接插件的電,通過對GPIO的控制,達到控制攝像頭電源的目的,從而延長電池續(xù)航能力且實現(xiàn)需要的硬件成本很低。
文檔編號G06F1/32GK1808338SQ20051000186
公開日2006年7月26日 申請日期2005年1月18日 優(yōu)先權日2005年1月18日
發(fā)明者劉旭國, 程孝仁, 袁康 申請人:聯(lián)想(北京)有限公司