本發(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)。