CN1973262B - 使用集中动态寻址(da)管理器的动态寻址 - Google Patents

使用集中动态寻址(da)管理器的动态寻址 Download PDF

Info

Publication number
CN1973262B
CN1973262B CN2004800311217A CN200480031121A CN1973262B CN 1973262 B CN1973262 B CN 1973262B CN 2004800311217 A CN2004800311217 A CN 2004800311217A CN 200480031121 A CN200480031121 A CN 200480031121A CN 1973262 B CN1973262 B CN 1973262B
Authority
CN
China
Prior art keywords
manager
upgrade
component
quoting
equipment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2004800311217A
Other languages
English (en)
Other versions
CN1973262A (zh
Inventor
詹姆斯·江
冀德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Qualcomm Technologies Inc
Original Assignee
Innopath Software Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Innopath Software Inc filed Critical Innopath Software Inc
Publication of CN1973262A publication Critical patent/CN1973262A/zh
Application granted granted Critical
Publication of CN1973262B publication Critical patent/CN1973262B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Transceivers (AREA)
  • Error Detection And Correction (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

提供了动态寻址(DA),其使用集中DA管理器来管理软件代码组件之间的函数调用、全局变量和常变量引用。所述DA管理器在链接所述组件的过程期间生成并且与所述代码一起加载到客户设备存储器中。从一个组件到另一个组件的引用与每个组件的地址一起存储在所述DA管理器中。所述DA管理器充当在软件执行期间链接组件的集中路由器,使得从一个组件到另一个组件的引用经由所述DA管理器而不是直接在所述组件之间路由。因此,导致组件在存储器中的位置变化的文件升级期间的组件变化由所述DA管理器记录,由此维持了存在于所述代码中的对所述组件的引用的完整性。

Description

使用集中动态寻址(DA)管理器的动态寻址
相关申请
本申请要求2003年10月23日提交的美国专利申请No.60/513,764的权益。本申请也是2002年11月18日提交的美国专利申请No.10/298,458的部分继续申请,两者当前都是未决的。
本申请相关于下列美国专利申请:2002年5月13日提交的No.10/146,545;2002年9月30日提交的No.10/261,153;2002年11月12日提交的No.10/292,245;2002年11月18日提交的No.10/298,393;2003年7月9日提交的No.10/616,615,所有上述这些申请当前都是未决的。
技术领域
所公开的实施例涉及升级和维护电子文件时的存储器管理。
背景技术
软件被寄存(host)或运行于大多数电子设备上,并且包括一个或多个人可读的美国信息交换标准码(“ASCII”)纯文本文件或二进制码形式的文件。在处理器或中央处理单元(“CPU”)上运行的寄存软件提供了主机设备中的功能性但常常随时间而变化。软件变化可由纠正软件文件中的缺陷或错误、适应技术发展或增加新特征和功能的需要而引起。特别地,寄存于移动无线设备上的嵌入式软件组件常常包括需要纠正的大量软件缺陷。
设备的软件或程序包括软件文件,其被分为较小的单位,该单位经常被称作组件或模块。在移动无线设备中,典型地使用实时操作系统(“RTOS”),其中设备所寄存的软件模块或组件链接为单个大文件。该大软件文件装入或嵌入到设备中,并典型地存储在无线设备的只读存储器(“ROM”)或闪速ROM中。
无线设备所寄存的软件文件可通过使用无线通信链路或空中传播(“OTA”)链路如无线电链路来纠正错误或增加新功能。由于带宽、存储器和涉及无线设备的其它约束,在设备已经在商业上发行之后更新所寄存的软件需要特殊的专门应用。这些专门应用的实例包括可得自加利福尼亚Alviso的InnoPath Software,Inc.的称为DeltaUpdateTM和DeltaRewriteTM的升级或更新应用。这些升级应用也是“相关申请”的主题。
用于无线设备的程序典型地使用称为静态寻址的方法存储在设备存储器中。在程序已经被写入之后,它被编译为计算机可读代码,在此期间代码的不同模块或组件被链接。这导致公知为映像(image)或存储器映像的东西,其中映像是以机器语言存储在主机设备的ROM中的可执行指令集。这些程序典型地组织为连续的指令流,其中一些具有对主机设备ROM的其它部分中的指令的引用。由于这种顺序和互连架构,主机设备ROM内特定机器代码的位置基本上是固定的,因此得到术语“静态寻址”。
使用经由OTA链路接收的文件来升级主机设备的代码的一部分,即使变化小也包含重写主机设备ROM的大部分以便对代码中的引用重新排序和调节。这使得典型的更新过程冗长、易于出错且耗时。因此,存在对动态寻址的需要,用于在升级寄存于诸如蜂窝电话的无线设备上以及其它移动通信设备、个人数字助理(“PDA”)和个人计算机上的软件应用中使用。
附图说明
图1是一实施例下的包括具有动态寻址(“DA”)管理器的客户设备的系统的块图。
图2是一实施例下的示例服务提供者基础设施的块图。
图3是示出一实施例下的DA管理器和映像的软件组件之间的交互的DA的块图。
图4A和4B示出一实施例下的构建包括DA管理器的映像的流程图。
图5是示出图1和3的实施例下的包括软件映像组件的存储器组件、升级客户和DMM客户之间的交互实例的设备存储器的块图。
图6是一实施例下的使用DA来升级EBSC或EBSC组的流程图。
图7是一实施例下的使用DA的函数调用的流程图。
图8是一实施例下的保留存储区以容纳EBSC新版本的流程图。
图9是一实施例下的定位存储器块以容纳EBSC新版本的流程图。
图10是一实施例下的垃圾收集的流程图。
图11是一实施例下的使用DA的嵌入式软件发展和布置过程的块图。
在附图中,相同的参考数字用于标识相同或者基本相似的元素或者动作。为了容易地标识对任何特定元素或者动作的讨论,参考数字中的最高有效数位或多个最高有效数位称作图号,该元素第一次被引入其中(如,元素126关于图1第一次被引入和讨论)。
详述
在此描述用于在更新寄存于无线手机和类似客户设备上的软件中使用的动态寻址。一个实施例的DA包括将存储在设备存储器中的代码组织为相关组件组,在此亦称为嵌入式软件组件(“EBSC”)。连同每个组件的位置或地址,从一个组件到另一个组件的任何引用被标识和存储在集中且分离的程序中,该程序在此被称为“DA管理器”,或者“集中DA管理器”。DA管理器在链接EBSC的过程中生成并且与客户设备程序一起加载到客户设备存储器中。
在操作中,DA管理器通常用作集中路由器或交换机,其知道客户设备的每个EBSC的符号位置并且在客户设备程序执行期间根据需要链接EBSC。从一个EBSC到另一个EBSC的任何引用经由DA管理器而不是直接在EBSC之间路由。因此,如果在文件升级期间组件被修改并且升级导致EBSC在客户设备存储器中的位置变化,则该变化由DA管理器记录,由此维持对存在于客户设备程序中的EBSC的引用或链接的完整性。
因此,DA管理器提供了一种有效且符合逻辑的方式来组织客户设备存储器中的机器代码。一个实施例的DA管理器允许对机器代码的一个或多个部分(EBSC)进行添加、删除和修改,而不扰动(ripple through)和影响客户设备存储器中所存储的其余代码。相对照,当使用其中对存储在存储器中的程序进行包括添加几行新代码的改变的静态寻址时,所改变的代码之后的所有代码在存储器布局中向下移位。这种代码的移位使得有必要改变存在于所改变的代码中的任何引用或链接。这样,小程序变化可导致大部分存储在客户设备存储器中的机器代码中的对应的和补偿的变化。
DA避免了与静态寻址相关联的问题,这是因为对EBSC地址的改变只需要在DA管理器中进行一次,而不是贯穿所有客户设备程序。由于重新寻址是较为有效的,分配给特定块的客户设备存储区亦可减小,从而导致对客户设备的可用存储的较大利用。并且通过将地址变化的重写限制于仅DA管理器,调试、修改以及升级等客户设备软件以短得多的时间得以完成。这导致较高的效率并且显著减小了成本和失去的收入。它还提供了比典型的静态寻址所能实现的大且复杂的软件的下载和更新。
在以下描述中,引入大量特定细节以提供对DA和DA管理器的实施例的全面理解并使得能够描述DA和DA管理器的实施例。然而,相关领域的技术人员将理解,DA和DA管理器可无需一个或者多个所述特定细节或者用其它组件、系统等来实践。在其它实例中,熟知的结构或者操作未加以示出,或者未加以详细描述,以避免混淆DA和DA管理器的方面。
图1是一实施例下的包括具有DA管理器的客户设备的系统100的框图。一个实施例的系统100是文件升级系统100,但不局限于此。通常,文件升级系统100包括第一计算机系统102或主机系统,以及一个或多个第二计算机系统,包括客户设备或计算机122。主机系统102和客户设备122每个分别包括至少一个处理器104和124,在程序控制下操作,但不局限于此。主机系统102和客户设备122经由通信路径199通信。如本领域所知道的,这些计算机系统102和122包括在一起操作的计算设备的任何集合。计算机系统102和122亦可包括较大计算机系统内的组件。
主机系统102的处理器104在程序控制下耦合于数据库106和文件差别算法114之间。可替换地,主机系统102的各种其它组件可在程序控制下耦合于处理器104、数据库106和文件差别算法114之间并且提供文件更新功能。尽管示出一个处理器104、一个数据库106和一个文件差别算法114,各种可替换的实施例包括以本领域技术人员所设想的各种配置耦合的任何数目和/或类型的每个这些组件。此外,尽管处理器104、数据库106和文件差别算法114示出为分离的块,然而一些或所有这些块可以单片形式集成到单个芯片上,分布在许多芯片或主机系统组件之间,和/或由某种算法组合来提供。文件差别算法114可以以软件算法(多个软件算法)、固件、硬件以及软件、固件和硬件的任何组合来实施。在此概括使用的术语“处理器”指的是任何逻辑处理单元,如一个或多个CPU、数字信号处理器(“DSP”)、特定用途集成电路(“ASIC”)等。
同样,一个实施例的客户设备122包括在程序控制下耦合于设备存储器130之中的处理器124。设备存储器130包括RTOS 132(在此亦称为“主程序132”)、一个或多个映像300、设备存储器管理器(“DMM”)客户500(“DMM客户”)以及升级客户126。在此亦称为软件映像或二进制映像的映像300是可执行文件,并且包括一个或多个嵌入式软件组件(“EBSC”)EBSC1-EBSCN、保留存储区320和在此亦称为“DA管理器310”的集中DA管理器310。二进制映像通常可经由链接时间操作由不同组件组成。软件组件如EBSC是独立构建的二进制映像,具有通过设计专门集合在一起的函数。尽管DA管理器310示出为映像300的组件,但DA管理器可以是DMM客户500、升级客户126的组件和/或客户设备122的任何其它组件。
可替换地,客户设备122的各种其它组件可在程序控制下耦合于处理器124和设备存储器130之间并且提供文件更新功能。尽管示出一个处理器124和一个设备存储器130,各种可替换的实施例包括以本领域技术人员所设想的各种配置耦合的任何数目和/或类型的每个这些组件。此外,尽管处理器124和设备存储器130示出为分离的块,然而一些或所有这些块可以单片形式集成到单个芯片上,分布在许多芯片或主机系统组件之间,和/或由某种算法组合来提供。设备存储器130的算法或应用可以以软件算法(多个软件算法)、固件、硬件以及软件、固件和硬件的任何组合来实施。设备存储器可包括任何数目和/或组合或存储器类型,它们包括ROM和随机存取存储器(“RAM”),但不局限于此。
通信路径199包括用于在计算机系统102和122之间通信或传递文件的任何媒介。因此,该路径199包括无线连接,有线连接和混合无线/有线连接。通信路径199还包括到网络的耦合或者连接,所述网络包括局域网(“LAN”)、城域网(“MAN”)、广域网(“WAN”)、专属网、局间或者后端网和因特网。此外,通信路径199包括可移动的固定媒介,如软盘、硬盘驱动器和CD-ROM盘,以及闪存、通用串行总线(“USB”)连接、RS-232连接、电话线、总线和电子邮件消息。
主机系统102和客户设备122每个包括电子文件的原始版本110,在此称为原始文件110或旧文件。主机系统102将原始文件110存储在数据库106或其它存储区或存储区或设备的组合中,但不局限于此。客户设备122将原始文件存储在设备存储器130中以便于在操作中使用。
在诸如软件提供者升级原始文件110以便例如提供附加功能性或修复软件缺陷的时间,生成电子文件的新版本112。电子文件的新版本112在此称为新文件112。新文件112通常是原始文件110的更新或修订版本,但不局限于此。软件提供者将新文件112传递到主机系统102。
电子文件110和112包括软件文件,其包括动态链接库文件,共享目标文件,EBSC,固件文件,可执行文件,包括十六进制数据文件的数据文件,系统配置文件和包括个人使用数据的文件,但不局限于此。由于任何类型的文件都可被看作字节流,在以下文件可被描述为字节流。
包括至少一个处理器104的主机系统102的组件接收和处理新文件112以生成升级信息以便在对寄存于客户设备122上的原始文件升级时使用。在一实施例中,处理器104生成升级文件118以便在将升级信息传递到客户设备122时使用。升级文件118可包括对新文件112和原始文件110之间的差异进行编码的差别文件,或可替换地,可包括新文件112的任何数目和/或组合的组件或模块。主机系统102经由在通信路径199上的升级文件118的传递将升级信息提供给客户设备122。
在升级文件118包括差别文件的实施例中,包括处理器104和文件差别算法114的主机系统102的组件对新文件112和对应原始文件110之间的比较进行处理,由此计算新文件112和原始文件110之间的差异。文件差别算法114在比较期间生成差别文件并且将差别文件的信息写到升级文件118。
升级文件118经由通信路径199传递或传输到客户设备122。在传递之前,可使用本领域公知的许多压缩技术中的任何一种来压缩升级文件118,但不局限于此。
包括处理器124和升级客户126的客户设备122的组件接收升级文件118并使用升级文件118来控制客户设备122上的原始文件的升级。客户设备122的升级客户126包括下载子客户(“SC”)(“下载SC”)、升级SC和自升级SC(未示出)中的至少一个,如在相关申请中所述,但不局限于此。下载SC起到下载或接收从主机系统102传递的升级文件118的作用。升级SC使用从主机系统102接收的所传递的文件的信息来执行对客户设备122的软件的升级。自升级SC起到对升级客户126的软件进行升级的作用。一个实施例的自升级SC存储在与下载SC或升级SC不同的物理存储器块或区域中,但不局限于此。升级客户126的软件包括但不局限于下载SC、升级SC和自升级SC的软件。
在一个实施例中,升级客户126对升级文件118连同被寄存的原始文件110的信息进行处理以生成客户设备122中的新文件的拷贝。新文件的该拷贝随后由升级客户126用于升级寄存于客户设备122上的目标原始文件。一个实施例的升级客户126使用众多方法来更新EBSC,这依赖于待更新的文件类型以及客户设备制造者分配用来支持这些更新的资源,如在相关申请中所述。一旦完成该更新过程,现在存储在客户设备122上的原始文件与在主机系统102中接收的新文件112相同。
相关领域的技术人员将理解,与升级系统100关联的那些功能以及在此参照升级系统100描述的其它功能和方法可由主机系统102的组件、客户设备122的组件、或分布在主机系统102和客户设备122的组件之间的任何组合中。主机系统102和客户设备122的组件可由DSP集成电路和/或通过常规编程逻辑阵列或电路元件来实施为ASIC。在此所述的实施例可使用运行于一个或多个处理器上的软件、固件和硬件的任何组合来实施,其中软件可存储在任何适合的计算机可读媒介上,如微码存储在半导体芯片中,在计算机可读盘上,或者从服务器下载并在本地存储于客户。
图2是一实施例的包括文件升级系统100的组件的示例服务提供者基础设施200的块图。在该实施例中,服务提供者基础设施是在蜂窝电话网络或基础设施的情况下描述的,但可替换的实施例不局限于此。服务提供者基础设施200包括但不局限于软件组件分配器(“SCD”)202、服务提供者升级组件203-205以及寄存于客户设备122上的升级客户126。服务提供者升级组件203-205包括耦合于软件组件认证服务器203和升级管理器205之间的升级服务器204。
进一步参照图1,服务提供者基础设施200的一个实施例的SCD 202包括主机系统102的组件或功能。在可替换的实施例中,服务提供者升级组件203-205寄存主机系统102的组件或函数。在其它可替换的实施例中,主机系统102的组件或功能分布在SCD 202的组件和服务提供者升级组件203-205之间。
一个实施例的服务提供者基础设施200经由升级系统组件和各种机制的服务提供者无线基础设施来支持客户设备122上的多种类型的软件文件或组件升级,客户设备122包括移动电子设备、移动通信设备、蜂窝电话、个人数字助理、计算机和其它基于处理器的设备。这些系统通过经由服务提供者基础设施接收来自软件分配器的新的和经修订的软件、根据新软件生成升级文件以及将升级文件传递到客户设备122来起作用。客户设备122的升级客户126使用升级文件来更新寄存于客户设备122上的目标软件。
一个实施例的SCD 202提供软件提供者打包和发行新的嵌入式设备软件组件所借助的用户接口。SCD 202的功能包括注册设备信息和将设备信息提交到软件组件认证服务器。而且,SCD 202接收新的和原始的EBSC,使用新的和原始的EBSC来计算或生成文件差异,注册和打包嵌入式软件,以及将嵌入式软件包提交到软件组件认证服务器203。在发行之后,新的或经修订的软件经由有线、无线或混合有线/无线网络耦合或连接220提供给服务提供者升级组件203-205,但不局限于此。
一个实施例的SCD 202寄存于客户设备制造者的处理系统上。在可替换的实施例中,SCD 202寄存于应用或系统软件提供者的处理系统上。在另一个可替换的实施例中,SCD 202寄存于服务运营者或提供者的处理系统上,例如寄存于升级组件203-205上或分布于其间。
服务提供者升级组件203-205耦合于软件组件分配器202、客户设备122和服务提供者基础设施的现有组件210-218之间,所述现有组件包括现有网关210和通信基础设施212、计费服务器、日志服务器216以及鉴权服务器218。
软件组件认证服务器203提供接口给客户设备制造者并且,由此接收来自设备制造者的关于嵌入式软件包的新设备信息。软件组件认证服务器203还将认可的软件包重新打包并分配给升级服务器。
在充当软件组件认证服务器203和升级服务器204之间的接口的同时,升级管理器205为最佳设备管理而配置软件和数据打包,排定远程改变通知的时间,并且控制更新策略监视系统。此外,升级管理器205提供与现有基础设施的系统的整合。
升级服务器204提供包括鉴权、连接和与移动客户设备122通信的能力以执行嵌入式软件组件升级。与客户设备122通信可经由与客户设备122的耦合212而进行,所述耦合212包括无线耦合、有线耦合、混合的有线/无线耦合以及适于对应服务提供者的其它网络耦合类型。此外,升级服务器204支持服务提供者的现有的计费、数据采集和日志服务。
作为升级服务器204和客户设备122之间的通信的实例,当升级文件可用于从升级服务器204传递到客户设备122时,服务器204发送用户通知以向客户设备用户通知有可用于更新的软件组件。该用户通知可经由短消息服务(“SMS”)推送协议(push protocol)、超文本传递协议(“HTTP”)或者无线应用协议(“WAP”)采用文本消息的形式,但不局限于此。一旦从手机用户接收到确认,升级服务器204使用原始的手机数据通信协议将升级文件发送到请求设备。
响应于收到来自设备的确认,升级服务器204鉴权并授权用户和/或请求设备,并检验请求设备预先必备的能力和限制。在鉴权之后,作为客户设备配置数据管理器的升级服务器204标识请求设备的嵌入式软件组件的当前版本,标识适当的delta文件并将其传递到请求设备,记录升级事务的状态,并向升级管理器205报告结果。此外,升级服务器204通过空中传播来激活/去激活该软件升级服务,并将软件变化通知给远程用户。
参考图1,升级客户126嵌入在客户设备1中,但不局限于此。升级客户126存储并维护客户设备122的配置数据,并且提供嵌入式设备软件组件的维护和升级。升级客户126支持简单的用户接口并被结合到移动设备软件中。一旦执行,升级客户126就自动检测任何嵌入式软件组件的远程变化,将嵌入式软件组件升级通知给用户,并基于运营者和/或用户控制来升级软件组件,以适于特定的服务提供者。
一实施例的升级系统100和服务提供者基础设施支持诸多类型的软件文件或者组件更新,包括对可执行文件、字节流文件和数据文件的更新,但不局限于此。可执行文件或映像文件包括在客户设备中使用以执行任务的软件文件,例如操作系统(“OS”),硬件设备驱动,和K虚拟机(“KVM”)文件。字节流文件包括由其它可执行文件使用的文件,例如,图标文件,logo文件和MP3文件。数据文件包括包含个人使用数据和手机参考数据的文件,例如校准配置文件,协议独立组播(“PIM”)文件和系统配置文件。
一个实施例的升级客户126使用诸多方法依据要升级的文件类型和由客户设备制造者分配的用来支持这些升级的资源来升级EBSC,如相关申请中所述的。一个实施例的这些升级方法包括非关键组件更新、关键组件更新和更新客户组件更新,其中这些类别基于由作为更新目标的软件组件所提供的功能。
如以上所述,通过使用比较程序的新版本与原始版本并仅隔离机器代码的变化或差异的技术,软件升级通常减小了重写主机客户设备的ROM所需的时间。客户设备的升级客户使用如在升级文件中接收的这些差异的信息来升级设备ROM,这是通过仅重写所述差异或者已改变的EBSC或映像的部分而不是重写整个ROM来实现的。
除了使用包括差别文件的升级文件之外,通过使用DA和DA管理器在文件升级期间还可实现升级文件的大小和升级客户设备程序所需的时间的额外减小。一个实施例的DA包括将存储在设备ROM中的代码组织为相关EBSC的组。从一个组件到另一个组件的任何引用连同每个组件的位置或地址被标识和存储在DA管理器中。DA管理器在链接EBSC期间生成并且连同客户设备程序被加载到客户设备存储器中。因此DA和DA管理器允许映像的EBSC得以隔离和独立构建。
DA管理器管理组件函数调用、全局变量引用和常变量引用以充当知道每个EBSC的符号位置并在客户设备程序执行期间根据需要链接EBSC的集中路由器或交换机。从一个EBSC到另一个EBSC的任何引用经由DA管理器而不是直接在EBSC之间路由。如果组件在文件升级期间被修改并且该升级导致ROM中的EBSC的位置变化,则该变化由DA管理器记录,由此维持对存在于设备程序中的EBSC的引用或链接的完整性。
在此所述的DA管理器利用例如ARM处理器核心或寄存Arm开发工具集(ADS)版本1.2软件包的处理器来运行,但可替换的实施例可在各种其它处理器上或利用各种其它处理器来运行。一个实施例的DA和DA管理器与多种嵌入式系统平台兼容,而不仅是在此所述的嵌入式系统。
在对一个实施例的DA和DA管理器的描述中使用了许多术语,并且尽管对这些术语的描述在此作为实例而提供,实施例并不局限于这些描述。在描述DA和DA管理器时,“映像”是加载到处理器上的可执行文件,并且可替换地称为“二进制映像”或“软件映像”。“段”是映像的软件代码或数据的块。“区”是一个到三个输出段(映像的只读存储器地址(“RO”)、读/写存储器地址(“RW”)和零初始化存储器地址(“ZI”))的连续序列;区通常映射到诸如ROM、RAM和/或外设的物理存储器设备上。“加载视图”是已经加载到存储器中但尚未开始执行的映像的段和区的地址。“执行视图”是已经加载到存储器中并且正在执行的映像的段和区的地址。“分散加载”包括分配地址并单独地集合代码和数据段而不是使用单个大块。“RO-CODE”指的是只读代码地址。“RO-DATA”指的是只读数据地址。“RW-DATA”指的是读/写数据地址。“ZI-DATA”指的是用于保持不具有初始值的变量的零初始化读/写存储器。“Symdef文件”是包括全局符号和关联的最终运行时间地址的符号定义文件。
一个实施例的DA操作来通过在二进制映像的DA管理器的固定位置插入共用组件来中断函数调用依赖性,使得当函数调用目的地址由于代码变化而变化时,调用函数继续调用DA管理器的所述共用组件,并且DA管理器将该调用导向到映像中的适当组件。因此DA管理器的共用组件的信息根据任何函数调用目的地址变化而变化以将对共用组件的函数调用导向到新的目的地址。
作为在此所提供的基于组件的存储器管理的一个实例,图3是示出一实施例下的DA管理器310和映像300的EBSC EBSC1/EBSC2/EBSC3之间的交互的DA块图。如以上所述,一个实施例的映像包括软件组件(EBSC)和至少一个DA管理器。映像包括链接的组件,其中诸如EBSC的组件包括独立构建的具有根据设计专门集合在一起的函数的映像。由于映像划分为不同的组件,将有从一个组件到其它组件的函数调用、全局变量引用和常变量引用,如以下所述。
一个实施例的DA标识映像组件之间的函数调用和全局引用并且消除单独组件之间的依赖性,使得在对映像进行软件升级或改变时,仅DA管理器和已经修改的那些组件得到升级。DA管理器随后通过管理和重新导向函数调用和全局引用来控制或管理映像执行期间的组件间活动。
作为DA管理器的一个操作实例,参考图3,将操作导向到EBSC1的函数2的EBSC2中的调用350调用DA管理器310的组件370。所调用的DA管理器310的组件370又将操作352导向到EBSC1的函数2。作为DA管理器的另一个操作实例,将操作导向到EBSC3的函数1的EBSC1中的调用360调用DA管理器310的组件380。所调用的DA管理器310的组件380又将操作362导向到EBSC3的函数1。
继续该实例,例如当客户设备的软件升级使得有必要有导致存储器中EBSC1的位置变化的映像300的EBSC1的变化时,升级仅导致EBSC1的升级和具有与EBSC1关联的链路的DA管理器310的组件370的升级。因此,由于DA管理器310用来维持映像300的EBSC之间的引用或链接的完整性,DA管理器310消除了对由于升级特定EBSC如EBSC1而升级或重写映像300的所有EBSC的任何需要。
在管理映像300的EBSC之间的链路时,一个实施例的DA管理器使用多种技术来管理不同类型的全局引用。具体而言,DA管理器管理包括函数调用和全局变量的全局引用,但不局限于此。
组件的函数调用通常是以相对偏移跳转/分支指令或绝对地址跳转/分支指令的格式,其中目的偏移/地址位于映像的一个或多个其它组件中。二进制代码位于包括只读代码地址的RO-CODE/文本段处。基于执行视图地址和组件边界,函数调用分类和处置为组件间函数调用或组件内函数调用,如以下所述。
对于组件间函数调用并且作为跳转/分支指令特性的结果,一个实施例的DA管理器包括在此称为向量表(VT)的集中跳表以管理组件间函数调用并处置关联的再导向。在执行期间,所进行的从一组件到位于另一个组件中的函数的调用导致对VT中的一条目(entry)的调用,如以下所述。然后VT将该调用再导向到对应于所调用的组件/函数的设备存储器中的适当的位置。举例来说,以下是针对组件间函数调用的VT项目的示例ARM模式代码,但该实施例不局限于该示例代码:
import EBSC2_Fn1
       ldr pc,addr_EBSC2_Fn1
       addr_EBSC2_Fn1  dcd  EBSC2_Fn1
import EBSC3_Fn2
       ldr pc,addr_EBSC3_Fn2
       addr_EBSC3_Fn2  dcd  EBSC3_Fn2
与组件间函数调用相对照,组件内函数调用(对组件内的局部函数的函数调用)不受组件升级的影响。组件内函数调用不受影响是因为,由于升级导致对完整组件的升级,组件升级包括对组件内函数调用的适当升级。因此,组件内函数调用不经历VT。此外,组件内函数调用的调用顺序不是使用VT来实现的,但该实施例不局限于此。
转到使用一个实施例的DA和DA管理器的全局变量和关联引用,有三种子类型的全局变量,包括全局常变量、全局RW变量和全局ZI变量。全局常变量在映像代码的RO-DATA/.const段中,尽管它们被称为“变量”,但它们可引用自设备ROM并且不能在运行时间被修改。全局RW变量是RAM变量,其可在运行时间修改并且在系统初始化期间设置为其初始值。全局ZI变量也是RAM变量,其可在运行时间修改并且与RW变量相对照,在系统初始化期间清为零(0)值。
一个实施例的DA和DA管理器使用在此亦称为“全局引用”的组件间和组件内全局引用的其中一个或组合来管理对组件全局变量的引用。对于组件间全局变量引用,全局变量引用与以上所述的函数调用不同,因为它直接加载地址的内容而不是跳转/分支指令。
一个实施例的DA使用DA管理器的集中位置来管理组件间全局引用。通过使用集中DA管理器位置,每个组件间全局常变量、全局RW变量和全局ZI变量可分配给新类型的段。举例来说,全局常变量可分配给称为“globalConst”段的新段,全局RW变量可分配给称为“globalRW”段的新段,并且全局ZI变量可分配给称为“globalZI”段的新段。针对加载视图和执行视图两者,这些新段/变量然后可在链接时间分散加载到集中段中。由于在升级期间对未变组件的变量维持地址是有用的,集中位置使得较容易管理和检验变量的位置,由此简化DA管理器构建过程。
一个可替换实施例的DA和DA管理器使用访问函数来管理组件间全局引用。作为以源代码级生成的包裹函数的访问函数将全局变量的引用转换成函数调用,使得VT可用于处置这些引用。适合于使用访问函数的情形包括源代码不可用的情形、源代码的变化非常不理想的情形,以及由于组件间变量引用的数目很有限而使得不需要分离的段的情形。
文件foo.c中的访问函数的实例是
int interCompGlobalVarA;
并且文件foo.c或其它文件中的访问函数的实例是
interCompGlobalVarA=....
举例来说,以下是针对访问函数的VT条目的示例ARM模式代码,但该实施例不局限于该示例代码:
void setInterCompGlobalVarA(int value)
{
        interCompGlobalVarA=value;
}
void readInterCompGlobalVarA(int*value)
{
        *value=interCompGlobalVarA;
}
当使用访问函数时,对“interCompGlobalVarA”的引用变为使用以上的访问函数之一。
与组件间变量相对照,组件内变量或组件内的局部变量不受对组件升级的影响,因为组件升级包括对组件内变量的适当升级。因此,组件内变量不经历globalConst变量/段、globalRW变量/段和globalZI变量/段。此外,组件内函数调用的引用顺序不是使用globalConst变量/段、globalRW变量/段和globalZI变量/段来实现的,但该实施例不局限于此。
一个实施例的DA管理器包括用于在生成包括DA管理器的映像时使用的映像构建过程。举例来说,图4A和4B示出一实施例下的用于构建包括DA管理器的映像的流程图400。DA映像构建过程生成高度可靠、无错的二进制映像,并且该过程通常可分为预编译阶段、后链接器阶段和代码生成阶段,但不局限于此。映像构造的预编译阶段为DA过程准备原始构建环境。后链接器阶段可运行多次,直到可以可靠地生成包括DA管理器的映像。代码生成阶段生成用于映像的DA管理器组件的汇编代码。
一个实施例的构建过程使用包括如下的资源:具有跨段引用信息的映像存储器映射文件、知道原始组件的分散加载文件、原始调用图文件和具有第三方库目标文件的制造者目标文件。可替换的实施例可使用附加的资源和/或其它类型/组合的资源。为了构建包括DA管理器的映像,源代码文件不需要是可用的,但源代码文件可有助于二进制映像性能和运行时间资源要求。
参考用于构建包括DA管理器的映像的流程图400,在块402,通过指定用来寄存DA管理器的设备存储器中的位置,包括VT的加载视图和执行视图以及全局引用,客户设备的组件启动构建过程。在块404,客户设备的组件使用原始映像映射文件、意识到原始组件的分散加载文件、调用图文件和原始源代码文件(任选)的至少一个的信息来标识组件间函数调用和组件间全局变量引用。在块406,使用所使别的组件间函数调用和组件间全局变量引用的信息来确定DA管理器的条目是否过大以至于不能适合设备存储器中的指定位置。DA管理器是通常占用客户设备存储器中的一个存储器块的独立组件或EBSC,但不局限于此。
在块406,如果DA管理器的条目过大以至于不能适合设备存储器中的指定位置,则执行对组件的重新安排以减少组件间引用。对组件的重新安排包括在块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重新编译新源代码文件并且重新链接目标文件。操作然后返回以在块402指定用来寄存DA管理器的设备存储器中的位置,包括VT的加载视图和执行视图,以及全局引用。
如果在块452确定原始源代码文件不可用于块454、456、458的操作,则在对组件的重新安排以减少组件间引用(块450)之后在块460生成访问函数。访问函数将全局变量的引用转换成函数调用,如以上所述。在生成访问函数之后,在块470重新编译源代码文件并且重新链接目标文件。操作然后返回以在块402指定用来寄存DA管理器的设备存储器中的位置,包括VT的加载视图和执行视图,以及全局引用。块450-470的操作由客户设备的组件重复,直到DA管理器条目的大小适合设备存储器中指定位置(块406)。
在诸如在块406确定DA管理器的条目适合设备存储器中的指定位置的时间,操作继续进行以在块408生成用于每个组件的组件间函数调用的VT源代码。在块410,客户设备亦生成用于每个组件的新的或经修改的分散加载文件。此外,在块412,客户设备亦生成用于每个组件的符号定义文件symdef,其中每个symdef文件使用VT表条目地址为对应组件定义外部引用。不在VT中使用的组件不需要symdef文件。块408、410和412的操作使用原始映像映射文件和经修改的分散加载文件中的至少一个的信息,但不局限于此。
在块414,通过编译/汇编和重新链接映像的组件并且为每个组件生成映像和存储器映射,客户设备的操作继续进行。一个实施例的重新链接操作不包括到DA管理器组件的链接,但不局限于此。在块416,客户设备亦生成用于DA管理器组件的symdef文件,其包括最终符号位置。然后在块418,客户设备利用每个组件的局部符号来编译和重新链接VT目标文件以生成VT组件映像。在块420,客户设备亦编译和链接DA管理器组件以生成DA管理器映像。在块422,包括DA管理器映像的映像加载到客户设备存储器中。
在已经制造了客户设备之后,当执行软件升级,包括对客户设备的特定或预指定组件的升级时,一个实施例的客户设备使用以上所述的DA。当一个或多个被升级的组件包括组件间引用时,通过使用以上所述的构建过程,在软件升级期间DA管理器得以改变或升级。
在生成新版本映像的客户设备的软件升级期间,以上所述的构建过程生成升级组件的映像。未被修改的那些组件应当与其较早版本相同,但对应于组件间函数调用的DA管理器条目应得到检验。由于代码变化而不适合对应原始组件的新组件间函数调用和全局变量将被添加到最后版本映像的所占用区块的末尾,但不局限于此。此外,DA管理器的所有现有符号保持其原始地址,除非另外指定。
在构建DA管理器之后,DA管理器用作集中路由器或交换机,其知道每个EBSC的符号位置并且在客户设备程序执行期间根据需要链接EBSC。从一个EBSC到另一个EBSC的任何引用经由DA管理器而不是直接于EBSC之间路由。如果在文件升级期间组件被修改并且升级导致EBSC在ROM中的位置变化,则该变化由DA管理器记录,由此维持对存在于设备程序中的EBSC的引用或链接的完整性。
如以上所述,文件的修订包含将新的和更新的EBSC写到主机设备的存储器位置。通常,新EBSC不会为与它所替换的原始EBSC完全相同的大小或具有与之完全相同的起始地址。一实施例的升级客户提供包括可升级EBSC的DA的设备存储器管理选项,以容纳新EBSC的写入而不考虑EBSC的大小或者起始地址。
作为在升级设备存储器组件期间使用DA的设备存储器的实例,图5是示出图1和3的实施例下的包括软件映像300(在嵌入式软件区域中)、升级客户126和DMM客户500的组件的存储器130的组件之间的交互的实例的设备存储器130的块图。一个实施例的设备存储器130是闪速ROM,但是很多类型的存储器和/或存储器类型的组合可在此实施例中或设备存储器130的可替换的实施例中使用。
一个实施例的DMM客户500包括DMM库510、VT 512以及垃圾表514,但不局限于此。尽管VT 512示出为DMM客户500的组件,VT 512可与DA管理器310安置在一起或安置在映像300或DMM客户500的另一个段中。DMM库510包括一个或多个函数地址转换应用程序员接口(“API”)520,保留API 522和垃圾收集API 524。DMM库510可包括一个或多个与函数地址转换API 520,保留API 522和垃圾收集API 524中的一个或多个进行某种组合的附加API。
在允许较先进的存储器管理的同时,软件升级期间的DA通常支持每个更新期间的EBSC和EBSC组的起始地址和大小两者的修改。一实施例的升级客户通过使用DMM客户500的API和至少一个数据表之间的交互来支持动态寻址。同样,DA增加了ROM利用效率和设备存储器映射设计效率,同时以较低的更新故障概率支持较快的更新处理。
在使用DA执行存储器管理时,通过执行对包括至少一个第一和第二存储区的主机设备存储区的顺序搜索,升级客户标识并保留足够大以容纳新软件组件的存储器块。当新组件的大小超过所搜索的存储区的可用块的大小时,升级客户重写第一存储区以去除未用的存储器块,重新分配第一和第二存储区,将新组件写到第二存储区,并更新向量表,如下所述。
图6是一实施例下的使用动态寻址来升级EBSC或EBSC组的流程图600。在块602,升级客户接收新EBSC版本。新EBSC版本根据原始EBSC版本和对应的升级文件产生,或者,可替换地,从软件组件分配器接收。在块604,存储区被标识并保留于客户设备中以容纳存储新的EBSC版本。在块606,升级客户的组件将新EBSC版本写到保留的存储区。在块608,对向量表的进行更新以进行由新EBSC版本导致的VT信息的任何必要的改变。此外,在块610,对垃圾表进行更新以反映由新EBSC版本的写入导致的未用的存储区中的任何改变。
为了使用DA来访问客户设备中的软件组件,升级客户接收来自客户设备的主程序的函数调用,其包括对应软件组件的标识信息,从VT读取对应软件组件的起始地址,并产生对对应软件组件的调用。同样,当第一EBSC调用第二EBSC时,升级客户改变函数调用顺序,从而代替使用静态地址来直接调用第二EBSC,第一EBSC使用静态地址调用升级客户的API。通过使用运行时间VT的对应静态地址和参量,所调用的API将所接收的调用转换为对第二EBSC的调用。
图7是一实施例下的使用DA的函数调用流程图700。主机设备的主程序使用存储在设备存储器中的EBSC支持用户请求的函数。当用户请求函数时,通过使用静态地址来直接调用升级客户的组件,客户设备主程序的EBSC调用与特定函数相关的EBSC。响应于该调用,在块702,升级客户接收来自主程序的信息,其包括函数或者EBSC标识以及该函数的参量。在块704,升级客户访问VT,其包括可用于主程序的每个EBSC的条目以及EBSC的对应起始地址。在块706,升级客户从VT读取起始地址和相关参量。在块708,通过使用起始地址信息以及从主程序接收的被调用的EBSC的信息,升级客户产生对实际函数和对应EBSC连同所有接收的参量的调用。
返回图5和存储器130组件之间的交互,函数地址转换API 520从客户设备主程序132产生对与特定主机设备函数关联的EBSC的调用,如以上参考图7所述。客户设备的主程序132通过直接调用函数地址转换API 520来调用与特定函数关联的EBSC。进行对API 520的直接调用而不是对EBSC的直接调用。在调用时,函数地址转换API 520接收来自主程序132的信息,其包括函数标识信息以及该函数的参量。
响应于该调用,函数地址转换API 502访问VT 312。VT 512包括可用于主程序132的每个函数的条目以及设备存储器130中函数的对应起始地址。函数地址转换API 520从VT 512读取由主程序132请求的函数的起始地址,并使用该起始地址信息以及从主程序132接收的被调用的EBSC的信息产生对实际函数连同所有所接收的参量的调用。
一实施例的升级客户126使用用于保留EBSC新版本的API 522,此处被称作保留API 522,来定位并保留存储器中的区域以容纳新版本的EBSC或者EBSC组。参考图5,当被升级客户126调用时,保留API522接收新EBSC版本的标识信息,包括该新版本的文件大小的信息。该新EBSC版本的文件大小是要在设备存储器130中保留以存储新EBSC版本的区域的大小。保留API 522定位存储器130中的适当区域并且一旦成功保留该存储区,就返回所请求的保留区域的起始地址。图8是一实施例下的使用保留API 522来保留存储区以容纳新版本的EBSC的流程图800。
在分配所请求大小的存储器块时,保留API 522应用如下规则集,但可替换的实施例可应用不同的规则以达到等价的结果。图9是一实施例下的使用保留API的规则来定位存储器块以容纳新版本的EBSC的流程图900。在块902,一旦接收到关于新EBSC大小的信息,在块904,保留API确定新EBSC的大小是否超过原始EBSC的大小。当新EBSC的大小等于或者小于对应的原始EBSC的大小时,在块906,保留API分配当前由对应原始EBSC占据的存储器块以接收新EBSC。否则,保留API试着从保留的存储区中的可用存储器定位具有所请求大小的存储器块。
在继续该搜索时,在块908,保留API为具有所请求大小的存储器块而搜索客户设备的保留的存储区。如果在保留的存储区中找到适当大小的块,那么在块910,保留API分配该存储器块以接收新EBSC。如果在保留的存储区中没有可用的适当大小的存储器块,那么在块912,保留API 522访问垃圾表。在块914,保留API使用垃圾表的信息来搜索未用的主程序存储区,试图在对应于垃圾表中的条目的未用区域中定位所请求大小的存储器块。一实施例的未用区域,此处被称作垃圾区域,包括主程序的未用区域,但该实施例不局限于此。如果在未用的存储区中找到适当大小的存储器块,那么在块916,保留API分配该块以容纳新EBSC。
如果不能定位适当大小的存储器块,那么在块918,一实施例的保留API启动此处称作垃圾收集的过程。当垃圾表214的所有条目都被占据时,保留API也启动垃圾收集。参考图5,用于垃圾收集的API 524,此处被称作垃圾收集API 524,由保留API 522调用,但不局限于此。用于垃圾收集的API 524通常不接收参量并清除为EBSC和EBSC更新保留的区域中的所有垃圾,但不局限于此。
如上所述,如果不能为请求的保留大小找到足够的存储器或者如果垃圾条目表变满,那么保留API 522就启动垃圾收集。图10是一实施例下的垃圾收集的流程图1000。在启动垃圾收集时,保留API调用垃圾收集API。当被调用时,垃圾收集API在块1002读取垃圾表条目,并且在块1004,使设备存储器的嵌入式软件区域被重写,以便将存储器的EBSC在存储器中依次打包(pack up)。可替换的实施例可在主存储器中将EBSC解包(pack down),但本实施例不局限于此。该打包操作去除嵌入式软件区域中未用的区域。
在该打包操作之后,在块1006,垃圾收集API评估存储在保留的存储区中的每个EBSC的大小,并且将该大小与在重写之后的嵌入式软件区域的主程序中剩余的任何未用的存储器块进行比较。该评估确定重写嵌入式软件区域之后剩余的未用存储器的量是否可容纳保留存储区的任何EBSC,从而使在可能的情况下,EBSC可以从保留的存储区移出并进入设备存储器的嵌入式软件区域。保留的存储区的EBSC被依次评估,但本实施例不局限于此。在块1008,在EBSC的大小允许的情况下,EBSC从保留的存储区被重写到嵌入式软件区域。在一个实施例中EBSC被重写时,它们在打包的EBSC之后被依次存储在嵌入式软件区域中。
对存储在保留的存储区中的EBSC的评估继续进行,直到所有EBSC已被移到嵌入式软件区域,或者直到确定嵌入式软件区域中没有足够大的剩余区域来容纳保留的存储区的EBSC。不可被容纳在嵌入式软件区域中的任何EBSC留在保留的存储区中,但本实施例不局限于此。
一旦完成了打包和移动操作,在块1010,通过重新指定设备存储器的任何未用存储器块为保留存储区,垃圾收集API重新分配主机设备存储器。此外,在块1012,保留存储区指针被复位以维持保留存储区中可用存储器的起始地址。另外,在块1014,垃圾表被重写以反映未用存储区的状态。在将新版本的EBSC写到与由同一EBSC的原始版本占据的存储区不同的任何存储区之后,升级客户还更新向量表。
图11是一实施例下的使用DA的嵌入式软件发展和展开过程的块图1100。该图1100描述了从通过软件组件分配器1102的EBSC发展到使用具有基于DA的设备存储器管理的一实施例的升级客户的设备ROM初始化的过程。
软件组件分配器1102的组件接收新EBSC的源代码,并将该源代码递送到客户设备,如以上所述。客户设备编译1103新EBSC源代码。在源代码编译1103之后,所得到的EBSC目标代码传递到第一链接器1106,作为新EBSC的注册的部分,该链接器产生对应于该新EBSC的映射文件1104。
向量生成工具1105使用映射文件1104的信息来生成对应于EBSC的初始VT 1108并将VT 1108传递给第二链接器1116。第二链接器1116使用VT 1108连同映射文件1104的信息以及来自第一链接器1106的原始映像映射文件的信息来生成十六进制(文本)或者二进制文件1118。
十六进制(文本)或者二进制文件1118被下载到客户设备122的嵌入式软件区域1120中,但是可替换的实施例可以将十六进制文件1118写到客户设备122的其它存储区。客户设备122的DMM客户的组件在客户设备软件的后续软件升级期间维护向量表1108并且同样支持EBSC的动态寻址。
参考图4A和图4B,流程图的操作处于至少一个处理器的控制下,但不局限于此。这些流程图中所述的每个块都是本领域众所周知的类型,且本身可包括不需要在此描述的操作序列。相关领域的技术人员可基于这些流程图和在此提供的详述来创建源代码、微码、程序逻辑阵列或不然实施块功能。根据这些流程图操作的算法或例程存储在形成相关存储器部分的非易失性存储器中、关联存储区中、诸如盘的可移动媒介中,或被硬连线(hardwired)或预编程于诸如电可擦除可编程ROM(“EEPROM”)半导体芯片的芯片中,或者以这些组件的任何组合,但是不局限于此。
以上所述的集中DA管理器的组件包括在一起操作的计算组件和设备的任何集合。DA管理器的组件亦可以是较大计算机系统或网络内的组件或子系统。DA管理器组件亦可耦合在以任何数目的组合的任何数目的组件(未示出),例如其它总线、控制器、存储器设备和数据输入/输出(I/O)设备之间。DA管理器组件的功能可分布在任何数目/组合的其它基于处理器的组件之间。以上所述的存储器系统包括例如本领域公知的各种存储器系统。
在此所述的DA和DA管理器包括便携式通信设备,其包括耦合到处理器的动态寻址管理器和多个软件组件,该动态寻址管理器包括一个或多个链接,其中每个链接形成组件中的每个标识的引用和对应于该标识的引用的另一个软件组件之间的程序链接,动态寻址管理器在代码执行期间使用所述链接来链接所述多个软件组件。
一实施例的每个链接在动态寻址管理器中具有固定的地址。
一实施例的引用包括至少函数调用和变量引用之一。
一实施例的变量引用包括至少全局变量引用和常变量引用之一。
一实施例的动态寻址管理器包括向量表,其是用于至少函数调用和变量引用之一的集中跳表。
一实施例的链接所述多个软件组件包括以下的至少一个:将一引用从第一组件导向到向量表的条目以及使用该条目的信息将该引用重新导向到第二组件。
一实施例的动态寻址管理器包括至少一个集中段。一实施例的变量引用被分配给该集中段。一实施例的链接所述多个软件组件包括将对变量引用的引用导向到对应于该变量引用的集中段的地址。
一实施例的设备进一步包括升级客户,该升级客户升级所述多个软件组件,其中升级包括以下的至少一个:经由无线耦合接收升级文件,根据升级文件内容适当地升级所述多个软件组件的至少一个,以及通过升级动态寻址管理器的链接的信息来升级所述多个软件组件之间的链接。
一实施例的设备进一步包括存储器,其包括一个或多个存储区,其中动态寻址管理器存储在该存储器中。一实施例的存储器包括至少随机存取存储器和只读存储器之一。
一实施例的客户设备是至少蜂窝电话、便携式计算设备和个人数字助理之一。
在此所述的DA和DA管理器包括一种方法,其包括以下的至少一个:将存储在客户设备的设备存储器中的代码组织为多个组件;标识包括在所述多个组件的每个中的一个或多个引用,其中每个引用是对代码的一个或多个其它组件的引用;生成包括一个或多个链接的管理器组件,其中每个链接形成组件中的每个标识的引用和对应于该标识的引用的其它组件之间的程序链接;以及在代码执行期间使用管理器组件的链接来连接所述多个组件。
一实施例的每个链接在管理器组件中具有固定的地址。
一实施例的引用包括至少函数调用、全局变量引用和常变量引用之一。
一实施例的引用包括至少相对偏移跳转/分支指令和绝对偏移跳转/分支指令之一。
一实施例的引用包括至少全局常变量、全局读/写数据地址和全局零初始化数据地址之一。
一实施例的生成管理器组件进一步包括生成向量表,其是用于至少函数调用和全局变量之一的集中跳表。一实施例的链接所述多个组件进一步包括以下的至少一个:将引用从第一组件导向到向量表的条目以及使用该条目的信息将该引用重新导向到第二组件。一实施例的引用包括至少函数调用和变量之一。
一实施例的生成管理器组件进一步包括以下的至少一个:生成管理器组件的至少一个集中段以及将全局常变量分配给所生成的集中段。一实施例的链接所述多个组件进一步包括将对全局常变量的引用导向到对应于该全局常变量的集中段的地址。一实施例的生成管理器组件可进一步包括将全局读/写数据地址分配给所生成的集中段。一实施例的链接所述多个组件可进一步包括将对全局读/写数据地址的引用导向到对应于该全局读/写数据地址的集中段的地址。一实施例的生成管理器组件亦可进一步包括将全局零初始化数据地址分配给所生成的集中段。一实施例的链接所述多个组件亦可进一步包括将对全局零初始化数据地址的引用导向到对应于该全局零初始化数据地址的集中段的地址。
一实施例的方法进一步包括将管理器组件存储在客户设备的一个或多个存储区。一实施例的存储区包括至少随机存取存储器和只读存储器之一中的区域。
一实施例的方法进一步包括升级代码,该升级包括以下的至少一个:经由无线耦合接收升级文件,根据升级文件内容适当地升级所述多个组件的至少一个,以及通过升级管理器组件来升级被升级代码的所述多个软件组件之间的链接。
一实施例的客户设备是至少蜂窝电话、便携式计算设备和个人数字助理之一。
在此所述的DA和DA管理器包括一种系统,其包括以下的至少一个:第一设备,其包括生成升级文件的第一升级组件,其中升级文件包括至少用来修复电子文件中的错误的信息和用来向电子文件增加功能性的信息之一;以及移动通信设备,其包括第二升级组件、动态寻址管理器和多个软件组件,所述动态寻址管理器包括一个或多个链接,其中每个链接形成组件中的每个标识的引用和对应于该标识的引用的另一个软件组件之间的程序链接,动态寻址管理器在代码执行期间使用所述链接来链接所述多个软件组件。
一实施例的系统进一步包括无线耦合,其中第二升级组件经由无线耦合接收升级文件,第二升级组件使用升级文件的信息来自动升级所述多个软件组件。一实施例的升级包括根据升级文件内容适当地升级所述多个软件组件的至少一个,以及通过升级动态寻址管理器的链接的信息来升级所述多个软件组件之间的链接。
一实施例的系统包括在动态寻址管理器中具有固定地址的链接。
一实施例的系统的引用包括至少函数调用和变量引用之一。
一实施例的系统的动态寻址管理器包括向量表,其是用于至少函数调用和变量引用之一的集中跳表。
一实施例的系统的动态寻址管理器包括至少一个集中段,其中至少一个变量引用被分配给该集中段。
一实施例的系统的第一设备是基于处理器的设备,其可由寄存于第二设备上的软件组件的至少一个提供者来访问。
一实施例的系统的移动通信设备包括至少蜂窝电话、便携式计算设备和个人数字助理之一。
一实施例的所述多个软件组件包括软件文件,其包括动态链接库文件、共享目标文件、嵌入式软件组件(EBSC)、固件文件、可执行文件、包括十六进制数据文件的数据文件、系统配置文件以及包括个人使用数据的文件。
在此所述的DA和DA管理器包括一种移动通信设备,其包括以下装置的至少一个:用于将存储在客户设备的设备存储器中的代码组织为多个组件的装置;用于标识包括在所述多个组件的每个中的一个或多个引用的装置,其中每个引用是对代码的一个或多个其它组件的引用;用于生成包括一个或多个链接的管理器组件的装置,其中每个链接形成一组件中的每个标识的引用和对应于该标识的引用的另一组件之间的程序链接;以及用于在代码执行期间使用管理器组件的链接来链接所述多个组件的装置。
一实施例的设备的用于生成管理器组件的装置进一步包括用于生成向量表的装置,该向量表是用于至少函数调用和全局变量之一的集中跳表。一实施例的设备的用于链接所述多个组件的装置进一步包括以下装置的至少一个:用于将一引用从第一组件导向到向量表的条目的装置以及用于使用该条目的信息将该引用重新导向到第二组件的装置。
一实施例的设备的用于生成管理器组件的装置进一步包括以下装置的至少一个:用于生成管理器组件的至少一个集中段的装置以及用于将变量引用分配给所生成的集中段的装置。一实施例的设备的用于链接所述多个组件的装置可进一步包括用于将对变量引用的引用导向到对应于该变量引用的集中段的地址的装置。
一实施例的设备进一步包括用于升级代码的装置,其包括以下装置的至少一个:用于经由无线耦合接收升级文件的装置,用于根据升级文件内容适当地升级所述多个组件的至少一个的装置,以及用于通过升级管理器组件来升级被升级代码的所述多个组件之间的链接的装置。
在此描述的DA和DA管理器包括机器可读媒介,其包括可执行指令,当在处理系统中被执行时,所述指令通过以下来链接便携式设备中的软件组件:将存储在客户设备的设备存储器中的代码组织为多个组件;标识包括在所述多个组件的每个中的一个或多个引用,其中每个引用是对代码的一个或多个其它组件的引用;生成包括一个或多个链接的管理器组件,其中每个链接形成一组件中的每个标识的引用和对应于该标识的引用的另一组件之间的程序链接;以及/或者在代码执行期间使用管理器组件的链接来链接所述多个组件。
一实施例的所述媒介进一步包括通过以下来升级代码:经由无线耦合接收升级文件,根据升级文件内容适当地升级所述多个组件的至少一个,以及/或者通过升级管理器组件来升级被升级代码的所述多个组件之间的链接。
在此所述的集中DA管理器的方面可作为编程到多种电路中任何一种中的功能性而被实施,所述电路包括:可编程逻辑器件(“PLD”),如现场可编程门阵列(“FPGA”)、可编程阵列逻辑(“PAL”)器件、电可编程逻辑和存储器件以及标准的基于单元的器件,以及专用集成电路。用来实施DA管理器方面的一些其它可能性包括:具有存储器的微控制器(如EEPROM)、嵌入式微处理器、固件、软件等。此外,DA管理器的方面可实施在这样的微处理器中,这样的微处理器具有基于软件的电路仿真、离散逻辑(顺序的和组合的)、定制器件、模糊(神经)逻辑、量子器件和任何上述器件类型的混合。当然,基础器件技术可以以多种组件类型来提供,例如金属氧化物半导体场效应晶体管(“MOSFET”)技术,像互补金属-氧化物半导体(“CMOS”),双极技术,像发射极耦合逻辑(“ECL”),聚合物技术(例如,硅-共轭聚合物和金属-共轭聚合物-金属结构),混合的模拟和数字技术等。
应指出,在此公开的各种功能可以根据其行为、寄存器传递、逻辑组件和/或其它特性,使用硬件、固件的任何数目的组合来描述,并且/或者描述为在各种机器可读或计算机可读媒介中实施的数据和/或指令。在其中可实施这种格式化数据和/或指令的计算机可读媒介包括但不局限于各种形式的非易失性存储媒介(例如光、磁或半导体存储媒介)以及可用于通过无线、光或有线信令媒介或其任何组合来传递这种格式化数据和/或指令的载波。通过载波传递这种格式化数据和/或指令的实例包括但不局限于经由一个或多个数据传递协议(例如HTTP、FTP、SMTP等)在因特网和/或其它计算机网络上传递(上载、下载、电子邮件等)。
除非上下文中明确地需要,否则在所有描述和权利要求中,字眼“包括(comprise)”、“包括(comprising)”等应被理解为包括的(inclusive)意思,与排它的(exclusive)或穷举的(exhaustive)意思相对;也就是说,是“包括,但不局限于”的意思。使用单数或复数的字眼也分别包括复数或单数。此外,字眼“在此(herein)”、“在下(hereunder)”、“在以上(above)”、“在以下(below)”以及相似意思的词,当在本申请中被使用时,指的是作为一个整体的本申请而不是指本申请的任何特定的部分。当字眼“或”关于两个或多个项的列表而使用时,该字眼覆盖以下所有对该字眼的解释:该列表中的任何一个项,该列表中的所有项,以及该列表中的项的任何组合。
对DA管理器的所说明的实施例的以上描述不是旨在穷尽性的或将DA管理器限制于所公开的确切形式。尽管出于说明的目的,在此描述了DA管理器的特定实施例和实例,然而在DA管理器的范围内各种等效的修改是可能的,如相关领域的技术人员将认识到的。此处所提供的DA管理器的教导可应用于其它处理系统和方法,而不仅用于上述的存储器系统和方法。
以上描述的各种实施例的要素和动作可被组合以提供进一步的实施例。根据上面的详述,可进行对DA管理器的这些和其它改变。
一般来说,在下面权利要求中所用的术语将不被理解为将DA管理器限制于说明书和权利要求中所公开的特定实施例,而应理解为包括在权利要求下操作的所有处理系统。因此,DA管理器不为此公开所限制,而DA管理器的范围完全由权利要求确定。
尽管DA管理器的某些方面在下面以某些权利要求的形式来呈现,但是发明人设想了以任何数目的权利要求形式的DA管理器的各个方面。例如,尽管DA管理器的仅一个方面被描述为在机器可读媒介中实施,但是其它方面可同样在机器可读媒介中实施。因此,发明人保留在提交本申请之后增加附加权利要求以将这样的附加权利要求形式用于DA管理器的其它方面的权利。

Claims (35)

1.一种动态寻址方法,包括:
将存储在客户设备的设备存储器中的代码组织为多个软件组件;
标识包括在所述多个软件组件的每个中的一个或多个引用,其中每个引用是对代码的一个或多个其它软件组件的引用;
使用升级客户端接收与对所述多个软件组件中的一个或更多个软件组件的升级相关联的升级信息,其中所述升级客户端处理所述升级信息以对所述一个或更多个软件组件升级,并通过对包括至少一个第一和第二存储区的主机设备存储区执行顺序搜索,当新的软件组件的大小超过所搜索的存储区的可用块的大小时,所述升级客户端重写第一存储区以去除未用的存储器块,重新分配第一和第二存储区,将新的软件组件写到第二存储区,并更新向量表,来识别和保留用于所述升级的存储器块;以及
生成包括一个或多个链接以及与所述升级信息相关联的记录的并由所述升级导致的一个或更多个经修改的软件组件的位置改变的动态寻址管理器,其中每个链接形成软件组件中的每个标识的引用和对应于该标识的引用的所述其它软件组件之间的程序链接,所述动态寻址管理器包括作为集中跳表的向量表,以管理所述多个软件组件中的组件间函数调用和指令再导向,并且其中所述动态寻址管理器是在链接所述多个软件组件的过程中生成的,并与所述一个或更多个软件组件一起被加载到所述客户设备的存储器中。
2.权利要求1的方法,其中每个链接在所述动态寻址管理器中具有固定的地址。
3.权利要求1的方法,其中所述引用包括至少函数调用、全局变量引用和常变量引用之一。
4.权利要求1的方法,其中所述引用包括至少相对偏移跳转/分支指令和绝对偏移跳转/分支指令之一。
5.权利要求1的方法,其中所述引用包括至少全局常变量、全局读/写数据地址和全局零初始化数据地址之一。
6.权利要求1的方法,其中所述动态寻址管理器是使用分散加载文件生成的,所述分散加载文件分配地址并单独地集合代码和数据段。
7.权利要求6的方法,其中链接所述多个软件组件进一步包括:
将自第一软件组件的引用导向到所述向量表的条目;以及
使用该条目的信息将该引用再导向到第二软件组件。
8.权利要求7的方法,其中所述引用包括至少函数调用和变量引用之一。
9.权利要求1的方法,其中生成所述动态寻址管理器进一步包括:
生成所述动态寻址管理器的至少一个集中段;以及
将全局常变量分配给所述生成的集中段。
10.权利要求9的方法,其中链接所述多个软件组件进一步包括将对所述全局常变量的引用导向到对应于该全局常变量的集中段的地址。
11.权利要求9的方法,其中生成所述动态寻址管理器进一步包括将全局读/写数据地址分配给所述生成的集中段。
12.权利要求11的方法,其中链接所述多个软件组件进一步包括将对所述全局读/写数据地址的引用导向到对应于该全局读/写数据地址的集中段的地址。
13.权利要求9的方法,其中生成所述动态寻址管理器进一步包括将全局零初始化数据地址分配给所述生成的集中段。
14.权利要求13的方法,其中链接所述多个软件组件进一步包括将对所述全局零初始化数据地址的引用导向到对应于该全局零初始化数据地址的集中段的地址。
15.权利要求1的方法,进一步包括将所述动态寻址管理器存储在所述客户设备的一个或多个存储区中。
16.权利要求15的方法,其中所述存储区包括至少随机存取存储器和只读存储器之一中的区域。
17.权利要求1的方法,其中,
使用升级客户端接收与对所述多个软件组件中的一个或更多个软件组件的升级相关联的升级信息包括:使用升级客户端经由升级客户端与升级服务器的无线耦合接收升级文件;
所述升级客户端处理所述升级信息以对所述一个或更多个软件组件升级包括:所述升级客户端根据所述升级文件内容适当地升级所述多个软件组件的至少一个;以及
生成包括一个或多个链接以及与所述升级信息相关联的记录的并由所述升级导致的一个或更多个经修改的软件组件的位置改变的动态寻址管理器包括:通过升级所述动态寻址管理器来升级所述被升级代码的多个软件组件之间的链接。
18.权利要求1的方法,其中所述客户设备是至少蜂窝电话、便携式计算设备和个人数字助理之一。
19.一种动态寻址设备,包括:
用于将存储在客户设备的设备存储器中的代码组织为多个软件组件的装置;
用于标识包括在所述多个软件组件的每个中的一个或多个引用的装置,其中每个引用是对所述代码的一个或多个其它软件组件的引用;
用于使用升级客户端接收与对所述多个软件组件中的一个或更多个软件组件的升级相关联的升级信息的装置,其中所述升级客户端处理所述升级信息以对所述一个或更多个软件组件升级,并通过对包括至少一个第一和第二存储区的主机设备存储区执行顺序搜索,当新的软件组件的大小超过所搜索的存储区的可用块的大小时,所述升级客户端重写第一存储区以去除未用的存储器块,重新分配第一和第二存储区,将新的软件组件写到第二存储区,并更新向量表,来识别和保留用于所述升级的存储器块;以及
用于生成包括一个或多个链接以及与所述升级信息相关联的记录的并由所述升级导致的一个或更多个经修改的软件组件的位置改变的动态寻址管理器的装置,其中每个链接形成软件组件中的每个标识的引用和对应于该标识的引用的其它软件组件之间的程序链接,所述动态寻址管理器包括作为集中跳表的向量表,以管理所述经修改的软件组件中的组件间函数调用和指令再导向,并且其中所述动态寻址管理器是由用于链接所述多个软件组件的装置生成的,并与所述一个或更多个软件组件一起被加载到所述客户设备的存储器中。
20.权利要求19的设备,其中每个链接在所述动态寻址管理器中具有固定的地址。
21.权利要求19的设备,其中所述引用包括至少函数调用、全局变量引用和常变量引用之一。
22.权利要求19的设备,其中所述引用包括至少相对偏移跳转/分支指令和绝对偏移跳转/分支指令之一。
23.权利要求19的设备,其中所述引用包括至少全局常变量、全局读/写数据地址和全局零初始化数据地址之一。
24.权利要求19的设备,其中所述用于生成所述动态管理器的装置进一步包括用于使用分散加载文件的装置,所述分散加载文件分配地址并单独地集合代码和数据段。
25.权利要求24的设备,其中所述用于链接所述多个软件组件的装置进一步包括:
用于将自第一软件组件的引用导向到所述向量表的条目的装置;以及
用于使用该条目的信息将该引用再导向到第二软件组件的装置。
26.权利要求25的设备,其中所述引用包括至少函数调用和变量引用之一。
27.权利要求19的设备,其中所述用于生成所述动态寻址管理器的装置进一步包括:
用于生成所述动态寻址管理器的至少一个集中段的装置;以及
用于将全局常变量分配给所述生成的集中段的装置。
28.权利要求27的设备,其中所述用于链接所述多个软件组件的装置进一步包括用于将对所述全局常变量的引用导向到对应于该全局常变量的集中段的地址的装置。
29.权利要求27的设备,其中所述用于生成所述动态寻址管理器的装置进一步包括将全局读/写数据地址分配给所生成的集中段。
30.权利要求29的设备,其中所述用于链接所述多个软件组件的装置进一步包括将对所述全局读/写数据地址的引用导向到对应于该全局读/写数据地址的集中段的地址。
31.权利要求27的设备,其中所述用于生成所述动态寻址管理器的装置进一步包括将全局零初始化数据地址分配给所生成的集中段。
32.权利要求31的设备,其中所述用于链接所述多个软件组件的装置进一步包括将对所述全局零初始化数据地址的引用导向到对应于该全局零初始化数据地址的集中段的地址。
33.权利要求19的设备,还包括用于将所述动态寻址管理器存储在所述客户设备的一个或多个存储区中的装置。
34.权利要求33的设备,其中所述存储区包括至少随机存取存储器和只读存储器之一中的区域。
35.权利要求19的设备,其中,
所述用于使用升级客户端接收与对所述多个软件组件中的一个或更多个软件组件的升级相关联的升级信息的装置进一步用于:使用所述升级客户端经由所述升级客户端与升级服务器的无线耦合接收升级文件的装置;
处理所述升级信息以对所述一个或更多个软件组件升级的所述升级客户端包括:用于根据所述升级文件内容相适当地升级所述多个软件组件的至少一个的装置;以及
所述用于生成包括一个或多个链接以及与所述升级信息相关联的记录的并由所述升级导致的一个或更多个经修改的软件组件的位置改变的动态寻址管理器的装置进一步用于通过升级所述动态寻址管理器来升级所述被升级代码的多个软件组件之间的链接。
CN2004800311217A 2003-10-23 2004-10-22 使用集中动态寻址(da)管理器的动态寻址 Expired - Fee Related CN1973262B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US51376403P 2003-10-23 2003-10-23
US60/513,764 2003-10-23
PCT/US2004/035276 WO2005040988A2 (en) 2003-10-23 2004-10-22 Dynamic addressing (da) using a centralized da manager

Publications (2)

Publication Number Publication Date
CN1973262A CN1973262A (zh) 2007-05-30
CN1973262B true CN1973262B (zh) 2012-08-22

Family

ID=34520133

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004800311217A Expired - Fee Related CN1973262B (zh) 2003-10-23 2004-10-22 使用集中动态寻址(da)管理器的动态寻址

Country Status (6)

Country Link
US (1) US20050204351A1 (zh)
EP (1) EP1676195A4 (zh)
JP (1) JP2007511816A (zh)
KR (1) KR100871778B1 (zh)
CN (1) CN1973262B (zh)
WO (1) WO2005040988A2 (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2408658B (en) * 2003-11-25 2006-07-05 Surfkitchen Inc Communications system
US8347285B2 (en) * 2004-12-16 2013-01-01 Intel Corporation Embedded agent for self-healing software
US7200390B1 (en) * 2004-12-30 2007-04-03 Cellco Partnership Device software update transport and download
US20060184937A1 (en) * 2005-02-11 2006-08-17 Timothy Abels System and method for centralized software management in virtual machines
KR100747901B1 (ko) * 2005-07-18 2007-08-08 주식회사 팬택앤큐리텔 이동통신단말기의 실행 파일 압축 방법
US7735075B2 (en) 2005-12-01 2010-06-08 Samsung Electronics Co., Ltd. System and method for a pseudo dynamic link library (DLL) linker for a monolithic image in a wireless device
EP1806655A3 (en) * 2005-12-01 2009-02-25 Samsung Electronics Co., Ltd. System and method for providing monolithic image for use in a wireless device
KR101273914B1 (ko) * 2006-10-31 2013-06-12 에스케이플래닛 주식회사 플랫폼 라이브러리 다이나믹 링킹기능이구비된 단말장비 및 그 제어방법
US8572598B1 (en) * 2007-04-18 2013-10-29 Nvidia Corporation Method and system for upgrading software in a computing device
US9417851B2 (en) * 2009-05-13 2016-08-16 Adobe Systems Incorporated Location-based application development for runtime environments
US8429395B2 (en) 2009-06-12 2013-04-23 Microsoft Corporation Controlling access to software component state
US9160812B2 (en) * 2009-10-22 2015-10-13 Cellco Partnership Systems and methods for delivering an application over a mobile communications network
CN101916194B (zh) * 2010-06-01 2013-06-12 浙江大学 一种无线传感网节点程序的部署方法
JP5772127B2 (ja) * 2011-03-25 2015-09-02 富士通株式会社 仮想マシン管理方法、情報処理装置および仮想マシン管理プログラム
US8726258B2 (en) * 2011-04-14 2014-05-13 Phoenix Technologies Ltd. Supporting multiple hardware components in UEFI
US9116685B2 (en) * 2011-07-19 2015-08-25 Qualcomm Incorporated Table call instruction for frequently called functions
CN104395880B (zh) * 2013-01-25 2018-06-29 谷歌有限责任公司 用于管理数据重新安装的系统、方法和计算机程序产品
KR101907418B1 (ko) 2014-07-01 2018-10-12 한국전자통신연구원 동적 모듈, 이를 구비한 동적 업그레이드 장치 및 방법
DE102014117797A1 (de) * 2014-10-10 2016-04-14 Ebm-Papst Mulfingen Gmbh & Co. Kg Dynamisch adressierbares Master-Slave-System sowie Verfahren zum dynamischen Adressieren von Slave-Einheiten
CN105068831A (zh) * 2015-07-30 2015-11-18 深圳市创凯电子有限公司 程序升级方法及装置
JP6545417B2 (ja) * 2017-02-28 2019-07-17 三菱電機株式会社 シミュレーション装置、シミュレーション方法およびシミュレーションプログラム
US11256522B2 (en) * 2019-11-22 2022-02-22 Advanced Micro Devices, Inc. Loader and runtime operations for heterogeneous code objects

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047362A (en) * 1994-06-30 2000-04-04 Sun Microsystems, Inc. Delayed removal of address mapping for terminated processes
US6212632B1 (en) * 1998-07-31 2001-04-03 Flashpoint Technology, Inc. Method and system for efficiently reducing the RAM footprint of software executing on an embedded computer system

Family Cites Families (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4875159A (en) * 1987-12-22 1989-10-17 Amdahl Corporation Version management system using plural control fields for synchronizing two versions of files in a multiprocessor system
DE59005294D1 (de) * 1989-11-29 1994-05-11 Siemens Ag Verfahren zur dynamischen bindung von definierbaren programmelementen eines interaktiven datenverarbeitungssystems.
JPH03210631A (ja) * 1990-01-16 1991-09-13 Nec Corp モジュール間結合方式
US5479654A (en) * 1990-04-26 1995-12-26 Squibb Data Systems, Inc. Apparatus and method for reconstructing a file from a difference signature and an original file
JPH0573292A (ja) * 1991-09-12 1993-03-26 Nec Software Ltd 読込み専用記憶装置のプログラム更新方式およびプログラム実行方式
US6249818B1 (en) * 1993-06-30 2001-06-19 Compaq Computer Corporation Network transport driver interfacing
US5444764A (en) * 1993-07-01 1995-08-22 Motorola, Inc. Method of providing a subscription lock to a radiotelephone system
US5806078A (en) * 1994-06-09 1998-09-08 Softool Corporation Version management system
US5742905A (en) * 1994-09-19 1998-04-21 Bell Communications Research, Inc. Personal communications internetworking
US5574906A (en) * 1994-10-24 1996-11-12 International Business Machines Corporation System and method for reducing storage requirement in backup subsystems utilizing segmented compression and differencing
US5634052A (en) * 1994-10-24 1997-05-27 International Business Machines Corporation System for reducing storage requirements and transmission loads in a backup subsystem in client-server environment by transmitting only delta files from client to server
US5729735A (en) * 1995-02-08 1998-03-17 Meyering; Samuel C. Remote database file synchronizer
US5805899A (en) * 1995-07-06 1998-09-08 Sun Microsystems, Inc. Method and apparatus for internal versioning of objects using a mapfile
US5729743A (en) * 1995-11-17 1998-03-17 Deltatech Research, Inc. Computer apparatus and method for merging system deltas
US5864757A (en) * 1995-12-12 1999-01-26 Bellsouth Corporation Methods and apparatus for locking communications devices
US5758062A (en) * 1996-04-30 1998-05-26 Oracle Corporation Method and apparatus for regression testing of application logic
US5832520A (en) * 1996-07-03 1998-11-03 Miller, Call, Plauck And Miller Automatic file differencing and updating system
US6308061B1 (en) * 1996-08-07 2001-10-23 Telxon Corporation Wireless software upgrades with version control
US6374250B2 (en) * 1997-02-03 2002-04-16 International Business Machines Corporation System and method for differential compression of data from a plurality of binary sources
US5859565A (en) * 1997-03-10 1999-01-12 Reiffin; Martin Cathode-follower high-fidelity power amplifier
US5938766A (en) * 1997-03-21 1999-08-17 Apple Computer, Inc. System for extending functionality of a digital ROM using RAM/ROM jump tables and patch manager for updating the tables
US6314565B1 (en) * 1997-05-19 2001-11-06 Intervu, Inc. System and method for automated identification, retrieval, and installation of multimedia software components
CA2295479C (en) * 1997-07-15 2003-12-30 Pocket Soft, Inc. System for finding differences between two computer files and updating the computer files
US6785786B1 (en) * 1997-08-29 2004-08-31 Hewlett Packard Development Company, L.P. Data backup and recovery systems
US6157924A (en) * 1997-11-07 2000-12-05 Bell & Howell Mail Processing Systems Company Systems, methods, and computer program products for delivering information in a preferred medium
US6041333A (en) * 1997-11-14 2000-03-21 Microsoft Corporation Method and apparatus for automatically updating a data file from a network
US6018747A (en) * 1997-11-26 2000-01-25 International Business Machines Corporation Method for generating and reconstructing in-place delta files
US6259958B1 (en) * 1997-12-19 2001-07-10 Honeywell International Inc. Call mechanism for static and dynamic linked functions within an object-oriented controller using heterogeneous development tool sets
US6029000A (en) 1997-12-22 2000-02-22 Texas Instruments Incorporated Mobile communication system with cross compiler and cross linker
US6076148A (en) * 1997-12-26 2000-06-13 Emc Corporation Mass storage subsystem and backup arrangement for digital data processing system which permits information to be backed up while host computer(s) continue(s) operating in connection with information stored on mass storage subsystem
US6035423A (en) * 1997-12-31 2000-03-07 Network Associates, Inc. Method and system for providing automated updating and upgrading of antivirus applications using a computer network
US6199202B1 (en) * 1998-01-06 2001-03-06 Hewlett-Packard Company Method and apparatus for the inter-operation of differing architectural and run time conventions
US6078967A (en) * 1998-02-25 2000-06-20 Hewlett-Packard Company System for upgrading functionality of a peripheral device utilizing a removable ROM having relocatable object code
US6052531A (en) * 1998-03-25 2000-04-18 Symantec Corporation Multi-tiered incremental software updating
US20010049263A1 (en) * 1998-03-26 2001-12-06 Xiang Zhang Automatic station/system configuration monitoring and error tracking system and software upgrade tool kit
US6088694A (en) * 1998-03-31 2000-07-11 International Business Machines Corporation Continuous availability and efficient backup for externally referenced objects
US6216175B1 (en) * 1998-06-08 2001-04-10 Microsoft Corporation Method for upgrading copies of an original file with same update data after normalizing differences between copies created during respective original installations
US6233589B1 (en) * 1998-07-31 2001-05-15 Novell, Inc. Method and system for reflecting differences between two files
GB2343768A (en) * 1998-08-17 2000-05-17 Connected Place Limited Merging a sequence of delta files
US6167258A (en) * 1998-10-09 2000-12-26 Cleveland Medical Devices Inc. Programmable wireless data acquisition system
US6145012A (en) * 1998-10-14 2000-11-07 Veritas Software Corporation Apparatus and method for efficiently updating files in computer networks
US6226784B1 (en) * 1998-10-14 2001-05-01 Mci Communications Corporation Reliable and repeatable process for specifying developing distributing and monitoring a software system in a dynamic environment
US6163811A (en) * 1998-10-21 2000-12-19 Wildseed, Limited Token based source file compression/decompression and its application
US6457175B1 (en) * 1998-11-09 2002-09-24 Tut Systems, Inc. Method and apparatus for installing a software upgrade within a memory resource associated with a computer system
US6327671B1 (en) * 1998-11-18 2001-12-04 International Business Machines Corporation Delta compressed asynchronous remote copy
US6349311B1 (en) * 1999-02-01 2002-02-19 Symantec Corporation Storage of reverse delta updates
US6594822B1 (en) * 1999-02-19 2003-07-15 Nortel Networks Limited Method and apparatus for creating a software patch by comparing object files
US6401239B1 (en) * 1999-03-22 2002-06-04 B.I.S. Advanced Software Systems Ltd. System and method for quick downloading of electronic files
US6466999B1 (en) * 1999-03-31 2002-10-15 Microsoft Corporation Preprocessing a reference data stream for patch generation and compression
GB2349485B (en) * 1999-04-23 2003-12-10 Ibm Application management
US6574657B1 (en) * 1999-05-03 2003-06-03 Symantec Corporation Methods and apparatuses for file synchronization and updating using a signature list
IL129947A (en) * 1999-05-13 2003-06-24 Tadiran Telecom Business Syste Method and apparatus for downloading software into an embedded system
JP2001094498A (ja) * 1999-09-17 2001-04-06 Seiko Epson Corp 無線通信機器
JP4261800B2 (ja) * 2000-01-10 2009-04-30 アイアン マウンテン インコーポレイテッド クライアントサーバー環境における差分バックアップシステムの管理方法
US6694336B1 (en) * 2000-01-25 2004-02-17 Fusionone, Inc. Data transfer and synchronization system
US6671757B1 (en) * 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
CA2398838A1 (en) * 2000-03-01 2001-09-07 Computer Associates Think, Inc. Method and system for updating an archive of a computer file
US6651190B1 (en) * 2000-03-14 2003-11-18 A. Worley Independent remote computer maintenance device
US6662163B1 (en) * 2000-03-30 2003-12-09 Voxware, Inc. System and method for programming portable devices from a remote computer system
US6871344B2 (en) * 2000-04-24 2005-03-22 Microsoft Corporation Configurations for binding software assemblies to application programs
US6898564B1 (en) * 2000-05-23 2005-05-24 Microsoft Corporation Load simulation tool for server resource capacity planning
US6535894B1 (en) * 2000-06-01 2003-03-18 Sun Microsystems, Inc. Apparatus and method for incremental updating of archive files
JP2004501451A (ja) * 2000-06-22 2004-01-15 シンクロロジック インコーポレイテッド ファイル差分を使用するファイル送信システムおよび方法
US6669564B1 (en) * 2000-06-27 2003-12-30 Electronic Arts Inc. Episodic delivery of content
GB2369213B (en) * 2000-07-04 2005-02-23 Honda Motor Co Ltd Electronic file management system
US6470329B1 (en) * 2000-07-11 2002-10-22 Sun Microsystems, Inc. One-way hash functions for distributed data synchronization
US20020120697A1 (en) * 2000-08-14 2002-08-29 Curtis Generous Multi-channel messaging system and method
JP2004507145A (ja) * 2000-08-15 2004-03-04 シーゲイト テクノロジー エルエルシー オペレーティング・コードのデュアル・モード圧縮
US7058941B1 (en) * 2000-11-14 2006-06-06 Microsoft Corporation Minimum delta generator for program binaries
KR100520058B1 (ko) * 2000-12-13 2005-10-11 삼성전자주식회사 디바이스드라이버 업그레이드 시스템 및 디바이스드라이버업그레이드 방법
US6954765B2 (en) * 2000-12-30 2005-10-11 Intel Corporation Updating a file in a fragmented file system
US20020099726A1 (en) * 2001-01-23 2002-07-25 International Business Machines Corporation Method and system for distribution of file updates
US20020129107A1 (en) * 2001-03-12 2002-09-12 Loughran Stephen A. Method and apparatus for automatic content handling
US6442660B1 (en) * 2001-03-21 2002-08-27 Sharp Laboratories Of America, Inc. Dynamic system relocation based on availability of system memory
US6912591B2 (en) * 2001-05-02 2005-06-28 Science Application International Corporation System and method for patch enabled data transmissions
WO2003034651A1 (fr) * 2001-10-12 2003-04-24 Matsushita Electric Industrial Co., Ltd. Appareil de traitement de contenu et programme de protection de contenu
US20030074487A1 (en) * 2001-10-17 2003-04-17 Tankut Akgul Dynamic operating system
US7483970B2 (en) * 2001-12-12 2009-01-27 Symantec Corporation Method and apparatus for managing components in an IT system
US7600021B2 (en) * 2002-04-03 2009-10-06 Microsoft Corporation Delta replication of source files and packages across networked resources
US6925467B2 (en) * 2002-05-13 2005-08-02 Innopath Software, Inc. Byte-level file differencing and updating algorithms
JP4214712B2 (ja) * 2002-05-16 2009-01-28 株式会社日立製作所 データベースのページ確保処理方法
US6976252B2 (en) * 2002-05-17 2005-12-13 Hewlett-Packard Development Company, L.P. Systems and methods for driver installation
US20040031027A1 (en) * 2002-08-08 2004-02-12 Hiltgen Daniel K. System for updating diverse file versions
US7096311B2 (en) * 2002-09-30 2006-08-22 Innopath Software, Inc. Updating electronic files using byte-level file differencing and updating algorithms
US6836657B2 (en) * 2002-11-12 2004-12-28 Innopath Software, Inc. Upgrading of electronic files including automatic recovery from failures and errors occurring during the upgrade
US7007049B2 (en) * 2002-11-18 2006-02-28 Innopath Software, Inc. Device memory management during electronic file updating
US7844734B2 (en) * 2002-11-18 2010-11-30 Innopath Software, Inc. Dynamic addressing (DA) using a centralized DA manager
US7003534B2 (en) * 2002-11-18 2006-02-21 Innopath Software, Inc. Generating difference files using module information of embedded software components
US7320010B2 (en) * 2002-11-18 2008-01-15 Innopath Software, Inc. Controlling updates of electronic files
US20040098361A1 (en) * 2002-11-18 2004-05-20 Luosheng Peng Managing electronic file updates on client devices
US20040098421A1 (en) * 2002-11-18 2004-05-20 Luosheng Peng Scheduling updates of electronic files
US7099884B2 (en) * 2002-12-06 2006-08-29 Innopath Software System and method for data compression and decompression
US20040193643A1 (en) * 2003-03-27 2004-09-30 O'brien John C. Method and system for tracking contracts
US20050010870A1 (en) * 2003-07-09 2005-01-13 Jinsheng Gu Post-processing algorithm for byte-level file differencing
US20050010576A1 (en) * 2003-07-09 2005-01-13 Liwei Ren File differencing and updating engines

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047362A (en) * 1994-06-30 2000-04-04 Sun Microsystems, Inc. Delayed removal of address mapping for terminated processes
US6212632B1 (en) * 1998-07-31 2001-04-03 Flashpoint Technology, Inc. Method and system for efficiently reducing the RAM footprint of software executing on an embedded computer system

Also Published As

Publication number Publication date
JP2007511816A (ja) 2007-05-10
WO2005040988A3 (en) 2006-09-14
KR100871778B1 (ko) 2008-12-05
CN1973262A (zh) 2007-05-30
KR20060085698A (ko) 2006-07-27
EP1676195A4 (en) 2007-08-29
WO2005040988A2 (en) 2005-05-06
EP1676195A2 (en) 2006-07-05
US20050204351A1 (en) 2005-09-15

Similar Documents

Publication Publication Date Title
CN1973262B (zh) 使用集中动态寻址(da)管理器的动态寻址
CN1781075B (zh) 电子文件更新期间的设备存储器管理
US7313577B2 (en) Generating difference files using module information of embedded software components
US7844734B2 (en) Dynamic addressing (DA) using a centralized DA manager
US7716414B2 (en) Method for updating a mobile device using an update package obtained from a remote server
TWI439931B (zh) 用於增加三角差動效能之目的碼之產生
US7096311B2 (en) Updating electronic files using byte-level file differencing and updating algorithms
US8255892B2 (en) Flash memory programming
CN1641583B (zh) 自描述软件映象更新组件
US7757296B2 (en) Method of managing software components that are integrated into an embedded system
TW543002B (en) Method and apparatus for automatically installing and configuring software on a computer
US20060155737A1 (en) Method and system for identifying and obtaining computer software from a remote computer
CN101026825A (zh) 用于补丁最小化工具的系统和方法
CN107943504A (zh) 一种嵌入式系统中软件模块的动态升级方法
WO2005074621A2 (en) Dynamic addressing (da) using a centralized da manager
CN111338655A (zh) 一种安装包分发方法和系统
CN110334031A (zh) 内存分配代码检测方法、装置、计算机设备及存储介质
KR100342833B1 (ko) 모듈별 업데이트 장치 및 그 방법
CN116991411A (zh) 程序融合方法、装置、设备、存储介质及计算机程序产品

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20161130

Address after: California, USA

Patentee after: QUALCOMM Inc.

Address before: California, USA

Patentee before: QUALCOMM TECHNOLOGIES Inc.

Effective date of registration: 20161130

Address after: California, USA

Patentee after: QUALCOMM TECHNOLOGIES Inc.

Address before: California, USA

Patentee before: INNOPATH SOFTWARE, Inc.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120822

Termination date: 20181022