支持多組件動(dòng)態(tài)重構(gòu)的嵌入式應(yīng)用軟件加卸載方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及嵌入式控制【技術(shù)領(lǐng)域】,本發(fā)明公開了一種支持多組件動(dòng)態(tài)重構(gòu)的嵌入式應(yīng)用軟件加卸載方法,其具體包括以下的步驟:步驟一、每個(gè)應(yīng)用軟件組件至少實(shí)現(xiàn)兩個(gè)接口,啟動(dòng)運(yùn)行接口,停止運(yùn)行接口;步驟二、當(dāng)需要對(duì)某個(gè)應(yīng)用軟件組件進(jìn)行加載時(shí),軟件加載命令觸發(fā),應(yīng)用軟件控制模塊將該應(yīng)用軟件組件的可執(zhí)行文件加載至內(nèi)存,并執(zhí)行該函數(shù)接口;步驟三、當(dāng)需要對(duì)某個(gè)應(yīng)用軟件組件進(jìn)行卸載時(shí),軟件卸載命令觸發(fā),應(yīng)用軟件控制模塊在全局符號(hào)表中查找該應(yīng)用軟件組件停止運(yùn)行接口的函數(shù)指針地址,并執(zhí)行該函數(shù)接口,然后將該應(yīng)用軟件組件從內(nèi)存中卸載。本發(fā)明使得在一個(gè)處理器上可以同時(shí)運(yùn)行多個(gè)應(yīng)用軟件組件,互不干擾。
【專利說明】支持多組件動(dòng)態(tài)重構(gòu)的嵌入式應(yīng)用軟件加卸載方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及嵌入式軟件控制領(lǐng)域,本發(fā)明公開了一種支持多組件動(dòng)態(tài)重構(gòu)的嵌入式應(yīng)用軟件加卸載方法及系統(tǒng)。
【背景技術(shù)】
[0002]在傳統(tǒng)的嵌入式軟件系統(tǒng)中,嵌入式應(yīng)用軟件往往是與嵌入式處理器及嵌入式操作系統(tǒng)緊密綁定,其功能也是為某種特定的應(yīng)用而定制,軟硬件緊密耦合,缺乏靈活性和可擴(kuò)展性。隨著信息技術(shù)的發(fā)展,嵌入式處理器及嵌入式操作系統(tǒng)的能力越來越強(qiáng)大,嵌入式應(yīng)用軟件的功能也愈加復(fù)雜,以往定制開發(fā)的方法已難以滿足行業(yè)發(fā)展的需求。硬件平臺(tái)通用化、應(yīng)用軟件組件化開發(fā),以及通過應(yīng)用軟件組件動(dòng)態(tài)可重構(gòu)的方法實(shí)現(xiàn)應(yīng)用軟件的功能多樣化,功能靈活組合,是嵌入式軟件技術(shù)發(fā)展的趨勢(shì),這種方法既能實(shí)現(xiàn)良好的已有應(yīng)用組件復(fù)用,又能在線靈活地根據(jù)功能需求,通過若干應(yīng)用組件快速組合,定制出所需應(yīng)用軟件功能,體現(xiàn)軟件無線電的特征。
[0003]現(xiàn)有技術(shù)中的嵌入式實(shí)時(shí)操作系統(tǒng)僅支持在一個(gè)嵌入式系統(tǒng)上對(duì)一個(gè)應(yīng)用組件的加卸載操作。如申請(qǐng)?zhí)枮?200810247059.5的專利申請(qǐng),其將應(yīng)用模塊分為基礎(chǔ)平臺(tái)組件和若干應(yīng)用組件;運(yùn)行基礎(chǔ)平臺(tái);所述基礎(chǔ)平臺(tái)包括所述基礎(chǔ)平臺(tái)組件、數(shù)據(jù)庫模式定義語言DDL組件和實(shí)時(shí)操作系統(tǒng)RTOS ;所述基礎(chǔ)平臺(tái)將各應(yīng)用組件先保存在外存;當(dāng)基礎(chǔ)平臺(tái)需要調(diào)用一應(yīng)用組件時(shí),將該應(yīng)用組件從外存中加載到內(nèi)存,編譯鏈接后運(yùn)行該應(yīng)用組件;當(dāng)一應(yīng)用組件運(yùn)行結(jié)束,基礎(chǔ)平臺(tái)從內(nèi)存中卸載應(yīng)用組件。然而,該方法需要對(duì)應(yīng)用組件進(jìn)行重新編譯鏈接,管理的是應(yīng)用組件代碼。這樣的方法無法實(shí)現(xiàn)多個(gè)應(yīng)用組件互不干擾的同時(shí)運(yùn)行。
【發(fā)明內(nèi)容】
[0004]針對(duì)現(xiàn)有技術(shù)沒有能夠支持多個(gè)應(yīng)用組件互不干擾的同時(shí)運(yùn)行的嵌入式應(yīng)用軟件加卸載方法的技術(shù)問題,本發(fā)明公開了一種支持多組件動(dòng)態(tài)重構(gòu)的嵌入式應(yīng)用軟件加卸載方法。本發(fā)明還公開了一種支持多組件動(dòng)態(tài)重構(gòu)的嵌入式應(yīng)用軟件加卸載系統(tǒng)。
[0005]本發(fā)明公開了一種支持多組件動(dòng)態(tài)重構(gòu)的嵌入式應(yīng)用軟件加卸載方法,其具體包括以下的步驟:步驟一、每個(gè)應(yīng)用軟件組件至少實(shí)現(xiàn)兩個(gè)接口,一個(gè)是啟動(dòng)運(yùn)行接口,一個(gè)是停止運(yùn)行接口,所述啟動(dòng)運(yùn)行接口用于應(yīng)用軟件控制模塊啟動(dòng)應(yīng)用軟件時(shí)運(yùn)行,所述停止運(yùn)行接口用于應(yīng)用軟件控制模塊停止應(yīng)用軟件時(shí)運(yùn)行;步驟二、當(dāng)需要對(duì)某個(gè)應(yīng)用軟件組件進(jìn)行加載時(shí),軟件加載命令觸發(fā),應(yīng)用軟件控制模塊將該應(yīng)用軟件的可執(zhí)行文件加載至內(nèi)存,然后在全局符號(hào)表中查找該應(yīng)用軟件啟動(dòng)運(yùn)行接口的函數(shù)指針地址,并執(zhí)行該函數(shù)接口 ;步驟三、應(yīng)用軟件在啟動(dòng)運(yùn)行接口中調(diào)用注冊(cè)接口向應(yīng)用軟件控制模塊注冊(cè),注冊(cè)接口返回該應(yīng)用軟件運(yùn)行期間唯一的ID號(hào),并在組件注冊(cè)總表中進(jìn)行記錄;步驟四、系統(tǒng)資源管理模塊對(duì)嵌入式系統(tǒng)運(yùn)行時(shí)的各種資源進(jìn)行管理,將已分配給應(yīng)用軟件的系統(tǒng)資源記錄在其唯一的組件資源管理表中,并在組件注冊(cè)總表中進(jìn)行記錄;步驟五、完成資源分配后,應(yīng)用軟件開始運(yùn)行。
[0006]更進(jìn)一步地,上述方法還包括應(yīng)用軟件的動(dòng)態(tài)卸載過程。
[0007]更進(jìn)一步地,上述動(dòng)態(tài)卸載過程具體包括以下的步驟:步驟一、當(dāng)需要對(duì)某個(gè)應(yīng)用軟件組件進(jìn)行卸載時(shí),先掃描操作系統(tǒng)中是否已存在該組件,如有則先調(diào)用該組件的停止運(yùn)行接口停止其運(yùn)行;步驟二、應(yīng)用軟件在停止運(yùn)行接口中調(diào)用注銷接口向應(yīng)用軟件控制模塊注銷,注銷接口輸入?yún)?shù)為上述ID號(hào),此時(shí)系統(tǒng)資源管理模塊自動(dòng)將應(yīng)用軟件運(yùn)行期間申請(qǐng)的系統(tǒng)資源一一釋放。步驟三、調(diào)用系統(tǒng)函數(shù)從內(nèi)存中卸載該組件。
[0008]更進(jìn)一步地,上述方法還包括系統(tǒng)接口將涉及系統(tǒng)資源分配與回收的操作系統(tǒng)API進(jìn)行二次封裝,分為資源申請(qǐng)、資源使用、資源釋放三類,將系統(tǒng)資源與應(yīng)用軟件ID關(guān)聯(lián)起來,由資源管理模塊進(jìn)行統(tǒng)一管理。
[0009]本發(fā)明還公開了一種支持多組件動(dòng)態(tài)重構(gòu)的嵌入式應(yīng)用軟件加卸載系統(tǒng),其具體包括應(yīng)用軟件控制模塊、應(yīng)用軟件接口、應(yīng)用軟件控制接口、系統(tǒng)接口模塊、系統(tǒng)資源管理模塊、組件注冊(cè)總表和組件資源管理表;
所述應(yīng)用軟件控制模塊用于控制應(yīng)用軟件組件的在線加載和卸載;
所述應(yīng)用軟件接口是應(yīng)用軟件內(nèi)部實(shí)現(xiàn)的標(biāo)準(zhǔn)API接口,其包括啟動(dòng)運(yùn)行接口和停止運(yùn)行接口,這兩個(gè)接口用于被應(yīng)用軟件控制模塊調(diào)用,當(dāng)需要加載應(yīng)用軟件時(shí),調(diào)用啟動(dòng)運(yùn)行接口,當(dāng)需要卸載應(yīng)用軟件時(shí),調(diào)用停止運(yùn)行接口 ;
所述應(yīng)用軟件控制接口包括注冊(cè)接口和注銷接口,所述注冊(cè)接口用于應(yīng)用軟件運(yùn)行時(shí)向應(yīng)用軟件控制模塊注冊(cè),所述注銷接口用于應(yīng)用軟件停止運(yùn)行后向應(yīng)用軟件控制模塊注銷;
所述系統(tǒng)接口模塊用于將涉及系統(tǒng)資源分配與回收的操作系統(tǒng)API進(jìn)行二次封裝,統(tǒng)一分為資源申請(qǐng)、資源使用和資源釋放三類,將系統(tǒng)資源與應(yīng)用軟件的ID關(guān)聯(lián)起來,由資源管理模塊進(jìn)行統(tǒng)一管理;
所述系統(tǒng)資源管理模塊用于每個(gè)應(yīng)用軟件的系統(tǒng)資源的分配與回收;所述組件注冊(cè)總表用于記錄分配給應(yīng)用軟件的軟件ID列表,并為每一個(gè)應(yīng)用軟件分配唯一的組件資源管理表;
所述組件資源管理表用于記錄分配給應(yīng)用軟件的系統(tǒng)資源占用情況,與應(yīng)用軟件ID一一對(duì)應(yīng),在硬件上電時(shí)及應(yīng)用軟件注銷時(shí)執(zhí)行初始化操作。
[0010]通過采用以上的技術(shù)方案,本發(fā)明的有益效果為:系統(tǒng)上電后,本發(fā)明能在線進(jìn)行應(yīng)用軟件組件的加載,從而實(shí)現(xiàn)應(yīng)用功能的動(dòng)態(tài)可重構(gòu),當(dāng)應(yīng)用軟件組件被加載到內(nèi)存后,本發(fā)明能控制應(yīng)用軟件組件啟動(dòng)運(yùn)行,本發(fā)明對(duì)軟硬件資源進(jìn)行管理,使得可支持多個(gè)應(yīng)用組件互不干擾的同時(shí)運(yùn)行于一個(gè)VxWorks嵌入式系統(tǒng)之上,嵌入式框架對(duì)各個(gè)組件的操作互不影響。通過對(duì)系統(tǒng)資源進(jìn)行管理,使得在操作系統(tǒng)不重新啟動(dòng)的情況下,對(duì)任意應(yīng)用組件進(jìn)行運(yùn)行期間的資源管理,保證系統(tǒng)運(yùn)行期間進(jìn)行多次應(yīng)用組件加卸載后,系統(tǒng)資源不會(huì)泄露。該方法的應(yīng)用,一方面使傳統(tǒng)的嵌入式應(yīng)用軟件開發(fā)具備了高度靈活性,同時(shí)大幅降低定制化開發(fā)成本,縮短研發(fā)周期;另一方面還使嵌入式應(yīng)用軟件具備了在線可重構(gòu)、功能重定義的能力,提高應(yīng)用靈活性的同時(shí),還能大幅提高嵌入式硬件資源復(fù)用,實(shí)現(xiàn)一套硬件多種功能。本發(fā)明是對(duì)編譯后的可執(zhí)行文件進(jìn)行直接加載,管理的是各個(gè)獨(dú)立的應(yīng)用組件,組件之間、組件與框架之間無共用的代碼。本發(fā)明本實(shí)現(xiàn)了對(duì)嵌入式硬件資源和軟件資源的管理,利用一個(gè)嵌入式框架,對(duì)應(yīng)用組件進(jìn)行加載、運(yùn)行、停止和卸載等操作,并動(dòng)態(tài)的管理組件的內(nèi)存、消息隊(duì)列、信號(hào)量、中斷、管道等軟硬件資源的分配和回收,保證系統(tǒng)資源不發(fā)生泄漏。通過對(duì)軟硬件資源進(jìn)行管理,因此可以支持多個(gè)應(yīng)用組件互不干擾的同時(shí)運(yùn)行于一個(gè)VxWorks嵌入式系統(tǒng)之上,嵌入式框架對(duì)各個(gè)組件的操作互不影響。
【專利附圖】
【附圖說明】
[0011]圖1為本發(fā)明的應(yīng)用軟件動(dòng)態(tài)加載流程圖。
[0012]圖2為本發(fā)明的應(yīng)用軟件動(dòng)態(tài)卸載流程圖。
[0013]圖3為系統(tǒng)接口實(shí)現(xiàn)流程圖。
[0014]圖4為本發(fā)明的頂層結(jié)構(gòu)和接口。
【具體實(shí)施方式】
[0015]下面結(jié)合說明書附圖,詳細(xì)說明本發(fā)明的【具體實(shí)施方式】。
[0016]本發(fā)明利用嵌入式可執(zhí)行應(yīng)用軟件的動(dòng)態(tài)可重構(gòu)來實(shí)現(xiàn)對(duì)嵌入式硬件資源的復(fù)用,以軟件來定義硬件功能。這里的應(yīng)用組件指的是基于VxWorks操作系統(tǒng)之上,采用GNU的編譯器編譯的可在VxWorks操作系統(tǒng)上直接運(yùn)行的可執(zhí)行文件。動(dòng)態(tài)可重構(gòu)的實(shí)現(xiàn)主要是通過一個(gè)獨(dú)立的嵌入式軟件框架軟件對(duì)多個(gè)應(yīng)用軟件進(jìn)行管理。
[0017]本發(fā)明公開了一種支持多組件動(dòng)態(tài)重構(gòu)的嵌入式應(yīng)用軟件加卸載方法,其具體包括以下的步驟:步驟一、每個(gè)應(yīng)用軟件組件至少實(shí)現(xiàn)兩個(gè)接口,一個(gè)是啟動(dòng)運(yùn)行接口,一個(gè)是停止運(yùn)行接口,所述啟動(dòng)運(yùn)行接口用于應(yīng)用軟件控制模塊啟動(dòng)應(yīng)用軟件時(shí)運(yùn)行,所述停止運(yùn)行接口用于應(yīng)用軟件控制模塊停止應(yīng)用軟件時(shí)運(yùn)行;步驟二、當(dāng)需要對(duì)某個(gè)應(yīng)用軟件組件進(jìn)行加載時(shí),軟件加載命令觸發(fā),應(yīng)用軟件控制模塊將該應(yīng)用軟件的可執(zhí)行文件加載至內(nèi)存,然后在全局符號(hào)表中查找該應(yīng)用軟件啟動(dòng)運(yùn)行接口的函數(shù)指針地址,并執(zhí)行該函數(shù)接口 ;步驟三、應(yīng)用軟件在啟動(dòng)運(yùn)行接口中調(diào)用注冊(cè)接口向應(yīng)用軟件控制模塊注冊(cè),注冊(cè)接口返回該應(yīng)用軟件運(yùn)行期間唯一的ID號(hào),并在組件注冊(cè)總表中進(jìn)行記錄;步驟四、系統(tǒng)資源管理模塊對(duì)嵌入式系統(tǒng)運(yùn)行時(shí)的各種資源進(jìn)行管理,將已分配給應(yīng)用軟件的系統(tǒng)資源記錄在其唯一的組件資源管理表中,并在組件注冊(cè)總表中進(jìn)行記錄;步驟五、完成資源分配后,應(yīng)用軟件開始運(yùn)行。系統(tǒng)上電后,本發(fā)明能在線進(jìn)行應(yīng)用軟件組件的加載,從而實(shí)現(xiàn)應(yīng)用功能的動(dòng)態(tài)可重構(gòu),當(dāng)應(yīng)用軟件組件被加載到內(nèi)存后,本發(fā)明能控制應(yīng)用軟件組件啟動(dòng)運(yùn)行,本發(fā)明對(duì)軟硬件資源進(jìn)行管理,使得可支持多個(gè)應(yīng)用組件互不干擾的同時(shí)運(yùn)行于一個(gè)VxWorks嵌入式系統(tǒng)之上,嵌入式框架對(duì)各個(gè)組件的操作互不影響。通過對(duì)系統(tǒng)資源進(jìn)行管理,使得在操作系統(tǒng)不重新啟動(dòng)的情況下,對(duì)任意應(yīng)用組件進(jìn)行運(yùn)行期間的資源管理,保證系統(tǒng)運(yùn)行期間進(jìn)行多次應(yīng)用組件加卸載后,系統(tǒng)資源不會(huì)泄露。通過本發(fā)明方法的應(yīng)用,一方面使傳統(tǒng)的嵌入式應(yīng)用軟件開發(fā)具備了高度靈活性,同時(shí)大幅降低定制化開發(fā)成本,縮短研發(fā)周期;另一方面還使嵌入式應(yīng)用軟件具備了在線重構(gòu)、功能重定義的能力,提高應(yīng)用靈活性的同時(shí),還能大幅提高嵌入式硬件資源復(fù)用,實(shí)現(xiàn)一套硬件多種功能。
[0018]如圖1所示的本發(fā)明的應(yīng)用軟件動(dòng)態(tài)加載流程圖,每一個(gè)應(yīng)用軟件必須實(shí)現(xiàn)啟動(dòng)運(yùn)行接口 RunO接口以被應(yīng)用軟件控制模塊調(diào)用。應(yīng)用軟件加載命令觸發(fā)后,應(yīng)用軟件控制模塊將應(yīng)用軟件可執(zhí)行文件加載到內(nèi)存中,在全局符號(hào)表中查找應(yīng)用軟件RunO接口的函數(shù)指針地址,并執(zhí)行該函數(shù)接口 ;應(yīng)用軟件在RunO接口中調(diào)用注冊(cè)接口 _Module_RegisterO向應(yīng)用軟件控制模塊注冊(cè),該接口將返回一個(gè)該軟件運(yùn)行期間唯一的ID號(hào),并在組件注冊(cè)總表中進(jìn)行記錄;資源管理模塊根據(jù)軟件ID為應(yīng)用軟件分配組件資源管理表,以防止系統(tǒng)資源被重復(fù)分配;應(yīng)用軟件運(yùn)行時(shí)申請(qǐng)的所有系統(tǒng)資源都會(huì)記錄在組件資源管理表。當(dāng)需要對(duì)某個(gè)應(yīng)用軟件組件進(jìn)行加載時(shí),調(diào)用系統(tǒng)函數(shù)1adModuleO/1adModuleAt O將其載入內(nèi)存,通過運(yùn)行該組件的啟動(dòng)運(yùn)行接口 RunO接口即可啟動(dòng)其正常運(yùn)行;當(dāng)對(duì)某個(gè)應(yīng)用組件卸載時(shí),首先掃描操作系統(tǒng)是否已存在該組件,如有則先調(diào)用該組件的停止運(yùn)行接口 StopO接口停止其運(yùn)行,然后調(diào)用系統(tǒng)函數(shù)UnldByModuleId O卸載該組件。此外,系統(tǒng)資源管理模塊實(shí)現(xiàn)對(duì)嵌入式系統(tǒng)運(yùn)行時(shí)的各種資源(包括任務(wù)、消息隊(duì)列、信號(hào)量、管道、內(nèi)存、環(huán)形隊(duì)列等)的管理,將已分配給應(yīng)用軟件的系統(tǒng)資源記錄在其唯一的組件資源管理表中,并在組件注冊(cè)總表中進(jìn)行記錄,以確保系統(tǒng)資源不會(huì)被重復(fù)分配。在需要將應(yīng)用軟件卸載前,系統(tǒng)資源管理模塊將應(yīng)用軟件運(yùn)行期間申請(qǐng)的系統(tǒng)資源一一釋放,從而確保不斷電情況下,多次應(yīng)用組件加卸載不會(huì)引起系統(tǒng)資源泄漏,確保其可以重復(fù)進(jìn)行。
[0019]更進(jìn)一步地,上述方法還包括應(yīng)用軟件的動(dòng)態(tài)卸載過程,其具體包括以下的步驟:步驟一、當(dāng)需要對(duì)某個(gè)應(yīng)用軟件組件進(jìn)行卸載時(shí),先掃描操作系統(tǒng)中是否已存在該組件,如有則先調(diào)用該組件的停止運(yùn)行接口停止其運(yùn)行;步驟二、應(yīng)用軟件在停止運(yùn)行接口中調(diào)用注銷接口向應(yīng)用軟件控制模塊注銷,注銷接口輸入?yún)?shù)為權(quán)利要求1中所述ID號(hào),此時(shí)系統(tǒng)資源管理模塊自動(dòng)將應(yīng)用軟件運(yùn)行期間申請(qǐng)的系統(tǒng)資源一一釋放。步驟三、調(diào)用系統(tǒng)函數(shù)從內(nèi)存中卸載該組件。如圖2所示的本發(fā)明的應(yīng)用軟件動(dòng)態(tài)卸載流程圖,每一個(gè)應(yīng)用軟件必須實(shí)現(xiàn)Stop O接口以被應(yīng)用軟件控制模塊調(diào)用。應(yīng)用軟件卸載命令觸發(fā)后,應(yīng)用軟件控制模塊在全局符號(hào)表中查找應(yīng)用軟件Stop O接口的函數(shù)指針地址,并執(zhí)行該函數(shù)接口 ;應(yīng)用軟件在StopO接口中調(diào)用_M0dule_L0gOut()向應(yīng)用軟件控制模塊發(fā)起注銷請(qǐng)求,將軟件ID釋放,刪除組件注冊(cè)總表中的記錄;系統(tǒng)資源管理模塊查詢應(yīng)用軟件運(yùn)行時(shí)申請(qǐng)的組件資源管理表,將表中記錄的系統(tǒng)資源一一釋放,并將組件資源管理表初始化,以備下一個(gè)應(yīng)用組件注冊(cè)時(shí)分配。
[0020]更進(jìn)一步地,上述方法還包括系統(tǒng)接口對(duì)操作系統(tǒng)API進(jìn)行二次封裝,并將所有操作系統(tǒng)API分為資源申請(qǐng)、資源使用和資源釋放三類,在接口中加入軟件ID作為輸入?yún)?shù),以方便系統(tǒng)資源管理模塊對(duì)系統(tǒng)資源進(jìn)行管理。系統(tǒng)接口實(shí)現(xiàn)流程如圖3所示,首先判斷輸入的軟件ID是否已經(jīng)注冊(cè),如果是,則獲取一個(gè)互斥信號(hào)量;然后調(diào)用操作系統(tǒng)API對(duì)系統(tǒng)資源進(jìn)行操作(申請(qǐng)或者釋放),將系統(tǒng)資源操作接口記錄到組件資源管理表中;最后釋放互斥信號(hào)量,返回操作結(jié)果,完成系統(tǒng)資源操作。
[0021]本發(fā)明通過一套嵌入式軟件框架實(shí)現(xiàn),其頂層結(jié)構(gòu)和接口如圖4所示。軟件框架主要由應(yīng)用軟件控制模塊、應(yīng)用軟件接口、應(yīng)用軟件控制接口、系統(tǒng)接口模塊、系統(tǒng)資源管理模塊、組件注冊(cè)總表、組件資源管理表組成。
[0022]應(yīng)用軟件接口是應(yīng)用軟件內(nèi)部實(shí)現(xiàn)的標(biāo)準(zhǔn)API接口,以被應(yīng)用軟件控制模塊調(diào)用。每個(gè)應(yīng)用軟件組件必須實(shí)現(xiàn)兩個(gè)接口,啟動(dòng)運(yùn)行接口 Run O和停止運(yùn)行接口 Stop O,其中RunO用于應(yīng)用軟件控制模塊啟動(dòng)應(yīng)用軟件組件運(yùn)行的接口,Stop O是應(yīng)用軟件控制模塊停止應(yīng)用軟件組件運(yùn)行的接口。
[0023]應(yīng)用軟件控制接口實(shí)現(xiàn)了兩個(gè)接口,注冊(cè)接口 _Module_Register()和注銷接口 _Module_LogOut(),其中_Module_Register O實(shí)現(xiàn)了應(yīng)用軟件運(yùn)行時(shí)向應(yīng)用軟件控制模塊的注冊(cè)功能,該接口將返回一個(gè)該軟件運(yùn)行時(shí)的唯一的軟件ID ;_Module_LogOut()是軟件停止運(yùn)行后向應(yīng)用軟件控制模塊注銷的接口,輸入?yún)?shù)即是軟件ID。
[0024]應(yīng)用軟件控制模塊主要實(shí)現(xiàn)應(yīng)用軟件組件的在線加載和卸載,所述系統(tǒng)資源管理模塊用于每個(gè)應(yīng)用軟件的系統(tǒng)資源的分配與回收。當(dāng)需要對(duì)某個(gè)應(yīng)用軟件組件進(jìn)行加載時(shí),調(diào)用系統(tǒng)函數(shù)1adModule O/1adModuleAt O將其載入內(nèi)存,通過運(yùn)行該組件的RunO接口即可啟動(dòng)其正常運(yùn)行;當(dāng)對(duì)某個(gè)應(yīng)用組件卸載時(shí),首先掃描操作系統(tǒng)是否已存在該組件,如有則先調(diào)用該組件的Stop O接口停止其運(yùn)行,然后調(diào)用系統(tǒng)函數(shù)unI dByModuI e I d O卸載該組件。此外,系統(tǒng)資源管理模塊實(shí)現(xiàn)對(duì)嵌入式系統(tǒng)運(yùn)行時(shí)的各種資源(包括任務(wù)、消息隊(duì)列、信號(hào)量、管道、內(nèi)存、環(huán)形隊(duì)列等)的管理,將已分配給應(yīng)用軟件的系統(tǒng)資源記錄在其唯一的組件資源管理表中,并在組件注冊(cè)總表中進(jìn)行記錄,以確保系統(tǒng)資源不會(huì)被重復(fù)分配。在需要將應(yīng)用軟件卸載前,系統(tǒng)資源管理模塊將應(yīng)用軟件運(yùn)行期間申請(qǐng)的系統(tǒng)資源一一釋放,從而確保不斷電情況下,多次應(yīng)用組件加卸載不會(huì)引起系統(tǒng)資源泄漏,確保其可以重復(fù)進(jìn)行。
[0025]組件注冊(cè)總表,記錄分配給應(yīng)用軟件的軟件ID列表,并為每一個(gè)應(yīng)用軟件分配唯一的組件資源管理表。
[0026]組件資源管理表,記錄分配給應(yīng)用軟件的系統(tǒng)資源占用情況,與應(yīng)用軟件ID —一對(duì)應(yīng),在硬件上電時(shí)及應(yīng)用軟件注銷時(shí)執(zhí)行初始化操作。
[0027]系統(tǒng)接口是將涉及系統(tǒng)資源分配與回收的操作系統(tǒng)API進(jìn)行二次封裝,分為資源申請(qǐng)、資源使用、資源釋放三類,將系統(tǒng)資源與應(yīng)用軟件ID關(guān)聯(lián)起來,由資源管理模塊進(jìn)行統(tǒng)一管理。
[0028]本發(fā)明還公開了一種支持多組件動(dòng)態(tài)重構(gòu)的嵌入式應(yīng)用軟件加卸載系統(tǒng),其具體包括應(yīng)用軟件控制模塊、應(yīng)用軟件接口、應(yīng)用軟件控制接口、系統(tǒng)接口模塊、系統(tǒng)資源管理模塊、組件注冊(cè)總表和組件資源管理表;
所述應(yīng)用軟件控制模塊用于控制應(yīng)用軟件組件的在線加載和卸載;
所述應(yīng)用軟件接口是應(yīng)用軟件內(nèi)部實(shí)現(xiàn)的標(biāo)準(zhǔn)API接口,其包括啟動(dòng)運(yùn)行接口和停止運(yùn)行接口,這兩個(gè)接口用于被應(yīng)用軟件控制模塊調(diào)用,當(dāng)需要加載應(yīng)用軟件時(shí),調(diào)用啟動(dòng)運(yùn)行接口,當(dāng)需要卸載應(yīng)用軟件時(shí),調(diào)用停止運(yùn)行接口 ;
所述應(yīng)用軟件控制接口包括注冊(cè)接口和注銷接口,所述注冊(cè)接口用于應(yīng)用軟件運(yùn)行時(shí)向應(yīng)用軟件控制模塊注冊(cè),所述注銷接口用于應(yīng)用軟件停止運(yùn)行后向應(yīng)用軟件控制模塊注銷;
所述系統(tǒng)接口模塊用于將涉及系統(tǒng)資源分配與回收的操作系統(tǒng)API進(jìn)行二次封裝,統(tǒng)一分為資源申請(qǐng)、資源使用和資源釋放三類,將系統(tǒng)資源與應(yīng)用軟件的ID關(guān)聯(lián)起來,由資源管理模塊進(jìn)行統(tǒng)一管理;
所述系統(tǒng)資源管理模塊用于每個(gè)應(yīng)用軟件的系統(tǒng)資源的分配與回收;
所述組件注冊(cè)總表用于記錄分配給應(yīng)用軟件的軟件ID列表,并為每一個(gè)應(yīng)用軟件分配唯一的組件資源管理表;
所述組件資源管理表用于記錄分配給應(yīng)用軟件的系統(tǒng)資源占用情況,與應(yīng)用軟件ID一一對(duì)應(yīng),在硬件上電時(shí)及應(yīng)用軟件注銷時(shí)執(zhí)行初始化操作。
[0029]上述的實(shí)施例中所給出的系數(shù)和參數(shù),是提供給本領(lǐng)域的技術(shù)人員來實(shí)現(xiàn)或使用發(fā)明的,發(fā)明并不限定僅取前述公開的數(shù)值,在不脫離發(fā)明的思想的情況下,本領(lǐng)域的技術(shù)人員可以對(duì)上述實(shí)施例作出種種修改或調(diào)整,因而發(fā)明的保護(hù)范圍并不被上述實(shí)施例所限,而應(yīng)該是符合權(quán)利要求書提到的創(chuàng)新性特征的最大范圍。
【權(quán)利要求】
1.一種支持多組件動(dòng)態(tài)重構(gòu)的嵌入式應(yīng)用軟件加卸載方法,其具體包括以下的步驟:步驟一、每個(gè)應(yīng)用軟件組件至少實(shí)現(xiàn)兩個(gè)接口,一個(gè)是啟動(dòng)運(yùn)行接口,一個(gè)是停止運(yùn)行接口,所述啟動(dòng)運(yùn)行接口用于應(yīng)用軟件控制模塊啟動(dòng)應(yīng)用軟件時(shí)運(yùn)行,所述停止運(yùn)行接口用于應(yīng)用軟件控制模塊停止應(yīng)用軟件時(shí)運(yùn)行;步驟二、當(dāng)需要對(duì)某個(gè)應(yīng)用軟件組件進(jìn)行加載時(shí),軟件加載命令觸發(fā),應(yīng)用軟件控制模塊將該應(yīng)用軟件的可執(zhí)行文件加載至內(nèi)存,然后在全局符號(hào)表中查找該應(yīng)用軟件啟動(dòng)運(yùn)行接口的函數(shù)指針地址,并執(zhí)行該函數(shù)接口 ;步驟三、應(yīng)用軟件在啟動(dòng)運(yùn)行接口中調(diào)用注冊(cè)接口向應(yīng)用軟件控制模塊注冊(cè),注冊(cè)接口返回該應(yīng)用軟件運(yùn)行期間唯一的ID號(hào),并在組件注冊(cè)總表中進(jìn)行記錄;步驟四、系統(tǒng)資源管理模塊對(duì)嵌入式系統(tǒng)運(yùn)行時(shí)的各種資源進(jìn)行管理,將已分配給應(yīng)用軟件的系統(tǒng)資源記錄在其唯一的組件資源管理表中,并在組件注冊(cè)總表中進(jìn)行記錄;步驟五、完成資源分配后,應(yīng)用軟件開始運(yùn)行。
2.如權(quán)利要求1所述的支持多組件動(dòng)態(tài)重構(gòu)的嵌入式應(yīng)用軟件加卸載方法,其特征在于所述方法還包括應(yīng)用軟件的動(dòng)態(tài)卸載過程。
3.如權(quán)利要求2所述的支持多組件動(dòng)態(tài)重構(gòu)的嵌入式應(yīng)用軟件加卸載方法,其特征在于所述動(dòng)態(tài)卸載過程具體包括以下的步驟:步驟一、當(dāng)需要對(duì)某個(gè)應(yīng)用軟件組件進(jìn)行卸載時(shí),先掃描操作系統(tǒng)中是否已存在該組件,如有則先調(diào)用該組件的停止運(yùn)行接口停止其運(yùn)行;步驟二、應(yīng)用軟件在停止運(yùn)行接口中調(diào)用注銷接口向應(yīng)用軟件控制模塊注銷,注銷接口輸入?yún)?shù)為ID號(hào),此時(shí)系統(tǒng)資源管理模塊自動(dòng)將應(yīng)用軟件運(yùn)行期間申請(qǐng)的系統(tǒng)資源一一釋放;步驟三、調(diào)用系統(tǒng)函數(shù)從內(nèi)存中卸載該組件。
4.如權(quán)利要求1或者3所述的支持多組件動(dòng)態(tài)重構(gòu)的嵌入式應(yīng)用軟件加卸載方法,其特征在于所述方法還包括系統(tǒng)接口將涉及系統(tǒng)資源分配與回收的操作系統(tǒng)API進(jìn)行二次封裝,分為資源申請(qǐng)、資源使用、資源釋放三類,將系統(tǒng)資源與應(yīng)用軟件ID關(guān)聯(lián)起來,由資源管理模塊進(jìn)行統(tǒng)一管理。
5.一種支持多組件動(dòng)態(tài)重構(gòu)的嵌入式應(yīng)用軟件加卸載系統(tǒng),其具體包括應(yīng)用軟件控制模塊、應(yīng)用軟件接口、應(yīng)用軟件控制接口、系統(tǒng)接口模塊、系統(tǒng)資源管理模塊、組件注冊(cè)總表和組件資源管理表; 所述應(yīng)用軟件控制模塊用于控制應(yīng)用軟件組件的在線加載和卸載; 所述應(yīng)用軟件接口是應(yīng)用軟件內(nèi)部實(shí)現(xiàn)的標(biāo)準(zhǔn)API接口,其包括啟動(dòng)運(yùn)行接口和停止運(yùn)行接口,這兩個(gè)接口用于被應(yīng)用軟件控制模塊調(diào)用,當(dāng)需要加載應(yīng)用軟件時(shí),調(diào)用啟動(dòng)運(yùn)行接口,當(dāng)需要卸載應(yīng)用軟件時(shí),調(diào)用停止運(yùn)行接口 ; 所述應(yīng)用軟件控制接口包括注冊(cè)接口和注銷接口,所述注冊(cè)接口用于應(yīng)用軟件運(yùn)行時(shí)向應(yīng)用軟件控制模塊注冊(cè),所述注銷接口用于應(yīng)用軟件停止運(yùn)行后向應(yīng)用軟件控制模塊注銷; 所述系統(tǒng)接口模塊用于將涉及系統(tǒng)資源分配與回收的操作系統(tǒng)API進(jìn)行二次封裝,統(tǒng)一分為資源申請(qǐng)、資源使用和資源釋放三類,將系統(tǒng)資源與應(yīng)用軟件的ID關(guān)聯(lián)起來,由資源管理模塊進(jìn)行統(tǒng)一管理; 所述系統(tǒng)資源管理模塊用于每個(gè)應(yīng)用軟件的系統(tǒng)資源的分配與回收;所述組件注冊(cè)總表用于記錄分配給應(yīng)用軟件的軟件ID列表,并為每一個(gè)應(yīng)用軟件分配唯一的組件資源管理表; 所述組件資源管理表用于記錄分配給應(yīng)用軟件的系統(tǒng)資源占用情況,與應(yīng)用軟件ID一一對(duì)應(yīng),在硬件上電時(shí)及應(yīng)用軟件注銷時(shí)執(zhí)行初始化操作。
【文檔編號(hào)】G06F9/445GK104317629SQ201410661383
【公開日】2015年1月28日 申請(qǐng)日期:2014年11月19日 優(yōu)先權(quán)日:2014年11月19日
【發(fā)明者】廖崇琦, 黃悅, 譚亮 申請(qǐng)人:中國電子科技集團(tuán)公司第二十九研究所