專(zhuān)利名稱(chēng):基于MMU架構(gòu)的Java Card系統(tǒng)組件更新方法
技術(shù)領(lǐng)域:
本發(fā)明涉及Java Card技術(shù)、嵌入式系統(tǒng)及二進(jìn)制代碼重定位技術(shù),主要是實(shí)現(xiàn)一種基于MMU新架構(gòu)解決Java Card系統(tǒng)組件動(dòng)態(tài)更新的方法。
背景技術(shù):
Java Card是一種能運(yùn)行Java小應(yīng)用程序的智能卡,它以其多應(yīng)用的支持、良好的安全特性、面向?qū)ο蟮木幊汰h(huán)境、應(yīng)用程序動(dòng)態(tài)下載等優(yōu)點(diǎn)得到了快速發(fā)展,在SIM/ USIM應(yīng)用、身份認(rèn)證以及金融等領(lǐng)域的應(yīng)用越來(lái)越廣泛。Java Card是一種嵌入式系統(tǒng), 在資源極其受限的智能卡上運(yùn)行一個(gè)java運(yùn)行時(shí)環(huán)境,其最大的優(yōu)勢(shì)在于可以在卡片發(fā)行之后動(dòng)態(tài)地下載及更新卡上的應(yīng)用程序,實(shí)現(xiàn)了靈活的多應(yīng)用卡。然而,由于目前Java Card平臺(tái)的存儲(chǔ)特性,系統(tǒng)組件(包括java運(yùn)行時(shí)環(huán)境,系統(tǒng)API,卡片操作系統(tǒng)等)在發(fā)卡后被固化在ROM中,如果發(fā)卡后出現(xiàn)系統(tǒng)組件故障或漏洞就只能通過(guò)更換新卡的方法來(lái)解決,由于智能卡的發(fā)卡量極大,這種方法將給發(fā)卡方帶來(lái)巨大的損失,所以有必要開(kāi)發(fā)出一種新的架構(gòu)或方法來(lái)解決發(fā)卡后系統(tǒng)組件的更新問(wèn)題。目前,國(guó)內(nèi)外對(duì)標(biāo)準(zhǔn)的面向?qū)ο蟪绦虻念?lèi)動(dòng)態(tài)更新的研究已經(jīng)非常多了,對(duì)動(dòng)態(tài)類(lèi)的實(shí)現(xiàn)主要有三種方法1)、通過(guò)對(duì)JVMCJava Virtual Machine)進(jìn)行修改,使JVM能夠支持Java類(lèi)的動(dòng)態(tài)更新操作;2)、利用庫(kù)函數(shù)的支持,如C++中的相關(guān)實(shí)現(xiàn);3)、通過(guò)Java 語(yǔ)言的某些機(jī)制,編寫(xiě)合理的算法和類(lèi)裝載機(jī)制來(lái)支持類(lèi)動(dòng)態(tài)更新。對(duì)于Java的動(dòng)態(tài)更新,Alessandro提出了一種基于類(lèi)重命名和代碼重寫(xiě)的技術(shù)來(lái)實(shí)現(xiàn)Java類(lèi)動(dòng)態(tài)更新,使用一個(gè)叫DUSC的工具在運(yùn)行時(shí)動(dòng)態(tài)切換類(lèi),但是這種方法非常耗時(shí),且對(duì)存儲(chǔ)空間浪費(fèi)嚴(yán)重,不適合計(jì)算和存儲(chǔ)資源極其受限的Java Card環(huán)境;另外一個(gè)支持在線(xiàn)更新的JVM是JV0LVE,其利用相關(guān)工具查找到所需更新的類(lèi)列表,然后動(dòng)態(tài)裝載類(lèi)并利用JIT技術(shù)將其編譯用以替換現(xiàn)有類(lèi),最后利用修改了的垃圾收集器將原對(duì)象引用修改為新對(duì)象引用。因?yàn)镴ava Card平臺(tái)不支持類(lèi)動(dòng)態(tài)裝載及JIT機(jī)制,所以必須對(duì)這種方法進(jìn)行修改,Agnes C. Noubissi提出了一種類(lèi)似的方法,并用于Java Card平臺(tái),在卡外通過(guò)相應(yīng)的工具得到更新列表,卡內(nèi)通過(guò)軟件查找所有需替換的類(lèi),通過(guò)傳入數(shù)據(jù)創(chuàng)建新類(lèi)及實(shí)例,并修改所有對(duì)原實(shí)例的引用來(lái)實(shí)現(xiàn)動(dòng)態(tài)更新,其使用純軟件的方法來(lái)實(shí)現(xiàn)查找、 替換及更新操作,導(dǎo)致效率比較低,且智能卡賴(lài)以生存的安全問(wèn)題難以得到保證。
發(fā)明內(nèi)容
本發(fā)明針對(duì)上述技術(shù)缺陷,提出一種基于MMU架構(gòu)的Java Card系統(tǒng)組件更新方法。為了解決上述技術(shù)問(wèn)題,本發(fā)明的技術(shù)方案如下
基于MMU架構(gòu)的Java Card系統(tǒng)組件更新方法,其特征在于,包括卡外操作和卡內(nèi)操
作,
所述卡外操作步驟如下1)通過(guò)對(duì)比修改后的工程代碼和原始工程代碼,給出代碼修改項(xiàng)目列表;
2)查找代碼修改項(xiàng)目列表中項(xiàng)目在目標(biāo)文件中的虛擬地址入口及二進(jìn)制長(zhǎng)度,給出系統(tǒng)組件更新任務(wù)列表;
3)對(duì)所述系統(tǒng)組件更新任務(wù)列表中虛擬地址接近的項(xiàng)目進(jìn)行合并,生成卡內(nèi)MMU修改信息表和代碼實(shí)際二進(jìn)制修改信息表;
所述卡內(nèi)操作步驟如下
4)傳輸代碼修改數(shù)據(jù),將更新后的代碼數(shù)據(jù)寫(xiě)入卡內(nèi)EEPROM空間,并以所述更新后的代碼數(shù)據(jù)在卡內(nèi)EEPROM空間的新地址作為參數(shù)處理之后進(jìn)行系統(tǒng)調(diào)用;
5)卡內(nèi)操作系統(tǒng)進(jìn)行認(rèn)證,如通過(guò)認(rèn)證則修改MMU的TLB初始化表,并重啟卡內(nèi)操作系統(tǒng)進(jìn)行初始化。作為可選方案,所述步驟2)中給出系統(tǒng)組件更新任務(wù)列表包括對(duì)原項(xiàng)目修改、對(duì)原項(xiàng)目刪除和對(duì)原項(xiàng)目的新增,
所述對(duì)原項(xiàng)目修改操作步驟如下
如果修改后項(xiàng)目的二進(jìn)制代碼長(zhǎng)度不大于原項(xiàng)目的長(zhǎng)度,則找到原項(xiàng)目的虛擬地址入口地址,在MMU的TLB表中新增一個(gè)表項(xiàng),將所述虛擬地址入口地址映射到EEPROM中,并保持字節(jié)長(zhǎng)度相等,在EEPROM新開(kāi)辟的位置寫(xiě)入修改后的項(xiàng)目二進(jìn)制碼,多余的位置補(bǔ)入空操作,如果新修改項(xiàng)目的二進(jìn)制代碼長(zhǎng)度大于原項(xiàng)目的長(zhǎng)度,則將此修改可以分為原項(xiàng)目刪除與原項(xiàng)目的新增的組合;
所述對(duì)原項(xiàng)目刪除操作步驟如下 將所有引用被刪除項(xiàng)目的代碼進(jìn)行修改; 所述對(duì)原項(xiàng)目的新增操作步驟如下
新增項(xiàng)目代碼只可能在修改后的代碼中被引用,對(duì)其處理可分兩個(gè)步驟在EEPROM中劃分一塊區(qū)域,將新項(xiàng)目代碼寫(xiě)入;然后利用逆向工程將修改代碼中引用新增項(xiàng)目的地址更改為新地址。作為可選方案,當(dāng)多個(gè)更新項(xiàng)目的虛擬地址跨度小于更新項(xiàng)目實(shí)際地址占用空間的兩倍,即更新空間利用率高于50%的時(shí)候,可將更新項(xiàng)目在存儲(chǔ)空間實(shí)現(xiàn)步驟3)中對(duì)所述系統(tǒng)組件更新任務(wù)列表中虛擬地址接近的項(xiàng)目進(jìn)行合并。作為可選方案,步驟5)中所述修改MMU的TLB初始化表采用將一定長(zhǎng)度的虛擬地址空間映射到等長(zhǎng)的物理地址空間中,所述TLB初始化表格式分為logiC_addr_base、 Length和physical_addr_base,所述logic_addr_base表示MMU所要映射的虛擬地址段的基地址,所述Length表示此邏輯地址段的長(zhǎng)度,所述physical_addr_base表示本段邏輯地址所映射到的物理地址的基地址。本發(fā)明的有益效果在于
1.本發(fā)明把更新操作分為卡外和卡內(nèi)操作,大量的工作在卡外完成,借助于普通 PC或工作站比Java Card強(qiáng)大的多的性能,對(duì)更新任務(wù)做了足夠的優(yōu)化,大大提高了更新效率。2.本發(fā)明提出了一種卡內(nèi)MMU的設(shè)計(jì)及初始化方法,采用軟硬件結(jié)合的方法實(shí)現(xiàn)系統(tǒng)組件的動(dòng)態(tài)更新,簡(jiǎn)化了卡內(nèi)修改量,方法簡(jiǎn)單容易實(shí)施。3.本發(fā)明保證了 Java Card系統(tǒng)組件更新的安全性,通過(guò)對(duì)處理器和操作系統(tǒng)的設(shè)計(jì),提供了三種處理器工作模式,MMU初始化表只有處理器工作在最高權(quán)限模式時(shí)才能訪(fǎng)問(wèn),通過(guò)系統(tǒng)調(diào)用進(jìn)行,此時(shí)要進(jìn)行發(fā)卡商認(rèn)證,保證了安全性。
圖1為現(xiàn)有技術(shù)中Java Card平臺(tái)存儲(chǔ)系統(tǒng)架構(gòu); 圖2為本發(fā)明的步驟流程圖3為一個(gè)典型的更新任務(wù)列表;
圖4為針對(duì)圖3的卡內(nèi)MMU修改信息表;
圖5為針對(duì)圖4第一條更新例,卡內(nèi)更新操作流程示意圖。
具體實(shí)施例方式下面將根據(jù)附圖和具體實(shí)施例對(duì)本發(fā)明做進(jìn)一步的說(shuō)明?;谝环NMMU機(jī)制的卡內(nèi)存儲(chǔ)架構(gòu),以及利用MMU解決Java Card系統(tǒng)組件升級(jí)的方案。該方案需要一系列的卡外和卡內(nèi)操作來(lái)實(shí)現(xiàn),卡外通過(guò)對(duì)比代碼的修改將其修改位置在系統(tǒng)二進(jìn)制目標(biāo)文件中定位,形成一個(gè)更新任務(wù)列表,并采用一定的算法優(yōu)化該列表以減少更新項(xiàng)數(shù)及通信量;卡內(nèi)將修改后的代碼片段存儲(chǔ)在EEPROM中,并采用修改 TLB (Translation Lookaside Buffer)表的方法,來(lái)改變虛擬地址到物理地址的映射,將原虛擬地址映射到修改后項(xiàng)目的存儲(chǔ)位置,實(shí)現(xiàn)代碼重定位,達(dá)到更新系統(tǒng)組件的目的。在本發(fā)明中,所提出的Java Card架構(gòu)通過(guò)一個(gè)簡(jiǎn)單的MMU來(lái)管理卡內(nèi)存儲(chǔ)資源, 實(shí)現(xiàn)虛擬地址到物理地址的轉(zhuǎn)換,將虛擬地址分段并靜態(tài)地映射到等長(zhǎng)的一段物理存儲(chǔ)器上,初始狀態(tài)下每個(gè)物理存儲(chǔ)器對(duì)應(yīng)一個(gè)TLB映射表項(xiàng),多余的TLB入口項(xiàng)設(shè)為無(wú)效,以供系統(tǒng)組件更新時(shí)增加映射項(xiàng)目使用??ㄍ獠僮鞯闹饕康氖钦页鱿到y(tǒng)組件中所有的修改信息,并將其在最終二進(jìn)制文件(.bin)中準(zhǔn)確定位,以便將修改內(nèi)容和位置信息傳入卡內(nèi)進(jìn)行更新。位置信息可通過(guò)查看工程文件編譯時(shí)生成的.map文件(工程使用IAR Embedded Workbench編譯)得到其虛擬地址入口和二進(jìn)制長(zhǎng)度,由項(xiàng)目入口地址、長(zhǎng)度及修改后內(nèi)容, 即可建立一個(gè)更新任務(wù),所有更新任務(wù)組成一個(gè)更新任務(wù)表。對(duì)更新任務(wù)表的優(yōu)化體現(xiàn)在兩個(gè)方面1)、合并任務(wù)表項(xiàng),減少卡內(nèi)MMU映射數(shù)目,可將地址相近的更新任務(wù)合并,在減少M(fèi)MU映射數(shù)目的同時(shí),不至于浪費(fèi)過(guò)多存儲(chǔ)空間;2)、項(xiàng)目實(shí)際修改內(nèi)容的映射,減少數(shù)據(jù)傳輸量,對(duì)項(xiàng)目?jī)?nèi)容的實(shí)際修改往往只是其地址空間的一小部分,可將實(shí)際修改值及其偏移量為傳輸信息,而未修改部分則直接從卡內(nèi)ROM中原始位置拷貝,以提高速度并減少信息傳輸量??▋?nèi)操作使用卡外操作得到的更新數(shù)據(jù)以及地址映射表,在EEPROM中寫(xiě)入更新代碼,并修改MMU的TLB映射,達(dá)到更新系統(tǒng)組件的目的。卡內(nèi)提供一個(gè)服務(wù)程序接收并處理更新數(shù)據(jù),調(diào)用卡片操作系統(tǒng)來(lái)完成MMU初始化表的修改。MMU初始化表存放于EEPROM 中特定區(qū)域,只有提供MMU初始化表修改的系統(tǒng)調(diào)用sysMmuModify可以訪(fǎng)問(wèn)該區(qū)域,當(dāng)發(fā)生該系統(tǒng)調(diào)用時(shí),系統(tǒng)首先進(jìn)行發(fā)卡商認(rèn)證,如認(rèn)證通過(guò)則提供調(diào)用,否則退出系統(tǒng)。如果系統(tǒng)調(diào)用成功完成,則系統(tǒng)重新啟動(dòng)以完成初始化,至此Java Card系統(tǒng)組件更新成功,帶有新系統(tǒng)組件的卡片即可正常使用。具體如下所述如圖1所示,顯示了 Java Card平臺(tái)的存儲(chǔ)架構(gòu),智能卡操作系統(tǒng)(COS),Java Card運(yùn)行時(shí)環(huán)境(JCRE),系統(tǒng)API以及一些內(nèi)置小應(yīng)用程序等系統(tǒng)組件存放在ROM中,這個(gè)過(guò)程是在卡片生產(chǎn)的時(shí)候燒入的,一旦寫(xiě)入即不可更改,這就為以后的升級(jí)更新帶來(lái)了麻煩,一旦系統(tǒng)組件出現(xiàn)漏洞,就必須回收所有已發(fā)卡,并制發(fā)新卡,智能卡往往發(fā)卡量巨大,將給發(fā)卡商帶來(lái)較大損失。圖2顯示了本發(fā)明的總體操作流程,主要分為以下幾個(gè)步驟
201,DIFFGenerator 對(duì)修改后的工程和原始工程代碼進(jìn)行比較,給出代碼具體修改項(xiàng)目的列表(DIFF List);
202,DIFF Mapper 根據(jù)步驟201提供的代碼具體修改項(xiàng)目列表,查找這些項(xiàng)目在目標(biāo)文件中的虛擬地址入口及二進(jìn)制長(zhǎng)度,給出系統(tǒng)組件需更新的任務(wù)列表(Mapped List);
203,ListOptimization 對(duì)系統(tǒng)組件需更新列表進(jìn)行優(yōu)化,減少卡內(nèi)MMU映射數(shù)量及卡內(nèi)外數(shù)據(jù)傳輸量,產(chǎn)生卡內(nèi)MMU修改信息表(MMU map Info)以及代碼實(shí)際二進(jìn)制修改信
(Changed Data Info);
204,DataProcessing & System Call Java Card卡內(nèi)提供程序?qū)ο到y(tǒng)更新操作進(jìn)行處理,并調(diào)用卡片操作系統(tǒng)進(jìn)行MMU初始化表數(shù)據(jù)的修改;
205,Authentication& MMU TLB Modify 操作系統(tǒng)提供修改MMU初始化表的系統(tǒng)調(diào)用并進(jìn)行發(fā)卡商認(rèn)證,如通過(guò)認(rèn)證則調(diào)用服務(wù)修改MMU的TLB初始化表,完成之后系統(tǒng)重啟, 完成初始化之后進(jìn)入用戶(hù)模式,MMU的TLB表已經(jīng)修改為新映射,代碼重定位完成,運(yùn)行新系統(tǒng)組件的Java Card卡片即可正常使用。圖3給出了經(jīng)過(guò)步驟202處理之后的一個(gè)典型的更新任務(wù)列表(Mapped List),具體如下
通過(guò)查看IAR Embedded Workbench編譯生成的工程.map文件,可以清楚地找到每個(gè)函數(shù)及常量在系統(tǒng)中的虛擬地址入口及其二進(jìn)制長(zhǎng)度,通過(guò)對(duì)比兩個(gè)版本工程的.map 文件以及前一步驟得到的修改信息列表(DIFF List),即可得到一個(gè)所需更新的任務(wù)列表 (Mapped List),為了更清晰地展示系統(tǒng)代碼修改前后的差異,將未修改的項(xiàng)目忽略,只列出項(xiàng)目的修改、刪除及增加,如圖3所示,其中old map和new map分別顯示了代碼修改前后的內(nèi)存分配情況,使用字母和數(shù)字表示函數(shù)和常量名,可以看出新版本代碼中修改了 a, b, c, d, e五個(gè)函數(shù);刪除了 f,g, h, i四個(gè)函數(shù);新增了 j,k兩個(gè)函數(shù);修改了常量cons. 2 以及系統(tǒng)API類(lèi)的mask數(shù)組。對(duì)于源代碼項(xiàng)目更新的不同操作采取以下不同的方法處理 (1)對(duì)原項(xiàng)目的修改
如果新修改項(xiàng)目的二進(jìn)制代碼長(zhǎng)度不大于原項(xiàng)目,則找到原項(xiàng)目的入口地址,在TLB 表中新增一個(gè)表項(xiàng),將此入口地址映射到EEPROM中,并保持字節(jié)長(zhǎng)度相等,在新位置寫(xiě)入修改后的項(xiàng)目二進(jìn)制碼,多余的位置補(bǔ)入空操作。如果新修改項(xiàng)目的二進(jìn)制代碼長(zhǎng)度大于原項(xiàng)目,則將此修改分為刪除原項(xiàng)目與新增項(xiàng)目的組合。所以應(yīng)該盡量使得修改后項(xiàng)目代碼長(zhǎng)度不大于原代碼,這樣可以節(jié)省卡內(nèi)存儲(chǔ)空間。(2)對(duì)原項(xiàng)目的刪除
將所有引用被刪除項(xiàng)目的代碼進(jìn)行修改,被刪除代碼即失效,所以新項(xiàng)目代碼中將不會(huì)引用原項(xiàng)目中的刪除代碼,對(duì)刪除操作可不予處理。(3)項(xiàng)目的新增新增項(xiàng)目代碼只可能在修改后的代碼中被引用,對(duì)其處理可分兩個(gè)步驟首先,在 EEPROM中劃分一塊區(qū)域,將新項(xiàng)目代碼寫(xiě)入;然后利用逆向工程將修改代碼中引用新增項(xiàng)目的地址更改為新地址。 圖4給 出了圖3所示的任務(wù)列表經(jīng)過(guò)步驟203優(yōu)化之后產(chǎn)生的卡內(nèi)MMU修改信息表(MMU map hfo),具體如下
對(duì)于表項(xiàng)的合并,類(lèi)似于內(nèi)存碎片的合并,有些更新項(xiàng)目的地址非常接近,尤其是對(duì)同一目標(biāo)文件中的函數(shù)其地址往往接近于連續(xù)分布,即使中間有間隔也非常小,完全可以將其合并,統(tǒng)一映射到新地址,減少需映射的項(xiàng)數(shù),但此方法必將造成一部分的存儲(chǔ)空間的浪費(fèi),所以必須有個(gè)折中的方法。為此給出公式(1),表示當(dāng)多個(gè)更新項(xiàng)目的地址跨度小于更新項(xiàng)目實(shí)際地址占用空間的兩倍,即更新空間利用率高于50%的時(shí)候,可將更新項(xiàng)目在存儲(chǔ)空間上合并。
利用上述規(guī)則對(duì)圖3中的項(xiàng)目進(jìn)行處理,可得結(jié)果如圖4所示。圖4中l(wèi)ogical address表示所合并的更新項(xiàng)目在原工程中的虛擬地址范圍,physical address表示合并之后的更新項(xiàng)目在工程中的地址范圍和內(nèi)容,其中new address表示在EEPROM中新分配的物理地址,items表示這段新地址空間中所存放的更新項(xiàng)目?jī)?nèi)容。圖中的每一條記錄就形成了一個(gè)MMU映射項(xiàng)目。如圖4中的第一條記錄,既是將圖3中前三條修改記錄合并為一條修改記錄,因?yàn)閳D3中前三條記錄中函數(shù)ι b, c的在空間上連續(xù)分布,可將三個(gè)函數(shù)的代碼存儲(chǔ)空間整個(gè)映射到新的空間來(lái)進(jìn)行代碼重定位,這樣可以減少M(fèi)MU中TLB表的映射數(shù)量。
權(quán)利要求
1.基于MMU架構(gòu)的JavaCard系統(tǒng)組件更新方法,其特征在于,包括卡外操作和卡內(nèi)操作,所述卡外操作步驟如下1)通過(guò)對(duì)比修改后的工程代碼和原始工程代碼,給出代碼修改項(xiàng)目列表;2)查找代碼修改項(xiàng)目列表中項(xiàng)目在目標(biāo)文件中的虛擬地址入口及二進(jìn)制長(zhǎng)度,給出系統(tǒng)組件更新任務(wù)列表;3)對(duì)所述系統(tǒng)組件更新任務(wù)列表中虛擬地址接近的項(xiàng)目進(jìn)行合并,生成卡內(nèi)MMU修改信息表和代碼實(shí)際二進(jìn)制修改信息表;所述卡內(nèi)操作步驟如下4)傳輸代碼修改數(shù)據(jù),將更新后的代碼數(shù)據(jù)寫(xiě)入卡內(nèi)EEPROM空間,并以所述更新后的代碼數(shù)據(jù)在卡內(nèi)EEPROM空間的新地址作為參數(shù)處理之后進(jìn)行系統(tǒng)調(diào)用;5)卡內(nèi)操作系統(tǒng)進(jìn)行認(rèn)證,如通過(guò)認(rèn)證則修改MMU的TLB初始化表,并重啟卡內(nèi)操作系統(tǒng)進(jìn)行初始化。
2.根據(jù)權(quán)利要求1所述的基于MMU架構(gòu)的JavaCard系統(tǒng)組件更新方法,其特征在于,所述步驟2)中給出系統(tǒng)組件更新任務(wù)列表包括對(duì)原項(xiàng)目修改、對(duì)原項(xiàng)目刪除和對(duì)原項(xiàng)目的新增,所述對(duì)原項(xiàng)目修改操作步驟如下如果修改后項(xiàng)目的二進(jìn)制代碼長(zhǎng)度不大于原項(xiàng)目的長(zhǎng)度,則找到原項(xiàng)目的虛擬地址入口地址,在MMU的TLB表中新增一個(gè)表項(xiàng),將所述虛擬地址入口地址映射到EEPROM中,并保持字節(jié)長(zhǎng)度相等,在EEPROM新開(kāi)辟的位置寫(xiě)入修改后的項(xiàng)目二進(jìn)制碼,多余的位置補(bǔ)入空操作,如果新修改項(xiàng)目的二進(jìn)制代碼長(zhǎng)度大于原項(xiàng)目的長(zhǎng)度,則將此修改可以分為原項(xiàng)目刪除與原項(xiàng)目的新增的組合;所述對(duì)原項(xiàng)目刪除操作步驟如下將所有引用被刪除項(xiàng)目的代碼進(jìn)行修改;所述對(duì)原項(xiàng)目的新增操作步驟如下新增項(xiàng)目代碼只可能在修改后的代碼中被引用,對(duì)其處理可分兩個(gè)步驟在EEPROM中劃分一塊區(qū)域,將新項(xiàng)目代碼寫(xiě)入;然后利用逆向工程將修改代碼中引用新增項(xiàng)目的地址更改為新地址。
3.根據(jù)權(quán)利要求1所述的基于MMU架構(gòu)的JavaCard系統(tǒng)組件更新方法,其特征在于, 當(dāng)多個(gè)更新項(xiàng)目的虛擬地址跨度小于更新項(xiàng)目實(shí)際地址占用空間的兩倍,即更新空間利用率高于50%的時(shí)候,可將更新項(xiàng)目在存儲(chǔ)空間實(shí)現(xiàn)步驟3)中對(duì)所述系統(tǒng)組件更新任務(wù)列表中虛擬地址接近的項(xiàng)目進(jìn)行合并。
4.根據(jù)權(quán)利要求1所述的基于MMU架構(gòu)的JavaCard系統(tǒng)組件更新方法,其特征在于,步驟5)中所述修改MMU的TLB初始化表采用將一定長(zhǎng)度的虛擬地址空間映射到等長(zhǎng)的物理地址空間中,所述TLB初始化表格式分為logic_addr_base、Length和physical_addr_ base,所述l0giC_addr_base表示MMU所要映射的虛擬地址段的基地址,所述Length表示此邏輯地址段的長(zhǎng)度,所述physical_addr_base表示本段邏輯地址所映射到的物理地址的基地址。
全文摘要
本發(fā)明公開(kāi)了基于MMU架構(gòu)的Java Card系統(tǒng)組件更新方法,包括卡外和卡內(nèi)操作,具體包括1)通過(guò)對(duì)比修改后的工程代碼和原始工程代碼,給出代碼修改項(xiàng)目列表2)查找代碼修改項(xiàng)目列表中項(xiàng)目在目標(biāo)文件中的虛擬地址入口及二進(jìn)制長(zhǎng)度,給出系統(tǒng)組件更新任務(wù)列表3)對(duì)所述系統(tǒng)組件更新任務(wù)列表中虛擬地址接近的項(xiàng)目進(jìn)行合并,生成卡內(nèi)MMU修改信息表和代碼實(shí)際二進(jìn)制修改信息表4)傳輸代碼修改數(shù)據(jù),將更新后的代碼數(shù)據(jù)寫(xiě)入卡內(nèi)EEPROM空間,并以所述更新后的代碼數(shù)據(jù)在卡內(nèi)EEPROM空間的新地址作為參數(shù)處理之后進(jìn)行系統(tǒng)調(diào)用5)卡內(nèi)操作系統(tǒng)進(jìn)行認(rèn)證如通過(guò)認(rèn)證則修改MMU的TLB初始化表,并重啟卡內(nèi)操作系統(tǒng)進(jìn)行初始化。
文檔編號(hào)G06F9/445GK102243595SQ20111021981
公開(kāi)日2011年11月16日 申請(qǐng)日期2011年8月3日 優(yōu)先權(quán)日2011年8月3日
發(fā)明者吳健, 尹建偉, 曹曉, 李瑩, 殷中科, 鄧水光 申請(qǐng)人:浙江大學(xué)