專利名稱:一種嵌入式系統(tǒng)組件加載方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)應(yīng)用程序發(fā)現(xiàn)和組件加載技術(shù)領(lǐng)域,尤其涉及一種嵌入式系統(tǒng)組件加載方法。
背景技術(shù):
目前,組件技術(shù)被廣泛應(yīng)用于嵌入式系統(tǒng)中。在嵌入式系統(tǒng)中,系統(tǒng)的業(yè)務(wù)形態(tài)較多,不同形態(tài)下中間件或應(yīng)用程序的功能不同,需加載的組件也不同,現(xiàn)有技術(shù)通常是在編譯時(shí)必須鏈接組件,這樣對(duì)于相同的中間件或應(yīng)用程序,需要為每個(gè)業(yè)務(wù)形態(tài)的系統(tǒng)鏈接不同的組件,生成不同版本,使用這種方法使得中間件或應(yīng)用程序后續(xù)的軟件維護(hù)工作量大。此外,嵌入式系統(tǒng)包括內(nèi)存在內(nèi)的硬件資源非常有限,編譯鏈接組件庫(kù)后,在應(yīng)用程序啟動(dòng)時(shí)就加載所有組件,不必要地耗費(fèi)了內(nèi)存。
發(fā)明內(nèi)容
針對(duì)上述問(wèn)題,本發(fā)明實(shí)施例提出一種嵌入式系統(tǒng)組件加載方法,所述方法包括應(yīng)用程序或組件在接收到需要調(diào)用其它組件的相應(yīng)功能指令時(shí),查找所述其它組件,所述其它組件具有唯一標(biāo)識(shí)其身份的特征接口 ;查找到所述組件后,將所述組件加載到內(nèi)存中,并獲取所述組件的實(shí)例以及調(diào)用所述組件的相應(yīng)功能接口 ;在不需要所述的相應(yīng)功能時(shí),調(diào)用卸載組件接口,將所述其他組件卸載。優(yōu)選地,所述查找其他組件,具體為根據(jù)內(nèi)存中的組件注冊(cè)表或者組件目錄查找所述其它組件,或者遍歷系統(tǒng)中各組件庫(kù)的特征接口來(lái)查找所述其它組件。優(yōu)選地,應(yīng)用程序或組件啟動(dòng)時(shí)不加載所述其它組件。優(yōu)選地,應(yīng)用程序在編譯階段時(shí)不鏈接所述其它組件。優(yōu)選地,所述其它組件具有唯一標(biāo)識(shí)其身份的特征接口,具體為所述其它組件包含用于返回所述其它組件的名稱的固定名稱接口,或者帶有所述其它組件的名稱的固定接口名稱。本發(fā)明實(shí)施例在應(yīng)用程序啟動(dòng)時(shí)或者編譯時(shí)不加載不必要的組件,即只在應(yīng)用程序或組件在接收到需要調(diào)用其它組件的相應(yīng)功能指令時(shí),才加載相應(yīng)組件,節(jié)省了內(nèi)存,避免了需要針對(duì)不同業(yè)務(wù)形態(tài)的嵌入式系統(tǒng)生成不同版本的應(yīng)用程序。
下面將參照附圖對(duì)具體實(shí)施方案進(jìn)行更詳細(xì)的說(shuō)明,在附圖中圖1是本發(fā)明實(shí)施例的嵌入式瀏覽器動(dòng)態(tài)查找和加載組件流程示意圖;圖2是本發(fā)明實(shí)施例嵌入式系統(tǒng)組件加載方法示意圖。
具體實(shí)施例方式下面通過(guò)附圖和實(shí)施例,對(duì)本發(fā)明實(shí)施例的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
本發(fā)明實(shí)施例提出一種基于動(dòng)態(tài)查找的嵌入式系統(tǒng)組件加載方法,針對(duì)嵌入式系統(tǒng)的特點(diǎn),只在具備組件功能的系統(tǒng)中以及在啟動(dòng)組件功能時(shí)發(fā)現(xiàn)并加載組件,編譯時(shí)無(wú)需鏈接組件,從而無(wú)需為不同業(yè)務(wù)形態(tài)系統(tǒng)中是否需要該組件編譯生成不同版本。本發(fā)明實(shí)施例包含以下步驟步驟1,為各組件配置具有可唯一標(biāo)識(shí)其身份的特征接口。步驟2,應(yīng)用程序或其他組件在接收到需要調(diào)用其它組件相應(yīng)功能指令時(shí),查找內(nèi)存中的組件目錄或者組件注冊(cè)表來(lái)查找組件,或者通過(guò)遍歷系統(tǒng)中各組件庫(kù)的特征接口來(lái)查找組件;所述的查找組件注冊(cè)表以及遍歷手段在順序上沒(méi)有先后限制。步驟3,如果存在該組件,則將組件加載到內(nèi)存中,并獲取組件實(shí)例、調(diào)用組件相應(yīng)的功能接口;步驟4,在退出相應(yīng)功能模塊時(shí),卸載組件,釋放內(nèi)存。其中,唯一標(biāo)識(shí)組件身份的特征接口可使用以下幾種方法組件中包含固定名稱接口,用于返回組件名稱;組件中包含帶有組件名稱的固定接口名。本發(fā)明實(shí)施例根據(jù)嵌入式系統(tǒng)的特點(diǎn),只在具備組件功能的系統(tǒng)中以及在啟動(dòng)組件功能時(shí)加載組件,避免了應(yīng)用程序?yàn)椴煌瑯I(yè)務(wù)形態(tài)的系統(tǒng)生成不同版本,減少了應(yīng)用程序啟動(dòng)時(shí)加載組件耗費(fèi)的內(nèi)存。下面通過(guò)一個(gè)優(yōu)選實(shí)施例對(duì)本發(fā)明實(shí)施例的方法做進(jìn)一步闡述圖1是本發(fā)明實(shí)施例的嵌入式瀏覽器動(dòng)態(tài)查找和加載組件流程示意圖。以嵌入式瀏覽器作為具體的應(yīng)用程序。當(dāng)前網(wǎng)頁(yè)以其跨平臺(tái)、易部署等特點(diǎn)成為嵌入式系統(tǒng)中的主流門(mén)戶導(dǎo)航,嵌入式瀏覽器是解析網(wǎng)頁(yè)的核心,在不同業(yè)務(wù)系統(tǒng)中需求不同,需要加載不同組件的功能,比如對(duì)于雙模機(jī)頂盒需要使用DVB組件庫(kù),但互聯(lián)網(wǎng)機(jī)頂盒不需要DVB組件庫(kù)。通過(guò)本發(fā)明實(shí)施例方法,所述嵌入式瀏覽器可以動(dòng)態(tài)發(fā)現(xiàn)和加載本地功能組件,無(wú)須為不同業(yè)務(wù)系統(tǒng)編譯不同版本,并且只在啟動(dòng)相應(yīng)功能時(shí)才加載組件。本實(shí)例中組件創(chuàng)建實(shí)例的特征接口是以“Get+組件名+Object”命名,撤銷實(shí)例的特征接口是以“Delete+組件名+Object”命名。此外組件的功能接口都是C++類,因此瀏覽器與組件庫(kù)之間需要定義一個(gè)與組件接口一一對(duì)應(yīng)的基類,以供加載組件后能得到組件C++實(shí)例對(duì)象并使用其方法。所述Get、Obje ct、Delete的中文含義分別是獲取、對(duì)象、刪除。此外,本實(shí)例的系統(tǒng)可以基于Iinux操作系統(tǒng),組件編譯成動(dòng)態(tài)庫(kù)(.so),瀏覽器使用Iinux系統(tǒng)函數(shù)dlopen、dlclose、dlsym來(lái)打開(kāi)、關(guān)閉組件庫(kù)以及執(zhí)行組件的接口,具體可以包括以下步驟瀏覽器定義一個(gè)基類,該基類中的方法與組件接口一一對(duì)應(yīng);組件繼承瀏覽器提供的基類,實(shí)現(xiàn)其派生類,并增加創(chuàng)建、撤銷類兩個(gè)接口,分別以“Get+組件名+ObjecCDelete+組件名+Object”命名,用于創(chuàng)建和撤銷組件實(shí)例,編譯成動(dòng)態(tài)庫(kù);在具備該組件功能的系統(tǒng)中,將組件庫(kù)的路徑加入配置文件;當(dāng)頁(yè)面解析到需要調(diào)用組件的功能接口后,瀏覽器查找內(nèi)存中的組件注冊(cè)表是否已注冊(cè)該組件,
如果組件注冊(cè)表中已注冊(cè)該組件,則直接讀取該組件庫(kù)所在路徑,跳轉(zhuǎn)到步驟7 ;如果組件注冊(cè)表中尚未注冊(cè)該組件,則讀取配置文件中的庫(kù)目錄路徑,在該路徑下遍歷庫(kù)查找是否有創(chuàng)建該組件對(duì)象的接口,如果有該接口則將組件名稱和庫(kù)路徑添加到組件注冊(cè)表中,并跳轉(zhuǎn)到步驟7,如果沒(méi)有該接口則返回錯(cuò)誤;如果有創(chuàng)建組件對(duì)象的接口,則調(diào)用創(chuàng)建組件對(duì)象接口,返回組件實(shí)例;然后調(diào)用組件實(shí)例中的方法,以實(shí)現(xiàn)相應(yīng)功能;當(dāng)離開(kāi)頁(yè)面時(shí),調(diào)用撤銷組件對(duì)象的接口,釋放組件實(shí)例。為更加清楚地展示本發(fā)明實(shí)施例的方法,圖2展示了本發(fā)明實(shí)施例嵌入式系統(tǒng)組件加載方法示意圖。從圖2可見(jiàn)所述方法包括步驟200,應(yīng)用程序或組件在接收到需要調(diào)用其它組件的相應(yīng)功能指令時(shí),查找所述其它組件,所述其它組件具有唯一標(biāo)識(shí)其身份的特征接口 ;步驟202,查找到所述組件后,將所述組件加載到內(nèi)存中,并獲取所述組件的實(shí)例以及調(diào)用所述組件的相應(yīng)功能接口 ;步驟204,在不需要所述的相應(yīng)功能時(shí),調(diào)用卸載組件接口,將所述其他組件卸載。優(yōu)選地,所述查找其他組件,具體為根據(jù)內(nèi)存中的組件注冊(cè)表或者組件目錄查找所述其它組件,或者遍歷系統(tǒng)中各組件庫(kù)的特征接口來(lái)查找所述其它組件。優(yōu)選地,應(yīng)用程序或組件啟動(dòng)時(shí)不加載所述其它組件。優(yōu)選地,應(yīng)用程序在編譯階段時(shí)不鏈接所述其它組件。優(yōu)選地,所述其它組件具有唯一標(biāo)識(shí)其身份的特征接口,具體為所述其它組件包含用于返回所述其它組件的名稱的固定名稱接口,或者帶有所述其它組件的名稱的固定接口名稱。本發(fā)明實(shí)施例在編譯時(shí)不鏈接組件,在應(yīng)用程序啟動(dòng)時(shí)不加載不必要的組件,而只在應(yīng)用程序或組件在接收到需要調(diào)用其它組件的相應(yīng)功能指令時(shí),才加載相應(yīng)組件,節(jié)省了內(nèi)存,避免了需要針對(duì)不同業(yè)務(wù)形態(tài)的嵌入式系統(tǒng)生成不同版本的應(yīng)用程序。最后所應(yīng)說(shuō)明的是,以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非限制,盡管參照較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的精神和范圍。
權(quán)利要求
1.一種嵌入式系統(tǒng)組件加載方法,其特征在于,所述方法包括應(yīng)用程序或組件在接收到需要調(diào)用其它組件的相應(yīng)功能指令時(shí),查找所述其它組件, 所述其它組件具有唯一標(biāo)識(shí)其身份的特征接口;查找到所述組件后,將所述組件加載到內(nèi)存中,并獲取所述組件的實(shí)例以及調(diào)用所述組件的相應(yīng)功能接口;在不需要所述的相應(yīng)功能時(shí),調(diào)用卸載組件接口,將所述其他組件卸載。
2.如權(quán)利要求1所述嵌入式系統(tǒng)組件加載方法,其特征在于,所述查找其他組件,具體為根據(jù)內(nèi)存中的組件注冊(cè)表或者組件目錄查找所述其它組件,或者遍歷系統(tǒng)中各組件庫(kù)的特征接口來(lái)查找所述其它組件。
3.如權(quán)利要求1所述嵌入式系統(tǒng)組件加載方法,其特征在于應(yīng)用程序或組件啟動(dòng)時(shí)不加載所述其它組件。
4.如權(quán)利要求1所述嵌入式系統(tǒng)組件加載方法,其特征在于應(yīng)用程序在編譯階段時(shí)不鏈接所述其它組件。
5.如權(quán)利要求1-4之一所述嵌入式系統(tǒng)組件加載方法,其特征在于所述其它組件具有唯一標(biāo)識(shí)其身份的特征接口,具體為所述其它組件包含用于返回所述其它組件的名稱的固定名稱接口,或者帶有所述其它組件的名稱的固定接口名稱。
全文摘要
本發(fā)明實(shí)施例涉及一種嵌入式系統(tǒng)組件加載方法,所述方法包括應(yīng)用程序或組件在接收到需要調(diào)用其它組件的相應(yīng)功能指令時(shí),查找所述其它組件,所述其它組件具有唯一標(biāo)識(shí)其身份的特征接口;查找到所述組件后,將所述組件加載到內(nèi)存中,并獲取所述組件的實(shí)例以及調(diào)用所述組件的相應(yīng)功能接口;在不需要所述的相應(yīng)功能時(shí),調(diào)用卸載組件接口,將所述其他組件卸載。本發(fā)明實(shí)施例在編譯時(shí)不鏈接組件,在應(yīng)用程序啟動(dòng)時(shí)不加載不必要的組件,節(jié)省了內(nèi)存,避免了針對(duì)不同業(yè)務(wù)形態(tài)的嵌入式系統(tǒng)生成不同版本的應(yīng)用程序。
文檔編號(hào)G06F9/445GK102999352SQ201210459328
公開(kāi)日2013年3月27日 申請(qǐng)日期2012年11月15日 優(yōu)先權(quán)日2012年11月15日
發(fā)明者胡琳琳, 孫鵬, 鄧峰 申請(qǐng)人:中國(guó)科學(xué)院聲學(xué)研究所