本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種設(shè)備驅(qū)動程序加載方法、終端及系統(tǒng)。
背景技術(shù):
設(shè)備驅(qū)動程序是一種允許計(jì)算機(jī)軟件與硬件交互的程序,可以作為硬件設(shè)備的接口提供給終端,以實(shí)現(xiàn)終端對硬件設(shè)備的控制。那么,對于連接至終端的任一嵌入式設(shè)備,只有該終端加載該嵌入式設(shè)備的設(shè)備驅(qū)動程序之后,才能與該嵌入式設(shè)備進(jìn)行數(shù)據(jù)交互。
加載設(shè)備驅(qū)動程序時,該終端通常采用靜態(tài)加載的方式,也即是,在獲取設(shè)備驅(qū)動程序后,直接將該設(shè)備驅(qū)動程序編譯到內(nèi)核中,待內(nèi)核啟動后,即可直接加載該設(shè)備驅(qū)動程序。之后,當(dāng)該設(shè)備驅(qū)動程序匹配的嵌入式設(shè)備連接至該終端時,該終端即可通過該設(shè)備驅(qū)動程序,與該嵌入式設(shè)備進(jìn)行數(shù)據(jù)交互。
在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
該終端只能加載已獲取到的設(shè)備驅(qū)動程序,一旦該終端未獲取到某一嵌入式設(shè)備的設(shè)備驅(qū)動程序,將無法實(shí)現(xiàn)加載,也將無法與該嵌入式設(shè)備進(jìn)行數(shù)據(jù)交互,局限性強(qiáng)。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種設(shè)備驅(qū)動程序加載方法、終端及系統(tǒng)。所述技術(shù)方案如下:
一方面,提供了一種設(shè)備驅(qū)動程序加載方法,應(yīng)用于終端中,所述終端包括內(nèi)核空間、用戶空間和文件管理器,所述方法包括:
當(dāng)嵌入式設(shè)備連接至所述終端時,所述內(nèi)核空間發(fā)起設(shè)備連接事件;
所述用戶空間監(jiān)聽到所述設(shè)備連接事件,并確定未加載所述嵌入式設(shè)備的設(shè)備驅(qū)動程序時,向所述文件管理器發(fā)送獲取消息,所述獲取消息用于指示獲取所述嵌入式設(shè)備的設(shè)備驅(qū)動程序;
所述文件管理器接收到所述獲取消息時,從存儲設(shè)備獲取所述設(shè)備驅(qū)動程序,返回給所述用戶空間,所述存儲設(shè)備用于存儲至少一個設(shè)備驅(qū)動程序;
所述用戶空間和所述內(nèi)核空間從所述文件管理器加載所述設(shè)備驅(qū)動程序。
可選地,所述當(dāng)嵌入式設(shè)備連接至所述終端時,所述內(nèi)核空間發(fā)起設(shè)備連接事件,包括:
當(dāng)所述嵌入式設(shè)備連接至所述終端時,所述內(nèi)核空間啟動設(shè)備服務(wù)進(jìn)程;
通過所述設(shè)備服務(wù)進(jìn)程,發(fā)起所述設(shè)備連接事件。
可選地,所述用戶空間運(yùn)行設(shè)備管理器和udevd進(jìn)程,所述用戶空間監(jiān)聽到所述設(shè)備連接事件,并確定未加載所述嵌入式設(shè)備的設(shè)備驅(qū)動程序時,向所述文件管理器發(fā)送獲取消息,包括:
所述用戶空間監(jiān)聽到所述設(shè)備連接事件,通過所述設(shè)備管理器,遍歷已加載的設(shè)備驅(qū)動程序,判斷遍歷到的設(shè)備驅(qū)動程序是否與所述嵌入式設(shè)備匹配;
當(dāng)確定遍歷到的所有設(shè)備驅(qū)動程序與所述嵌入式設(shè)備均不匹配時,所述設(shè)備管理器向所述內(nèi)核空間返回未加載所述嵌入式設(shè)備的設(shè)備驅(qū)動程序的通知消息;
所述內(nèi)核空間接收到所述通知消息時,向所述用戶空間發(fā)送獲取設(shè)備驅(qū)動程序的事件;
所述用戶空間通過所述udevd進(jìn)程,向所述文件管理器發(fā)送所述獲取消息。
可選地,所述文件管理器接收到所述獲取消息時,從存儲設(shè)備獲取所述設(shè)備驅(qū)動程序,包括:
所述文件管理器通過已建立的網(wǎng)絡(luò)連接,從所述存儲設(shè)備中下載所述設(shè)備驅(qū)動程序;或者,
所述文件管理器從已連接至所述終端的存儲設(shè)備中,拷貝所述設(shè)備驅(qū)動程序。
可選地,所述用戶空間和所述內(nèi)核空間從所述文件管理器加載所述設(shè)備驅(qū)動程序,包括:
所述用戶空間顯示活動窗口,獲取用戶在所述活動窗口中輸入的所述嵌入式設(shè)備的相關(guān)參數(shù);
所述用戶空間調(diào)用所述活動窗口獲取所述相關(guān)參數(shù),并基于所述相關(guān)參數(shù)從所述文件管理器加載所述設(shè)備驅(qū)動程序;
所述內(nèi)核空間注冊所述設(shè)備驅(qū)動程序,并在確定所述設(shè)備驅(qū)動程序與所述嵌入式設(shè)備匹配的情況下,注冊所述嵌入式設(shè)備;
所述內(nèi)核空間向所述用戶空間發(fā)送加載成功事件,所述用戶空間接收到所述加載成功事件時,創(chuàng)建與所述嵌入式設(shè)備匹配的設(shè)備節(jié)點(diǎn)。
另一方面,提供了一種終端,所述終端包括內(nèi)核空間、用戶空間和文件管理器;
所述內(nèi)核空間,用于當(dāng)嵌入式設(shè)備連接至所述終端時,發(fā)起設(shè)備連接事件;
所述用戶空間,用于監(jiān)聽到所述設(shè)備連接事件,并確定未加載所述嵌入式設(shè)備的設(shè)備驅(qū)動程序時,向所述文件管理器發(fā)送獲取消息,所述獲取消息用于指示獲取所述嵌入式設(shè)備的設(shè)備驅(qū)動程序;
所述文件管理器,用于接收到所述獲取消息時,從存儲設(shè)備獲取所述設(shè)備驅(qū)動程序,返回給所述用戶空間,所述存儲設(shè)備用于存儲至少一個設(shè)備驅(qū)動程序;
所述用戶空間和所述內(nèi)核空間,還用于從所述存儲設(shè)備加載所述設(shè)備驅(qū)動程序。
可選地,所述內(nèi)核空間還用于當(dāng)所述嵌入式設(shè)備連接至所述終端時,啟動設(shè)備服務(wù)進(jìn)程;通過所述設(shè)備服務(wù)進(jìn)程,發(fā)起所述設(shè)備連接事件。
可選地,所述用戶空間運(yùn)行設(shè)備管理器和udevd進(jìn)程,所述用戶空間還用于監(jiān)聽到所述設(shè)備連接事件,通過所述設(shè)備管理器,遍歷已加載的設(shè)備驅(qū)動程序,判斷遍歷到的設(shè)備驅(qū)動程序是否與所述嵌入式設(shè)備匹配;當(dāng)確定遍歷到的所有設(shè)備驅(qū)動程序與所述嵌入式設(shè)備均不匹配時,所述設(shè)備管理器向所述內(nèi)核空間返回未加載所述嵌入式設(shè)備的設(shè)備驅(qū)動程序的通知消息;
所述內(nèi)核空間還用于接收到所述通知消息時,向所述用戶空間發(fā)送獲取設(shè)備驅(qū)動程序的事件;
所述用戶空間,還用于通過所述udevd進(jìn)程,向所述文件管理器發(fā)送所述獲取消息。
可選地,所述文件管理器還用于通過已建立的網(wǎng)絡(luò)連接,從所述存儲設(shè)備中下載所述設(shè)備驅(qū)動程序;或者,從已連接至所述終端的存儲設(shè)備中,拷貝所述設(shè)備驅(qū)動程序。
可選地,所述用戶空間還用于顯示活動窗口,獲取用戶在所述活動窗口中輸入的所述嵌入式設(shè)備的相關(guān)參數(shù);調(diào)用所述活動窗口獲取所述相關(guān)參數(shù),并基于所述相關(guān)參數(shù)從所述文件管理器加載所述設(shè)備驅(qū)動程序;
所述內(nèi)核空間還用于注冊所述設(shè)備驅(qū)動程序,并在確定所述設(shè)備驅(qū)動程序與所述嵌入式設(shè)備匹配的情況下,注冊所述嵌入式設(shè)備;向所述用戶空間發(fā)送加載成功事件;
所述用戶空間還用于接收到所述加載成功事件時,創(chuàng)建與所述嵌入式設(shè)備匹配的設(shè)備節(jié)點(diǎn)。
再一方面,提供了一種系統(tǒng),所述系統(tǒng)包括嵌入式設(shè)備、終端和存儲設(shè)備,所述終端包括內(nèi)核空間、用戶空間和文件管理器;
所述內(nèi)核空間,用于當(dāng)所述嵌入式設(shè)備連接至所述終端時,發(fā)起設(shè)備連接事件;
所述用戶空間,用于監(jiān)聽到所述設(shè)備連接事件,并確定未加載所述嵌入式設(shè)備的設(shè)備驅(qū)動程序時,向所述文件管理器發(fā)送獲取消息,所述獲取消息用于指示獲取所述嵌入式設(shè)備的設(shè)備驅(qū)動程序;
所述文件管理器,用于接收到所述獲取消息時,從所述存儲設(shè)備獲取所述設(shè)備驅(qū)動程序,返回給所述用戶空間,所述存儲設(shè)備用于存儲至少一個設(shè)備驅(qū)動程序;
所述用戶空間和所述內(nèi)核空間,還用于從所述存儲設(shè)備加載所述設(shè)備驅(qū)動程序。
本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:
通過在存儲設(shè)備中存儲至少一個設(shè)備驅(qū)動程序,當(dāng)該終端已連接嵌入式設(shè)備,但還未加載該嵌入式設(shè)備的設(shè)備驅(qū)動程序時,可以由文件管理器從存儲設(shè)備中獲取該設(shè)備驅(qū)動程序,從而完成加載過程,擺脫了該終端只能加載已獲取到的設(shè)備驅(qū)動程序的限制,提高了靈活性。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例提供的一種設(shè)備驅(qū)動程序加載方法的流程圖;
圖2是本發(fā)明實(shí)施例提供的一種設(shè)備驅(qū)動程序加載方法的流程圖;
圖3是本發(fā)明實(shí)施例提供的一種設(shè)備驅(qū)動程序加載裝置的結(jié)構(gòu)示意圖;
圖4是本發(fā)明實(shí)施例提供的一種終端的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
圖1是本發(fā)明實(shí)施例提供的一種設(shè)備驅(qū)動程序加載方法的流程圖。該發(fā)明實(shí)施例的執(zhí)行主體為終端,該終端包括內(nèi)核空間、用戶空間和文件管理器,參見圖1,該方法包括:
101、當(dāng)嵌入式設(shè)備連接至該終端時,該內(nèi)核空間發(fā)起設(shè)備連接事件。
102、該用戶空間監(jiān)聽到該設(shè)備連接事件,并確定未加載該嵌入式設(shè)備的設(shè)備驅(qū)動程序時,向該文件管理器發(fā)送獲取消息,該獲取消息用于指示獲取該嵌入式設(shè)備的設(shè)備驅(qū)動程序。
103、該文件管理器接收到該獲取消息時,從存儲設(shè)備獲取該設(shè)備驅(qū)動程序,返回給該用戶空間,該存儲設(shè)備用于存儲至少一個設(shè)備驅(qū)動程序。
104、該用戶空間和該內(nèi)核空間從該文件管理器加載該設(shè)備驅(qū)動程序。
本發(fā)明實(shí)施例提供的方法,通過在存儲設(shè)備中存儲至少一個設(shè)備驅(qū)動程序,當(dāng)該終端已連接嵌入式設(shè)備,但還未加載該嵌入式設(shè)備的設(shè)備驅(qū)動程序時,可以由文件管理器從存儲設(shè)備中獲取該設(shè)備驅(qū)動程序,從而完成加載過程,擺脫了該終端只能加載已獲取到的設(shè)備驅(qū)動程序的限制,提高了靈活性。
圖2是本發(fā)明實(shí)施例提供的一種設(shè)備驅(qū)動程序加載方法的流程圖。該發(fā)明實(shí)施例的執(zhí)行主體為終端,該終端包括內(nèi)核空間、用戶空間和文件管理器,該內(nèi)核空間運(yùn)行設(shè)備服務(wù)進(jìn)程,該用戶空間運(yùn)行設(shè)備管理器和udevd進(jìn)程,參見圖2,該方法包括:
201、當(dāng)嵌入式設(shè)備連接至該終端時,該內(nèi)核空間啟動設(shè)備服務(wù)進(jìn)程,通過該設(shè)備服務(wù)進(jìn)程,發(fā)起設(shè)備連接事件。
其中,該終端可以為計(jì)算機(jī)等固定終端,也可以為手機(jī)、平板電腦等移動終端,該嵌入式設(shè)備可以為游戲手柄、藍(lán)牙耳機(jī)、USB(Universal Serial Bus,通用串行總線)鼠標(biāo)、優(yōu)盤等,本發(fā)明實(shí)施例對該終端和該嵌入式設(shè)備均不做限定。該終端配置有接口,該嵌入式設(shè)備可以通過該接口,與該終端連接。該接口可以為USB接口或者其他類型的接口等,本發(fā)明實(shí)施例對此也不做限定。
當(dāng)該嵌入式設(shè)備連接至該終端時,該終端需要加載該嵌入式設(shè)備的設(shè)備驅(qū)動程序,才能與該嵌入式設(shè)備進(jìn)行數(shù)據(jù)交互。首先,當(dāng)該嵌入式設(shè)備連接至該終端時,產(chǎn)生中斷,該終端的內(nèi)核空間會加載平臺設(shè)備,并啟動設(shè)備服務(wù)進(jìn)程,通過該設(shè)備服務(wù)進(jìn)程發(fā)起設(shè)備連接事件,該設(shè)備連接事件用于指示該終端連接了一個嵌入式設(shè)備。
其中,平臺設(shè)備是該內(nèi)核空間中的一種設(shè)備類型,而設(shè)備驅(qū)動程序即為一種平臺設(shè)備,該內(nèi)核空間加載平臺設(shè)備之后,方可加載設(shè)備驅(qū)動程序。
202、該用戶空間監(jiān)聽到該設(shè)備連接事件,通過該設(shè)備管理器,確定未加載該嵌入式設(shè)備的設(shè)備驅(qū)動程序,向該內(nèi)核空間返回未加載該嵌入式設(shè)備的設(shè)備驅(qū)動程序的通知消息。
具體地,該用戶空間監(jiān)聽到該設(shè)備連接事件時,確定該終端已連接嵌入式設(shè),則通過該設(shè)備管理器,遍歷已加載的設(shè)備驅(qū)動程序,判斷遍歷到的設(shè)備驅(qū)動程序是否與該嵌入式設(shè)備匹配,當(dāng)確定遍歷到的所有設(shè)備驅(qū)動程序與該嵌入式設(shè)備均不匹配時,可以確定未加載該嵌入式設(shè)備的設(shè)備驅(qū)動程序,此時,該設(shè)備管理器向該內(nèi)核空間返回未加載該嵌入式設(shè)備的設(shè)備驅(qū)動程序的通知消息。
在另一實(shí)施例中,當(dāng)確定遍歷到的某一設(shè)備驅(qū)動程序與該嵌入式設(shè)備匹配時,可以確定已加載該嵌入式設(shè)備的設(shè)備驅(qū)動程序,此時,該設(shè)備管理器可以向該內(nèi)核空間返回已加載該嵌入式設(shè)備的設(shè)備驅(qū)動程序的通知消息。
其中,該設(shè)備管理器(Udev)運(yùn)行于用戶空間中,能夠根據(jù)系統(tǒng)中的硬件設(shè)備的狀況動態(tài)地管理設(shè)備文件,包括設(shè)備文件的創(chuàng)建、刪除等,設(shè)備文件通常存儲于/dev目錄下。實(shí)際上,該設(shè)備管理器以守護(hù)進(jìn)程的形式運(yùn)行,只為連接到該終端操作系統(tǒng)的設(shè)備創(chuàng)建設(shè)備文件,創(chuàng)建時會按照一定的規(guī)則創(chuàng)建與該設(shè)備的屬性匹配的設(shè)備文件,該屬性可以包括廠商名稱、型號、序列號等,并且,該設(shè)備管理器會通過偵聽內(nèi)核空間發(fā)出來的事件來管理/dev目錄下的設(shè)備文件,以此添加或者刪除/dev目錄下的設(shè)備文件。
203、該內(nèi)核空間接收到該通知消息時,向該用戶空間發(fā)送獲取設(shè)備驅(qū)動程序的事件。
在另一實(shí)施例中,當(dāng)該內(nèi)核空間接收到未加載該嵌入式設(shè)備的設(shè)備驅(qū)動程序的通知消息時,確定當(dāng)前已記載該嵌入式設(shè)備的設(shè)備驅(qū)動程序,則無需再獲取該設(shè)備驅(qū)動程序,直接執(zhí)行下述步驟206即可。
204、該用戶空間接收到該獲取設(shè)備驅(qū)動程序的事件時,通過該udevd進(jìn)程,向該文件管理器發(fā)送獲取消息。
該udevd進(jìn)程是一種后臺服務(wù)進(jìn)程,以守護(hù)進(jìn)程的形式在用戶空間中運(yùn)行。
該獲取設(shè)備驅(qū)動程序的事件用于指示該用戶空間獲取該嵌入式設(shè)備的設(shè)備驅(qū)動程序,該用戶空間接收到該事件后,該udevd進(jìn)程解析該事件,確定該事件為獲取設(shè)備驅(qū)動程序的事件時,向該文件管理器發(fā)送獲取消息,從而指示該文件管理器獲取該設(shè)備驅(qū)動程序。
205、該文件管理器接收到該獲取消息時,采用下載或拷貝的方式,從存儲設(shè)備獲取該設(shè)備驅(qū)動程序,返回給該用戶空間。
該存儲設(shè)備用于存儲至少一個設(shè)備驅(qū)動程序,當(dāng)該終端未加載該設(shè)備驅(qū)動程序時,可以從該存儲設(shè)備獲取設(shè)備驅(qū)動程序。
具體地,該存儲設(shè)備可以為存儲服務(wù)器或者任一云服務(wù)器等,該終端與該存儲設(shè)備建立網(wǎng)絡(luò)連接,該文件管理器通過已建立的網(wǎng)絡(luò)連接,從存儲設(shè)備中下載該設(shè)備驅(qū)動程序?;蛘?,該存儲設(shè)備可以為優(yōu)盤等存儲設(shè)備,該存儲設(shè)備連接至該終端,該文件管理器從已連接至該終端的存儲設(shè)備中,拷貝該設(shè)備驅(qū)動程序。之后,該文件管理器將獲取到的設(shè)備驅(qū)動程序返回給該用戶空間。
206、該用戶空間顯示活動窗口,獲取用戶在該活動窗口中輸入的該嵌入式設(shè)備的相關(guān)參數(shù),調(diào)用該活動窗口,獲取該相關(guān)參數(shù),并基于該相關(guān)參數(shù)從該文件管理器加載該設(shè)備驅(qū)動程序。
該用戶空間可以創(chuàng)建一個活動窗口,并顯示該活動窗口,在該活動窗口中提供該設(shè)備驅(qū)動程序,當(dāng)用戶點(diǎn)擊該設(shè)備驅(qū)動程序時,可以輸入該嵌入式設(shè)備的相關(guān)參數(shù),如VendorID(廠商標(biāo)識)、SubVendorID(子廠商標(biāo)識)、DeviceID(設(shè)備標(biāo)識)等。該用戶空間可以調(diào)用該活動窗口,獲取到該相關(guān)參數(shù),并基于該相關(guān)參數(shù)從該文件管理器加載相應(yīng)的設(shè)備驅(qū)動程序。
207、該內(nèi)核空間注冊該設(shè)備驅(qū)動程序,并在確定該設(shè)備驅(qū)動程序與該嵌入式設(shè)備匹配的情況下,注冊該嵌入式設(shè)備,向該用戶空間發(fā)送加載成功事件。
該內(nèi)核空間注冊該嵌入式設(shè)備時,為該嵌入式設(shè)備創(chuàng)建設(shè)備文件,如設(shè)備類demo_class和設(shè)備demo_dev等。
需要說明的是,該終端可以包括文件系統(tǒng),該文件系統(tǒng)可以用于對系統(tǒng)的設(shè)備進(jìn)行管理,將連接到系統(tǒng)上的設(shè)備組織成文件,每個設(shè)備在文件系統(tǒng)中具有唯一對應(yīng)的目錄,該用戶空間可以對目標(biāo)下的設(shè)備文件進(jìn)行讀寫,從而利用這些設(shè)備文件實(shí)現(xiàn)與內(nèi)核空間的交互。該設(shè)備管理器的工作依賴于該文件系統(tǒng)的功能,可以根據(jù)文件系統(tǒng)中導(dǎo)出的設(shè)備信息,動態(tài)地建立或刪除設(shè)備文件。
其中,該終端的操作系統(tǒng)為Linux操作系統(tǒng)時,該文件系統(tǒng)可以為sysfs文件系統(tǒng)。
208、該用戶空間接收到該加載成功事件時,創(chuàng)建與該嵌入式設(shè)備匹配的設(shè)備節(jié)點(diǎn),此時加載過程完成,該終端可以與該嵌入式設(shè)備進(jìn)行數(shù)據(jù)交互。
該加載成功事件中攜帶該嵌入式設(shè)備的相關(guān)參數(shù),該用戶空間可以根據(jù)該相關(guān)參數(shù)創(chuàng)建相應(yīng)的設(shè)備節(jié)點(diǎn),創(chuàng)建設(shè)備節(jié)點(diǎn)完成表示該設(shè)備驅(qū)動程序加載完畢。
本發(fā)明實(shí)施例提供的方法,通過在存儲設(shè)備中存儲至少一個設(shè)備驅(qū)動程序,當(dāng)該終端已連接嵌入式設(shè)備,但還未加載該嵌入式設(shè)備的設(shè)備驅(qū)動程序時,可以由文件管理器從存儲設(shè)備中獲取該設(shè)備驅(qū)動程序,從而完成加載過程,擺脫了該終端只能加載已獲取到的設(shè)備驅(qū)動程序的限制,提高了靈活性。
而且,本發(fā)明實(shí)施例采用動態(tài)加載的方式,僅在嵌入式設(shè)備連接至該終端時才加載該嵌入式設(shè)備的設(shè)備驅(qū)動程序,而且不會將設(shè)備驅(qū)動程序編譯到內(nèi)核空間中,避免了占用內(nèi)核空間的容量,節(jié)省了存儲空間。
圖3是本發(fā)明實(shí)施例提供的一種終端的結(jié)構(gòu)示意圖,參見圖3,該終端包括:內(nèi)核空間301、用戶空間302和文件管理器303;
該內(nèi)核空間301,用于當(dāng)嵌入式設(shè)備連接至該終端時,發(fā)起設(shè)備連接事件;
該用戶空間302,用于監(jiān)聽到該設(shè)備連接事件,并確定未加載該嵌入式設(shè)備的設(shè)備驅(qū)動程序時,向該文件管理器發(fā)送獲取消息,該獲取消息用于指示獲取該嵌入式設(shè)備的設(shè)備驅(qū)動程序;
該文件管理器303,用于接收到該獲取消息時,從存儲設(shè)備獲取該設(shè)備驅(qū)動程序,返回給該用戶空間,該存儲設(shè)備用于存儲至少一個設(shè)備驅(qū)動程序;
該用戶空間302和該內(nèi)核空間301,還用于從該存儲設(shè)備加載該設(shè)備驅(qū)動程序。
可選地,該內(nèi)核空間301還用于當(dāng)該嵌入式設(shè)備連接至該終端時,啟動設(shè)備服務(wù)進(jìn)程;通過該設(shè)備服務(wù)進(jìn)程,發(fā)起該設(shè)備連接事件。
可選地,該用戶空間302運(yùn)行設(shè)備管理器和udevd進(jìn)程,該用戶空間302還用于監(jiān)聽到該設(shè)備連接事件,通過該設(shè)備管理器,遍歷已加載的設(shè)備驅(qū)動程序,判斷遍歷到的設(shè)備驅(qū)動程序是否與該嵌入式設(shè)備匹配;當(dāng)確定遍歷到的所有設(shè)備驅(qū)動程序與該嵌入式設(shè)備均不匹配時,該設(shè)備管理器向該內(nèi)核空間301返回未加載該嵌入式設(shè)備的設(shè)備驅(qū)動程序的通知消息;
該內(nèi)核空間301還用于接收到該通知消息時,向該用戶空間302發(fā)送獲取設(shè)備驅(qū)動程序的事件;
該用戶空間302,還用于通過該udevd進(jìn)程,向該文件管理器303發(fā)送該獲取消息。
可選地,該文件管理器303還用于通過已建立的網(wǎng)絡(luò)連接,從該存儲設(shè)備中下載該設(shè)備驅(qū)動程序;或者,從已連接至該終端的存儲設(shè)備中,拷貝該設(shè)備驅(qū)動程序。
可選地,該用戶空間302還用于顯示活動窗口,獲取用戶在該活動窗口中輸入的該嵌入式設(shè)備的相關(guān)參數(shù);調(diào)用該活動窗口獲取該相關(guān)參數(shù),并基于該相關(guān)參數(shù)從該文件管理器303加載該設(shè)備驅(qū)動程序;
該內(nèi)核空間301還用于注冊該設(shè)備驅(qū)動程序,并在確定該設(shè)備驅(qū)動程序與該嵌入式設(shè)備匹配的情況下,注冊該嵌入式設(shè)備;向該用戶空間302發(fā)送加載成功事件;
該用戶空間302還用于接收到該加載成功事件時,創(chuàng)建與該嵌入式設(shè)備匹配的設(shè)備節(jié)點(diǎn)。
需要說明的是:上述實(shí)施例提供的終端在加載設(shè)備驅(qū)動程序時,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將終端的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實(shí)施例提供的終端與設(shè)備驅(qū)動程序加載方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,這里不再贅述。
本實(shí)施例提供了一種終端,該終端可以用于執(zhí)行上述各個實(shí)施例中提供的設(shè)備驅(qū)動程序加載方法。參見圖4,該終端400包括:
終端400可以包括RF(Radio Frequency,射頻)電路110、包括有一個或一個以上計(jì)算機(jī)可讀存儲介質(zhì)的存儲器120、輸入單元130、顯示單元140、傳感器150、音頻電路160、WiFi(Wireless Fidelity,無線保真)模塊170、包括有一個或者一個以上處理核心的處理器180、以及電源190等部件。本領(lǐng)域技術(shù)人員可以理解,圖4中示出的終端結(jié)構(gòu)并不構(gòu)成對終端的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。其中:
RF電路110可用于收發(fā)信息或通話過程中,信號的接收和發(fā)送,特別地,將基站的下行信息接收后,交由一個或者一個以上處理器180處理;另外,將涉及上行的數(shù)據(jù)發(fā)送給基站。通常,RF電路110包括但不限于天線、至少一個放大器、調(diào)諧器、一個或多個振蕩器、用戶身份模塊(SIM)卡、收發(fā)信機(jī)、耦合器、LNA(Low Noise Amplifier,低噪聲放大器)、雙工器等。此外,RF電路110還可以通過無線通信與網(wǎng)絡(luò)和其他設(shè)備通信。所述無線通信可以使用任一通信標(biāo)準(zhǔn)或協(xié)議,包括但不限于GSM(Global System of Mobile communication,全球移動通訊系統(tǒng))、GPRS(General Packet Radio Service,通用分組無線服務(wù))、CDMA(Code Division Multiple Access,碼分多址)、WCDMA(Wideband Code Division Multiple Access,寬帶碼分多址)、LTE(Long Term Evolution,長期演進(jìn))、電子郵件、SMS(Short Messaging Service,短消息服務(wù))等。
存儲器120可用于存儲軟件程序以及模塊,處理器180通過運(yùn)行存儲在存儲器120的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理。存儲器120可主要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)終端400的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲器120可以包括高速隨機(jī)存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固態(tài)存儲器件。相應(yīng)地,存儲器120還可以包括存儲器控制器,以提供處理器180和輸入單元130對存儲器120的訪問。
輸入單元130可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與用戶設(shè)置以及功能控制有關(guān)的鍵盤、鼠標(biāo)、操作桿、光學(xué)或者軌跡球信號輸入。具體地,輸入單元130可包括觸敏表面131以及其他輸入設(shè)備132。觸敏表面131,也稱為觸摸顯示屏或者觸控板,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸敏表面131上或在觸敏表面131附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動相應(yīng)的連接裝置??蛇x的,觸敏表面131可包括觸摸檢測裝置和觸摸控制器兩個部分。其中,觸摸檢測裝置檢測用戶的觸摸方位,并檢測觸摸操作帶來的信號,將信號傳送給觸摸控制器;觸摸控制器從觸摸檢測裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點(diǎn)坐標(biāo),再送給處理器180,并能接收處理器180發(fā)來的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實(shí)現(xiàn)觸敏表面131。除了觸敏表面131,輸入單元130還可以包括其他輸入設(shè)備132。具體地,其他輸入設(shè)備132可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種。
顯示單元140可用于顯示由用戶輸入的信息或提供給用戶的信息以及終端400的各種圖形用戶接口,這些圖形用戶接口可以由圖形、文本、圖標(biāo)、視頻和其任意組合來構(gòu)成。顯示單元140可包括顯示面板141,可選的,可以采用LCD(Liquid Crystal Display,液晶顯示器)、OLED(Organic Light-Emitting Diode,有機(jī)發(fā)光二極管)等形式來配置顯示面板141。進(jìn)一步的,觸敏表面131可覆蓋顯示面板141,當(dāng)觸敏表面131檢測到在其上或附近的觸摸操作后,傳送給處理器180以確定觸摸事件的類型,隨后處理器180根據(jù)觸摸事件的類型在顯示面板141上提供相應(yīng)的視覺輸出。雖然在圖4中,觸敏表面131與顯示面板141是作為兩個獨(dú)立的部件來實(shí)現(xiàn)輸入和輸入功能,但是在某些實(shí)施例中,可以將觸敏表面131與顯示面板141集成而實(shí)現(xiàn)輸入和輸出功能。
終端400還可包括至少一種傳感器150,比如光傳感器、運(yùn)動傳感器以及其他傳感器。具體地,光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來調(diào)節(jié)顯示面板141的亮度,接近傳感器可在終端400移動到耳邊時,關(guān)閉顯示面板141和/或背光。作為運(yùn)動傳感器的一種,重力加速度傳感器可檢測各個方向上(一般為三軸)加速度的大小,靜止時可檢測出重力的大小及方向,可用于識別手機(jī)姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計(jì)姿態(tài)校準(zhǔn))、振動識別相關(guān)功能(比如計(jì)步器、敲擊)等;至于終端400還可配置的陀螺儀、氣壓計(jì)、濕度計(jì)、溫度計(jì)、紅外線傳感器等其他傳感器,在此不再贅述。
音頻電路160、揚(yáng)聲器161,傳聲器162可提供用戶與終端400之間的音頻接口。音頻電路160可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號,傳輸?shù)綋P(yáng)聲器161,由揚(yáng)聲器161轉(zhuǎn)換為聲音信號輸出;另一方面,傳聲器162將收集的聲音信號轉(zhuǎn)換為電信號,由音頻電路160接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器180處理后,經(jīng)RF電路110以發(fā)送給比如另一終端,或者將音頻數(shù)據(jù)輸出至存儲器120以便進(jìn)一步處理。音頻電路160還可能包括耳塞插孔,以提供外設(shè)耳機(jī)與終端400的通信。
WiFi屬于短距離無線傳輸技術(shù),終端400通過WiFi模塊170可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁和訪問流式媒體等,它為用戶提供了無線的寬帶互聯(lián)網(wǎng)訪問。雖然圖4示出了WiFi模塊170,但是可以理解的是,其并不屬于終端400的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。
處理器180是終端400的控制中心,利用各種接口和線路連接整個手機(jī)的各個部分,通過運(yùn)行或執(zhí)行存儲在存儲器120內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲在存儲器120內(nèi)的數(shù)據(jù),執(zhí)行終端400的各種功能和處理數(shù)據(jù),從而對手機(jī)進(jìn)行整體監(jiān)控??蛇x的,處理器180可包括一個或多個處理核心;優(yōu)選的,處理器180可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無線通信??梢岳斫獾氖?,上述調(diào)制解調(diào)處理器也可以不集成到處理器180中。
終端400還包括給各個部件供電的電源190(比如電池),優(yōu)選的,電源可以通過電源管理系統(tǒng)與處理器180邏輯相連,從而通過電源管理系統(tǒng)實(shí)現(xiàn)管理充電、放電、以及功耗管理等功能。電源190還可以包括一個或一個以上的直流或交流電源、再充電系統(tǒng)、電源故障檢測電路、電源轉(zhuǎn)換器或者逆變器、電源狀態(tài)指示器等任意組件。
盡管未示出,終端400還可以包括攝像頭、藍(lán)牙模塊等,在此不再贅述。具體在本實(shí)施例中,終端的顯示單元是觸摸屏顯示器,終端還包括有存儲器,以及一個或者一個以上的程序,其中一個或者一個以上程序存儲于存儲器中,且經(jīng)配置以由一個或者一個以上處理器執(zhí)行。所述一個或者一個以上程序包含用于執(zhí)行上述設(shè)備驅(qū)動程序加載方法的指令。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計(jì)算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。