亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種BIN文件分塊升級的方法與流程

文檔序號:12362944閱讀:1644來源:國知局

本發(fā)明涉及編程及文件升級領(lǐng)域,尤其涉及BIN文件的升級方法。

[

背景技術(shù):
]

BIN文件是二進(jìn)制文件,目前基本上所有的電子程控設(shè)備都是用BIN文件作為程序儲存的方法。隨著程序功能的強(qiáng)大及復(fù)雜化,BIN文件越來越大,目前一個手機(jī)的升級BIN文件已經(jīng)達(dá)到了幾百兆,目前如果要升級手機(jī)程序,必須要整個升級,即下載一個全新的BIN文件,覆蓋原有的BIN文件,這樣即使在WIFI網(wǎng)絡(luò)下,也需要10-30分鐘,下載量巨大,如何解決讓BIN文件升級部分變小,讓升級所需下載的資源變小,是我們需要討論的問題。

[

技術(shù)實(shí)現(xiàn)要素:
]

針對上述問題,本發(fā)明提供了一種BIN文件分塊升級的方法。

具體技術(shù)方案如下: 一種BIN文件分塊升級的方法,包括:在編程時,將所有可能變動的函數(shù)的函數(shù)名固化在ROM的儲存空間中,稱為橋文件即:1)將函數(shù)名以匯編格式編寫,每個函數(shù)一塊固定的儲存空間;2)指定函數(shù)名空間,僅包含GOTO語句強(qiáng)制跳轉(zhuǎn)到指定的函數(shù)儲存空間;3)函數(shù)儲存空間包含儲存空間的大小及真正的函數(shù)內(nèi)容。

與上述方法對應(yīng),在BIN文件升級時,包括以下處理:如果升級函數(shù)所需空間小于已分配的函數(shù)儲存空間,則找到函數(shù)名對應(yīng)的指定的儲存空間,將之修改。

如果升級函數(shù)所需空間大于已分配的函數(shù)儲存空間,找到對應(yīng)的函數(shù)名空間,將GOTO語句強(qiáng)制跳轉(zhuǎn)到新的指定的函數(shù)儲存空間,在新的函數(shù)名指定儲存空間,寫入升級函數(shù)。

升級非函數(shù):將非函數(shù)指定空間外的空間進(jìn)行全覆蓋,節(jié)省函數(shù)空間。

本發(fā)明在升級BIN文件時,對占總程序20%(一般化假設(shè))的非函數(shù)空間采用覆蓋式升級,對占總程序80%的函數(shù)進(jìn)行定點(diǎn)升級,有效的節(jié)省的BIN文件的下載量,對一個200M的文件,不再需要200M的下載即全覆蓋,而只是下載一個幾十K的函數(shù)或者40M的非函數(shù)程序,即可完成升級,大大節(jié)省了升級下載量。

[附圖說明]

圖1是本發(fā)明在一優(yōu)選實(shí)施例中的方法流程圖。

[具體實(shí)施方式]

為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清晰,下面結(jié)合附圖和實(shí)施方式作進(jìn)一步地詳細(xì)描述。

實(shí)施例1

如圖1,一種BIN文件分塊升級的方法,包括:S100、寫函數(shù)時:在ROM函數(shù)名指定地址(如0x10000)寫入函數(shù)A1,GOTO 函數(shù)指定地址(如0x11000);S200、在函數(shù)指定地址(如0x11000-0x11050)處寫入真實(shí)A1函數(shù);S300、在程序中正常調(diào)用A1。

需要說明的是:此時A1的所有部分全部有了明確的地址,不再是原BIN文件的無序化排列。

S400 在升級時:如果需要升級函數(shù),且升級函數(shù)大小小于函數(shù)指定地址的空間(如小于0x50)則S401、更改ROM中函數(shù)指定地址(0x11000-0x11050)處,寫入需要更改的函數(shù);如果需要升級函數(shù),且升級函數(shù)大小大于函數(shù)指定地址的空間(如大于0x50)則S402、更改ROM中函數(shù)名指定地址(0x10000)處,更改為新的函數(shù)指定地址(如GOTO 0x900000);S403、更改ROM中新的函數(shù)指定地址(如0x900000-0x901000)處,寫入需要更改的函數(shù);如果需要升級非函數(shù),則S404、將非函數(shù)區(qū)域全覆蓋,但不變更函數(shù)區(qū)域。

代碼舉例:在非函數(shù)區(qū)間調(diào)用函數(shù)時,采用直接調(diào)用,與原有方式相同,如:Helloword();在函數(shù)名區(qū)間指定地址處,不再編寫函數(shù),而是直接以GOTO替代:

0x10000:

Helloword()

{

GOTO 0x900000;

}

在函數(shù)地址處,寫入真是的函數(shù)

0x10000:

{

Display(“Helloword”);

}

后續(xù)如果需要升級,只需要在對應(yīng)的地址進(jìn)行修改即可。

以上所述的本發(fā)明實(shí)施方式,并不構(gòu)成對本發(fā)明保護(hù)范圍的限定,任何在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利要求保護(hù)范圍之內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1