專利名稱:Linux操作系統(tǒng)下對USB設備即插即用的方法
技術(shù)領域:
本發(fā)明涉及一種USB設備即插即用的方法,尤其是關于一種Linux操作系統(tǒng)下對USB設備即插即用的方法。
背景技術(shù):
目前,隨著Linux操作系統(tǒng)的風行,使用Linux的個人和行業(yè)越來越多,針對Linux而開發(fā)的應用程序也是越來越多。另一方面,通用串行總線(Universal Serial Bus,USB)作為新一代的外圍設備接口,由于其傳輸速率比起個人計算機所使用的并行端口或是串行端口都快了許多,對于計算機設備與外圍接口的傳輸效率有了顯著的提升,因此,一經(jīng)面市便得到了廣泛的應用。
然而,由于歷史的原因,Linux操作系統(tǒng)的兼容性并不是特別出色。當USB設備接入到運行在Linux操作系統(tǒng)上的計算機時,雖然操作系統(tǒng)核心(Kernel)能夠偵測到USB設備的插入或移除,但應用程序卻無法得到這些消息,也就是說,核心和應用程序之間缺乏聯(lián)系的管道,這就導致在使用應用程序時,需要用戶手工干預來選擇和配置USB設備。
反觀Windows操作系統(tǒng)所提供的功能,在Windows2000以后,對于USB設備的檢測功能就已經(jīng)做得很好了,尤其是對于一些標準的USB存儲設備,只需要插入就能識別使用,但Windows系統(tǒng)與Linux系統(tǒng)對硬件的即插即用的支持技術(shù)是完全不同的,況且,Windows也還存在很多不盡如人意的地方,如當一臺USB打印機插入時,Windows系統(tǒng)能夠提示用戶插入的是哪個廠家的打印機,是什么型號的,卻還需要用戶選擇驅(qū)動程序,或者需要用戶獨立安裝該打印機的驅(qū)動程序,這就增加了用戶的負擔,還增加了用戶操作失誤導致的風險。
如何在Linux操作系統(tǒng)與應用程序之間建立一個聯(lián)系的管道,使應用程序可以及時了解到USB設備的插入與移除,自動裝卸載設備驅(qū)動程序,無需用戶干預而隨意使用USB設備,遂成為一業(yè)界亟待解決的問題。
發(fā)明內(nèi)容
本發(fā)明為了解決上述問題而提供了一種Linux操作系統(tǒng)下對USB設備即插即用的方法,在Linux操作系統(tǒng)與應用程序之間建立了聯(lián)系管道,使應用程序可以及時了解到USB設備的插入與移除,自動裝卸載設備驅(qū)動程序,無需用戶干預。
本發(fā)明提供了一種Linux操作系統(tǒng)下對USB設備即插即用的方法,通過在系統(tǒng)核心與應用程序之間建立一守護進程(Process),從而使應用程序?qū)崟r了解USB設備的連接情況,該方法包括儲存多個USB設備驅(qū)動程序并生成一設備列表;為USB設備支持設置相應的配置文件;根據(jù)該配置文件從Linux系統(tǒng)核心獲得USB設備接入消息;對該消息進行分析并識別該接入設備的品牌;讀取該設備的內(nèi)部信息,以獲取其型號;根據(jù)該設備品牌及型號在系統(tǒng)中查找與其對應的設備驅(qū)動程序;自動加載該設備驅(qū)動程序;將該設備的具體信息告知應用程序。
本發(fā)明的技術(shù)方案是這樣實現(xiàn)的一種Linux操作系統(tǒng)下對USB設備即插即用的方法,其特征在于,通過在系統(tǒng)核心與應用程序之間建立一守護進程(Process),從而使應用程序?qū)崟r了解USB設備的連接情況,該方法包括儲存多個USB設備驅(qū)動程序并生成一設備列表;為USB設備支持設置相應的配置文件;根據(jù)該配置文件從Linux系統(tǒng)核心獲得USB設備接入消息;對該消息進行分析并識別該接入設備的品牌;讀取該設備的內(nèi)部信息,以獲取其型號;根據(jù)該設備品牌及型號在系統(tǒng)中查找與其對應的設備驅(qū)動程序;自動加載該設備驅(qū)動程序;將該設備的具體信息告知應用程序。
其中,該為USB設備支持設置相應的配置文件的步驟,是通過在編譯系統(tǒng)核心時選取支持USB設備的編譯選項實現(xiàn)的。
其中,該設備接入的消息是以臨時文件的形式儲存與傳送的。
其中,該對消息進行分析的步驟,是通過字符匹配而查找出使用者要安裝的設備。
其中,該識別接入設備的品牌的步驟,是根據(jù)分析結(jié)果而得到設備的品牌信息。
其中,該讀取該設備內(nèi)部信息的步驟,是通過執(zhí)行Linux下的ioctl函數(shù)來獲得硬件的返回信息而實現(xiàn)的。
其中,該查找設備驅(qū)動程序的步驟,是根據(jù)分析結(jié)果通過該設備列表進行查詢。
其中,該將設備的具體信息告知應用程序的步驟,是通過系統(tǒng)內(nèi)部函數(shù)呼叫而實現(xiàn)的。
其中,當該USB設備被移除時,還包括如下步驟從Linux系統(tǒng)核心獲得USB設備移除的消息;比較設備列表,獲知移動設備的具體信息;及通知應用程序不再有該USB設備。
本發(fā)明由于在Linux操作系統(tǒng)與應用程序之間建立了一個守護進程,從而使得應用程序可以及時了解到USB設備的插入與移除,自動裝卸載設備驅(qū)動程序,無需用戶干預而隨意使用USB設備。
圖1為本發(fā)明的Linux操作系統(tǒng)下對USB設備即插即用的方法流程圖;圖2為本發(fā)明所提供的USB設備接入時的主要操作示意圖;及圖3為本發(fā)明所提供的USB設備移除時的主要操作示意圖。
其中,附圖標記說明如下步驟101 儲存多個USB設備驅(qū)動程序并生成一設備列表;步驟102 為USB設備支持設置相應的配置文件;步驟103 根據(jù)該配置文件從Linux系統(tǒng)核心獲得USB設備接入消息;步驟104 對該消息進行分析并識別該接入設備的品牌;步驟105 讀取該設備的內(nèi)部信息以獲取其型號;步驟106 根據(jù)該設備品牌及型號在系統(tǒng)中查找與其對應的設備驅(qū)動程序;步驟107 自動加載該設備驅(qū)動程序;
步驟108 將該設備的具體信息告知應用程序。
具體實施例方式
下面結(jié)合附圖對本發(fā)明的具體實施方式
作進一步的描述。
本發(fā)明提供了一種Linux操作系統(tǒng)下對USB設備即插即用的方法,通過在系統(tǒng)核心與應用程序之間建立一守護進程(Process),從而使應用程序?qū)崟r了解USB設備的連接情況,如圖1所示,該方法包括儲存多個USB設備驅(qū)動程序并生成一設備列表(步驟101);為USB設備支持設置相應的配置文件(步驟102);根據(jù)該配置文件從Linux系統(tǒng)核心獲得USB設備接入消息(步驟103);對該消息進行分析并識別該接入設備的品牌(步驟104);讀取該設備的內(nèi)部信息,以獲取其型號(步驟105);根據(jù)該設備品牌及型號在系統(tǒng)中查找與其對應的設備驅(qū)動程序(步驟106);自動加載該設備驅(qū)動程序(步驟107);將該設備的具體信息告知應用程序(步驟108)。
為了可以及時從系統(tǒng)核心獲得設備接入信息,可以在編譯核心時選取支持USB設備(或者需要安裝的其它設備)的編譯選項,這個選取動作是通過選取相應協(xié)議(配置文件)來完成的,該核心的版本號應當高于2.4.18-3。
設備接入的消息是以臨時文件的形式儲存與傳送的。對消息所進行的分析,是通過字符匹配而查找出使用者想要安裝的設備。然后根據(jù)分析結(jié)果而得到設備的品牌信息。
在得到分析結(jié)果后,就可以根據(jù)設備列表的設備編號進行查找,由此找到驅(qū)動程序存放的相應目錄。
以安裝一Epson USB打印機為例,當Epson打印機插入時,Linux操作系統(tǒng)的核心能夠偵測到USB設備的插入,但應用程序卻不知道,因此,本發(fā)明通過建立一守護進程,就可以首先從核心獲得有關設備的接入消息,如圖2所示,通過分析該消息,識別出該設備為Epson品牌的打印機,但還無法確認其型號,然后通過Linux下的ioctl函數(shù)調(diào)用,向硬件設備發(fā)送命令,讀取該打印機返回的內(nèi)部信息,從而獲知該打印機為C41UX型號,接著,在系統(tǒng)中查詢該型號的打印機驅(qū)動程序,如果找到了的話,就自動加載該打印機驅(qū)動程序USB printer,并將打印機的具體型號通過內(nèi)部函數(shù)呼叫告知打印服務程序,此時,應用程序可以通過通用的接口打印了。
為了獲得最大限度的適用性,可以事先在系統(tǒng)中安裝好大量常見型號的USB設備的驅(qū)動程序,這樣就可以應付一般常見的使用者需求了。
當應用程序不再需要打印機時,應用程序通過統(tǒng)一的接口告訴守護進程,由守護進程卸載Epson打印機的驅(qū)動,并更新設備列表。
在應用程序運行過程中,如果拔除了Epson打印機,換上另外的打印機,此時,守護進程自動卸載Epson打印機的驅(qū)動程序,換成相應打印機的驅(qū)動程序,對于應用程序來說,打印機是透明的,不影響應用程序的打印功能。
如圖3所示,當Epson打印機拔除時,守護進程獲得該設備的移除消息,通過比較設備列表,獲知移除設備的具體信息,通知應用程序不再有Epson打印機,這樣,當用戶使用打印功能時,應用程序可以告知用戶沒有打印機。守護進程同時卸載Epson打印機的驅(qū)動模塊。
以上所述僅為本發(fā)明其中的較佳實施例而已,并非用來限定本發(fā)明的實施范圍;即凡依本發(fā)明所作的均等變化與修飾,皆應屬于本發(fā)明的專利保護范圍之內(nèi)。
權(quán)利要求
1.一種Linux操作系統(tǒng)下對USB設備即插即用的方法,其特征在于,通過在系統(tǒng)核心與應用程序之間建立一守護進程,從而使應用程序?qū)崟r了解USB設備的連接情況,該方法包括儲存多個USB設備驅(qū)動程序并生成一設備列表;為USB設備支持設置相應的配置文件;根據(jù)該配置文件從Linux系統(tǒng)核心獲得USB設備接入消息;對該消息進行分析并識別該接入設備的品牌;讀取該設備的內(nèi)部信息,以獲取其型號;根據(jù)該設備品牌及型號在系統(tǒng)中查找與其對應的設備驅(qū)動程序;自動加載該設備驅(qū)動程序;將該設備的具體信息告知應用程序。
2.如權(quán)利要求1所述的Linux操作系統(tǒng)下對USB設備即插即用的方法,其特征在于,該為USB設備支持設置相應的配置文件的步驟,是通過在編譯系統(tǒng)核心時選取支持USB設備的編譯選項實現(xiàn)的。
3.如權(quán)利要求1所述的Linux操作系統(tǒng)下對USB設備即插即用的方法,其特征在于,該設備接入的消息是以臨時文件的形式儲存與傳送的。
4.如權(quán)利要求1所述的Linux操作系統(tǒng)下對USB設備即插即用的方法,其特征在于,該對消息進行分析的步驟,是通過字符匹配而查找出使用者要安裝的設備。
5.如權(quán)利要求1所述的Linux操作系統(tǒng)下對USB設備即插即用的方法,其特征在于,該識別接入設備的品牌的步驟,是根據(jù)分析結(jié)果而得到設備的品牌信息。
6.如權(quán)利要求1所述的Linux操作系統(tǒng)下對USB設備即插即用的方法,其特征在于,該讀取該設備內(nèi)部信息的步驟,是通過執(zhí)行Linux下的ioctl來獲得硬件的返回信息而實現(xiàn)的。
7.如權(quán)利要求1所述的Linux操作系統(tǒng)下對USB設備即插即用的方法,其特征在于,該查找設備驅(qū)動程序的步驟,是根據(jù)分析結(jié)果通過該設備列表進行查詢。
8.如權(quán)利要求1所述的Linux操作系統(tǒng)下對USB設備即插即用的方法,其特征在于,該將設備的具體信息告知應用程序的步驟,是通過系統(tǒng)內(nèi)部函數(shù)呼叫而實現(xiàn)的。
9.如權(quán)利要求1所述的Linux操作系統(tǒng)下對USB設備即插即用的方法,其特征在于,當該USB設備被移除時,還包括如下步驟從Linux系統(tǒng)核心獲得USB設備移除的消息;比較設備列表,獲知移動設備的具體信息;及通知應用程序不再有該USB設備。
全文摘要
本發(fā)明提供了一種Linux操作系統(tǒng)下對USB設備即插即用的方法,首先儲存多個USB設備驅(qū)動程序并生成一設備列表,接著設置相應的配置文件,根據(jù)配置文件從系統(tǒng)核心獲得USB設備接入消息,分析并識別該接入設備的品牌,讀取設備型號,查找設備驅(qū)動程序,然后自動加載驅(qū)動程序并將該設備的具體信息告知應用程序,本發(fā)明在Linux操作系統(tǒng)與應用程序之間建立了聯(lián)系管道,從而使應用程序可以及時了解USB設備的插入與移除,無需用戶干預而隨意使用USB設備。
文檔編號G06F9/445GK1609829SQ20031010279
公開日2005年4月27日 申請日期2003年10月24日 優(yōu)先權(quán)日2003年10月24日
發(fā)明者劉文涵, 宋建福, 岑駕科 申請人:英業(yè)達股份有限公司