專利名稱:驅(qū)動軟件升級的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機技術(shù)領(lǐng)域,尤其涉及一種驅(qū)動軟件升級的方法及裝置。
背景技術(shù):
在嵌入式系統(tǒng)等計算機處理系統(tǒng)中,驅(qū)動軟件是處于硬件和應(yīng)用軟件之 間的功能軟件,其用于提供應(yīng)用軟件訪問硬件的接口。同時,為滿足應(yīng)用等 方面的需求,還會對相應(yīng)的驅(qū)動軟件進行升級操作。
目前,通常采用的驅(qū)動軟件升級方式主要包括當(dāng)需要升級驅(qū)動軟件的 時候,首先,通知應(yīng)用軟件停止使用驅(qū)動軟件,再卸載驅(qū)動軟件,然后重新 加載新版本的驅(qū)動軟件;接著,并升級后的新版本驅(qū)動軟件對硬件進行復(fù)位 和重新初始化;最后,應(yīng)用軟件便可以使用新版本的驅(qū)動軟件重新開始工 作。
在實現(xiàn)本發(fā)明過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題 在對驅(qū)動軟件進行升級的過程中,對應(yīng)的硬件需要重新復(fù)位并初始化,
導(dǎo)致相應(yīng)的系統(tǒng)運行過程也會被中斷。這樣,對于可靠性要求高的系統(tǒng)來
說,中斷運行則意味著可靠性降低。
發(fā)明內(nèi)容
本發(fā)明的實施例提供了 一種驅(qū)動軟件升級的方法及裝置,以降低驅(qū)動軟 件升級過程對系統(tǒng)運行的影響。一種驅(qū)動軟件升級的方法,包括
為需要進行驅(qū)動軟件升級的設(shè)備對象設(shè)置驅(qū)動軟件升級開始標(biāo)識,所述 驅(qū)動軟件升級開始標(biāo)識用于指示禁止應(yīng)用程序調(diào)用所述設(shè)備對象對應(yīng)的驅(qū)動
對象管理的驅(qū)動函數(shù);
對所述設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)進行升級操作; 在升級操作結(jié)束后,將所述驅(qū)動軟件升級開始標(biāo)識更新為驅(qū)動軟件升級
結(jié)束標(biāo)識,所述驅(qū)動軟件升級結(jié)束標(biāo)識用于指示允許應(yīng)用程序調(diào)用所述設(shè)備
對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)。 一種驅(qū)動軟件升級的裝置,包括
第一設(shè)置單元,用于為需要進行驅(qū)動軟件升級的設(shè)備對象設(shè)置驅(qū)動軟件 升級開始標(biāo)識,所述驅(qū)動軟件升級開始標(biāo)識用于禁止調(diào)用所述設(shè)備對象對應(yīng) 的驅(qū)動對象管理的驅(qū)動函數(shù);
升級操作單元,用于在所述第一標(biāo)識設(shè)置單元設(shè)置所述驅(qū)動軟件升級開
始標(biāo)識后,對所述設(shè)備對象對應(yīng)的驅(qū)動函數(shù)進行升級操作;
第二置單元,用于在所述升級操作單元執(zhí)行的升級操作結(jié)束后,將所述 驅(qū)動軟件升級開始標(biāo)識更新為驅(qū)動軟件升級結(jié)束標(biāo)識,所述驅(qū)動軟件升級結(jié) 束標(biāo)識用于允許應(yīng)用程序調(diào)用所述設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)。
由上述本發(fā)明的實施例提供的技術(shù)方案可以看出,其通過相應(yīng)的驅(qū)動軟 件升級開始標(biāo)識和驅(qū)動軟件升級結(jié)束標(biāo)識將待升級的驅(qū)動軟件與設(shè)備對象隔 離開,從而實現(xiàn)了可以在不重新復(fù)位設(shè)備的情況下完成相應(yīng)的驅(qū)動軟件的升 級操作,進而實現(xiàn)了不間斷運行的驅(qū)動軟件升級實現(xiàn)方案,降低了驅(qū)動軟件 升級過程對系統(tǒng)運行的影響。
6為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例描述中所 需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā) 明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前 提下,還可以才艮據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的驅(qū)動軟件升級過程示意圖2為本發(fā)明實施例中相應(yīng)的驅(qū)動軟件框架示意圖; 圖3為本發(fā)明實施例提供的驅(qū)動軟件升級方案的具體實現(xiàn)過程示意圖; 圖4為本發(fā)明實施例的應(yīng)用實例示意圖; 圖5為本發(fā)明實施例提供的裝置的結(jié)構(gòu)示意圖。
具體實施例方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行 清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而 不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作 出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明實施例是在驅(qū)動軟件被加載到內(nèi)存中時,使用驅(qū)動對象的數(shù)據(jù)結(jié) 構(gòu)管理相應(yīng)的驅(qū)動函數(shù),使用設(shè)備對象的數(shù)據(jù)結(jié)構(gòu)管理應(yīng)用程序在調(diào)用驅(qū)動 函數(shù)時使用的各種數(shù)據(jù),同時設(shè)備對象與驅(qū)動對象之間可以存在多對一的關(guān) 系。
具體地,在對驅(qū)動軟件升級的時候,本發(fā)明實施例提供的驅(qū)動軟件升級 的實現(xiàn)方案中,如圖1所示,可以包括以下處理步驟
步驟11 ,為需要進行驅(qū)動軟件升級的設(shè)備對象設(shè)置驅(qū)動軟件升級開始標(biāo) 識,通過驅(qū)動軟件升級開始標(biāo)識禁止調(diào)用該設(shè)備對象對應(yīng)的驅(qū)動對象管理的 驅(qū)動函凄t。
步驟12,對相應(yīng)的設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)進行升級操
7作,即使用升級后的驅(qū)動函數(shù)替代升級前的驅(qū)動函數(shù)。
具體地,該步驟中,可以將該(上述/需要進行升級操作的)驅(qū)動函數(shù)對 應(yīng)的部分或全部驅(qū)動代碼更新為升級后的驅(qū)動函數(shù)對應(yīng)的部分或全部驅(qū)動代 碼。
步驟13,在升級操作結(jié)束后,將相應(yīng)的驅(qū)動軟件升級開始標(biāo)識更新為驅(qū) 動軟件升級結(jié)束標(biāo)識,以通過驅(qū)動軟件升級結(jié)束標(biāo)識允許應(yīng)用程序調(diào)用所述 設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)。
進一 步地,若在對所述設(shè)備對象對應(yīng)的驅(qū)動軟件進行升級操作的過程 中,相應(yīng)的設(shè)備對象中的私有數(shù)據(jù)需要被更新,則還更新該設(shè)備對象中的數(shù) 據(jù),以便于可以使得可以通過更新后的數(shù)據(jù)指示調(diào)度該設(shè)備對象對應(yīng)的驅(qū)動 對象管理的驅(qū)動函數(shù)時使用的參數(shù)。
本發(fā)明實施例中,還提供了針對驅(qū)動升級過程中的中斷及阻塞的驅(qū)動函 數(shù)的處理,具體可以在對所述設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)進行 升級操作之前,調(diào)用驅(qū)動軟件對應(yīng)的驅(qū)動升級開始回調(diào)函數(shù),以通過所述驅(qū) 動升級開始回調(diào)函數(shù)關(guān)閉中斷,并令當(dāng)前阻塞的驅(qū)動函數(shù)調(diào)用結(jié)束。并且, 在對所述設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)進行升級操作之后,調(diào)用 驅(qū)動對象管理的驅(qū)動升級結(jié)束回調(diào)函數(shù),以通過所述驅(qū)動升級結(jié)束回調(diào)函數(shù) 重新掛接中斷處理函數(shù)。
通過上述本發(fā)明實施例的實現(xiàn),使得在驅(qū)動軟件升級的過程中,可以保 證系統(tǒng)不間斷運行,即升級驅(qū)動軟件的過程中硬件不用中斷運行,上層軟件 不用感知驅(qū)動軟件的升級。而且,通過本發(fā)明實施例提供的技術(shù)方案,可以
打補丁方式進行驅(qū)動軟件升級。
為便于對本發(fā)明實施例的理解,下面將結(jié)合具體的應(yīng)用對本發(fā)明實施例 的實現(xiàn)過程進行詳細說明。本發(fā)明實施例中,為了能夠方便對驅(qū)動軟件進行運行時升級,具體可以使用對象化的思想對驅(qū)動軟件進行管理,以形成標(biāo)準(zhǔn)的驅(qū)動軟件框架,并基于該標(biāo)準(zhǔn)的驅(qū)動軟件框架實現(xiàn)相應(yīng)的驅(qū)動升級操作。
為了便于理解本發(fā)明實施例提供的驅(qū)動軟件升級實現(xiàn)方案,下面將對相應(yīng)的標(biāo)準(zhǔn)的驅(qū)動軟件框架進行說明。
如圖2所示,相應(yīng)的標(biāo)準(zhǔn)的驅(qū)動軟件框架具體可以包括
驅(qū)動模塊對象,用于管理驅(qū)動模塊,具體用于管理驅(qū)動模塊對應(yīng)的驅(qū)動函數(shù), 一個驅(qū)動代碼編譯后形成的載體便為相應(yīng)的一個驅(qū)動模塊,每個驅(qū)動模塊對象對應(yīng)一組驅(qū)動函數(shù), 一個驅(qū)動模塊被加載后生成一個驅(qū)動模塊對象。
驅(qū)動程序?qū)ο?,用于管理?qū)動代碼,具體用于管理的驅(qū)動函數(shù),每個驅(qū)動程序?qū)ο髮?yīng)一組驅(qū)動函數(shù),驅(qū)動代碼被加載后便會生成一個或多個驅(qū)動
程序?qū)ο螅?br>
設(shè)備對象,用于管理設(shè)備資源,對應(yīng)具體的設(shè)備,在設(shè)備初始化時會生成相應(yīng)的設(shè)備對象, 一個或多個設(shè)備對象對應(yīng)一個驅(qū)動程序?qū)ο螅?br>
文件對象,用于管理會話,用戶操作設(shè)備時打開設(shè)備獲得設(shè)備句柄,每個句柄索引 一個文件對象, 一個或多個文件對象對應(yīng)一個設(shè)備對象。
上述驅(qū)動模塊對象和驅(qū)動程序?qū)ο蠹礊橄鄳?yīng)的驅(qū)動軟件中的驅(qū)動對象。
若采用圖2所示的驅(qū)動軟件框架對驅(qū)動進行管理,則相應(yīng)的驅(qū)動軟件(即驅(qū)動代碼)與設(shè)備對象中的數(shù)據(jù)是分離的,這樣,便可以實現(xiàn)針對嵌入式等計算機系統(tǒng)的不間斷運行升級驅(qū)動軟件,即在升級驅(qū)動軟件時,僅替換驅(qū)動代碼,以通過替換后的驅(qū)動代碼生成新的驅(qū)動模塊對象和驅(qū)動程序?qū)ο?。在整個驅(qū)動軟件升級過程中,不刪除設(shè)備對象,不復(fù)位硬件。
為實現(xiàn)不間斷運行升級驅(qū)動軟件,本發(fā)明實施例中,還針對每個驅(qū)動程序?qū)ο笤O(shè)置對應(yīng)驅(qū)動升級開始回調(diào)函數(shù)和驅(qū)動升級結(jié)束回調(diào)函數(shù),且每個設(shè)備對象具備升級狀態(tài)標(biāo)識,即驅(qū)動軟件升級開始標(biāo)識和驅(qū)動軟件升級結(jié)束標(biāo)識。
具體地,基于上述圖2所示的驅(qū)動軟件框架,本發(fā)明實施例提供的驅(qū)動軟
件升級過程如圖3所示,具體可以包括
步驟31,針對設(shè)備對象設(shè)置對應(yīng)的表示當(dāng)前驅(qū)動軟件正在升級的升級狀態(tài)標(biāo)識,即設(shè)置設(shè)備對象的升級狀態(tài)標(biāo)識為驅(qū)動軟件升級開始標(biāo)識;
設(shè)置了驅(qū)動軟件升級開始標(biāo)識后,在應(yīng)用程序調(diào)用該設(shè)備對象對應(yīng)的驅(qū)動函數(shù)時將返回驅(qū)動軟件正在升級狀態(tài),以便于應(yīng)用程序在等待驅(qū)動軟件升級結(jié)束后繼續(xù)訪問驅(qū)動軟件。
步驟32,通過驅(qū)動軟件的驅(qū)動升級開始回調(diào)函數(shù),進行驅(qū)動軟件升級前的準(zhǔn)備工作;
具體地,可以查找與需要被升級的驅(qū)動模塊相關(guān)的設(shè)備對象,根據(jù)該相關(guān)的設(shè)備對象確定其對應(yīng)的驅(qū)動程序?qū)ο螅⒁来握{(diào)用驅(qū)動程序?qū)ο髮?yīng)的驅(qū)動升級開始回調(diào)函數(shù),以通過該驅(qū)動升級開始回調(diào)函數(shù)完成驅(qū)動軟件升級前的準(zhǔn)備工作;其中,相應(yīng)的準(zhǔn)備工作具體可以但不限于包括關(guān)閉中斷,令當(dāng)前阻塞的驅(qū)動函數(shù)調(diào)用結(jié)束,等等。
步驟33,完成上述驅(qū)動軟件升級前的準(zhǔn)備工作后,則卸載需要升級的驅(qū)動代碼,并釋放相應(yīng)的驅(qū)動程序?qū)ο蠛万?qū)動模塊對象;
步驟34,卸載需要升級的驅(qū)動代碼后,則加載新版本的驅(qū)動代碼(即升級后的驅(qū)動代碼),基于升級后的驅(qū)動代碼生成升級后的驅(qū)動程序?qū)ο蠛万?qū)動模塊對象;
在上述步驟33和步驟34中,相應(yīng)的釋放驅(qū)動程序?qū)ο蠛万?qū)動模塊對象的操作,與卸載、更新驅(qū)動代碼的操作之間的執(zhí)行順序無先后限制;
步驟35,將新生成的升級后的驅(qū)動程序?qū)ο笸ㄟ^指針與相應(yīng)的設(shè)備對象對應(yīng)關(guān)聯(lián)起來,以便于設(shè)備對象調(diào)用升級后的驅(qū)動代碼。
10步驟36,通過驅(qū)動軟件的驅(qū)動升級結(jié)束回調(diào)函H進行驅(qū)動軟件升級后
的處理工作;
具體地,相關(guān)的設(shè)備對象可以調(diào)用對應(yīng)的驅(qū)動程序?qū)ο髮?yīng)的驅(qū)動升級結(jié)束回調(diào)函數(shù),通過該驅(qū)動升級結(jié)束回調(diào)函數(shù)完成石更件的增量初始化,比如對某些寄存器的配置進行修改,更新設(shè)備對象下的數(shù)據(jù),重新掛接中斷處理
函數(shù),打開中斷等處理;
其中,設(shè)備對象下的數(shù)據(jù)即為設(shè)備對象下對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)在被調(diào)用時使用的參與計算的數(shù)據(jù)。
步驟37,設(shè)置設(shè)備對象為結(jié)束升級驅(qū)動軟件的升級狀態(tài)標(biāo)識,即設(shè)置設(shè)備對應(yīng)的升級狀態(tài)標(biāo)識為驅(qū)動軟件升級結(jié)束標(biāo)識,之后,相應(yīng)的應(yīng)用程序可以正常調(diào)用升級后的驅(qū)動軟件。
再如圖4所示,其中的由左至右的三個驅(qū)動代碼框架分別為升級前的驅(qū)動代碼框架,升級中的驅(qū)動代碼框架和升級后的驅(qū)動代碼框架。其中,在升級前的驅(qū)動代碼框架中,設(shè)備對象dev一obj對應(yīng)的數(shù)據(jù)為舊的數(shù)據(jù)old dataconfig (即舊的私有數(shù)據(jù)),驅(qū)動對象dn^obj (包括驅(qū)動程序?qū)ο蠛万?qū)動才莫塊對象)對應(yīng)的代碼為舊的代碼old code;在升級中的驅(qū)動代碼框架中,需要卸載相應(yīng)的舊的代碼及驅(qū)動對象drv—obj;在升級后的驅(qū)動代碼框架中,則以新的代碼new code代替了舊的代碼old code,并生成了對應(yīng)的驅(qū)動對象drv—obj,另夕卜,還更新了設(shè)備對象dev—obj對應(yīng)的舊的數(shù)據(jù)old data config為新的數(shù)據(jù)new data config (即新的私有數(shù)據(jù))。整個驅(qū)動軟件升級過程中i殳備對象dev—obj和文件對象file_obj均沒有改變,也沒有參與到升級操作過程
本發(fā)明實施例的實現(xiàn),解決了非補丁方式升級驅(qū)動軟件時,造成嵌入式等計算機系統(tǒng)中斷運行的問題,提高了系統(tǒng)的可靠性。本發(fā)明實施例可以適用于嵌入式系統(tǒng)中,也可以適用于其他存在類似需求的計算機系統(tǒng)中。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例
的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-0nly Memory, ROM)或隨機存儲記憶體(Random Access Memory, RA
M)等。
本發(fā)明實施例還提供了一種驅(qū)動軟件升級的裝置,如圖5所示,該裝置具體可以包括以下單元
第一設(shè)置單元501,用于為需要進行驅(qū)動軟件升級的設(shè)備對象設(shè)置驅(qū)動軟件升級開始標(biāo)識,相應(yīng)的驅(qū)動軟件升級開始標(biāo)識用于禁止調(diào)用所述設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù);
升級操作單元502,用于在上述第一標(biāo)識設(shè)置單元501設(shè)置驅(qū)動軟件升級開始標(biāo)識后,對相應(yīng)的設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)進行升級操作;該升級操作單元502具體可以用于釋放驅(qū)動對象,并將相應(yīng)驅(qū)動函數(shù)對應(yīng)的部分或全部驅(qū)動代碼更新為升級后的驅(qū)動函數(shù)對應(yīng)的部分或全部驅(qū)動代碼,相應(yīng)的釋放驅(qū)動對象和更新驅(qū)動代碼的動作的執(zhí)行順序無先后限制,該升級操作單元502還用于加載更新后的驅(qū)動代碼,生成新的驅(qū)動對象,并將新的驅(qū)動對象與相應(yīng)的設(shè)備對象通過指針對應(yīng)關(guān)聯(lián)起來。
第二設(shè)置單元503,用于在上述升級操作單元502執(zhí)行的升級操作結(jié)束后,將上述第一標(biāo)識設(shè)置單元501設(shè)置的驅(qū)動軟件升級開始標(biāo)識更新為驅(qū)動軟件升級結(jié)束標(biāo)識,相應(yīng)的驅(qū)動軟件升級結(jié)束標(biāo)識用于允許調(diào)用所述設(shè)備對象對應(yīng)的驅(qū)動軟件。
進一步地,該裝置還可以包括以下單元
數(shù)據(jù)更新單元504,用于在上述升級操作單元502對設(shè)備對象對應(yīng)的驅(qū)動軟件進行升級操作的過程中,相應(yīng)的設(shè)備對象中的數(shù)據(jù)發(fā)生變化時,更新該
12設(shè)備對象中的數(shù)據(jù),相應(yīng)的數(shù)據(jù)用于指示調(diào)用該設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)時使用的數(shù)據(jù)。具體地,該數(shù)據(jù)更新單元504可以通過驅(qū)動軟件對應(yīng)的驅(qū)動升級結(jié)束回調(diào)函數(shù)更新所述設(shè)備對象中的數(shù)據(jù)。
可選地,該裝置還可以包括以下單元
升級準(zhǔn)備單元505,用于在上述升級操作單元502對設(shè)備對象對應(yīng)的驅(qū)動軟件進行升級操作之前,關(guān)閉中斷,并令當(dāng)前阻塞的驅(qū)動函數(shù)調(diào)用結(jié)束,具體可以為調(diào)用驅(qū)動軟件對應(yīng)的驅(qū)動升級開始回調(diào)函數(shù)(具體可為驅(qū)動軟件中的驅(qū)動程序?qū)ο髮?yīng)的驅(qū)動升級開始回調(diào)函數(shù)),以通過驅(qū)動升級開始回調(diào)函數(shù)關(guān)閉中斷,并令當(dāng)前阻塞的驅(qū)動函數(shù)調(diào)用結(jié)束;
升級結(jié)束處理單元506,用于在上述升級操作單元502對設(shè)備對象對應(yīng)的驅(qū)動軟件進行升級操作之后,重新掛接中斷處理函數(shù),具體可以為調(diào)用驅(qū)動軟件對應(yīng)的驅(qū)動升級結(jié)束回調(diào)函數(shù)(具體可為驅(qū)動軟件中的驅(qū)動程序?qū)ο髮?yīng)的驅(qū)動升級結(jié)束回調(diào)函數(shù)),以通過驅(qū)動升級結(jié)束回調(diào)函數(shù)重新掛接中斷處理函數(shù)。
本發(fā)明實施例的實現(xiàn),解決了非補丁方式升級驅(qū)動軟件時,造成嵌入式等計算機系統(tǒng)中斷運行的問題,提高了系統(tǒng)的可靠性。
以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)該以權(quán)利要求的保護范圍為準(zhǔn)。
權(quán)利要求
1、一種驅(qū)動軟件升級的方法,其特征在于,包括為需要進行驅(qū)動軟件升級的設(shè)備對象設(shè)置驅(qū)動軟件升級開始標(biāo)識,所述驅(qū)動軟件升級開始標(biāo)識用于禁止應(yīng)用程序調(diào)用所述設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù);對所述設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)進行升級操作;在所述升級操作結(jié)束后,將所述驅(qū)動軟件升級開始標(biāo)識更新為驅(qū)動軟件升級結(jié)束標(biāo)識,所述驅(qū)動軟件升級結(jié)束標(biāo)識用于允許應(yīng)用程序調(diào)用所述設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法還包括 若在對所述設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)進行升級操作的過 程中,所述設(shè)備對象中管理的私有數(shù)據(jù)發(fā)生變化,則更新所述設(shè)備對象中管 理的私有數(shù)據(jù),所述數(shù)據(jù)用于指示調(diào)用該設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū) 動函數(shù)時所使用的參數(shù)。
3、 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述對所述設(shè)備對象對 應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)進行升級操作的步驟包括釋放驅(qū)動對象,并將所述驅(qū)動對象管理的驅(qū)動函數(shù)的部分或全部驅(qū)動代 碼更新為升級后的驅(qū)動函數(shù)對應(yīng)的部分或全部驅(qū)動代碼;加載更新后的驅(qū)動代碼,生成新的驅(qū)動對象,并將新的驅(qū)動對象與所述 設(shè)備對象通過指針關(guān)聯(lián)。
4、 才艮據(jù)權(quán)利要求1或2所述的方法,其特征在于,在對所述設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)進行升級操作之前,該方法還包括關(guān)閉中斷,并令當(dāng)前被阻塞的驅(qū)動函數(shù)調(diào)用結(jié)束;在對所述設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)進行升級操作之后, 該方法還包括重新掛接中斷處理函數(shù)。
5、 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述關(guān)閉中斷,并令當(dāng)前 被阻塞的驅(qū)動函數(shù)調(diào)用結(jié)束是通過驅(qū)動升級開始回調(diào)函數(shù)實現(xiàn),所述重新掛 接中斷處理函數(shù)和更新所述設(shè)備對象中的私有數(shù)據(jù)是通過驅(qū)動升級結(jié)束回調(diào) 函數(shù)實現(xiàn)。
6、 一種驅(qū)動軟件升級的裝置,其特征在于,包括第一設(shè)置單元,用于為需要進行驅(qū)動軟件升級的設(shè)備對象設(shè)置驅(qū)動軟件 升級開始標(biāo)識,所述驅(qū)動軟件升級開始標(biāo)識用于禁止調(diào)用所述設(shè)備對象對應(yīng) 的驅(qū)動對象管理的驅(qū)動函數(shù); 升級操作單元,用于在所述第一標(biāo)識設(shè)置單元設(shè)置所述驅(qū)動軟件升級開 始標(biāo)識后,對所述設(shè)備對象對應(yīng)的驅(qū)動函數(shù)進行升級操作;第二設(shè)置單元,用于在所述升級操作單元執(zhí)行的升級操作結(jié)束后,將所 述驅(qū)動軟件升級開始標(biāo)識更新為驅(qū)動軟件升級結(jié)束標(biāo)識,所述驅(qū)動軟件升級 結(jié)束標(biāo)識用于允許應(yīng)用程序調(diào)用所述設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)。
7、 根據(jù)權(quán)利要求6所述的裝置,其特征在于,該裝置還包括數(shù)據(jù)更新單元,用于在對所述升級操作單元對設(shè)備對象對應(yīng)的驅(qū)動對象 管理的驅(qū)動函數(shù)進行升級操作的過程中,當(dāng)所述設(shè)備對象中的私有數(shù)據(jù)需要 更新時,更新所述設(shè)備對象中的私有數(shù)據(jù),所述數(shù)據(jù)用于指示調(diào)用該設(shè)備對 象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)時使用的參數(shù)。
8、 根據(jù)權(quán)利要求6或7所述的裝置,其特征在于,所述升級操作單元具體用于釋放驅(qū)動對象,并將所述驅(qū)動函數(shù)的部分或全部驅(qū)動代碼更新為升級后 的驅(qū)動函數(shù)對應(yīng)的部分或全部驅(qū)動代碼,還用于加載更新后的驅(qū)動代碼,生 成新的驅(qū)動對象,并將新的驅(qū)動對象與所述設(shè)備對象通過指針關(guān)聯(lián)。
9、 根據(jù)權(quán)利要求6或7所述的裝置,其特征在于,該裝置還包括升級準(zhǔn)備單元,用于在對所述設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)進行升級操作之前,關(guān)閉中斷,并令當(dāng)前阻塞的驅(qū)動函數(shù)調(diào)用結(jié)束;升級結(jié)束處理單元,用于在對所述設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動 函數(shù)進行升級操作之后,重新掛接中斷處理函數(shù)。
10、 根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述升級準(zhǔn)備單元關(guān)閉中 斷,并令當(dāng)前阻塞的驅(qū)動函數(shù)調(diào)用結(jié)束是通過驅(qū)動升級開始回調(diào)函數(shù)實現(xiàn), 所述升級結(jié)束處理單元重新掛接中斷處理函數(shù)和所述數(shù)據(jù)更新單元更新所述 設(shè)備對象中的私有數(shù)據(jù)是通過驅(qū)動升級結(jié)束回調(diào)函數(shù)實現(xiàn)。
全文摘要
一種驅(qū)動軟件升級的方法及裝置,包括首先,為需要進行驅(qū)動軟件升級的設(shè)備對象設(shè)置驅(qū)動軟件升級開始標(biāo)識,所述驅(qū)動軟件升級開始標(biāo)識用于禁止應(yīng)用程序調(diào)用所述設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù);之后,對所述設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)進行升級操作,即替換驅(qū)動函數(shù);并在升級操作結(jié)束后,將所述驅(qū)動軟件升級開始標(biāo)識更新為驅(qū)動軟件升級結(jié)束標(biāo)識,所述驅(qū)動軟件升級結(jié)束標(biāo)識用于允許應(yīng)用程序調(diào)用所述設(shè)備對象對應(yīng)的驅(qū)動對象管理的驅(qū)動函數(shù)。本發(fā)明實施例實現(xiàn)了可以在不重新復(fù)位并初始化硬件的情況下完成相應(yīng)的驅(qū)動軟件的升級操作,即實現(xiàn)了不間斷運行的驅(qū)動軟件升級實現(xiàn)方案,從而降低了驅(qū)動軟件升級過程對系統(tǒng)運行的影響。
文檔編號G06F9/445GK101655801SQ20091009259
公開日2010年2月24日 申請日期2009年9月11日 優(yōu)先權(quán)日2009年9月11日
發(fā)明者維 薛 申請人:華為技術(shù)有限公司