專利名稱:使用集中動態(tài)尋址(da)管理器的動態(tài)尋址的制作方法
技術(shù)領(lǐng)域:
所公開的實施例涉及升級和維護電子文件時的存儲器管理。
背景技術(shù):
軟件被寄存(host)或運行于大多數(shù)電子設(shè)備上,并且包括一個或多個人可讀的美國信息交換標(biāo)準(zhǔn)碼(“ASCII”)純文本文件或二進制碼形式的文件。在處理器或中央處理單元(“CPU”)上運行的寄存軟件提供了主機設(shè)備中的功能性但常常隨時間而變化。軟件變化可由糾正軟件文件中的缺陷或錯誤、適應(yīng)技術(shù)發(fā)展或增加新特征和功能的需要而引起。特別地,寄存于移動無線設(shè)備上的嵌入式軟件組件常常包括需要糾正的大量軟件缺陷。
設(shè)備的軟件或程序包括軟件文件,其被分為較小的單位,該單位經(jīng)常被稱作組件或模塊。在移動無線設(shè)備中,典型地使用實時操作系統(tǒng)(“RTOS”),其中設(shè)備所寄存的軟件模塊或組件鏈接為單個大文件。該大軟件文件裝入或嵌入到設(shè)備中,并典型地存儲在無線設(shè)備的只讀存儲器(“ROM”)或閃速ROM中。
無線設(shè)備所寄存的軟件文件可通過使用無線通信鏈路或空中傳播(“OTA”)鏈路如無線電鏈路來糾正錯誤或增加新功能。由于帶寬、存儲器和涉及無線設(shè)備的其它約束,在設(shè)備已經(jīng)在商業(yè)上發(fā)行之后更新所寄存的軟件需要特殊的專門應(yīng)用。這些專門應(yīng)用的實例包括可得自加利福尼亞Alviso的InnoPath Software,Inc.的稱為DeltaUpdateTM和DeltaRewriteTM的升級或更新應(yīng)用。這些升級應(yīng)用也是“相關(guān)申請”的主題。
用于無線設(shè)備的程序典型地使用稱為靜態(tài)尋址的方法存儲在設(shè)備存儲器中。在程序已經(jīng)被寫入之后,它被編譯為計算機可讀代碼,在此期間代碼的不同模塊或組件被鏈接。這導(dǎo)致公知為映像(image)或存儲器映像的東西,其中映像是以機器語言存儲在主機設(shè)備的ROM中的可執(zhí)行指令集。這些程序典型地組織為連續(xù)的指令流,其中一些具有對主機設(shè)備ROM的其它部分中的指令的引用。由于這種順序和互連架構(gòu),主機設(shè)備ROM內(nèi)特定機器代碼的位置基本上是固定的,因此得到術(shù)語“靜態(tài)尋址”。
使用經(jīng)由OTA鏈路接收的文件來升級主機設(shè)備的代碼的一部分,即使變化小也包含重寫主機設(shè)備ROM的大部分以便對代碼中的引用重新排序和調(diào)節(jié)。這使得典型的更新過程冗長、易于出錯且耗時。因此,存在對動態(tài)尋址的需要,用于在升級寄存于諸如蜂窩電話的無線設(shè)備上以及其它移動通信設(shè)備、個人數(shù)字助理(“PDA”)和個人計算機上的軟件應(yīng)用中使用。
圖1是一實施例下的包括具有動態(tài)尋址(“DA”)管理器的客戶設(shè)備的系統(tǒng)的塊圖。
圖2是一實施例下的示例服務(wù)提供者基礎(chǔ)設(shè)施的塊圖。
圖3是示出一實施例下的DA管理器和映像的軟件組件之間的交互的DA的塊圖。
圖4A和4B示出一實施例下的構(gòu)建包括DA管理器的映像的流程圖。
圖5是示出圖1和3的實施例下的包括軟件映像組件的存儲器組件、升級客戶和DMM客戶之間的交互實例的設(shè)備存儲器的塊圖。
圖6是一實施例下的使用DA來升級EBSC或EBSC組的流程圖。
圖7是一實施例下的使用DA的函數(shù)調(diào)用的流程圖。
圖8是一實施例下的保留存儲區(qū)以容納EBSC新版本的流程圖。
圖9是一實施例下的定位存儲器塊以容納EBSC新版本的流程圖。
圖10是一實施例下的垃圾收集的流程圖。
圖11是一實施例下的使用DA的嵌入式軟件發(fā)展和布置過程的塊圖。
在附圖中,相同的參考數(shù)字用于標(biāo)識相同或者基本相似的元素或者動作。為了容易地標(biāo)識對任何特定元素或者動作的討論,參考數(shù)字中的最高有效數(shù)位或多個最高有效數(shù)位稱作圖號,該元素第一次被引入其中(如,元素126關(guān)于圖1第一次被引入和討論)。
詳述在此描述用于在更新寄存于無線手機和類似客戶設(shè)備上的軟件中使用的動態(tài)尋址。一個實施例的DA包括將存儲在設(shè)備存儲器中的代碼組織為相關(guān)組件組,在此亦稱為嵌入式軟件組件(“EBSC”)。連同每個組件的位置或地址,從一個組件到另一個組件的任何引用被標(biāo)識和存儲在集中且分離的程序中,該程序在此被稱為“DA管理器”,或者“集中DA管理器”。DA管理器在鏈接EBSC的過程中生成并且與客戶設(shè)備程序一起加載到客戶設(shè)備存儲器中。
在操作中,DA管理器通常用作集中路由器或交換機,其知道客戶設(shè)備的每個EBSC的符號位置并且在客戶設(shè)備程序執(zhí)行期間根據(jù)需要鏈接EBSC。從一個EBSC到另一個EBSC的任何引用經(jīng)由DA管理器而不是直接在EBSC之間路由。因此,如果在文件升級期間組件被修改并且升級導(dǎo)致EBSC在客戶設(shè)備存儲器中的位置變化,則該變化由DA管理器記錄,由此維持對存在于客戶設(shè)備程序中的EBSC的引用或鏈接的完整性。
因此,DA管理器提供了一種有效且符合邏輯的方式來組織客戶設(shè)備存儲器中的機器代碼。一個實施例的DA管理器允許對機器代碼的一個或多個部分(EBSC)進行添加、刪除和修改,而不擾動(ripple through)和影響客戶設(shè)備存儲器中所存儲的其余代碼。相對照,當(dāng)使用其中對存儲在存儲器中的程序進行包括添加幾行新代碼的改變的靜態(tài)尋址時,所改變的代碼之后的所有代碼在存儲器布局中向下移位。這種代碼的移位使得有必要改變存在于所改變的代碼中的任何引用或鏈接。這樣,小程序變化可導(dǎo)致大部分存儲在客戶設(shè)備存儲器中的機器代碼中的對應(yīng)的和補償?shù)淖兓?br>
DA避免了與靜態(tài)尋址相關(guān)聯(lián)的問題,這是因為對EBSC地址的改變只需要在DA管理器中進行一次,而不是貫穿所有客戶設(shè)備程序。由于重新尋址是較為有效的,分配給特定塊的客戶設(shè)備存儲區(qū)亦可減小,從而導(dǎo)致對客戶設(shè)備的可用存儲的較大利用。并且通過將地址變化的重寫限制于僅DA管理器,調(diào)試、修改以及升級等客戶設(shè)備軟件以短得多的時間得以完成。這導(dǎo)致較高的效率并且顯著減小了成本和失去的收入。它還提供了比典型的靜態(tài)尋址所能實現(xiàn)的大且復(fù)雜的軟件的下載和更新。
在以下描述中,引入大量特定細節(jié)以提供對DA和DA管理器的實施例的全面理解并使得能夠描述DA和DA管理器的實施例。然而,相關(guān)領(lǐng)域的技術(shù)人員將理解,DA和DA管理器可無需一個或者多個所述特定細節(jié)或者用其它組件、系統(tǒng)等來實踐。在其它實例中,熟知的結(jié)構(gòu)或者操作未加以示出,或者未加以詳細描述,以避免混淆DA和DA管理器的方面。
圖1是一實施例下的包括具有DA管理器的客戶設(shè)備的系統(tǒng)100的框圖。一個實施例的系統(tǒng)100是文件升級系統(tǒng)100,但不局限于此。通常,文件升級系統(tǒng)100包括第一計算機系統(tǒng)102或主機系統(tǒng),以及一個或多個第二計算機系統(tǒng),包括客戶設(shè)備或計算機122。主機系統(tǒng)102和客戶設(shè)備122每個分別包括至少一個處理器104和124,在程序控制下操作,但不局限于此。主機系統(tǒng)102和客戶設(shè)備122經(jīng)由通信路徑199通信。如本領(lǐng)域所知道的,這些計算機系統(tǒng)102和122包括在一起操作的計算設(shè)備的任何集合。計算機系統(tǒng)102和122亦可包括較大計算機系統(tǒng)內(nèi)的組件。
主機系統(tǒng)102的處理器104在程序控制下耦合于數(shù)據(jù)庫106和文件差別算法114之間??商鎿Q地,主機系統(tǒng)102的各種其它組件可在程序控制下耦合于處理器104、數(shù)據(jù)庫106和文件差別算法114之間并且提供文件更新功能。盡管示出一個處理器104、一個數(shù)據(jù)庫106和一個文件差別算法114,各種可替換的實施例包括以本領(lǐng)域技術(shù)人員所設(shè)想的各種配置耦合的任何數(shù)目和/或類型的每個這些組件。此外,盡管處理器104、數(shù)據(jù)庫106和文件差別算法114示出為分離的塊,然而一些或所有這些塊可以單片形式集成到單個芯片上,分布在許多芯片或主機系統(tǒng)組件之間,和/或由某種算法組合來提供。文件差別算法114可以以軟件算法(多個軟件算法)、固件、硬件以及軟件、固件和硬件的任何組合來實施。在此概括使用的術(shù)語“處理器”指的是任何邏輯處理單元,如一個或多個CPU、數(shù)字信號處理器(“DSP”)、特定用途集成電路(“ASIC”)等。
同樣,一個實施例的客戶設(shè)備122包括在程序控制下耦合于設(shè)備存儲器130之中的處理器124。設(shè)備存儲器130包括RTOS 132(在此亦稱為“主程序132”)、一個或多個映像300、設(shè)備存儲器管理器(“DMM”)客戶500(“DMM客戶”)以及升級客戶126。在此亦稱為軟件映像或二進制映像的映像300是可執(zhí)行文件,并且包括一個或多個嵌入式軟件組件(“EBSC”)EBSCl-EBSCN、保留存儲區(qū)320和在此亦稱為“DA管理器310”的集中DA管理器310。二進制映像通??山?jīng)由鏈接時間操作由不同組件組成。軟件組件如EBSC是獨立構(gòu)建的二進制映像,具有通過設(shè)計專門集合在一起的函數(shù)。盡管DA管理器310示出為映像300的組件,但DA管理器可以是DMM客戶500、升級客戶126的組件和/或客戶設(shè)備122的任何其它組件。
可替換地,客戶設(shè)備122的各種其它組件可在程序控制下耦合于處理器124和設(shè)備存儲器130之間并且提供文件更新功能。盡管示出一個處理器124和一個設(shè)備存儲器130,各種可替換的實施例包括以本領(lǐng)域技術(shù)人員所設(shè)想的各種配置耦合的任何數(shù)目和/或類型的每個這些組件。此外,盡管處理器124和設(shè)備存儲器130示出為分離的塊,然而一些或所有這些塊可以單片形式集成到單個芯片上,分布在許多芯片或主機系統(tǒng)組件之間,和/或由某種算法組合來提供。設(shè)備存儲器130的算法或應(yīng)用可以以軟件算法(多個軟件算法)、固件、硬件以及軟件、固件和硬件的任何組合來實施。設(shè)備存儲器可包括任何數(shù)目和/或組合或存儲器類型,它們包括ROM和隨機存取存儲器(“RAM”),但不局限于此。
通信路徑199包括用于在計算機系統(tǒng)102和122之間通信或傳遞文件的任何媒介。因此,該路徑199包括無線連接,有線連接和混合無線/有線連接。通信路徑199還包括到網(wǎng)絡(luò)的耦合或者連接,所述網(wǎng)絡(luò)包括局域網(wǎng)(“LAN”)、城域網(wǎng)(“MAN”)、廣域網(wǎng)(“WAN”)、專屬網(wǎng)、局間或者后端網(wǎng)和因特網(wǎng)。此外,通信路徑199包括可移動的固定媒介,如軟盤、硬盤驅(qū)動器和CD-ROM盤,以及閃存、通用串行總線(“USB”)連接、RS-232連接、電話線、總線和電子郵件消息。
主機系統(tǒng)102和客戶設(shè)備122每個包括電子文件的原始版本110,在此稱為原始文件110或舊文件。主機系統(tǒng)102將原始文件110存儲在數(shù)據(jù)庫106或其它存儲區(qū)或存儲區(qū)或設(shè)備的組合中,但不局限于此??蛻粼O(shè)備122將原始文件存儲在設(shè)備存儲器130中以便于在操作中使用。
在諸如軟件提供者升級原始文件110以便例如提供附加功能性或修復(fù)軟件缺陷的時間,生成電子文件的新版本112。電子文件的新版本112在此稱為新文件112。新文件112通常是原始文件110的更新或修訂版本,但不局限于此。軟件提供者將新文件112傳遞到主機系統(tǒng)102。
電子文件110和112包括軟件文件,其包括動態(tài)鏈接庫文件,共享目標(biāo)文件,EBSC,固件文件,可執(zhí)行文件,包括十六進制數(shù)據(jù)文件的數(shù)據(jù)文件,系統(tǒng)配置文件和包括個人使用數(shù)據(jù)的文件,但不局限于此。由于任何類型的文件都可被看作字節(jié)流,在以下文件可被描述為字節(jié)流。
包括至少一個處理器104的主機系統(tǒng)102的組件接收和處理新文件112以生成升級信息以便在對寄存于客戶設(shè)備122上的原始文件升級時使用。在一實施例中,處理器104生成升級文件118以便在將升級信息傳遞到客戶設(shè)備122時使用。升級文件118可包括對新文件112和原始文件110之間的差異進行編碼的差別文件,或可替換地,可包括新文件112的任何數(shù)目和/或組合的組件或模塊。主機系統(tǒng)102經(jīng)由在通信路徑199上的升級文件118的傳遞將升級信息提供給客戶設(shè)備122。
在升級文件118包括差別文件的實施例中,包括處理器104和文件差別算法114的主機系統(tǒng)102的組件對新文件112和對應(yīng)原始文件110之間的比較進行處理,由此計算新文件112和原始文件110之間的差異。文件差別算法114在比較期間生成差別文件并且將差別文件的信息寫到升級文件118。
升級文件118經(jīng)由通信路徑199傳遞或傳輸?shù)娇蛻粼O(shè)備122。在傳遞之前,可使用本領(lǐng)域公知的許多壓縮技術(shù)中的任何一種來壓縮升級文件118,但不局限于此。
包括處理器124和升級客戶126的客戶設(shè)備122的組件接收升級文件118并使用升級文件118來控制客戶設(shè)備122上的原始文件的升級。客戶設(shè)備122的升級客戶126包括下載子客戶(“SC”)(“下載SC”)、升級SC和自升級SC(未示出)中的至少一個,如在相關(guān)申請中所述,但不局限于此。下載SC起到下載或接收從主機系統(tǒng)102傳遞的升級文件118的作用。升級SC使用從主機系統(tǒng)102接收的所傳遞的文件的信息來執(zhí)行對客戶設(shè)備122的軟件的升級。自升級SC起到對升級客戶126的軟件進行升級的作用。一個實施例的自升級SC存儲在與下載SC或升級SC不同的物理存儲器塊或區(qū)域中,但不局限于此。升級客戶126的軟件包括但不局限于下載SC、升級SC和自升級SC的軟件。
在一個實施例中,升級客戶126對升級文件118連同被寄存的原始文件110的信息進行處理以生成客戶設(shè)備122中的新文件的拷貝。新文件的該拷貝隨后由升級客戶126用于升級寄存于客戶設(shè)備122上的目標(biāo)原始文件。一個實施例的升級客戶126使用眾多方法來更新EBSC,這依賴于待更新的文件類型以及客戶設(shè)備制造者分配用來支持這些更新的資源,如在相關(guān)申請中所述。一旦完成該更新過程,現(xiàn)在存儲在客戶設(shè)備122上的原始文件與在主機系統(tǒng)102中接收的新文件112相同。
相關(guān)領(lǐng)域的技術(shù)人員將理解,與升級系統(tǒng)100關(guān)聯(lián)的那些功能以及在此參照升級系統(tǒng)100描述的其它功能和方法可由主機系統(tǒng)102的組件、客戶設(shè)備122的組件、或分布在主機系統(tǒng)102和客戶設(shè)備122的組件之間的任何組合中。主機系統(tǒng)102和客戶設(shè)備122的組件可由DSP集成電路和/或通過常規(guī)編程邏輯陣列或電路元件來實施為ASIC。在此所述的實施例可使用運行于一個或多個處理器上的軟件、固件和硬件的任何組合來實施,其中軟件可存儲在任何適合的計算機可讀媒介上,如微碼存儲在半導(dǎo)體芯片中,在計算機可讀盤上,或者從服務(wù)器下載并在本地存儲于客戶。
圖2是一實施例的包括文件升級系統(tǒng)100的組件的示例服務(wù)提供者基礎(chǔ)設(shè)施200的塊圖。在該實施例中,服務(wù)提供者基礎(chǔ)設(shè)施是在蜂窩電話網(wǎng)絡(luò)或基礎(chǔ)設(shè)施的情況下描述的,但可替換的實施例不局限于此。服務(wù)提供者基礎(chǔ)設(shè)施200包括但不局限于軟件組件分配器(“SCD”)202、服務(wù)提供者升級組件203-205以及寄存于客戶設(shè)備122上的升級客戶126。服務(wù)提供者升級組件203-205包括耦合于軟件組件認證服務(wù)器203和升級管理器205之間的升級服務(wù)器204。
進一步參照圖1,服務(wù)提供者基礎(chǔ)設(shè)施200的一個實施例的SCD 202包括主機系統(tǒng)102的組件或功能。在可替換的實施例中,服務(wù)提供者升級組件203-205寄存主機系統(tǒng)102的組件或函數(shù)。在其它可替換的實施例中,主機系統(tǒng)102的組件或功能分布在SCD 202的組件和服務(wù)提供者升級組件203-205之間。
一個實施例的服務(wù)提供者基礎(chǔ)設(shè)施200經(jīng)由升級系統(tǒng)組件和各種機制的服務(wù)提供者無線基礎(chǔ)設(shè)施來支持客戶設(shè)備122上的多種類型的軟件文件或組件升級,客戶設(shè)備122包括移動電子設(shè)備、移動通信設(shè)備、蜂窩電話、個人數(shù)字助理、計算機和其它基于處理器的設(shè)備。這些系統(tǒng)通過經(jīng)由服務(wù)提供者基礎(chǔ)設(shè)施接收來自軟件分配器的新的和經(jīng)修訂的軟件、根據(jù)新軟件生成升級文件以及將升級文件傳遞到客戶設(shè)備122來起作用??蛻粼O(shè)備122的升級客戶126使用升級文件來更新寄存于客戶設(shè)備122上的目標(biāo)軟件。
一個實施例的SCD 202提供軟件提供者打包和發(fā)行新的嵌入式設(shè)備軟件組件所借助的用戶接口。SCD 202的功能包括注冊設(shè)備信息和將設(shè)備信息提交到軟件組件認證服務(wù)器。而且,SCD 202接收新的和原始的EBSC,使用新的和原始的EBSC來計算或生成文件差異,注冊和打包嵌入式軟件,以及將嵌入式軟件包提交到軟件組件認證服務(wù)器203。在發(fā)行之后,新的或經(jīng)修訂的軟件經(jīng)由有線、無線或混合有線/無線網(wǎng)絡(luò)耦合或連接220提供給服務(wù)提供者升級組件203-205,但不局限于此。
一個實施例的SCD 202寄存于客戶設(shè)備制造者的處理系統(tǒng)上。在可替換的實施例中,SCD 202寄存于應(yīng)用或系統(tǒng)軟件提供者的處理系統(tǒng)上。在另一個可替換的實施例中,SCD 202寄存于服務(wù)運營者或提供者的處理系統(tǒng)上,例如寄存于升級組件203-205上或分布于其間。
服務(wù)提供者升級組件203-205耦合于軟件組件分配器202、客戶設(shè)備122和服務(wù)提供者基礎(chǔ)設(shè)施的現(xiàn)有組件210-218之間,所述現(xiàn)有組件包括現(xiàn)有網(wǎng)關(guān)210和通信基礎(chǔ)設(shè)施212、計費服務(wù)器、日志服務(wù)器216以及鑒權(quán)服務(wù)器218。
軟件組件認證服務(wù)器203提供接口給客戶設(shè)備制造者并且,由此接收來自設(shè)備制造者的關(guān)于嵌入式軟件包的新設(shè)備信息。軟件組件認證服務(wù)器203還將認可的軟件包重新打包并分配給升級服務(wù)器。
在充當(dāng)軟件組件認證服務(wù)器203和升級服務(wù)器204之間的接口的同時,升級管理器205為最佳設(shè)備管理而配置軟件和數(shù)據(jù)打包,排定遠程改變通知的時間,并且控制更新策略監(jiān)視系統(tǒng)。此外,升級管理器205提供與現(xiàn)有基礎(chǔ)設(shè)施的系統(tǒng)的整合。
升級服務(wù)器204提供包括鑒權(quán)、連接和與移動客戶設(shè)備122通信的能力以執(zhí)行嵌入式軟件組件升級。與客戶設(shè)備122通信可經(jīng)由與客戶設(shè)備122的耦合212而進行,所述耦合212包括無線耦合、有線耦合、混合的有線/無線耦合以及適于對應(yīng)服務(wù)提供者的其它網(wǎng)絡(luò)耦合類型。此外,升級服務(wù)器204支持服務(wù)提供者的現(xiàn)有的計費、數(shù)據(jù)采集和日志服務(wù)。
作為升級服務(wù)器204和客戶設(shè)備122之間的通信的實例,當(dāng)升級文件可用于從升級服務(wù)器204傳遞到客戶設(shè)備122時,服務(wù)器204發(fā)送用戶通知以向客戶設(shè)備用戶通知有可用于更新的軟件組件。該用戶通知可經(jīng)由短消息服務(wù)(“SMS”)推送協(xié)議(push protocol)、超文本傳遞協(xié)議(“HTTP”)或者無線應(yīng)用協(xié)議(“WAP”)采用文本消息的形式,但不局限于此。一旦從手機用戶接收到確認,升級服務(wù)器204使用原始的手機數(shù)據(jù)通信協(xié)議將升級文件發(fā)送到請求設(shè)備。
響應(yīng)于收到來自設(shè)備的確認,升級服務(wù)器204鑒權(quán)并授權(quán)用戶和/或請求設(shè)備,并檢驗請求設(shè)備預(yù)先必備的能力和限制。在鑒權(quán)之后,作為客戶設(shè)備配置數(shù)據(jù)管理器的升級服務(wù)器204標(biāo)識請求設(shè)備的嵌入式軟件組件的當(dāng)前版本,標(biāo)識適當(dāng)?shù)膁elta文件并將其傳遞到請求設(shè)備,記錄升級事務(wù)的狀態(tài),并向升級管理器205報告結(jié)果。此外,升級服務(wù)器204通過空中傳播來激活/去激活該軟件升級服務(wù),并將軟件變化通知給遠程用戶。
參考圖1,升級客戶126嵌入在客戶設(shè)備1中,但不局限于此。升級客戶126存儲并維護客戶設(shè)備122的配置數(shù)據(jù),并且提供嵌入式設(shè)備軟件組件的維護和升級。升級客戶126支持簡單的用戶接口并被結(jié)合到移動設(shè)備軟件中。一旦執(zhí)行,升級客戶126就自動檢測任何嵌入式軟件組件的遠程變化,將嵌入式軟件組件升級通知給用戶,并基于運營者和/或用戶控制來升級軟件組件,以適于特定的服務(wù)提供者。
一實施例的升級系統(tǒng)100和服務(wù)提供者基礎(chǔ)設(shè)施支持諸多類型的軟件文件或者組件更新,包括對可執(zhí)行文件、字節(jié)流文件和數(shù)據(jù)文件的更新,但不局限于此。可執(zhí)行文件或映像文件包括在客戶設(shè)備中使用以執(zhí)行任務(wù)的軟件文件,例如操作系統(tǒng)(“OS”),硬件設(shè)備驅(qū)動,和K虛擬機(“KVM”)文件。字節(jié)流文件包括由其它可執(zhí)行文件使用的文件,例如,圖標(biāo)文件,logo文件和MP3文件。數(shù)據(jù)文件包括包含個人使用數(shù)據(jù)和手機參考數(shù)據(jù)的文件,例如校準(zhǔn)配置文件,協(xié)議獨立組播(“PIM”)文件和系統(tǒng)配置文件。
一個實施例的升級客戶126使用諸多方法依據(jù)要升級的文件類型和由客戶設(shè)備制造者分配的用來支持這些升級的資源來升級EBSC,如相關(guān)申請中所述的。一個實施例的這些升級方法包括非關(guān)鍵組件更新、關(guān)鍵組件更新和更新客戶組件更新,其中這些類別基于由作為更新目標(biāo)的軟件組件所提供的功能。
如以上所述,通過使用比較程序的新版本與原始版本并僅隔離機器代碼的變化或差異的技術(shù),軟件升級通常減小了重寫主機客戶設(shè)備的ROM所需的時間??蛻粼O(shè)備的升級客戶使用如在升級文件中接收的這些差異的信息來升級設(shè)備ROM,這是通過僅重寫所述差異或者已改變的EBSC或映像的部分而不是重寫整個ROM來實現(xiàn)的。
除了使用包括差別文件的升級文件之外,通過使用DA和DA管理器在文件升級期間還可實現(xiàn)升級文件的大小和升級客戶設(shè)備程序所需的時間的額外減小。一個實施例的DA包括將存儲在設(shè)備ROM中的代碼組織為相關(guān)EBSC的組。從一個組件到另一個組件的任何引用連同每個組件的位置或地址被標(biāo)識和存儲在DA管理器中。DA管理器在鏈接EBSC期間生成并且連同客戶設(shè)備程序被加載到客戶設(shè)備存儲器中。因此DA和DA管理器允許映像的EBSC得以隔離和獨立構(gòu)建。
DA管理器管理組件函數(shù)調(diào)用、全局變量引用和常變量引用以充當(dāng)知道每個EBSC的符號位置并在客戶設(shè)備程序執(zhí)行期間根據(jù)需要鏈接EBSC的集中路由器或交換機。從一個EBSC到另一個EBSC的任何引用經(jīng)由DA管理器而不是直接在EBSC之間路由。如果組件在文件升級期間被修改并且該升級導(dǎo)致ROM中的EBSC的位置變化,則該變化由DA管理器記錄,由此維持對存在于設(shè)備程序中的EBSC的引用或鏈接的完整性。
在此所述的DA管理器利用例如ARM處理器核心或寄存Arm開發(fā)工具集(ADS)版本1.2軟件包的處理器來運行,但可替換的實施例可在各種其它處理器上或利用各種其它處理器來運行。一個實施例的DA和DA管理器與多種嵌入式系統(tǒng)平臺兼容,而不僅是在此所述的嵌入式系統(tǒng)。
在對一個實施例的DA和DA管理器的描述中使用了許多術(shù)語,并且盡管對這些術(shù)語的描述在此作為實例而提供,實施例并不局限于這些描述。在描述DA和DA管理器時,“映像”是加載到處理器上的可執(zhí)行文件,并且可替換地稱為“二進制映像”或“軟件映像”?!岸巍笔怯诚竦能浖a或數(shù)據(jù)的塊?!皡^(qū)”是一個到三個輸出段(映像的只讀存儲器地址(“RO”)、讀/寫存儲器地址(“RW”)和零初始化存儲器地址(“ZI”))的連續(xù)序列;區(qū)通常映射到諸如ROM、RAM和/或外設(shè)的物理存儲器設(shè)備上?!凹虞d視圖”是已經(jīng)加載到存儲器中但尚未開始執(zhí)行的映像的段和區(qū)的地址?!皥?zhí)行視圖”是已經(jīng)加載到存儲器中并且正在執(zhí)行的映像的段和區(qū)的地址?!胺稚⒓虞d”包括分配地址并單獨地集合代碼和數(shù)據(jù)段而不是使用單個大塊?!癛O-CODE”指的是只讀代碼地址?!癛O-DATA”指的是只讀數(shù)據(jù)地址?!癛W-DATA”指的是讀/寫數(shù)據(jù)地址?!癦I-DATA”指的是用于保持不具有初始值的變量的零初始化讀/寫存儲器。“Symdef文件”是包括全局符號和關(guān)聯(lián)的最終運行時間地址的符號定義文件。
一個實施例的DA操作來通過在二進制映像的DA管理器的固定位置插入共用組件來中斷函數(shù)調(diào)用依賴性,使得當(dāng)函數(shù)調(diào)用目的地址由于代碼變化而變化時,調(diào)用函數(shù)繼續(xù)調(diào)用DA管理器的所述共用組件,并且DA管理器將該調(diào)用導(dǎo)向到映像中的適當(dāng)組件。因此DA管理器的共用組件的信息根據(jù)任何函數(shù)調(diào)用目的地址變化而變化以將對共用組件的函數(shù)調(diào)用導(dǎo)向到新的目的地址。
作為在此所提供的基于組件的存儲器管理的一個實例,圖3是示出一實施例下的DA管理器310和映像300的EBSC EBSC1/EBSC2/EBSC3之間的交互的DA塊圖。如以上所述,一個實施例的映像包括軟件組件(EBSC)和至少一個DA管理器。映像包括鏈接的組件,其中諸如EBSC的組件包括獨立構(gòu)建的具有根據(jù)設(shè)計專門集合在一起的函數(shù)的映像。由于映像劃分為不同的組件,將有從一個組件到其它組件的函數(shù)調(diào)用、全局變量引用和常變量引用,如以下所述。
一個實施例的DA標(biāo)識映像組件之間的函數(shù)調(diào)用和全局引用并且消除單獨組件之間的依賴性,使得在對映像進行軟件升級或改變時,僅DA管理器和已經(jīng)修改的那些組件得到升級。DA管理器隨后通過管理和重新導(dǎo)向函數(shù)調(diào)用和全局引用來控制或管理映像執(zhí)行期間的組件間活動。
作為DA管理器的一個操作實例,參考圖3,將操作導(dǎo)向到EBSC1的函數(shù)2的EBSC2中的調(diào)用350調(diào)用DA管理器310的組件370。所調(diào)用的DA管理器310的組件370又將操作352導(dǎo)向到EBSC1的函數(shù)2。作為DA管理器的另一個操作實例,將操作導(dǎo)向到EBSC3的函數(shù)1的EBSC1中的調(diào)用360調(diào)用DA管理器310的組件380。所調(diào)用的DA管理器310的組件380又將操作362導(dǎo)向到EBSC3的函數(shù)1。
繼續(xù)該實例,例如當(dāng)客戶設(shè)備的軟件升級使得有必要有導(dǎo)致存儲器中EBSC1的位置變化的映像300的EBSC1的變化時,升級僅導(dǎo)致EBSC1的升級和具有與EBSC1關(guān)聯(lián)的鏈路的DA管理器310的組件370的升級。因此,由于DA管理器310用來維持映像300的EBSC之間的引用或鏈接的完整性,DA管理器310消除了對由于升級特定EBSC如EBSC1而升級或重寫映像300的所有EBSC的任何需要。
在管理映像300的EBSC之間的鏈路時,一個實施例的DA管理器使用多種技術(shù)來管理不同類型的全局引用。具體而言,DA管理器管理包括函數(shù)調(diào)用和全局變量的全局引用,但不局限于此。
組件的函數(shù)調(diào)用通常是以相對偏移跳轉(zhuǎn)/分支指令或絕對地址跳轉(zhuǎn)/分支指令的格式,其中目的偏移/地址位于映像的一個或多個其它組件中。二進制代碼位于包括只讀代碼地址的RO-CODE/文本段處?;趫?zhí)行視圖地址和組件邊界,函數(shù)調(diào)用分類和處置為組件間函數(shù)調(diào)用或組件內(nèi)函數(shù)調(diào)用,如以下所述。
對于組件間函數(shù)調(diào)用并且作為跳轉(zhuǎn)/分支指令特性的結(jié)果,一個實施例的DA管理器包括在此稱為向量表(VT)的集中跳表以管理組件間函數(shù)調(diào)用并處置關(guān)聯(lián)的再導(dǎo)向。在執(zhí)行期間,所進行的從一組件到位于另一個組件中的函數(shù)的調(diào)用導(dǎo)致對VT中的一條目(entry)的調(diào)用,如以下所述。然后VT將該調(diào)用再導(dǎo)向到對應(yīng)于所調(diào)用的組件/函數(shù)的設(shè)備存儲器中的適當(dāng)?shù)奈恢谩Ee例來說,以下是針對組件間函數(shù)調(diào)用的VT項目的示例ARM模式代碼,但該實施例不局限于該示例代碼import EBSC2_Fn1ldr pc,addr_EBSC2_Fn1addr_EBSC2_Fn1 dcd EBSC2_Fn1import EBSC3_Fn2ldr pc,addr_EBSC3_Fn2addr_EBSC3_Fn2 dcd EBSC3_Fn2與組件間函數(shù)調(diào)用相對照,組件內(nèi)函數(shù)調(diào)用(對組件內(nèi)的局部函數(shù)的函數(shù)調(diào)用)不受組件升級的影響。組件內(nèi)函數(shù)調(diào)用不受影響是因為,由于升級導(dǎo)致對完整組件的升級,組件升級包括對組件內(nèi)函數(shù)調(diào)用的適當(dāng)升級。因此,組件內(nèi)函數(shù)調(diào)用不經(jīng)歷VT。此外,組件內(nèi)函數(shù)調(diào)用的調(diào)用順序不是使用VT來實現(xiàn)的,但該實施例不局限于此。
轉(zhuǎn)到使用一個實施例的DA和DA管理器的全局變量和關(guān)聯(lián)引用,有三種子類型的全局變量,包括全局常變量、全局RW變量和全局ZI變量。全局常變量在映像代碼的RO-DATA/.const段中,盡管它們被稱為“變量”,但它們可引用自設(shè)備ROM并且不能在運行時間被修改。全局RW變量是RAM變量,其可在運行時間修改并且在系統(tǒng)初始化期間設(shè)置為其初始值。全局ZI變量也是RAM變量,其可在運行時間修改并且與RW變量相對照,在系統(tǒng)初始化期間清為零(0)值。
一個實施例的DA和DA管理器使用在此亦稱為“全局引用”的組件間和組件內(nèi)全局引用的其中一個或組合來管理對組件全局變量的引用。對于組件間全局變量引用,全局變量引用與以上所述的函數(shù)調(diào)用不同,因為它直接加載地址的內(nèi)容而不是跳轉(zhuǎn)/分支指令。
一個實施例的DA使用DA管理器的集中位置來管理組件間全局引用。通過使用集中DA管理器位置,每個組件間全局常變量、全局RW變量和全局ZI變量可分配給新類型的段。舉例來說,全局常變量可分配給稱為“globalConst”段的新段,全局RW變量可分配給稱為“globalRW”段的新段,并且全局ZI變量可分配給稱為“globalZI”段的新段。針對加載視圖和執(zhí)行視圖兩者,這些新段/變量然后可在鏈接時間分散加載到集中段中。由于在升級期間對未變組件的變量維持地址是有用的,集中位置使得較容易管理和檢驗變量的位置,由此簡化DA管理器構(gòu)建過程。
一個可替換實施例的DA和DA管理器使用訪問函數(shù)來管理組件間全局引用。作為以源代碼級生成的包裹函數(shù)的訪問函數(shù)將全局變量的引用轉(zhuǎn)換成函數(shù)調(diào)用,使得VT可用于處置這些引用。適合于使用訪問函數(shù)的情形包括源代碼不可用的情形、源代碼的變化非常不理想的情形,以及由于組件間變量引用的數(shù)目很有限而使得不需要分離的段的情形。
文件foo.c中的訪問函數(shù)的實例是int interCompGlobalVarA;并且文件foo.c或其它文件中的訪問函數(shù)的實例是interCompGIobalVarA=....
舉例來說,以下是針對訪問函數(shù)的VT條目的示例ARM模式代碼,但該實施例不局限于該示例代碼void setInterCompGlobalVarA(int value){interCompGlobalVarA=value;}void readInterCompGlobalVarA(int*value){*value=interCompGlobalVarA;}當(dāng)使用訪問函數(shù)時,對“interCompGlobalVarA”的引用變?yōu)槭褂靡陨系脑L問函數(shù)之一。
與組件間變量相對照,組件內(nèi)變量或組件內(nèi)的局部變量不受對組件升級的影響,因為組件升級包括對組件內(nèi)變量的適當(dāng)升級。因此,組件內(nèi)變量不經(jīng)歷globalConst變量/段、globalRW變量/段和globalZI變量/段。此外,組件內(nèi)函數(shù)調(diào)用的引用順序不是使用globalConst變量/段、globalRW變量/段和globalZI變量/段來實現(xiàn)的,但該實施例不局限于此。
一個實施例的DA管理器包括用于在生成包括DA管理器的映像時使用的映像構(gòu)建過程。舉例來說,圖4A和4B示出一實施例下的用于構(gòu)建包括DA管理器的映像的流程圖400。DA映像構(gòu)建過程生成高度可靠、無錯的二進制映像,并且該過程通??煞譃轭A(yù)編譯階段、后鏈接器階段和代碼生成階段,但不局限于此。映像構(gòu)造的預(yù)編譯階段為DA過程準(zhǔn)備原始構(gòu)建環(huán)境。后鏈接器階段可運行多次,直到可以可靠地生成包括DA管理器的映像。代碼生成階段生成用于映像的DA管理器組件的匯編代碼。
一個實施例的構(gòu)建過程使用包括如下的資源具有跨段引用信息的映像存儲器映射文件、知道原始組件的分散加載文件、原始調(diào)用圖文件和具有第三方庫目標(biāo)文件的制造者目標(biāo)文件??商鎿Q的實施例可使用附加的資源和/或其它類型/組合的資源。為了構(gòu)建包括DA管理器的映像,源代碼文件不需要是可用的,但源代碼文件可有助于二進制映像性能和運行時間資源要求。
參考用于構(gòu)建包括DA管理器的映像的流程圖400,在塊402,通過指定用來寄存DA管理器的設(shè)備存儲器中的位置,包括VT的加載視圖和執(zhí)行視圖以及全局引用,客戶設(shè)備的組件啟動構(gòu)建過程。在塊404,客戶設(shè)備的組件使用原始映像映射文件、意識到原始組件的分散加載文件、調(diào)用圖文件和原始源代碼文件(任選)的至少一個的信息來標(biāo)識組件間函數(shù)調(diào)用和組件間全局變量引用。在塊406,使用所使別的組件間函數(shù)調(diào)用和組件間全局變量引用的信息來確定DA管理器的條目是否過大以至于不能適合設(shè)備存儲器中的指定位置。DA管理器是通常占用客戶設(shè)備存儲器中的一個存儲器塊的獨立組件或EBSC,但不局限于此。
在塊406,如果DA管理器的條目過大以至于不能適合設(shè)備存儲器中的指定位置,則執(zhí)行對組件的重新安排以減少組件間引用。對組件的重新安排包括在塊450將所有組件間全局常變量(RO_DATA)重新集合或重新分配到新的globalConst段,但不局限于此。在塊452確定原始源代碼文件是否可用。如果原始源代碼文件可用,則在塊454,所有組件間全局RW變量(RW-DATA)和全局ZI變量(ZI-DATA)在原始源代碼中改變或重新定義為外部引用“extern”。在塊456生成新源代碼文件(globalInter.c),其具有對組件間全局RW變量(RW-DATA)和全局ZI變量(ZI-DATA)的集中聲明。集中聲明包括將全局RW變量分配給新的globalRW段以及將全局ZI變量分配給新的globalZI段,但不局限于此。在塊458,將分散加載文件亦修改為包括重新集合的組件間全局常變量(globalConst)連同globalRW和globalZI段,并且修改生成文件(Make file)。在生成新源代碼文件(globalInter.c)之后,在塊470重新編譯新源代碼文件并且重新鏈接目標(biāo)文件。操作然后返回以在塊402指定用來寄存DA管理器的設(shè)備存儲器中的位置,包括VT的加載視圖和執(zhí)行視圖,以及全局引用。
如果在塊452確定原始源代碼文件不可用于塊454、456、458的操作,則在對組件的重新安排以減少組件間引用(塊450)之后在塊460生成訪問函數(shù)。訪問函數(shù)將全局變量的引用轉(zhuǎn)換成函數(shù)調(diào)用,如以上所述。在生成訪問函數(shù)之后,在塊470重新編譯源代碼文件并且重新鏈接目標(biāo)文件。操作然后返回以在塊402指定用來寄存DA管理器的設(shè)備存儲器中的位置,包括VT的加載視圖和執(zhí)行視圖,以及全局引用。塊450-470的操作由客戶設(shè)備的組件重復(fù),直到DA管理器條目的大小適合設(shè)備存儲器中指定位置(塊406)。
在諸如在塊406確定DA管理器的條目適合設(shè)備存儲器中的指定位置的時間,操作繼續(xù)進行以在塊408生成用于每個組件的組件間函數(shù)調(diào)用的VT源代碼。在塊410,客戶設(shè)備亦生成用于每個組件的新的或經(jīng)修改的分散加載文件。此外,在塊412,客戶設(shè)備亦生成用于每個組件的符號定義文件symdef,其中每個symdef文件使用VT表條目地址為對應(yīng)組件定義外部引用。不在VT中使用的組件不需要symdef文件。塊408、410和412的操作使用原始映像映射文件和經(jīng)修改的分散加載文件中的至少一個的信息,但不局限于此。
在塊414,通過編譯/匯編和重新鏈接映像的組件并且為每個組件生成映像和存儲器映射,客戶設(shè)備的操作繼續(xù)進行。一個實施例的重新鏈接操作不包括到DA管理器組件的鏈接,但不局限于此。在塊416,客戶設(shè)備亦生成用于DA管理器組件的symdef文件,其包括最終符號位置。然后在塊418,客戶設(shè)備利用每個組件的局部符號來編譯和重新鏈接VT目標(biāo)文件以生成VT組件映像。在塊420,客戶設(shè)備亦編譯和鏈接DA管理器組件以生成DA管理器映像。在塊422,包括DA管理器映像的映像加載到客戶設(shè)備存儲器中。
在已經(jīng)制造了客戶設(shè)備之后,當(dāng)執(zhí)行軟件升級,包括對客戶設(shè)備的特定或預(yù)指定組件的升級時,一個實施例的客戶設(shè)備使用以上所述的DA。當(dāng)一個或多個被升級的組件包括組件間引用時,通過使用以上所述的構(gòu)建過程,在軟件升級期間DA管理器得以改變或升級。
在生成新版本映像的客戶設(shè)備的軟件升級期間,以上所述的構(gòu)建過程生成升級組件的映像。未被修改的那些組件應(yīng)當(dāng)與其較早版本相同,但對應(yīng)于組件間函數(shù)調(diào)用的DA管理器條目應(yīng)得到檢驗。由于代碼變化而不適合對應(yīng)原始組件的新組件間函數(shù)調(diào)用和全局變量將被添加到最后版本映像的所占用區(qū)塊的末尾,但不局限于此。此外,DA管理器的所有現(xiàn)有符號保持其原始地址,除非另外指定。
在構(gòu)建DA管理器之后,DA管理器用作集中路由器或交換機,其知道每個EBSC的符號位置并且在客戶設(shè)備程序執(zhí)行期間根據(jù)需要鏈接EBSC。從一個EBSC到另一個EBSC的任何引用經(jīng)由DA管理器而不是直接于EBSC之間路由。如果在文件升級期間組件被修改并且升級導(dǎo)致EBSC在ROM中的位置變化,則該變化由DA管理器記錄,由此維持對存在于設(shè)備程序中的EBSC的引用或鏈接的完整性。
如以上所述,文件的修訂包含將新的和更新的EBSC寫到主機設(shè)備的存儲器位置。通常,新EBSC不會為與它所替換的原始EBSC完全相同的大小或具有與之完全相同的起始地址。一實施例的升級客戶提供包括可升級EBSC的DA的設(shè)備存儲器管理選項,以容納新EBSC的寫入而不考慮EBSC的大小或者起始地址。
作為在升級設(shè)備存儲器組件期間使用DA的設(shè)備存儲器的實例,圖5是示出圖1和3的實施例下的包括軟件映像300(在嵌入式軟件區(qū)域中)、升級客戶126和DMM客戶500的組件的存儲器130的組件之間的交互的實例的設(shè)備存儲器130的塊圖。一個實施例的設(shè)備存儲器130是閃速ROM,但是很多類型的存儲器和/或存儲器類型的組合可在此實施例中或設(shè)備存儲器130的可替換的實施例中使用。
一個實施例的DMM客戶500包括DMM庫510、VT 512以及垃圾表514,但不局限于此。盡管VT 512示出為DMM客戶500的組件,VT 512可與DA管理器310安置在一起或安置在映像300或DMM客戶500的另一個段中。DMM庫510包括一個或多個函數(shù)地址轉(zhuǎn)換應(yīng)用程序員接口(“API”)520,保留API 522和垃圾收集API 524。DMM庫510可包括一個或多個與函數(shù)地址轉(zhuǎn)換API 520,保留API 522和垃圾收集API 524中的一個或多個進行某種組合的附加API。
在允許較先進的存儲器管理的同時,軟件升級期間的DA通常支持每個更新期間的EBSC和EBSC組的起始地址和大小兩者的修改。一實施例的升級客戶通過使用DMM客戶500的API和至少一個數(shù)據(jù)表之間的交互來支持動態(tài)尋址。同樣,DA增加了ROM利用效率和設(shè)備存儲器映射設(shè)計效率,同時以較低的更新故障概率支持較快的更新處理。
在使用DA執(zhí)行存儲器管理時,通過執(zhí)行對包括至少一個第一和第二存儲區(qū)的主機設(shè)備存儲區(qū)的順序搜索,升級客戶標(biāo)識并保留足夠大以容納新軟件組件的存儲器塊。當(dāng)新組件的大小超過所搜索的存儲區(qū)的可用塊的大小時,升級客戶重寫第一存儲區(qū)以去除未用的存儲器塊,重新分配第一和第二存儲區(qū),將新組件寫到第二存儲區(qū),并更新向量表,如下所述。
圖6是一實施例下的使用動態(tài)尋址來升級EBSC或EBSC組的流程圖600。在塊602,升級客戶接收新EBSC版本。新EBSC版本根據(jù)原始EBSC版本和對應(yīng)的升級文件產(chǎn)生,或者,可替換地,從軟件組件分配器接收。在塊604,存儲區(qū)被標(biāo)識并保留于客戶設(shè)備中以容納存儲新的EBSC版本。在塊606,升級客戶的組件將新EBSC版本寫到保留的存儲區(qū)。在塊608,對向量表的進行更新以進行由新EBSC版本導(dǎo)致的VT信息的任何必要的改變。此外,在塊610,對垃圾表進行更新以反映由新EBSC版本的寫入導(dǎo)致的未用的存儲區(qū)中的任何改變。
為了使用DA來訪問客戶設(shè)備中的軟件組件,升級客戶接收來自客戶設(shè)備的主程序的函數(shù)調(diào)用,其包括對應(yīng)軟件組件的標(biāo)識信息,從VT讀取對應(yīng)軟件組件的起始地址,并產(chǎn)生對對應(yīng)軟件組件的調(diào)用。同樣,當(dāng)?shù)谝籈BSC調(diào)用第二EBSC時,升級客戶改變函數(shù)調(diào)用順序,從而代替使用靜態(tài)地址來直接調(diào)用第二EBSC,第一EBSC使用靜態(tài)地址調(diào)用升級客戶的API。通過使用運行時間VT的對應(yīng)靜態(tài)地址和參量,所調(diào)用的API將所接收的調(diào)用轉(zhuǎn)換為對第二EBSC的調(diào)用。
圖7是一實施例下的使用DA的函數(shù)調(diào)用流程圖700。主機設(shè)備的主程序使用存儲在設(shè)備存儲器中的EBSC支持用戶請求的函數(shù)。當(dāng)用戶請求函數(shù)時,通過使用靜態(tài)地址來直接調(diào)用升級客戶的組件,客戶設(shè)備主程序的EBSC調(diào)用與特定函數(shù)相關(guān)的EBSC。響應(yīng)于該調(diào)用,在塊702,升級客戶接收來自主程序的信息,其包括函數(shù)或者EBSC標(biāo)識以及該函數(shù)的參量。在塊704,升級客戶訪問VT,其包括可用于主程序的每個EBSC的條目以及EBSC的對應(yīng)起始地址。在塊706,升級客戶從VT讀取起始地址和相關(guān)參量。在塊708,通過使用起始地址信息以及從主程序接收的被調(diào)用的EBSC的信息,升級客戶產(chǎn)生對實際函數(shù)和對應(yīng)EBSC連同所有接收的參量的調(diào)用。
返回圖5和存儲器130組件之間的交互,函數(shù)地址轉(zhuǎn)換API 520從客戶設(shè)備主程序132產(chǎn)生對與特定主機設(shè)備函數(shù)關(guān)聯(lián)的EBSC的調(diào)用,如以上參考圖7所述??蛻粼O(shè)備的主程序132通過直接調(diào)用函數(shù)地址轉(zhuǎn)換API 520來調(diào)用與特定函數(shù)關(guān)聯(lián)的EBSC。進行對API 520的直接調(diào)用而不是對EBSC的直接調(diào)用。在調(diào)用時,函數(shù)地址轉(zhuǎn)換API 520接收來自主程序132的信息,其包括函數(shù)標(biāo)識信息以及該函數(shù)的參量。
響應(yīng)于該調(diào)用,函數(shù)地址轉(zhuǎn)換API 502訪問VT 312。VT 512包括可用于主程序132的每個函數(shù)的條目以及設(shè)備存儲器130中函數(shù)的對應(yīng)起始地址。函數(shù)地址轉(zhuǎn)換API 520從VT 512讀取由主程序132請求的函數(shù)的起始地址,并使用該起始地址信息以及從主程序132接收的被調(diào)用的EBSC的信息產(chǎn)生對實際函數(shù)連同所有所接收的參量的調(diào)用。
一實施例的升級客戶126使用用于保留EBSC新版本的API 522,此處被稱作保留API 522,來定位并保留存儲器中的區(qū)域以容納新版本的EBSC或者EBSC組。參考圖5,當(dāng)被升級客戶126調(diào)用時,保留API522接收新EBSC版本的標(biāo)識信息,包括該新版本的文件大小的信息。該新EBSC版本的文件大小是要在設(shè)備存儲器130中保留以存儲新EBSC版本的區(qū)域的大小。保留API 522定位存儲器130中的適當(dāng)區(qū)域并且一旦成功保留該存儲區(qū),就返回所請求的保留區(qū)域的起始地址。圖8是一實施例下的使用保留API 522來保留存儲區(qū)以容納新版本的EBSC的流程圖800。
在分配所請求大小的存儲器塊時,保留API 522應(yīng)用如下規(guī)則集,但可替換的實施例可應(yīng)用不同的規(guī)則以達到等價的結(jié)果。圖9是一實施例下的使用保留API的規(guī)則來定位存儲器塊以容納新版本的EBSC的流程圖900。在塊902,一旦接收到關(guān)于新EBSC大小的信息,在塊904,保留API確定新EBSC的大小是否超過原始EBSC的大小。當(dāng)新EBSC的大小等于或者小于對應(yīng)的原始EBSC的大小時,在塊906,保留API分配當(dāng)前由對應(yīng)原始EBSC占據(jù)的存儲器塊以接收新EBSC。否則,保留API試著從保留的存儲區(qū)中的可用存儲器定位具有所請求大小的存儲器塊。
在繼續(xù)該搜索時,在塊908,保留API為具有所請求大小的存儲器塊而搜索客戶設(shè)備的保留的存儲區(qū)。如果在保留的存儲區(qū)中找到適當(dāng)大小的塊,那么在塊910,保留API分配該存儲器塊以接收新EBSC。如果在保留的存儲區(qū)中沒有可用的適當(dāng)大小的存儲器塊,那么在塊912,保留API 522訪問垃圾表。在塊914,保留API使用垃圾表的信息來搜索未用的主程序存儲區(qū),試圖在對應(yīng)于垃圾表中的條目的未用區(qū)域中定位所請求大小的存儲器塊。一實施例的未用區(qū)域,此處被稱作垃圾區(qū)域,包括主程序的未用區(qū)域,但該實施例不局限于此。如果在未用的存儲區(qū)中找到適當(dāng)大小的存儲器塊,那么在塊916,保留API分配該塊以容納新EBSC。
如果不能定位適當(dāng)大小的存儲器塊,那么在塊918,一實施例的保留API啟動此處稱作垃圾收集的過程。當(dāng)垃圾表214的所有條目都被占據(jù)時,保留API也啟動垃圾收集。參考圖5,用于垃圾收集的API 524,此處被稱作垃圾收集API 524,由保留API 522調(diào)用,但不局限于此。用于垃圾收集的API 524通常不接收參量并清除為EBSC和EBSC更新保留的區(qū)域中的所有垃圾,但不局限于此。
如上所述,如果不能為請求的保留大小找到足夠的存儲器或者如果垃圾條目表變滿,那么保留API 522就啟動垃圾收集。圖10是一實施例下的垃圾收集的流程圖1000。在啟動垃圾收集時,保留API調(diào)用垃圾收集API。當(dāng)被調(diào)用時,垃圾收集API在塊1002讀取垃圾表條目,并且在塊1004,使設(shè)備存儲器的嵌入式軟件區(qū)域被重寫,以便將存儲器的EBSC在存儲器中依次打包(pack up)??商鎿Q的實施例可在主存儲器中將EBSC解包(pack down),但本實施例不局限于此。該打包操作去除嵌入式軟件區(qū)域中未用的區(qū)域。
在該打包操作之后,在塊1006,垃圾收集API評估存儲在保留的存儲區(qū)中的每個EBSC的大小,并且將該大小與在重寫之后的嵌入式軟件區(qū)域的主程序中剩余的任何未用的存儲器塊進行比較。該評估確定重寫嵌入式軟件區(qū)域之后剩余的未用存儲器的量是否可容納保留存儲區(qū)的任何EBSC,從而使在可能的情況下,EBSC可以從保留的存儲區(qū)移出并進入設(shè)備存儲器的嵌入式軟件區(qū)域。保留的存儲區(qū)的EBSC被依次評估,但本實施例不局限于此。在塊1008,在EBSC的大小允許的情況下,EBSC從保留的存儲區(qū)被重寫到嵌入式軟件區(qū)域。在一個實施例中EBSC被重寫時,它們在打包的EBSC之后被依次存儲在嵌入式軟件區(qū)域中。
對存儲在保留的存儲區(qū)中的EBSC的評估繼續(xù)進行,直到所有EBSC已被移到嵌入式軟件區(qū)域,或者直到確定嵌入式軟件區(qū)域中沒有足夠大的剩余區(qū)域來容納保留的存儲區(qū)的EBSC。不可被容納在嵌入式軟件區(qū)域中的任何EBSC留在保留的存儲區(qū)中,但本實施例不局限于此。
一旦完成了打包和移動操作,在塊1010,通過重新指定設(shè)備存儲器的任何未用存儲器塊為保留存儲區(qū),垃圾收集API重新分配主機設(shè)備存儲器。此外,在塊1012,保留存儲區(qū)指針被復(fù)位以維持保留存儲區(qū)中可用存儲器的起始地址。另外,在塊1014,垃圾表被重寫以反映未用存儲區(qū)的狀態(tài)。在將新版本的EBSC寫到與由同一EBSC的原始版本占據(jù)的存儲區(qū)不同的任何存儲區(qū)之后,升級客戶還更新向量表。
圖11是一實施例下的使用DA的嵌入式軟件發(fā)展和展開過程的塊圖1100。該圖1100描述了從通過軟件組件分配器1102的EBSC發(fā)展到使用具有基于DA的設(shè)備存儲器管理的一實施例的升級客戶的設(shè)備ROM初始化的過程。
軟件組件分配器1102的組件接收新EBSC的源代碼,并將該源代碼遞送到客戶設(shè)備,如以上所述。客戶設(shè)備編譯1103新EBSC源代碼。在源代碼編譯1103之后,所得到的EBSC目標(biāo)代碼傳遞到第一鏈接器1106,作為新EBSC的注冊的部分,該鏈接器產(chǎn)生對應(yīng)于該新EBSC的映射文件1104。
向量生成工具1105使用映射文件1104的信息來生成對應(yīng)于EBSC的初始VT 1108并將VT 1108傳遞給第二鏈接器1116。第二鏈接器1116使用VT 1108連同映射文件1104的信息以及來自第一鏈接器1106的原始映像映射文件的信息來生成十六進制(文本)或者二進制文件1118。
十六進制(文本)或者二進制文件1118被下載到客戶設(shè)備122的嵌入式軟件區(qū)域1120中,但是可替換的實施例可以將十六進制文件1118寫到客戶設(shè)備122的其它存儲區(qū)??蛻粼O(shè)備122的DMM客戶的組件在客戶設(shè)備軟件的后續(xù)軟件升級期間維護向量表1108并且同樣支持EBSC的動態(tài)尋址。
參考圖4A和圖4B,流程圖的操作處于至少一個處理器的控制下,但不局限于此。這些流程圖中所述的每個塊都是本領(lǐng)域眾所周知的類型,且本身可包括不需要在此描述的操作序列。相關(guān)領(lǐng)域的技術(shù)人員可基于這些流程圖和在此提供的詳述來創(chuàng)建源代碼、微碼、程序邏輯陣列或不然實施塊功能。根據(jù)這些流程圖操作的算法或例程存儲在形成相關(guān)存儲器部分的非易失性存儲器中、關(guān)聯(lián)存儲區(qū)中、諸如盤的可移動媒介中,或被硬連線(hardwired)或預(yù)編程于諸如電可擦除可編程ROM(“EEPROM”)半導(dǎo)體芯片的芯片中,或者以這些組件的任何組合,但是不局限于此。
以上所述的集中DA管理器的組件包括在一起操作的計算組件和設(shè)備的任何集合。DA管理器的組件亦可以是較大計算機系統(tǒng)或網(wǎng)絡(luò)內(nèi)的組件或子系統(tǒng)。DA管理器組件亦可耦合在以任何數(shù)目的組合的任何數(shù)目的組件(未示出),例如其它總線、控制器、存儲器設(shè)備和數(shù)據(jù)輸入/輸出(I/O)設(shè)備之間。DA管理器組件的功能可分布在任何數(shù)目/組合的其它基于處理器的組件之間。以上所述的存儲器系統(tǒng)包括例如本領(lǐng)域公知的各種存儲器系統(tǒng)。
在此所述的DA和DA管理器包括便攜式通信設(shè)備,其包括耦合到處理器的動態(tài)尋址管理器和多個軟件組件,該動態(tài)尋址管理器包括一個或多個鏈接,其中每個鏈接形成組件中的每個標(biāo)識的引用和對應(yīng)于該標(biāo)識的引用的另一個軟件組件之間的程序鏈接,動態(tài)尋址管理器在代碼執(zhí)行期間使用所述鏈接來鏈接所述多個軟件組件。
一實施例的每個鏈接在動態(tài)尋址管理器中具有固定的地址。
一實施例的引用包括至少函數(shù)調(diào)用和變量引用之一。
一實施例的變量引用包括至少全局變量引用和常變量引用之一。
一實施例的動態(tài)尋址管理器包括向量表,其是用于至少函數(shù)調(diào)用和變量引用之一的集中跳表。
一實施例的鏈接所述多個軟件組件包括以下的至少一個將一引用從第一組件導(dǎo)向到向量表的條目以及使用該條目的信息將該引用重新導(dǎo)向到第二組件。
一實施例的動態(tài)尋址管理器包括至少一個集中段。一實施例的變量引用被分配給該集中段。一實施例的鏈接所述多個軟件組件包括將對變量引用的引用導(dǎo)向到對應(yīng)于該變量引用的集中段的地址。
一實施例的設(shè)備進一步包括升級客戶,該升級客戶升級所述多個軟件組件,其中升級包括以下的至少一個經(jīng)由無線耦合接收升級文件,根據(jù)升級文件內(nèi)容適當(dāng)?shù)厣壦龆鄠€軟件組件的至少一個,以及通過升級動態(tài)尋址管理器的鏈接的信息來升級所述多個軟件組件之間的鏈接。
一實施例的設(shè)備進一步包括存儲器,其包括一個或多個存儲區(qū),其中動態(tài)尋址管理器存儲在該存儲器中。一實施例的存儲器包括至少隨機存取存儲器和只讀存儲器之一。
一實施例的客戶設(shè)備是至少蜂窩電話、便攜式計算設(shè)備和個人數(shù)字助理之一。
在此所述的DA和DA管理器包括一種方法,其包括以下的至少一個將存儲在客戶設(shè)備的設(shè)備存儲器中的代碼組織為多個組件;標(biāo)識包括在所述多個組件的每個中的一個或多個引用,其中每個引用是對代碼的一個或多個其它組件的引用;生成包括一個或多個鏈接的管理器組件,其中每個鏈接形成組件中的每個標(biāo)識的引用和對應(yīng)于該標(biāo)識的引用的其它組件之間的程序鏈接;以及在代碼執(zhí)行期間使用管理器組件的鏈接來連接所述多個組件。
一實施例的每個鏈接在管理器組件中具有固定的地址。
一實施例的引用包括至少函數(shù)調(diào)用、全局變量引用和常變量引用之一。
一實施例的引用包括至少相對偏移跳轉(zhuǎn)/分支指令和絕對偏移跳轉(zhuǎn)/分支指令之一。
一實施例的引用包括至少全局常變量、全局讀/寫數(shù)據(jù)地址和全局零初始化數(shù)據(jù)地址之一。
一實施例的生成管理器組件進一步包括生成向量表,其是用于至少函數(shù)調(diào)用和全局變量之一的集中跳表。一實施例的鏈接所述多個組件進一步包括以下的至少一個將引用從第一組件導(dǎo)向到向量表的條目以及使用該條目的信息將該引用重新導(dǎo)向到第二組件。一實施例的引用包括至少函數(shù)調(diào)用和變量之一。
一實施例的生成管理器組件進一步包括以下的至少一個生成管理器組件的至少一個集中段以及將全局常變量分配給所生成的集中段。一實施例的鏈接所述多個組件進一步包括將對全局常變量的引用導(dǎo)向到對應(yīng)于該全局常變量的集中段的地址。一實施例的生成管理器組件可進一步包括將全局讀/寫數(shù)據(jù)地址分配給所生成的集中段。一實施例的鏈接所述多個組件可進一步包括將對全局讀/寫數(shù)據(jù)地址的引用導(dǎo)向到對應(yīng)于該全局讀/寫數(shù)據(jù)地址的集中段的地址。一實施例的生成管理器組件亦可進一步包括將全局零初始化數(shù)據(jù)地址分配給所生成的集中段。一實施例的鏈接所述多個組件亦可進一步包括將對全局零初始化數(shù)據(jù)地址的引用導(dǎo)向到對應(yīng)于該全局零初始化數(shù)據(jù)地址的集中段的地址。
一實施例的方法進一步包括將管理器組件存儲在客戶設(shè)備的一個或多個存儲區(qū)。一實施例的存儲區(qū)包括至少隨機存取存儲器和只讀存儲器之一中的區(qū)域。
一實施例的方法進一步包括升級代碼,該升級包括以下的至少一個經(jīng)由無線耦合接收升級文件,根據(jù)升級文件內(nèi)容適當(dāng)?shù)厣壦龆鄠€組件的至少一個,以及通過升級管理器組件來升級被升級代碼的所述多個軟件組件之間的鏈接。
一實施例的客戶設(shè)備是至少蜂窩電話、便攜式計算設(shè)備和個人數(shù)字助理之一。
在此所述的DA和DA管理器包括一種系統(tǒng),其包括以下的至少一個第一設(shè)備,其包括生成升級文件的第一升級組件,其中升級文件包括至少用來修復(fù)電子文件中的錯誤的信息和用來向電子文件增加功能性的信息之一;以及移動通信設(shè)備,其包括第二升級組件、動態(tài)尋址管理器和多個軟件組件,所述動態(tài)尋址管理器包括一個或多個鏈接,其中每個鏈接形成組件中的每個標(biāo)識的引用和對應(yīng)于該標(biāo)識的引用的另一個軟件組件之間的程序鏈接,動態(tài)尋址管理器在代碼執(zhí)行期間使用所述鏈接來鏈接所述多個軟件組件。
一實施例的系統(tǒng)進一步包括無線耦合,其中第二升級組件經(jīng)由無線耦合接收升級文件,第二升級組件使用升級文件的信息來自動升級所述多個軟件組件。一實施例的升級包括根據(jù)升級文件內(nèi)容適當(dāng)?shù)厣壦龆鄠€軟件組件的至少一個,以及通過升級動態(tài)尋址管理器的鏈接的信息來升級所述多個軟件組件之間的鏈接。
一實施例的系統(tǒng)包括在動態(tài)尋址管理器中具有固定地址的鏈接。
一實施例的系統(tǒng)的引用包括至少函數(shù)調(diào)用和變量引用之一。
一實施例的系統(tǒng)的動態(tài)尋址管理器包括向量表,其是用于至少函數(shù)調(diào)用和變量引用之一的集中跳表。
一實施例的系統(tǒng)的動態(tài)尋址管理器包括至少一個集中段,其中至少一個變量引用被分配給該集中段。
一實施例的系統(tǒng)的第一設(shè)備是基于處理器的設(shè)備,其可由寄存于第二設(shè)備上的軟件組件的至少一個提供者來訪問。
一實施例的系統(tǒng)的移動通信設(shè)備包括至少蜂窩電話、便攜式計算設(shè)備和個人數(shù)字助理之一。
一實施例的所述多個軟件組件包括軟件文件,其包括動態(tài)鏈接庫文件、共享目標(biāo)文件、嵌入式軟件組件(EBSC)、固件文件、可執(zhí)行文件、包括十六進制數(shù)據(jù)文件的數(shù)據(jù)文件、系統(tǒng)配置文件以及包括個人使用數(shù)據(jù)的文件。
在此所述的DA和DA管理器包括一種移動通信設(shè)備,其包括以下裝置的至少一個用于將存儲在客戶設(shè)備的設(shè)備存儲器中的代碼組織為多個組件的裝置;用于標(biāo)識包括在所述多個組件的每個中的一個或多個引用的裝置,其中每個引用是對代碼的一個或多個其它組件的引用;用于生成包括一個或多個鏈接的管理器組件的裝置,其中每個鏈接形成一組件中的每個標(biāo)識的引用和對應(yīng)于該標(biāo)識的引用的另一組件之間的程序鏈接;以及用于在代碼執(zhí)行期間使用管理器組件的鏈接來鏈接所述多個組件的裝置。
一實施例的設(shè)備的用于生成管理器組件的裝置進一步包括用于生成向量表的裝置,該向量表是用于至少函數(shù)調(diào)用和全局變量之一的集中跳表。一實施例的設(shè)備的用于鏈接所述多個組件的裝置進一步包括以下裝置的至少一個用于將一引用從第一組件導(dǎo)向到向量表的條目的裝置以及用于使用該條目的信息將該引用重新導(dǎo)向到第二組件的裝置。
一實施例的設(shè)備的用于生成管理器組件的裝置進一步包括以下裝置的至少一個用于生成管理器組件的至少一個集中段的裝置以及用于將變量引用分配給所生成的集中段的裝置。一實施例的設(shè)備的用于鏈接所述多個組件的裝置可進一步包括用于將對變量引用的引用導(dǎo)向到對應(yīng)于該變量引用的集中段的地址的裝置。
一實施例的設(shè)備進一步包括用于升級代碼的裝置,其包括以下裝置的至少一個用于經(jīng)由無線耦合接收升級文件的裝置,用于根據(jù)升級文件內(nèi)容適當(dāng)?shù)厣壦龆鄠€組件的至少一個的裝置,以及用于通過升級管理器組件來升級被升級代碼的所述多個組件之間的鏈接的裝置。
在此描述的DA和DA管理器包括機器可讀媒介,其包括可執(zhí)行指令,當(dāng)在處理系統(tǒng)中被執(zhí)行時,所述指令通過以下來鏈接便攜式設(shè)備中的軟件組件將存儲在客戶設(shè)備的設(shè)備存儲器中的代碼組織為多個組件;標(biāo)識包括在所述多個組件的每個中的一個或多個引用,其中每個引用是對代碼的一個或多個其它組件的引用;生成包括一個或多個鏈接的管理器組件,其中每個鏈接形成一組件中的每個標(biāo)識的引用和對應(yīng)于該標(biāo)識的引用的另一組件之間的程序鏈接;以及/或者在代碼執(zhí)行期間使用管理器組件的鏈接來鏈接所述多個組件。
一實施例的所述媒介進一步包括通過以下來升級代碼經(jīng)由無線耦合接收升級文件,根據(jù)升級文件內(nèi)容適當(dāng)?shù)厣壦龆鄠€組件的至少一個,以及/或者通過升級管理器組件來升級被升級代碼的所述多個組件之間的鏈接。
在此所述的集中DA管理器的方面可作為編程到多種電路中任何一種中的功能性而被實施,所述電路包括可編程邏輯器件(“PLD”),如現(xiàn)場可編程門陣列(“FPGA”)、可編程陣列邏輯(“PAL”)器件、電可編程邏輯和存儲器件以及標(biāo)準(zhǔn)的基于單元的器件,以及專用集成電路。用來實施DA管理器方面的一些其它可能性包括具有存儲器的微控制器(如EEPROM)、嵌入式微處理器、固件、軟件等。此外,DA管理器的方面可實施在這樣的微處理器中,這樣的微處理器具有基于軟件的電路仿真、離散邏輯(順序的和組合的)、定制器件、模糊(神經(jīng))邏輯、量子器件和任何上述器件類型的混合。當(dāng)然,基礎(chǔ)器件技術(shù)可以以多種組件類型來提供,例如金屬氧化物半導(dǎo)體場效應(yīng)晶體管(“MOSFET”)技術(shù),像互補金屬-氧化物半導(dǎo)體(“CMOS”),雙極技術(shù),像發(fā)射極耦合邏輯(“ECL”),聚合物技術(shù)(例如,硅-共軛聚合物和金屬-共軛聚合物-金屬結(jié)構(gòu)),混合的模擬和數(shù)字技術(shù)等。
應(yīng)指出,在此公開的各種功能可以根據(jù)其行為、寄存器傳遞、邏輯組件和/或其它特性,使用硬件、固件的任何數(shù)目的組合來描述,并且/或者描述為在各種機器可讀或計算機可讀媒介中實施的數(shù)據(jù)和/或指令。在其中可實施這種格式化數(shù)據(jù)和/或指令的計算機可讀媒介包括但不局限于各種形式的非易失性存儲媒介(例如光、磁或半導(dǎo)體存儲媒介)以及可用于通過無線、光或有線信令媒介或其任何組合來傳遞這種格式化數(shù)據(jù)和/或指令的載波。通過載波傳遞這種格式化數(shù)據(jù)和/或指令的實例包括但不局限于經(jīng)由一個或多個數(shù)據(jù)傳遞協(xié)議(例如HTTP、FTP、SMTP等)在因特網(wǎng)和/或其它計算機網(wǎng)絡(luò)上傳遞(上載、下載、電子郵件等)。
除非上下文中明確地需要,否則在所有描述和權(quán)利要求中,字眼“包括(comprise)”、“包括(comprising)”等應(yīng)被理解為包括的(inclusive)意思,與排它的(exclusive)或窮舉的(exhaustive)意思相對;也就是說,是“包括,但不局限于”的意思。使用單數(shù)或復(fù)數(shù)的字眼也分別包括復(fù)數(shù)或單數(shù)。此外,字眼“在此(herein)”、“在下(hereunder)”、“在以上(above)”、“在以下(below)”以及相似意思的詞,當(dāng)在本申請中被使用時,指的是作為一個整體的本申請而不是指本申請的任何特定的部分。當(dāng)字眼“或”關(guān)于兩個或多個項的列表而使用時,該字眼覆蓋以下所有對該字眼的解釋該列表中的任何一個項,該列表中的所有項,以及該列表中的項的任何組合。
對DA管理器的所說明的實施例的以上描述不是旨在窮盡性的或?qū)A管理器限制于所公開的確切形式。盡管出于說明的目的,在此描述了DA管理器的特定實施例和實例,然而在DA管理器的范圍內(nèi)各種等效的修改是可能的,如相關(guān)領(lǐng)域的技術(shù)人員將認識到的。此處所提供的DA管理器的教導(dǎo)可應(yīng)用于其它處理系統(tǒng)和方法,而不僅用于上述的存儲器系統(tǒng)和方法。
以上描述的各種實施例的要素和動作可被組合以提供進一步的實施例。根據(jù)上面的詳述,可進行對DA管理器的這些和其它改變。
一般來說,在下面權(quán)利要求中所用的術(shù)語將不被理解為將DA管理器限制于說明書和權(quán)利要求中所公開的特定實施例,而應(yīng)理解為包括在權(quán)利要求下操作的所有處理系統(tǒng)。因此,DA管理器不為此公開所限制,而DA管理器的范圍完全由權(quán)利要求確定。
盡管DA管理器的某些方面在下面以某些權(quán)利要求的形式來呈現(xiàn),但是發(fā)明人設(shè)想了以任何數(shù)目的權(quán)利要求形式的DA管理器的各個方面。例如,盡管DA管理器的僅一個方面被描述為在機器可讀媒介中實施,但是其它方面可同樣在機器可讀媒介中實施。因此,發(fā)明人保留在提交本申請之后增加附加權(quán)利要求以將這樣的附加權(quán)利要求形式用于DA管理器的其它方面的權(quán)利。
權(quán)利要求
1.一種便攜式通信設(shè)備,包括耦合到處理器的動態(tài)尋址管理器和多個軟件組件,該動態(tài)尋址管理器包括一個或多個鏈接,其中每個鏈接形成組件中的每個標(biāo)識的引用和對應(yīng)于該標(biāo)識的引用的所述軟件組件的另一個之間的程序鏈接,該動態(tài)尋址管理器在代碼執(zhí)行期間使用所述鏈接來鏈接所述多個軟件組件。
2.權(quán)利要求1的設(shè)備,其中每個鏈接在所述動態(tài)尋址管理器中具有固定的地址。
3.權(quán)利要求1的設(shè)備,其中所述引用包括至少函數(shù)調(diào)用和變量引用之一。
4.權(quán)利要求1的設(shè)備,其中所述變量引用包括至少全局變量引用和常變量引用之一。
5.權(quán)利要求1的設(shè)備,其中所述動態(tài)尋址管理器包括向量表,其是用于至少函數(shù)調(diào)用和變量引用之一的集中跳表。
6.權(quán)利要求5的設(shè)備,其中鏈接所述多個軟件組件包括將自第一組件的引用導(dǎo)向到所述向量表的條目;以及使用該條目的信息將該引用再導(dǎo)向到第二組件。
7.權(quán)利要求1的設(shè)備,其中所述動態(tài)尋址管理器包括至少一個集中段。
8.權(quán)利要求7的設(shè)備,其中至少一個變量引用被分配給所述集中段。
9.權(quán)利要求8的設(shè)備,其中鏈接所述多個軟件組件包括將對所述變量引用的引用導(dǎo)向到對應(yīng)于該變量引用的集中段的地址。
10.權(quán)利要求1的設(shè)備,進一步包括升級客戶,該升級客戶升級所述多個軟件組件,其中升級包括經(jīng)由無線耦合接收升級文件;根據(jù)所述升級文件內(nèi)容適當(dāng)?shù)厣壦龆鄠€軟件組件的至少一個;以及通過升級所述動態(tài)尋址管理器的鏈接的信息來升級所述多個軟件組件之間的鏈接。
11.權(quán)利要求1的設(shè)備,進一步包括存儲器,其包括一個或多個存儲區(qū),其中所述動態(tài)尋址管理器存儲在該存儲器中。
12.權(quán)利要求11的設(shè)備,其中所述存儲器包括至少隨機存取存儲器和只讀存儲器之一。
13.權(quán)利要求1的設(shè)備,其中所述客戶設(shè)備是至少蜂窩電話、便攜式計算設(shè)備和個人數(shù)字助理之一。
14.一種方法,包括將存儲在客戶設(shè)備的設(shè)備存儲器中的代碼組織為多個組件;標(biāo)識包括在所述多個組件的每個中的一個或多個引用,其中每個引用是對代碼的一個或多個其它組件的引用;生成包括一個或多個鏈接的管理器組件,其中每個鏈接形成組件中的每個標(biāo)識的引用和對應(yīng)于該標(biāo)識的引用的所述其它組件之間的程序鏈接;以及在所述代碼執(zhí)行期間使用所述管理器組件的鏈接來鏈接所述多個組件。
15.權(quán)利要求14的方法,其中每個鏈接在所述管理器組件中具有固定的地址。
16.權(quán)利要求14的方法,其中所述引用包括至少函數(shù)調(diào)用、全局變量引用和常變量引用之一。
17.權(quán)利要求14的方法,其中所述引用包括至少相對偏移跳轉(zhuǎn)/分支指令和絕對偏移跳轉(zhuǎn)/分支指令之一。
18.權(quán)利要求14的方法,其中所述引用包括至少全局常變量、全局讀/寫數(shù)據(jù)地址和全局零初始化數(shù)據(jù)地址之一。
19.權(quán)利要求14的方法,其中生成所述管理器組件進一步包括生成向量表,其是用于至少函數(shù)調(diào)用和全局變量之一的集中跳表。
20.權(quán)利要求19的方法,其中鏈接所述多個組件進一步包括將自第一組件的引用導(dǎo)向到所述向量表的條目;以及使用該條目的信息將該引用再導(dǎo)向到第二組件。
21.權(quán)利要求19的方法,其中所述引用包括至少函數(shù)調(diào)用和變量之一。
22.權(quán)利要求14的方法,其中生成所述管理器組件進一步包括生成所述管理器組件的至少一個集中段;以及將全局常變量分配給所述生成的集中段。
23.權(quán)利要求22的方法,其中鏈接所述多個組件進一步包括將對所述全局常變量的引用導(dǎo)向到對應(yīng)于該全局常變量的集中段的地址。
24.權(quán)利要求22的方法,其中生成所述管理器組件進一步包括將全局讀/寫數(shù)據(jù)地址分配給所述生成的集中段。
25.權(quán)利要求24的方法,其中鏈接所述多個組件進一步包括將對所述全局讀/寫數(shù)據(jù)地址的引用導(dǎo)向到對應(yīng)于該全局讀/寫數(shù)據(jù)地址的集中段的地址。
26.權(quán)利要求22的方法,其中生成所述管理器組件進一步包括將全局零初始化數(shù)據(jù)地址分配給所述生成的集中段。
27.權(quán)利要求26的方法,其中鏈接所述多個組件進一步包括將對所述全局零初始化數(shù)據(jù)地址的引用導(dǎo)向到對應(yīng)于該全局零初始化數(shù)據(jù)地址的集中段的地址。
28.權(quán)利要求14的方法,進一步包括將所述管理器組件存儲在所述客戶設(shè)備的一個或多個存儲區(qū)中。
29.權(quán)利要求28的方法,其中所述存儲區(qū)包括至少隨機存取存儲器和只讀存儲器之一中的區(qū)域。
30.權(quán)利要求14的方法,進一步包括升級代碼,該升級包括經(jīng)由無線耦合接收升級文件;根據(jù)所述升級文件內(nèi)容適當(dāng)?shù)厣壦龆鄠€組件的至少一個;以及通過升級所述管理器組件來升級所述被升級代碼的多個組件之間的鏈接。
31.權(quán)利要求14的方法,其中所述客戶設(shè)備是至少蜂窩電話、便攜式計算設(shè)備和個人數(shù)字助理之一。
32.一種系統(tǒng),包括第一設(shè)備,其包括生成升級文件的第一升級組件,其中所述升級文件包括用來修復(fù)電子文件中的錯誤的信息和用來向所述電子文件增加功能性的信息中至少之一;以及移動通信設(shè)備,其包括第二升級組件、動態(tài)尋址管理器和多個軟件組件,所述動態(tài)尋址管理器包括一個或多個鏈接,其中每個鏈接形成組件中的每個標(biāo)識的引用和對應(yīng)于該標(biāo)識的引用的所述軟件組件的另一個之間的程序鏈接,所述動態(tài)尋址管理器在代碼執(zhí)行期間使用所述鏈接來鏈接所述多個軟件組件。
33.權(quán)利要求32的系統(tǒng),進一步包括無線耦合,其中所述第二升級組件經(jīng)由所述無線耦合接收所述升級文件,所述第二升級組件使用所述升級文件的信息來自動升級所述多個軟件組件。
34.權(quán)利要求33的系統(tǒng),其中升級包括與所述升級文件內(nèi)容相適應(yīng)地升級所述多個軟件組件的至少一個,以及通過升級所述動態(tài)尋址管理器的鏈接的信息來升級所述多個軟件組件之間的鏈接。
35.權(quán)利要求32的系統(tǒng),其中每個鏈接在所述動態(tài)尋址管理器中具有固定的地址。
36.權(quán)利要求32的系統(tǒng),其中所述引用包括至少函數(shù)調(diào)用和變量引用之一。
37.權(quán)利要求32的系統(tǒng),其中所述動態(tài)尋址管理器包括向量表,其是用于至少函數(shù)調(diào)用和變量引用之一的集中跳表。
38.權(quán)利要求32的系統(tǒng),其中所述動態(tài)尋址管理器包括至少一個集中段,其中至少一個變量引用被分配給該集中段。
39.權(quán)利要求32的系統(tǒng),其中所述第一設(shè)備是基于處理器的設(shè)備,其可由寄存于所述第二設(shè)備上的軟件組件的至少一個提供者來訪問。
40.權(quán)利要求32的系統(tǒng),其中所述移動通信設(shè)備包括至少蜂窩電話、便攜式計算設(shè)備和個人數(shù)字助理之一。
41.權(quán)利要求32的系統(tǒng),其中所述多個軟件組件包括軟件文件,其包括動態(tài)鏈接庫文件、共享目標(biāo)文件、嵌入式軟件組件(EBSC)、固件文件、可執(zhí)行文件、包括十六進制數(shù)據(jù)文件的數(shù)據(jù)文件、系統(tǒng)配置文件以及包括個人使用數(shù)據(jù)的文件。
42.一種移動通信設(shè)備,包括用于將存儲在客戶設(shè)備的設(shè)備存儲器中的代碼組織為多個組件的裝置;用于標(biāo)識包括在所述多個組件的每個中的一個或多個引用的裝置,其中每個引用是對所述代碼的一個或多個其它組件的引用;用于生成包括一個或多個鏈接的管理器組件的裝置,其中每個鏈接形成組件中的每個標(biāo)識的引用和對應(yīng)于該標(biāo)識的引用的其它組件之間的程序鏈接;以及用于在代碼執(zhí)行期間使用所述管理器組件的鏈接來鏈接所述多個組件的裝置。
43.權(quán)利要求42的設(shè)備,其中所述用于生成所述管理器組件的裝置進一步包括用于生成向量表的裝置,該向量表是用于至少函數(shù)調(diào)用和全局變量之一的集中跳表。
44.權(quán)利要求42的設(shè)備,其中所述用于鏈接所述多個組件的裝置進一步包括用于將自第一組件的引用導(dǎo)向到所述向量表的條目的裝置;以及用于使用該條目的信息將該引用再導(dǎo)向到第二組件的裝置。
45.權(quán)利要求42的設(shè)備,其中所述用于生成所述管理器組件的裝置進一步包括用于生成所述管理器組件的至少一個集中段的裝置;以及用于將變量引用分配給所述生成的集中段的裝置。
46.權(quán)利要求45的設(shè)備,其中所述用于鏈接所述多個組件的裝置進一步包括用于將對所述變量引用的引用導(dǎo)向到對應(yīng)于該變量引用的集中段的地址的裝置。
47.權(quán)利要求42的設(shè)備,進一步包括用于升級代碼的裝置,包括用于經(jīng)由無線耦合接收升級文件的裝置;用于與所述升級文件內(nèi)容相適應(yīng)地升級所述多個組件的至少一個的裝置;以及用于通過升級所述管理器組件來升級所述被升級代碼的多個組件之間的鏈接的裝置。
48.一種機器可讀媒介,包括可執(zhí)行指令,其在處理系統(tǒng)中被執(zhí)行時,通過以下操作來鏈接便攜式設(shè)備中的軟件組件將存儲在客戶設(shè)備的設(shè)備存儲器中的代碼組織為多個組件;標(biāo)識包括在所述多個組件的每個中的一個或多個引用,其中每個引用是對所述代碼的一個或多個其它組件的引用;生成包括一個或多個鏈接的管理器組件,其中每個鏈接形成組件中的每個標(biāo)識的引用和對應(yīng)于該標(biāo)識的引用的其它組件之間的程序鏈接;以及在代碼執(zhí)行期間使用管理器組件的鏈接來鏈接所述多個組件。
49.權(quán)利要求48的媒介,進一步包括通過以下操作來升級代碼經(jīng)由無線耦合接收升級文件;與所述升級文件內(nèi)容適應(yīng)地升級所述多個組件的至少一個;以及通過升級管理器組件來升級所述被升級代碼的多個組件之間的鏈接。
全文摘要
提供了動態(tài)尋址(DA),其使用集中DA管理器來管理軟件代碼組件之間的函數(shù)調(diào)用、全局變量和常變量引用。所述DA管理器在鏈接所述組件的過程期間生成并且與所述代碼一起加載到客戶設(shè)備存儲器中。從一個組件到另一個組件的引用與每個組件的地址一起存儲在所述DA管理器中。所述DA管理器充當(dāng)在軟件執(zhí)行期間鏈接組件的集中路由器,使得從一個組件到另一個組件的引用經(jīng)由所述DA管理器而不是直接在所述組件之間路由。因此,導(dǎo)致組件在存儲器中的位置變化的文件升級期間的組件變化由所述DA管理器記錄,由此維持了存在于所述代碼中的對所述組件的引用的完整性。
文檔編號G06F9/54GK1973262SQ200480031121
公開日2007年5月30日 申請日期2004年10月22日 優(yōu)先權(quán)日2003年10月23日
發(fā)明者詹姆斯·江, 冀德 申請人:創(chuàng)道軟件有限公司