国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      補(bǔ)丁修復(fù)方法、補(bǔ)丁制作方法、相關(guān)設(shè)備及系統(tǒng)與流程

      文檔序號:40380184發(fā)布日期:2024-12-20 12:02閱讀:4來源:國知局
      補(bǔ)丁修復(fù)方法、補(bǔ)丁制作方法、相關(guān)設(shè)備及系統(tǒng)與流程

      本技術(shù)涉及電子,尤其涉及補(bǔ)丁修復(fù)方法、補(bǔ)丁制作方法、相關(guān)設(shè)備及系統(tǒng)。


      背景技術(shù):

      1、靜態(tài)鏈接是在鏈接時(shí),將各個(gè)目標(biāo)模塊(編譯產(chǎn)生的代碼段)及它們依賴的庫函數(shù)鏈接成一個(gè)完整的程序,完成符號到運(yùn)行地址的重定位操作,這樣在運(yùn)行程序時(shí)不需要加載依賴庫和進(jìn)行重定位操作。因而,靜態(tài)鏈接而成的程序具有啟動(dòng)速度和運(yùn)行速度快的優(yōu)點(diǎn)。但是,一旦軟件工程中有一個(gè)模塊需要更新,即便僅更新一個(gè)函數(shù),就必須重新編譯整個(gè)工程,不便于更新。


      技術(shù)實(shí)現(xiàn)思路

      1、本技術(shù)實(shí)施例提供了補(bǔ)丁修復(fù)方法、補(bǔ)丁制作方法、相關(guān)設(shè)備及系統(tǒng),解決了補(bǔ)丁與靜態(tài)鏈接工程的兼容問題,實(shí)現(xiàn)了全靜態(tài)鏈接工程的函數(shù)級補(bǔ)丁修復(fù)方案,可以支持宏內(nèi)核架構(gòu)的mcu平臺(tái)在不重新燒錄整個(gè)系統(tǒng)鏡像的前提下實(shí)現(xiàn)函數(shù)級更新。

      2、第一方面,本技術(shù)實(shí)施例提供了一種補(bǔ)丁修復(fù)方法,應(yīng)用于終端設(shè)備,終端設(shè)備上運(yùn)行著第一鏡像,第一鏡像是第一軟件工程的源代碼經(jīng)歷編譯、靜態(tài)鏈接得到的;

      3、該方法可包括:終端設(shè)備從服務(wù)器下載第一軟件工程的補(bǔ)丁文件,補(bǔ)丁文件包括協(xié)議頭、函數(shù)描述表和補(bǔ)丁函數(shù)的二進(jìn)制數(shù)據(jù);函數(shù)描述表包括:補(bǔ)丁函數(shù)的運(yùn)行地址、補(bǔ)丁函數(shù)要修復(fù)的原函數(shù)的運(yùn)行地址,以及n個(gè)字節(jié)的機(jī)器碼;補(bǔ)丁函數(shù)的二進(jìn)制數(shù)據(jù)包括補(bǔ)丁函數(shù)引用的變量,以及指示程序計(jì)數(shù)器pc指針跳轉(zhuǎn)到補(bǔ)丁函數(shù)所依賴的函數(shù)的運(yùn)行地址的指令;終端設(shè)備將補(bǔ)丁函數(shù)的二進(jìn)制數(shù)據(jù)搬移到補(bǔ)丁區(qū),補(bǔ)丁區(qū)是一段運(yùn)行地址空間,與存放第一鏡像的運(yùn)行地址空間不沖突;終端設(shè)備基于補(bǔ)丁函數(shù)的運(yùn)行地址合成跳轉(zhuǎn)指令,跳轉(zhuǎn)指令用于指令pc指針跳轉(zhuǎn)到補(bǔ)丁函數(shù)的運(yùn)行地址;終端設(shè)備將跳轉(zhuǎn)指令插入到原函數(shù)的運(yùn)行地址處;其中,n是正整數(shù),n等于跳轉(zhuǎn)指令的字節(jié)長度。

      4、第一方面中,第一鏡像即后續(xù)實(shí)施例中提及的基礎(chǔ)鏡像,第一軟件工程是為獲得該基礎(chǔ)鏡像以及后續(xù)新鏡像而搭建的軟件工程,由一系列源代碼文件組成。

      5、實(shí)施第一方面的方法,可以解決補(bǔ)丁與靜態(tài)鏈接工程的兼容問題,實(shí)現(xiàn)了全靜態(tài)鏈接工程的函數(shù)級補(bǔ)丁修復(fù)方案,可以支持宏內(nèi)核架構(gòu)的mcu平臺(tái)在不重新燒錄整個(gè)系統(tǒng)鏡像的前提下實(shí)現(xiàn)函數(shù)級更新。

      6、結(jié)合第一方面,在一些實(shí)施例中,在終端設(shè)備基于補(bǔ)丁函數(shù)的運(yùn)行地址合成跳轉(zhuǎn)指令之前,還可以校驗(yàn)并確定函數(shù)描述表中包括的n個(gè)字節(jié)的機(jī)器碼與從原函數(shù)的運(yùn)行地址處讀取出n個(gè)字節(jié)的機(jī)器碼相同。這里,該校驗(yàn)即后續(xù)實(shí)施例中提及的“一致性校驗(yàn)”,具體細(xì)節(jié)可參考后續(xù)實(shí)施例,這里先不展開。

      7、結(jié)合第一方面,在一些實(shí)施例中,跳轉(zhuǎn)指令包括連續(xù)存放的預(yù)留位、跳轉(zhuǎn)位和地址位,其中,地址位在跳轉(zhuǎn)位之后,地址位用于存放補(bǔ)丁函數(shù)的運(yùn)行地址,跳轉(zhuǎn)位用于存放第一指令集下的第二指令,第二指令用于將地址位中存放的數(shù)據(jù)讀取到程序計(jì)數(shù)器pc寄存器中。

      8、其中,地址位、跳轉(zhuǎn)位的字節(jié)長度可以都同于pc指針最小移動(dòng)字節(jié)長度,例如4個(gè)字節(jié)。第一指令集可以是thumb指令集。第二指令可以是thumb指令集下的加載寄存器ldr指令:ldr?pc,[pc,#0x0]。

      9、結(jié)合第一方面,在一些實(shí)施例中,補(bǔ)丁區(qū)可以包括:第一區(qū)域和第二區(qū)域;第一區(qū)域用于存放補(bǔ)丁函數(shù)的初始化數(shù)據(jù),第二區(qū)域用于存放補(bǔ)丁函數(shù)的運(yùn)行數(shù)據(jù),運(yùn)行數(shù)據(jù)是初始數(shù)據(jù)經(jīng)歷解密、解壓縮再搬移到第二區(qū)域中的;初始化數(shù)據(jù)是補(bǔ)丁文件中包括的補(bǔ)丁函數(shù)的二進(jìn)制數(shù)據(jù)。

      10、其中,第一區(qū)域、第二區(qū)域可以是后續(xù)實(shí)施例中提及的區(qū)域a(圖2中示意的“.patch_init”區(qū)域)、區(qū)域b(圖2中示意的“.patch_run”區(qū)域)。第一區(qū)域還可以用于存放函數(shù)patchregioninit的代碼指令,函數(shù)patchregioninit用于執(zhí)行解密、解壓縮以及搬移到第二區(qū)域中的操作。函數(shù)patchregioninit的運(yùn)行地址記錄于協(xié)議頭中。

      11、結(jié)合第一方面,在一些實(shí)施例中,在撤回補(bǔ)丁文件時(shí),終端設(shè)備可以將函數(shù)描述表中的n個(gè)字節(jié)的機(jī)器碼寫回到原函數(shù)運(yùn)行地址處,并移出補(bǔ)丁區(qū)存放原函數(shù)的二進(jìn)制數(shù)據(jù)。

      12、第二方面,本技術(shù)實(shí)施例提供了一種補(bǔ)丁制作方法,應(yīng)用于服務(wù)器,該方法可包括:服務(wù)器對基于基線版本發(fā)生修改的第一軟件工程的源代碼進(jìn)行增量編譯,并識別出差異函數(shù);差異函數(shù)包括源代碼改變的函數(shù)以及依賴源代碼改變的函數(shù)的函數(shù);服務(wù)器對差異文件進(jìn)行編譯,得到可重定向的目標(biāo)文件;差異文件是指包括差異函數(shù)的源代碼文件,差異文件包括第一源代碼文件,第一源代碼文件中原函數(shù)被修改為補(bǔ)丁函數(shù),第一源代碼文件中被寫入了將補(bǔ)丁函數(shù)重定向到終端設(shè)備上指定運(yùn)行地址的代碼;服務(wù)器對可重定向的目標(biāo)文件進(jìn)行靜態(tài)鏈接得到第二鏡像;服務(wù)器記錄靜態(tài)鏈接時(shí)為原函數(shù)、補(bǔ)丁函數(shù)配置的運(yùn)行地址;配置給補(bǔ)丁函數(shù)的運(yùn)行地址是指定運(yùn)行地址;服務(wù)器從第二鏡像中截取出補(bǔ)丁函數(shù)的二進(jìn)制代碼,并生成補(bǔ)丁文件。

      13、其中,補(bǔ)丁文件可包括協(xié)議頭、函數(shù)描述表和補(bǔ)丁函數(shù)的二進(jìn)制數(shù)據(jù);函數(shù)描述表可包括:補(bǔ)丁函數(shù)的運(yùn)行地址、補(bǔ)丁函數(shù)要修復(fù)的原函數(shù)的運(yùn)行地址,以及n個(gè)字節(jié)的機(jī)器碼;補(bǔ)丁函數(shù)的二進(jìn)制數(shù)據(jù)包括補(bǔ)丁函數(shù)引用的變量,以及指示程序計(jì)數(shù)器pc指針跳轉(zhuǎn)到補(bǔ)丁函數(shù)所依賴的函數(shù)的運(yùn)行地址的指令;n個(gè)字節(jié)的機(jī)器碼是原函數(shù)的運(yùn)行地址處存放的n個(gè)字節(jié)的備份。

      14、結(jié)合第二方面,在一些實(shí)施例中,指定運(yùn)行地址是補(bǔ)丁區(qū)中的運(yùn)行地址,補(bǔ)丁區(qū)是服務(wù)器預(yù)先分配的、與終端設(shè)備上運(yùn)行著的第一鏡像占的運(yùn)行地址不沖突。

      15、結(jié)合第二方面,在一些實(shí)施例中,終端設(shè)備上運(yùn)行著的第一鏡像被服務(wù)器保存成歸檔鏡像;在生成補(bǔ)丁文件之前,該方法還可以包括:服務(wù)器利用歸檔鏡像校驗(yàn)并確認(rèn)第二鏡像中配置給各個(gè)函數(shù)的運(yùn)行地址與歸檔鏡像中配置給各個(gè)函數(shù)的運(yùn)行地址一致。

      16、第三方面,本技術(shù)提供了一種終端設(shè)備,該終端設(shè)備包括一個(gè)或多個(gè)微控制單元mcu和一個(gè)或多個(gè)存儲(chǔ)器;其中,一個(gè)或多個(gè)存儲(chǔ)器與mcu耦合,一個(gè)或多個(gè)存儲(chǔ)器用于存儲(chǔ)計(jì)算機(jī)程序代碼,計(jì)算機(jī)程序代碼包括計(jì)算機(jī)指令,當(dāng)mcu執(zhí)行計(jì)算機(jī)指令時(shí),使得終端設(shè)備執(zhí)行如第一方面以及第一方面中任一可能的實(shí)現(xiàn)方式描述的方法。

      17、第四方面,本技術(shù)提供了一種服務(wù)器,該服務(wù)器包括一個(gè)或多個(gè)處理器和一個(gè)或多個(gè)存儲(chǔ)器;其中,一個(gè)或多個(gè)存儲(chǔ)器與處理器耦合,一個(gè)或多個(gè)存儲(chǔ)器用于存儲(chǔ)計(jì)算機(jī)程序代碼,計(jì)算機(jī)程序代碼包括計(jì)算機(jī)指令,當(dāng)處理器執(zhí)行計(jì)算機(jī)指令時(shí),使得服務(wù)器執(zhí)行如第二方面以及第二方面中任一可能的實(shí)現(xiàn)方式描述的方法。

      18、第五方面,本技術(shù)實(shí)施例提供了一種芯片系統(tǒng),該芯片系統(tǒng)應(yīng)用于終端設(shè)備,該芯片系統(tǒng)包括一個(gè)或多個(gè)處理器,該處理器用于調(diào)用計(jì)算機(jī)指令以使得該終端設(shè)備執(zhí)行如第一方面以及第一方面中任一可能的實(shí)現(xiàn)方式描述的方法。

      19、第六方面,本技術(shù)實(shí)施例提供了一種芯片系統(tǒng),該芯片系統(tǒng)應(yīng)用于服務(wù)器,該芯片系統(tǒng)包括一個(gè)或多個(gè)處理器,該處理器用于調(diào)用計(jì)算機(jī)指令以使得該服務(wù)器執(zhí)行如第二方面以及第二方面中任一可能的實(shí)現(xiàn)方式描述的方法。

      20、第七方面,本技術(shù)提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),包括指令,當(dāng)上述指令在終端設(shè)備上運(yùn)行時(shí),使得上述終端設(shè)備執(zhí)行如第一方面以及第一方面中任一可能的實(shí)現(xiàn)方式描述的方法。

      21、第八方面,本技術(shù)提供一種包含指令的計(jì)算機(jī)程序產(chǎn)品,當(dāng)上述計(jì)算機(jī)程序產(chǎn)品在服務(wù)器上運(yùn)行時(shí),使得上述服務(wù)器執(zhí)行如第二方面以及第二方面中任一可能的實(shí)現(xiàn)方式描述的方法。

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