實現(xiàn)程序的下載刪除的方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實施例設(shè)及計算機(jī)軟件領(lǐng)域,特別是設(shè)及一種實現(xiàn)程序下載刪除的方法及 系統(tǒng)。
【背景技術(shù)】
[000引在WindowsPC及LIWX嵌入式的系統(tǒng)平臺下,使用C語言開發(fā)的應(yīng)用或者插件模 塊可動態(tài)鏈接庫的形式呈現(xiàn)在相應(yīng)的操作系統(tǒng)上,可W非常靈活的在本地平臺上"熱 插拔"。而此類動態(tài)鏈接庫內(nèi)的代碼僅處于被編譯狀態(tài),實際運(yùn)行時的代碼需要有一定處理 能力的CPU動態(tài)鏈接后才可W執(zhí)行,因此,上述系統(tǒng)對硬件的要求較高。而在處理能力有限 的巧片平臺,如arm7、Codext-M3等,是不能通過上述方法實現(xiàn)對動態(tài)鏈接庫的下載使用。 [000引 目前,通常在無MMU(內(nèi)存管理單元,Memo巧Management化it)的ARM系列巧片 上的開發(fā)環(huán)境主要是基于KEIL、GCC、IAR。WKEIL的開發(fā)環(huán)境為例,在KEIL集成開發(fā)環(huán)境 下對于動態(tài)程序的下載,是通過預(yù)先對動態(tài)程序?qū)?yīng)的每個C文件進(jìn)行編譯,得到ELF(可 執(zhí)行連接格式,Execut油leandLink油le化rmat)文件,經(jīng)過鏈接器將所有的ELF文件統(tǒng) 一鏈接生成AXF(ARMExecut油leFile)文件,提取AXF文件內(nèi)的指令集信息即可得到直接 下載到目標(biāo)巧片上的bin文件。
[0004] 上述方案中下載到目標(biāo)巧片上的bin文件是在KEIL開發(fā)環(huán)境下經(jīng)過編譯、鏈接一 站式完成的,該bin文件是與地址相關(guān)的。而bin文件在某一平臺上運(yùn)行時需要充分了解 目標(biāo)巧片平臺上的詳細(xì)地址劃分,若更換了別的狀態(tài)下的軟件平臺運(yùn)行,還需要重新在鏈 接腳本內(nèi)指明具體的鏈接信息,執(zhí)行過程比較繁瑣。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實施例公開了一種實現(xiàn)程序的下載刪除的方法及系統(tǒng),W解決現(xiàn)有技術(shù)中 目標(biāo)巧片調(diào)用動態(tài)程序時需要在鏈接腳本內(nèi)指明具體的鏈接信息,執(zhí)行過程比較繁瑣的問 題。
[0006] 為了解決上述問題,本發(fā)明提供了一種實現(xiàn)程序下載刪除的方法,其特征在于,包 括:
[0007] 接收目標(biāo)巧片下載目標(biāo)程序的請求;
[000引依據(jù)所述下載目標(biāo)程序的請求,查找與所述目標(biāo)程序?qū)?yīng)的C文件;
[0009] 對所述C文件進(jìn)行編譯,生成可執(zhí)行鏈接格式ELF文件;
[0010] 將所述可執(zhí)行鏈接格式ELF文件發(fā)送至批處理應(yīng)用程序;
[0011] 運(yùn)行所述批處理應(yīng)用程序的第一命令對所述可執(zhí)行鏈接格式ELF文件進(jìn)行逐個 拆解,得到鏈接文件;
[0012] 提取所述鏈接文件內(nèi)的指令集信息、指令跳轉(zhuǎn)表信息,并對所述指令集信息、指令 跳轉(zhuǎn)表信息進(jìn)行組合,得到中間臨時文件;
[0013] 運(yùn)行所述批處理應(yīng)用程序的第二命令對所述中間臨時文件進(jìn)行重組,得到中間文 件NCAP;
[0014] 將所述中間文件NCAPw數(shù)據(jù)流的形式下載至所述目標(biāo)巧片;
[0015] 在所述目標(biāo)巧片中對所述中間文件NCAP的各個模塊進(jìn)行本地化鏈接定位,得到 所述目標(biāo)程序;
[0016] 所述目標(biāo)程序被所述目標(biāo)巧片內(nèi)軟件平臺的鏈接模塊管理程序進(jìn)行調(diào)用及刪除。
[0017] 優(yōu)選的,所述運(yùn)行所述批處理應(yīng)用程序的第一命令對所述可執(zhí)行鏈接格式ELF文 件進(jìn)行逐個拆解,得到鏈接文件的步驟,具體為:
[001引運(yùn)行所述批處理應(yīng)用程序的第一命令對所述可執(zhí)行鏈接格式ELF文件中的段進(jìn) 行逐個抽取,得到鏈接文件。
[0019] 優(yōu)選的,所述運(yùn)行所述批處理應(yīng)用程序的第二命令對所述中間臨時文件進(jìn)行重 組,得到中間文件NCAP的步驟,具體為:
[0020] 運(yùn)行所述批處理應(yīng)用程序的第二命令對所述中間臨時文件中的段進(jìn)行合并,得到 中間文件NCAP。
[0021] 優(yōu)選的,所述中間文件NCAP中需要重定位的模塊包括;BSS模塊、DATA模塊、 CONSTDATA模塊、TEXT模塊。
[0022] 另一方面,本發(fā)明還提供一種實現(xiàn)程序的下載刪除的系統(tǒng),所述系統(tǒng)包括:
[0023] 接收模塊,用于接收目標(biāo)巧片下載目標(biāo)程序的請求;
[0024] 查找模塊,用于依據(jù)所述下載目標(biāo)程序的請求,查找與所述目標(biāo)程序?qū)?yīng)的C文 件;
[0025] 編譯模塊,用于對所述C文件進(jìn)行編譯,生成可執(zhí)行連接格式ELF文件;
[0026] 發(fā)送模塊,用于將所述可執(zhí)行鏈接格式ELF文件發(fā)送至批處理應(yīng)用程序;
[0027] 拆解模塊,用于運(yùn)行所述批處理應(yīng)用程序的第一命令對所述可執(zhí)行鏈接格式ELF 文件進(jìn)行拆解,得到鏈接文件;
[002引提取模塊,用于提取所述鏈接文件內(nèi)的指令集信息、指令跳轉(zhuǎn)表信息,并對所述指 令集信息、指令跳轉(zhuǎn)表信息進(jìn)行組合,得到中間臨時文件;
[0029] 重組模塊,用于運(yùn)行所述批處理應(yīng)用程序的第二命令對所述中間臨時文件進(jìn)行重 組,得到中間文件NCAP;
[0030] 下載模塊,用于將所述中間文件NCAPW數(shù)據(jù)流的形式下載至所述目標(biāo)巧片;
[0031] 鏈接定位模塊,用于在所述目標(biāo)巧片中對所述中間文件NCAP的各個模塊進(jìn)行本 地化鏈接定位,得到所述目標(biāo)程序;
[0032] 調(diào)用刪除模塊,用于所述目標(biāo)程序被所述目標(biāo)巧片內(nèi)軟件平臺的鏈接模塊管理程 序進(jìn)行調(diào)用及刪除。
[0033] 優(yōu)選的,所述拆解模塊,具體用于運(yùn)行所述批處理應(yīng)用程序的第一命令對所述可 執(zhí)行鏈接格式ELF文件中的段進(jìn)行逐個抽取,得到中間臨時文件。
[0034] 優(yōu)選的,所述重組模塊,具體用于運(yùn)行所述批處理應(yīng)用程序的第二命令對所述中 間臨時文件中的段進(jìn)行合并,得到中間文件NCAP。
[0035] 優(yōu)選的,所述中所述中間文件NCAP中需要重定位的模塊包括;BSS模塊、DATA模 塊、CONSTDATA模塊、TEXT模塊。
[0036] 與現(xiàn)有技術(shù)相比,本發(fā)明實施例包括W下優(yōu)點:
[0037] 本發(fā)明實施例通過在批處理應(yīng)用程序中對可執(zhí)行鏈接格式ELF文件進(jìn)行了逐個 拆解,使得可執(zhí)行鏈接格式ELF文件內(nèi)函數(shù)的地址在中間臨時文件中重定位,因此,對中間 臨時文件進(jìn)行重組得到的中間文件NCAP內(nèi)存儲著與當(dāng)前開發(fā)環(huán)境地址無關(guān)的代碼,在更 換了別的狀態(tài)下的軟件平臺運(yùn)行時,無需重新在鏈接腳本內(nèi)指明具體的鏈接信息,接收巧 片軟件平臺內(nèi)會動態(tài)劃分該中間文件NCAP的具體安裝地址,相對于現(xiàn)有的需要在鏈接腳 本內(nèi)指明具體的鏈接信息后進(jìn)而進(jìn)行下載的方法,本發(fā)明實施例的執(zhí)行過程具有更優(yōu)的兼 容性及適配性。
【附圖說明】
[003引圖1是本發(fā)明實施例提供的一種實現(xiàn)程序的下載刪除方法的步驟流程圖;
[0039] 圖2是本發(fā)明實施例一提供的一種實現(xiàn)程序的下載刪除方法的步驟流程圖;
[0040] 圖3是本發(fā)明實施例提供的一種中間臨時文件內(nèi)部分代碼的結(jié)構(gòu)示意圖;及
[0041] 圖4是本發(fā)明實施例二提供的一種實現(xiàn)程序的下載刪除系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實施方式】
[0042] 為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實 施方式對本發(fā)明作進(jìn)一步詳細(xì)的說明。
[0043] 參照圖1,示出了本發(fā)明實施例提供的一種實現(xiàn)程序的下載刪除方法的步