[發(fā)明專利]一種非解釋型的動態(tài)下載運行方法有效
| 申請?zhí)枺?/td> | 200810217810.7 | 申請日: | 2008-11-18 |
| 公開(公告)號: | CN101739288A | 公開(公告)日: | 2010-06-16 |
| 發(fā)明(設計)人: | 彭文劍 | 申請(專利權)人: | 康佳集團股份有限公司 |
| 主分類號: | G06F9/46 | 分類號: | G06F9/46 |
| 代理公司: | 深圳市順天達專利商標代理有限公司 44217 | 代理人: | 高占元 |
| 地址: | 518053 廣*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 解釋 動態(tài) 下載 運行 方法 | ||
技術領域
本發(fā)明涉及程序運行,更具體地說,涉及一種非解釋型的動態(tài)下載運行方 法。
背景技術
在很多時候,需要動態(tài)下載程序并進行運行,例如從TS流中或者從網(wǎng)絡 上下載一個游戲程序到機頂盒中進行運行。這種需求在支持多進程調度的操作 系統(tǒng)上,可以把游戲獨立開發(fā)成一個可運行文件,把其下載到設備中后當作一 個新進程進行調度執(zhí)行就可實現(xiàn)。然而對于相當部分不支持多進程調度的嵌入 式操作系統(tǒng),一般只有使用解釋器來解釋運行,例如Java虛擬機或JavaScript 解釋器。然而,這種方法存在著成本高、效率低的缺點。
嵌入式系統(tǒng)由于其短小精悍,一般不支持多進程調度,而是采用單進程多 線程的模式來進行多任務工作。這樣在單進程運行過程中,在不中斷現(xiàn)有進程 運行的情況下,就無法對下載得到的程序進行調度而使其運行起來。已有技術 解決動態(tài)程序運行的方法有如下兩種:
1、使用多個獨立運行的系統(tǒng)來實現(xiàn)該功能,即整個系統(tǒng)中存在多個獨立 運行系統(tǒng),在A系統(tǒng)中下載代碼到特定位置構成B系統(tǒng),然后終止A系統(tǒng)啟 動B系統(tǒng)運行。這樣就實現(xiàn)了程序動態(tài)下載運行了。這里下載而來的程序不 能當作原來程序的一個部件運行,而是和原來程序平級關系,只能用其完全替 換原來程序運行。
2、開發(fā)的程序代碼需要在特定虛擬機或解釋器上運行,這就必須在原有 系統(tǒng)中嵌入虛擬機或解釋器,在下載下來后要運行時,由虛擬機或解釋器對程 序進行翻譯解釋運行,這是目前動態(tài)下載游戲運行所使用的唯一方法。
然而,以上兩種方法都存在各自的缺點:
1、對于第一種,每個下載來的程序是個完整獨立的進程代碼,這樣就存 在著大量的重復代碼(如硬件驅動代碼等),這大大提高了對程序存儲器空間 的要求。而且各個程序不能并行運行,A程序在運行B程序就無法運行,這 樣許多功能是無法通過這種方式來實現(xiàn)。比如游戲的下載運行,用戶一般是需 要在看電視時通過選擇需要下載的游戲來進行下載,下載完后能不影響繼續(xù)看 電視而啟動游戲運行。這里由于需要把游戲運行當作原來程序的一個部件(或 者一個線程)運行才能實現(xiàn),原來程序仍然運行實現(xiàn)播發(fā)節(jié)目功能的同時,游 戲線程啟動游戲運行。
2,對于第二種,把虛擬機當作原來程序的一個線程在后臺運行,當有需 要時就對下載來的游戲數(shù)據(jù)進行解釋運行。它具有通用性強的特點,卻存在著 很大的缺陷:第一就是運行效率低下,第二就是虛擬機或者解釋器本身代碼量 巨大,而大大增大了代碼空間,第三是如果重頭開發(fā)游戲運行描述方法進而開 發(fā)相應的虛擬機或者解釋器,難度太大成本太高;而使用現(xiàn)有的Java和 JavaScript等解釋器技術又面臨著大量專利或版權問題,需要交納大量授權使 用費,大大提高了產(chǎn)品成本。
發(fā)明內容
本發(fā)明要解決的技術問題在于,針對現(xiàn)有技術的上述下載的程序不能并行 運行以及需要特定的解釋器來運行的缺陷,提供一種非解釋型的動態(tài)下載運行 方法。
本發(fā)明解決其技術問題所采用的技術方案是:構造一種非解釋型的動態(tài)下 載運行方法,包括以下步驟:
S1、使預定程序作為主程序的一個線程運行,并定義一個函數(shù)指針作為 預定程序的任務入口函數(shù);
S2、從對主程序進行編譯聯(lián)接時形成的各函數(shù)地址分配文件中,獲取可 能需要調用的各驅動函數(shù)所在地址;
S3、基于預定程序的驅動函數(shù)類型,定義相應的驅動函數(shù)指針,加入各 設備的初始化函數(shù)及驅動函數(shù),組成完整的預定程序代碼進行測試;
S4、刪除各設備的初始化函數(shù)及驅動函數(shù),將預定程序中的驅動函數(shù)指 針初始值設置成對應驅動函數(shù)的地址;
S5、進行預定程序代碼部分的編譯聯(lián)接,正確配置編譯聯(lián)接參數(shù),使生 成的主代碼和預定程序代碼在地址上沒有重疊區(qū)域;
S6、將預定程序代碼的起始放置地址、主函數(shù)入口地址和必要信息以及 完整的預定程序目標代碼打包;
S7、下載打包的文件后,提取起始放置地址和預定主函數(shù)入口地址,將 預定程序代碼旋轉到指定的內存地址上,啟動預定程序的線程來運行下載的預 定程序。
在本發(fā)明所述的動態(tài)下載運行方法中,所述驅動函數(shù)的地址是整數(shù)值。
在本發(fā)明所述的動態(tài)下載運行方法中,所述預定程序的起始放置地址和主 函數(shù)入口地址是從預定程序代碼的各函數(shù)地址分配文件中獲取的。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于康佳集團股份有限公司,未經(jīng)康佳集團股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200810217810.7/2.html,轉載請聲明來源鉆瓜專利網(wǎng)。





