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