本發明屬于嵌入式技術領域,具體涉及一種基于Android智能操作系統的多任務TF密碼模塊的電源管理方法。
背景技術:
現有的TF商密密碼卡的電源管理方法主要分為如下幾種:
(1)操作系統底層發送指令
在這種方式下操作系統底層sdio/sd/mmc控制器驅動程序中注冊了Android的電源管理函數,接受操作系統統一管理,在Android智能終端需要進入到休眠狀態時調用底層控制器向TF密碼模塊發送休眠指令,在需要使用的時候向TF密碼模塊發送喚醒指令。
這種方式受限于操作系統的休眠喚醒機制,當用戶使用終端其他功能時將會導致操作系統無法進入休眠,TF密碼模塊雖然沒有業務需求,也無法進入休眠。
(2)操作系統底層卸載邏輯
這種電源管理方式與(1)類似,不同在于需要進入到休眠狀態時底層控制器是將TF密碼模塊邏輯卸載,在需要使用的時候重新識別TF密碼模塊。
這種方式不僅存在(1)中的弊端,另外對于TF密碼模塊邏輯的卸載與重新識別將會導致TF密碼模塊內部無法長期保存密碼資源狀態,這將限制TF密碼模塊的適用范圍。
(3)應用層提供電源管理接口方法
這種方式由TF密碼模塊提供應用層調用的電源管理相關的休眠喚醒接口,用戶自行設計電源管理流程。
這種方式對于應用層多任務調用TF密碼模塊存在較大的局限性,應用之間還需要維護TF密碼模塊的狀態情況,不僅難以實現,效率也會大大降低。
技術實現要素:
為了克服現有技術的上述缺點,本發明提供了一種多任務TF密碼模塊的電源管理方法,不同于現有的電源管理方法,基于對TF密碼模塊配套驅動程序的改造,結合操作系統的要求實現,無特別的維護需求,非常適合對功耗、密碼資源保持要求較高的TF密碼模塊。
本發明解決其技術問題所采用的技術方案是:一種多任務TF密碼模塊的電源管理方法,包括如下流程:
(1)Android終端開機后,操作系統為TF密碼模塊供電;Android終端通過TF密碼模塊驅動程序識別到TF密碼模塊;
(2)TF電源管理模塊進行初始化,在初始化完成后TF密碼模塊為喚醒狀態;
(3)判斷在睡眠定時器的超時時間內終端是否有業務發送到TF密碼模塊:如無,則令TF密碼模塊進入休眠狀態;如有,則進入下一流程;
(4)驅動程序查詢當前TF密碼模塊的狀態,如果為休眠狀態則執行喚醒操作后進行狀態維護操作;如果為喚醒狀態則直接進行狀態維護操作。
與現有技術相比,本發明的積極效果是:
(1)基于TF密碼模塊驅動程序的改造實現,無維護成本,并無新增設備或內核組件,適用性好。
(2)本發明遵循但不受限于操作系統的休眠喚醒機制,當TF密碼模塊只要沒有業務需求,到時間自動進入休眠,終端操作系統因為用戶其他操作無法進入休眠不會影響TF密碼模塊本身的休眠。這種方式大大降低了由于TF密碼模塊產生的功耗。另外本發明遵循操作系統的休眠喚醒機制,保證了當終端操作系統意圖進入深度睡眠之前,必須要首先保證TF密碼模塊進入了休眠,避免了終端和TF密碼模塊電源管理不一致造成的TF密碼模塊異常。
(3)本發明通過專用協議的電源管理方法,配置了終端控制器的工作方式,保證在Android操作系統、TF密碼模塊進入休眠后始終對TF密碼模塊供電,并使得控制器不卸載密碼模塊的邏輯,以保存TF密碼模塊內部密碼資源的狀態。
(4)本發明休眠喚醒屬于底層實現,狀態自行維護,休眠喚醒自適應,應用層無需維護TF密碼模塊的狀態情況,也沒有應用層的休眠喚醒接口,對于有多任務并行調用需求的TF密碼模塊來說,效率得到了較大的提高。
附圖說明
本發明將通過例子并參照附圖的方式說明,其中:
圖1為多任務TF密碼模塊電源管理系統組成示意圖;
圖2為TF電源管理模塊組成示意圖。
具體實施方式
多任務TF密碼模塊電源管理系統組成如圖1所示,主要包括了Android操作系統電源管理模塊、TF密碼模塊驅動程序、和TF密碼模塊,在進行密碼業務時通過智能終端的應用軟件或內核組件對密碼模塊的驅動程序進行函數調用,驅動程序通過標準sdio/sd/mmc協議統一調用密碼模塊。TF電源管理模塊屬于驅動程序的一部分,為本發明的主體。TF電源管理模塊如圖2所示。
TF電源管理模塊由定時器、線程、TF密碼模塊狀態機和操作系統電源管理邏輯組成。
本發明的實現方案如下:
驅動程序中的TF電源管理模塊和Android操作系統電源管理模塊、TF密碼模塊配合,完成支持多任務的TF密碼模塊的自適應的電源管理功能,具體流程如下:
(1)Android終端開機后,操作系統為TF密碼模塊供電;
(2)Android終端通過TF密碼模塊驅動程序識別到TF密碼模塊;
(3)TF電源管理模塊完成初始化,包括注冊操作系統電源管理體制函數、設置操作系統深度睡眠wakelock定時器、設置睡眠定時器、創建線程、初始化電源管理狀態機等工作。其中睡眠定時器的超時時間為N秒(N建議為大于5小于20),操作系統wakelock定時器的超時時間為N+1秒,該操作保證TF密碼模塊休眠后操作系統才能進入深度休眠。完成后TF密碼模塊為喚醒狀態;
(4)當終端超過N秒沒有業務發送到TF密碼模塊,TF電源管理模塊認為TF密碼模塊需要進入休眠狀態;
(5)電源管理模塊按照專用休眠協議與TF密碼模塊進行交互,讓TF密碼模塊休眠,并修改電源管理狀態機,維護底層控制器物理電壓和邏輯狀態。至此完成TF密碼模塊的自適應休眠。
(6)當某一包終端業務數據到達驅動程序,驅動程序通過電源管理模塊的狀態機查詢當前TF密碼模塊的狀態,如果為休眠狀態則跳轉到(7)執行喚醒操作,如果為喚醒狀態則進入(8)進行狀態維護操作。
(7)電源管理模塊按照專用喚醒協議與TF密碼模塊進行交互,喚醒TF密碼模塊,隨后回到正常業務交互,至此完成TF密碼模塊的自適應喚醒。
(8)狀態維護內容包括重置TF電源模塊中的睡眠定時器時間、重置操作系統wakelock定時器時間、更新電源管理狀態機等操作。重置定時器采用操作系統內核提供的mod_timer函數。完成狀態后,終端將重新回到流程(3)完成后的狀態(即:TF密碼模塊為喚醒狀態)。