生成增量程序更新的制作方法

文档序号:6570358阅读:233来源:国知局

专利名称::生成增量程序更新的制作方法
技术领域
:本发明涉及更新存储器图像模块,所述存储器图像模块被存储在与目标处理装置相关联的存储介质中。本发明尤其涉及生成更新的存储器图像,所述存储器图像要被载入其上存储了当前存储器图像的存储介质中,例如处理装置的存储器。
背景技术
:很多现代电子装置,例如嵌入式装置,由存储在闪存中的软件控制。闪存是一类经常在电子装置中使用的存储器,因为它允许进行多次重写。然而,写操作每一次被限制在被称作页的整个存储器扇区。当前闪存的典型页大小是64k字节。例如为了向软件添加新的特征和/或校正当前软件版本中的错误,当存储在电子装置闪存中的软件被更新时,闪存的一些或全部存储器扇区被重写/重编程或"再闪光(re-flashed)"。通常,为了使安装软件更新所需的时间和能量消耗最少,希望使在软件更新期间被重写的闪存页数最少。特别地,其中关心更新时间的一种应用是移动终端的空中下载(over-the-air,OTA)更新,例如移动终端固件的更新,所谓的固件空中下载(F0TA)更新。为了提供资源高效的更新机制,已知分配增量更新,即仅仅把对当前图像的修改分配到目标装置,而不是分配整个更新图像。修改通常是指德耳塔(delta)文件。通常,在这种系统中,运行在移动终端上的更新代理将接收到的修改应用到当前图像上,所述当前图像因此4t变换为更新版本。为了减小当通过通信信道发送德耳塔文件时所需的加载/传输带宽,和/或减小在目标装置中的加载过程期间的处理时间和存储需求,通常希望减小德耳塔文件的大小。并且,通常希望减小为了执行软件更新在移动终端中所需的存储容量和计算资源的数量。终端可能在更新过程期间不可操作是这种更新系统的另一普遍问题。因此,希望减小再闪光存储器所需的时间,并因此减小系统的停机时间(downtime)。为了本说明书的目的,存储介质可在其上存储有一个或更多可^R同时或单独更新的软件模块,例如较大软件系统的不同部件和/或不同单独软件应用。对应于特定软件^t块的二进制存储器内容部分也将被称作存储器图像模块。在已知的德耳塔更新系统中,关于软件模块如何被放置在目标装置存储器中的信息通常对德耳塔文件生成工具可用。特别地,德耳塔文件生成工具通常假设要被更新的存储器图像模块的起始地址已知并且固定,就像当存储器图像包括单个固定图像模块,所述单个固定图像模块总是被定位在同一起始地址的情况一样。然而,当存储存储器包含可以被定位在每个目标装置存储器中不同起始地址上的模块时,出现特殊的问题,使得德耳塔文件生成工具不知道该模块的实际起始地址。特别地,在这种情况下,当前安装的软件模块的准确二进制图像对于生成更新包的离线工具未知,并且不同目标装置上的单个软件模块版本的图像很可能不同。并且,新图像将要被加载的位置不一定与所安装图像的位置相同,因为例如空间要求会迫使目标装置选择不同的位置。因此,这种软件模块的二进制图像完全仅仅在被加载到存储器之后确定。通常,这种模块由目标装置以可再定位的版本接收,例如以目标码的格式,所述格式包括对存储器地址的符号的/未解析的参照。为了本说明书的目的,这种模块也将被称作加载模块。加载模块中的符号参照由目标装置在加载过程期间解析。不同的符号参照可能需要不同的解析,例如绝对参照与相对参照不同地被解析。因此,加载模块具有与其相关联的所谓再定位指令,所述指令指导解析过程如何为各个符号参照计算实际的存储器地址。US专利no.6,230,316公开了在台式计算机系统上增量更新文件的方法。在某些情况下,不可能或不希望将可执行文件加载到其原始预定的位置上。可执行代码的起始地址然后被改变,过程被称作重定位基址(rebasing)。重定位基址在软件;波安装到计算机上之后在目标系统上说是未知的:特别地,桌面系统的可执行文件典型地被存储在次要(secondary)存储器中,典型地是硬盘,并且在文件的一部分被执行之前,其被从次要存储器加载到典型地是随机存取存储器(RAM)的主要存储器。没有被复制到主要存储器的文件部分包含重定位信息,所述重定位信息列出依赖于位置的参照。重定位基址文件时,重定位信息被使用。重定位信息还可以用于恢复重定位基址过程,得到可能对于离线工具已知的正则(canonical)形式。上述现有4支术方法公开了一种在重定位基址到预先确定的基地址的形式。在目标系统上,安装版本在德耳塔文件被应用之前被引入相同的正则形式,且更新版本被生成,其接下来可被重定位基址为新的基地址。尽管现有技术的方法提供了在台式计算机系统上增量更新重定位基址文件的方法,但是在提供解决上述一般性问题并适用于由嵌入式软件控制的便携式装置,诸如移动终端的增量更新系统方面仍存在问题。特别地,与台式系统相反,嵌入式系统中使用的二进制图像通常被"在适当位置"执行,即其被存储在永久性存储器中并从同一存储器执行。上述现有技术方法对嵌入式系统的应用将会需要除了可执行代码,也需要存储在目标装置中的重定位信息。然而,重定位信息的大小可能很重要,有可能甚至与存储器图像本身的顺序相同。增加的存储器脚注的成本对大批量生产不利。
发明内容上述和其它问题由生成德耳塔文件的方法解决,该德耳塔文件包括用于使目标处理装置将当前的存储器图像模块变换为更新的存储器图像模块的更新指令;该方法包括-将第一存储器地址的参数化表示合并到德耳塔文件中,该参数化表示关于至少当前存储器图像模块在存储器空间中的位置和更新的存储器图像^t块在存储器空间中的位置来说是参数化的;和-将参数解析指令合并到德耳塔文件中。因此,这里所述的方法生成参数德耳塔文件,即未被完全指定但关于目标指定数据被参数化的德耳塔文件。参数化的德耳塔文件被从生成该德耳塔文件的系统传送到目标系统,例如移动终端。当德耳塔文件被应用到目标系统上的安装的存储器图像时,相应的参数值神支分配给参数。这样可以使用同样的与其被应用在哪里和什么环境中无关的德耳塔更新包。并且,一旦参数值已知,参数化的德耳塔文件可被直接应用到安装图像,而无需在安装之前将安装图像变换为正则形式。因此,这里所描述的参数化德耳塔更新程序的好处在于,其提供安装的加载模块到较新版本的直接更新,而不必首先卸载、重定位基址或重新排列旧版本。因此,这里所述的方法提供了存储器高效的更新过程。特别地,尽管上面现有技术的系统需要完全重定位信息和要被重定位基址的文件一起存储,没有重定位信息需要被存储在目标系统上,所述目标系统允许安装版本重新变换为正则形式。在这里所述方法的实施例中,足够保持使参照进入到存储器模块中/从存储器模块中引出参照。并且,在更新过程期间,在安装期间所需的暂时存储器量减少,因为没有安装版本的正则形式需要由目标装置生成。这里所述方法的另一个优点是,加载才莫块可以被简单地更新,而不涉及来自任何操作系统加载器过程等等。特别地,更新可以由在适当位置生成更新存储器图像的更新代理完成。因此,该过程可被应用到目标系统的固件,即使如果该固件在适当的位置被执行,因为该固件不需要在更新过程期间运4亍。在一个实施例中,该方法包括由包括对存储器地址的符号参照的当前和更新的存储器图像模块的可重定位版本,和由用于当前和更新的存储器图像模块的各个可重定位版本中所述符号参照的当前和更新的重定位指令而生成德耳塔文件。因此,德耳塔文件被生成为关于反映存储器图像的可重定位版本之间的修改,所述可重定位版本即其中对存储器地址的符号参照尚未被解析的版本,由此使得可重定位版本能够被加载到不同的存储器位置上。当前和更新的存储器图像模块的可重定位版本可以包括结果代码(objectcode),即计算机可读程序代码,通常用二进制机器语言表达,这通常是给定翻译过程的输出,通常是指汇编(compilation),其中输出在理论上易于由计算机执行。可重定位加载模块可包括符号参照,所述符号参照是指加载模块中的其它位置或者甚至是指其它加载模块,例如被在任何地方定义的函数、变量等。特别地,可重定位加载模块通常包括符号参照和相应的重定位位置,后者包括关于符号参照解析的指令。可重定位模块的一个有趣的性质是,起始位置、某些位置或者所有的被参照符号都尚未被确定。在一个实施例中,生成德耳塔文件进一步包括比较当前和更新的存储器图像模块的可重定位版本,以便识别至少一个共同子串;并且比较包括,通过比较所述符号参照和相应的解析指令来比较符号参照。因此,当比较当前和更新的版本时,德耳塔文件生成过程单独处理符号参照,由此改善德耳塔生成的性能,特别是减小得到的更新包的大小。特别地,在一个实施例中,比较符号参照包括,只有在所述符号参照在当前和更新的存储器图像模块的可重定位版本相等,并且相应的用于所述符号参照的当前和更新的解析指令相等的情况下,确定符号参照为相等。在一些实施例中,该方法进一步包括,响应于当前和更新的存储器图像^t块的可重定位版本中共同子串的识别-比较与添加指令和复制指令相关联的各个大小,所述添加指令用于使目标处理装置将所识别的共同子串添加到更新的存储器图像模块,所述复制指令用于使目标处理装置将所识别的共同子串从当前的存储器图像模块复制到更新的存储器图像模块,其中比较各个大小包括,比较添加和复制指令的各自大小和各个参数解析指令的各自大小,所述各个参数解析指令用于被包括在共同子串中的符号参照(如果有的话),以便确定各个大小中最小大小的一个;和响应于比较结果,生成对应于所确定的最小大小的添加指令或复制指令。因此,无益的复制操作可以由添加操作来代替。特别地,为了确定是选择复制还是添加操作,不但考虑子串的大小、实际复制和添加指令的大小,还要考虑参数解析指令的大小,由此得到更加资源高效的德耳塔文件。在一些实施例中,该方法包括预处理步骤、德耳塔文件生成步骤和后处理步*,其中预处理步骤包括-生成当前和更新的存储器图像模块的各个可重定位版本的各个正则表示,其中对存储器地址的符号参照用预先确定的存储器内容代替;和-将关于所代替的符号参照的信息转送到后处理步骤;其中德耳塔文件生成步骤包括由可重定位的当前和更新的存储器图像模块的正则表示生成德耳塔文件;且其中后处理步骤包括由所转送的关于代替的符号参照的信息和由生成的德耳塔文件生成参数解析指令。因此,该方法可以基于常规的德耳塔文件生成工具执行,由此避免了对德耳塔文件生成工具进行昂贵修改的需要。在一些实施例中,当前的存储器图像模块被存储在与目标处理装置相关联的存储介质中,例如处理装置的存储器。在一些实施例中,更新的存储器图像模块包括至少一个对第一存储器地址的参照。如上所述,德耳塔文件关于在基线版本存储器中的实际位置和更新的存储器图像模块在存储器空间中的位置而被参数化。更新的存储器图像的位置可以是目标装置确定加载更新的存储器图像模块所处的起始地址。并且,德耳塔文件可以关于特定目标系统所特有的附件信息而被参数化。在一个实施例中,更新指令关于如下参数而被参数化当前存储器图像模块在存储器空间中的位置、更新的存储器图像模块在存储器空间中的位置、由更新的存储器图像模块所参照的每个地址值,该地址值在更新的存储器图像模块的外部,由此提供基于不多于三个参数的高效的参数更新系统。因此,在一个实施例中,目标系统上的加载过程确定/获得当前存储器图像模块在存储器空间中的位置和更新的存储器图像的相应位置。基于这些参数值,加载过程直接由当前的存储器图像模块和由接收的参数化德耳塔文件生成更新的存储器图像模块。其它优选实施例在从属权利要求中被揭露。注意到,上述方法的特征和下面的特征可以用软件执行,并在数据处理系统或由诸如计算机可执行指令的程序代码装置的执行引起的其它处理装置上执行。这里和下面,术语处理装置包括适用于执行上述功能的任意电路和/或装置。特别地,术语处理装置包括通用或专用可编程微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、专用电子电路等,或者它们的组合。例如,程序代码装置可通过计算机网络,从存储介质或其它计算机/计算装皇而被加载到存储器中,诸如随机存取存储器(RAM)。可替换地,所述特征可以由硬布线电路而不是软件或与软件的组合来执行。本发明可以以不同方式扭j亍,包括上面和下面所述的方法、加载更新的存储器图像的方法、数据处理系统和其它产品装置,每一种带来与首先提到的方法相联系地描述的一个或更多益处和优点,并且每一种具有对应于与首先提到的方法相联系地描述和/或在从属权利要求中揭示的优选实施例的一个或更多优选实施例。特别地,根据将更新的存储器图像模块加载到存储介质上的方法的一个方面,所述存储介质具有存储在其上的当前存储器图像模块,包括-接收包括更新指令的德耳塔文件,其中更新指令包括至少第一存储器地址的参数化表示,该参数化表示关于至少当前存储器图像^t块在存储器空间中的位置和更新的存储器图像模块在存储器空间中的位置来说是参数化的;并且其中德耳塔文件进一步包括参数解析指令;-响应于所接收的更新指令和参数解析指令,将当前的存储器图像模块变换为更新的存储器图像模块。利用更新的存储器图像模块,执行当前存储器图像模块(该当前存储器图像模块存储在与目标处理装置相关联的存储介质中)的德耳塔更新的整个方法可因此包括生成德耳塔文件,所述德耳塔文件包括适用于使目标处理装置将当前的存储器图像模块变换为更新的存储器图像模块的更新指令;其中所述更新指令包括第一存储器地址的参数化表示,该参数化表示关于至少当前存储器图像模块在存储器空间中的位置和更新的存储器图像模块在存储器空间中的位置来说是参数的;并且其中德耳塔文件进一步包括参数解析指令;-将所述生成的德耳塔文件发送到目标处理装置;-响应于接收的更新指令和参数解析指令,将当前的存储器图像模块变换为更新的存储器图像模块。在一些实施例中,参数解析指令适用于使得目标处理装置确定当前存储器图像模块在存储器空间中的位置和更新的存储器图像模块在存储器空间中的位置的值,并由参数化表示和所确定的值来确定第一存储器地址的地址值。因此,在一些实施例中,变换包括确定当前存储器图像模块在存储器空间中的位置和更新的存储器图像模块在存储器空间中的位置的值,并由参数化表示和所确定的值来确定第一存储器地址的地址值。在一些实施例中,该方法进一步包括将更新的存储器图像模块存储在永久性存储器中。在一些实施例中,该方法进一步包括执行来自永久性存储器的更新的程序代码。当该方法进一步包括确定/获得当前存储器图像模块在存储器空间中的位置和更新的存储器图像模块在存储器空间中的位置时,目标系统在安装时向确定更新的存储器图像模块的位置。在一些实施例中,该方法进一步包括确定/获得全局符号表,该全局符号表包括至少一个由更新的存储器图像模块寻址的地址值,该地址值在更新的存储器图像模块外部。因此,如果要被更新的加载模块包括对加载^t块外部的存储器地址,例如其它加载才莫块中地址的参照,则这种参照在德耳塔文件生成期间被参数化,并且这些参数的实际值由目标系统上的加载过程确定。因此,要被安装的加载模块参照的其它加载模块的位置不需要被生成德耳塔文件的离线工具知道。这里所述的参数化德耳塔更新过程的另一优点是,它不需要为所有参照存储重定位信息。这足够用于维持全局符号列表,即与外部参照有关的符号。在一些实施例中,全局符号表包括由其它存储器图像模块寻址的当前存储器图像模块内的至少一个当前地址值,并且本方法包括利用更新的存储器图像模块内相应的更新地址值来更新当前地址值。因此,全局符号表利用更新的加载模块的符号参照的更新值来更新,所述更新的加载模块是从其它加载模块参照,如果有的话,由此允许对参照当前更新的^t块的任意其它加载^t块进行更新。因此,在一些实施例中,该方法进一步包括将其它存储器图像模块中参照当前地址值的所有参照由所述当前地址值更新为所述更新的地址值。在一些实施例中,该方法进一步包括提供用于每个存储器图像模块的引出参照的列表,每个引出参照的列表包括从相应存储器图像模块寻址的全局符号的列表,该全局符号在存储器图像模块外部。因此,用于更新全局符号的高效机制被提供。在一些实施例中,当前和更新的存储器图像模块的可重定位版本包括结果代码格式的程序代码。才艮据另一个方面,数据处理系统可适当编程,以扭J亍上面和下面所述方法的步骤。根据另一个方面,计算机程序产品包括程序代码装置,适用于当所述程序代码装置被在数据处理系统上执行时,使得数据处理系统能够执行上面和下面所述的方法。计算机程序产品可以体现为其上存储有所述程序代码装置的计算机可读介质,诸如光盘、硬盘、软盘、磁带、CDR0M、闪存、记忆棒和/或其它类型的磁和/或光存储介质。根据另一个方面,处理装置包括用于存储当前存储器图像模块的存储介质;用于接收德耳塔文件的通信接口,德耳塔文件包括更新指令,更新指令包括第一存储器地址的参数化表示,参数化表示关于至少当前存储器图像模块在存储器空间中的位置和更新的存储器图像模块在存储器空间中的位置来说是参数化的;并且其中德耳塔文件进一步包括参数解析指令;并且处理装置适用于响应于接收的更新指令和参数解析指令,将当前的存储器图像模块变换为更新的存储器图像模块。在一些实施例中,处理装置进一步适用于将更新的存储器图像模块存储在永久性存储器中。在一些实施例中,处理装置进一步适用于执行来自于永久性存储器的更新的程序代码。在一些实施例中,处理装置进一步适用于确定/获得当前存储器图像模块在存储器空间中的位置和更新的存储器图像模块在存储器空间中的位置。在一些实施例中,处理装置进一步适用于确定/获得全局符号表,该全局符号表包括至少一个由更新的存储器图像模块寻址的地址值,该地址值在更新的存储器图像模块外部。在一些实施例中,全局符号表包括至少一个由其它存储器图像^t块寻址的当前存储器图像模块内的当前地址值,且处理装置进一步适用于利用更新的存储器图像模块内的相应更新的地址值来更新当前的地址值。在一些实施例中,处理装置进一步适用于,将存储在存储介质中的其它存储器图像模块中参照当前地址值的所有参照,由所述当前地址值更新为所述更新的地址4直。在一些实施例中,处理装置已经存储了用于每个存储器图像模块的引出参照的列表,每个引出参照的列表包括从相应存储器图像模块寻址的全局符号的列表,并且该全局符号在存储器图像^t块的外部。用于生成德耳塔文件的系统,该德耳塔文件包括用于使目标处理装置将当前的存储器图像模块变换为更新的存储器图像模块的更新指令,包括-存储装置,用于存储对应于当前存储器图像模块的当前软件版本的表示;-处理装置,适用于生成包括第一存储器地址的参数化表示的德耳塔文件,该参数化表示关于至少当前存储器图像模块在存储器空间中的位置和更新的存储器图像^t块在存储器空间中的位置来说是参数化的;还包括德耳塔文件中的参数解析指令。在一些实施例中,处理装置进一步适用于由包括对存储器地址的符号参照的当前和更新的存储器图像模块的可重定位版本,和由用于当前和更新的存储器图像模块的各个可重定位版本中所述符号参照的当前和更新的重定位指令而生成德耳塔文件。在一些实施例中,处理装置进一步适用于比较当前和更新的存储器图像^t块的可重定位版本,以便识别至少一个共同子串;并且比较包括,通过比较所述符号参照和相应的解析指令来比较符号参照。在一些实施例中,处理装置进一步适用于,只有在所述符号参照在当前和更新的存储器图像模块的可重定位版本相等,并且相应的用于所述符号参照的当前和更新的解析指令相等的情况下,确定符号参照为相等。在一些实施例中,处理装置进一步适用于,响应于在当前和更新的存储器图像模块的可重定位版本中对共同子串的识别比较与添加指令和复制指令相关联的各个大小,所述添加指令用于使目标处理装置将所识别的共同子串添加到更新的存储器图像模块,所述复制指令用于使目标处理装置将所识别的共同子串从当前的存储器图像模块复制到更新的存储器图像模块,其中比较各个大小包括,比较添加和复制指令的各自大小和各个参数解析指令的各自大小,所述各个参数解析指令用于被包括在共同子串中的符号参照(如果有的话);和-响应于比较结果,生成添加指令或复制指令。在一些实施例中,处理装置进一步适用于执行预处理步骤、德耳塔文件生成步骤和后处理步骤,其中预处理步骤包括-生成当前和更新的存储器图像模块的各个可重定位版本的各个正则表示,其中对存储器地址的符号参照用预先确定的存储器内容代替;和-将关于所代替的符号参照的信息转送到后处理步骤;其中德耳塔文件生成步骤包括由可重定位的当前和更新的存储器图像模块的正则表示生成德耳塔文件;和其中后处理步骤包括由所转送的关于代替的符号参照的信息和由生成的德耳塔文件生成参数解析指令。在一些实施例中,该系统进一步包括通信装置,适用于将生成的德耳塔文件发送到处理装置。在一些实施例中,更新的存储器图像模块包括至少一个对第一存储器地址的参照。用于利用更新的存储器图像模块,执行当前存储器图像模块的德耳塔更新的系统包括,用于生成如这里所述的德耳塔文件的系统和如这里所述的处理装置。为了本说明书的目的,术语处理装置和电子装置包括任何包括诸如用于存储程序代码的闪存之类的存储器的装置。这种装置的例子包括便携式无线电通信设备和其它手持或便携式的装置。术语便携式无线电通信设备包括诸如移动电话、寻呼机、通信器,即电子组织体、智能电话、个人数字助理(PDA)、手持计算机等的所有设备。通过下面参考附图所描述的实施例,上面和其它方面将会变得明显并得到阐释,其中图1示意性地示出了用于更新移动终端中软件的系统的实施例的框图。图2示意性地示出了诸如移动终端的电子装置的框图。图3示出了软件更新之前和之后,处理装置的存储器布局的例子。图4示出了软件更新过程的实施例的框图。图5示出了德耳塔文件生成过程的实施例的功能性框图。图6示出了德耳塔更新代理的实施例的功能性框图。图7示出了德耳塔文件生成过程的另一实施例的流程图。图8示出了确定当前和更新的加载模块中共同子串的步骤的例子的更详细流程图。图9示出了确定当前和更新的加载模块中共同子串的步骤的另一个例子。图10示出了确定当前和更新的加载模块中共同子串的步骤的又一个例子。具体实施例方式图l示意性地示出了用于更新诸如移动终端的电子装置中软件的系统的实施例的框图。该系统包括移动终端101,例如移动电话等,软件更新系统102和通信接口103。软件更新系统102可包括接入到通信网络的服务器计算机。在一些实施例中,服务器计算机的功能性可以分布在多个计算机,例如通过计算机网络连接的计算机之间,所述计算机网络例如局域网、广域网和互联网等。软件更新系统102包括接口电路104,使得软件更新系统102能够通过通信接口103来传送数据。例如,接口电路104可包括串行端口、并行端口、短距离无线通信接口,例如红外端口、蓝牙收发信机等。接口电路的其它例子包括网卡、DSL调制解调器、网关计算机等。软件更新系统102进一步包括处理单元105,例如月良务器计算机的CPU,其适当地被编程为控制并执行更新过程。处理单元105可进一步执行这里所述的实际代码生成过程。然而,通常代码生成将会由其它计算机执行,然后生成的代码将会被传送到处理单元105。软件更新系统102进一步包括版本数据库/储存库106,其中存储有要被更新的软件的至少基本/当前版本和更新的版本,例如以存储器图像和/或结果代码和/或诸如重定位信息的其它信息的形式。在一些实施例中,版本数据库可进一步包括附加信息,例如多个基本版本和/或更新的版本,例如用于不同的移动终端模型,用于不同的客户组,和/或等等。通信接口103可以是任意适当的有线或无线通信接口,用于在软件更新系统102和移动终端101之间传输数据。例如,在适用于通过蜂窝通信网络,例如GSM网络、UMTS网络、GPRS网络等通信的移动电话的情况下,软件更新系统102和与软件更新相连接的移动终端101之间的通信可以通过该蜂窝通信网络执行,由此避免了对移动终端101中附加通信接口的需要。因此,为了在移动终端101上更新软件,移动终端101可从软件更新系统102接收更新指令,例如包括要被重写的存储器扇区的图像。在使用德耳塔文件的差分软件更新系统102中,更新指令被生成,使得它们能够使移动终端从已经存储在移动终端101中的现有版本和从包括在更新指令中的附加信息而生成更新的软件版本。德耳塔文件可在适当的位置上应用,即可以由移动终端101在现有图像上进行改变,由此需要4艮少的附加存储。并且,由于只有德耳塔文件需要^^皮加载,并由于德耳塔文件通常被认为比新版本小,加载时间通过上述方法而被减少。因此,在上面,其中这里描述的过程和系统可被应用的可能情形被描述。然而,将会意识到,这里所述的德耳塔更新过程还可被应用到其它更新情形。例如,更新可以通过例如其它通信信道的其它介质,通过计算机可读介质等而被提供到目标装置。德耳塔更新过程的实施例将在下面进4亍更i羊细4笛述。图2示意性地示出了诸如移动终端的电子装置的例子的框图。移动终端101包括通信模块210、处理单元211和存储器单元212。通信模块21G包括电路和/或装置,使得能够通过蜂窝通信网络进行基于无线电的数据通信。因此,为了本说明书的目的,通信模块210包括用于接收数据信号的接收机电路。通信^t块可进一步包括用于借助在无线电通信领域众所周知的适当技术适当地处理信号,例如调制、编码、放大等信号的电路。移动终端101进一步包括处理单元211,例如适当编程的微处理器。处理单元适用于执行与更新过程有关的各种功能,例如诸如确定存储在移动终端101中的软件版本,计算所存储软件的校验和,一接收到相应更新指令就生成软件的更新版本,和/或等等的功能。存储器单元212已经在其中存储了预先确定版本的软件和/或其它数据。例如,存储器212可包括移动终端的固件,当^皮载入和由处理单元211执行时,其执行移动终端的基本功能。固件可进一步包括操作系统,使得应用软件能够被执行。因此,存储器212可进一步在其中存储提供附件功能的应用软件。存储器212利用适当的地址空间;故寻址,由此使得处理单元能够访问存储器的所选部分。在一些实施例中,存储器212可以被蓬辑地或物理地分为多个存储器扇区。例如,存储器2U可包括闪存,使得数据能够被写入预先确定大小的扇区中。然而,了解到,也可以使用存储器的任意其它寻址来代替。进一步了解到,这里所述的更新过程可被应用到整个存储器212,例如如果移动电话闪存的整个图像要被更新的话,或者也可仅仅应用到存储器的预先确定部分,例如如果一个或更多软件应用要被更新的话。图3示出了软件更新之前和之后处理装置的存储器布局的例子。图3a示出了对应于当前安装的存储器图像的程序代码版本的存储器布局的例子,通常用附图标记301来表示。存储器图像包括第一加载模块LMO和两个另外的加载冲莫块,分别用LM1和LM2指示。为了图3例子的目的,加载模块LM1被假设放置在LM0附近。因此,加载模块LM1和LM2在存储器中的确切位置可以变化,例如根据加载模块LMO的大小,或者因为为了其它原因,它们在存储器中的位置由目标装置在加载时间上确定。因此,关于它们位置的知识在作为德耳塔生成过程输入的服务器一侧不能得到。图3b示出了对应于更新的存储器图像的更新版本,通过由302表示。在该例子中,假设加载模块LMO已经借助德耳塔文件A固而被更新,得到更新的加载;^莫块LMO,。更新的加载;^莫块LMO,具有与原始加载^t块LMO不同的大小。相似地,每个加载才莫块LM1和LM2已经由各自的德耳塔文件△LM1和△面更新,得到各自更新的版本LM1,和LM2,。特别地,更新的加载才莫块LM1,和LM2,现在被分别定位在不同的起始/基本地址Sl,和S2,,它们与原始/基线版本的相应起始/基本地址Sl和S2不同。当加载模块起始地址的选择由目标装置在加载时间上做出时,已经生成德耳塔文件△uu和△W2的德耳塔文件生成过程可以既不知道起始地址Sl和S2,也不知道更新的起始地址Sl,和S2,。因此,在上面的情形中,存储器结构包括总是被定位在给定位置的加载模块和一个或更多被定位在可变位置的加载模块。将会意识到,在其它存储器结构中,多于一个的^t块可以具有固定位置,而在其它存储器结构中,所有软件模块可以具有可变位置。这里所述的参数德耳塔更新程序支持加载模块,例如其位置对于德耳塔文件生成过程或系统来说未知的被动态加载的加载模块的德耳塔更新。特别地,在存储在目标装置存储器中的软件包括加载模块的集合的情形下,这里所述的方法可被用于更新整个存储器图像或软件的单独部分。这些加载才莫块将会例如对应于用于不同功能的库。在几种不同的软件版本包含相同模块的情况下,可以用同样的更新包更新所有版本中的该特定模块。接下来,将结合图4-10描述增量软件更新过程的不同例子。在附图中,同样的附图标记代表相同或对应的部件、特征、实体等。图4示出了软件更新过程的实施例的框图。该过程包括由更新服务器执行的用于生成参数化德耳塔文件408的德耳塔文件生成过程402,和由目标装置执行的用于应用德耳塔文件408的德耳塔文件应用过程401。德耳塔文件生成过程可以由德耳塔文件生成器,即软件程序或由更新服务器执行的软件程序的功能部件执行,其中所述更新服务器生成表示当前的程序代码版本与更新的程序代码版本之间差别的德耳塔文件。相似地,德耳塔文件应用过程可以由德耳塔文件更新代理,即软件程序或由目标装置执行的软件程序的功能部件执行。德耳塔文件生成过程402接收通常用403指示的加载才莫块LI—N的更新版本,和通常用405指示的该加载模块的相应基线版本L1-BL。更新版本L1—N通常从代码储存库或从程序代码生成过程(未明确示出)接收,例如包括汇编器和链接器的系统,其中所述链接器从源代码生成可执行代码。基线版本对应于当前被安装在目标装置上的软件版本,并从加载模块的数据库106、版本管理系统或其它适当的代码储存库接收。在一些实施例中,德耳塔生成器402可例如从储存库106接收附加输入,诸如例如所谓的地图文件形式的额外链接信息。加载才莫块^皮假设为在结果代码格式中,除了原始二进制,还分别包括重定位信息414和415。当解析符号参照时,重定位信息被使用,所述解析顺从加载时间。给目标i置的德耳塔文件408,、所述目标装置i;存储器被从当l的存4诸器图像更新为更新的存储器图像。为此,目标装置执行德耳塔文件应用过程401,这在后面进行更详细描述。总得来说,生成德耳塔文件以将基线文件更新为新文件可以示意性地用如下操作来示出<formula>formulaseeoriginaldocumentpage24</formula>相应地,新版本的实际生成然后可以由移动终端根据如下操作完成<formula>formulaseeoriginaldocumentpage24</formula>了解到,在移动终端上生成德耳塔文件(上面表示中用"-"表示)和生成新版本(上面表示中用"+"表示)的上述操作可以包括更多或更少的复杂运算。德耳塔文件通常包括至少两部分新内容池(pool)和指令列表,其中指令描述如何将新的内容与安装的图像合并。当生成新图像时,每个字或者从安装图像复制,或者从新内容的池添加。除了上面的部件,参数德耳塔文件408包括关于内部和外部参照(绝对的和相对的)的信息418。信息418可4t包括在德耳塔文件的单独部分中,该信息可以与剩下的德耳塔文件指令交织,和/或以任意其它适当的方式而被合并在德耳塔文件中。由于出现在目标装置存储器中的加载模块的位置对更新服务器来说未知,扩展的德耳塔文件408被制成例如关于新的和基线版本的起始地址和全局符号的位置是参数化的。因此,德耳塔文件生成过程402包括生成一组指令和新内容池的德耳塔生成器模块406,和将外部和内部参照从基线和更新版本中提取出来的参照提取模块407,所述参照提取模块407还包括参数德耳塔文件中的那个信息。参数化可以扩展德耳塔文件中部分的数目和/或指令的数目。在一个实施例中,参数德耳塔文件关于下面的三个参数而被参数化參加载模块的安装版本,即基线版本L1—BL的起始地址。加载才莫块L1_N新版本的起始地址。外部符号的值,其被新的加载模块使用。当德耳塔文件408被应用时,过程401接收起始地址413,即通常用411指杀的当前安装图像Ll-B"的起始地址,和目标装置已经确定加载用411指示的新图像L1-N"斤在的起始地址。过程401进一步接收存储在目标装置存储器212中的全局符号表412。该全局符号表包括全局符号参照的列表,即不同软件模块之间的符号参照和它们各自的地址值。根据这些参数值,过程4Q1例示参数德耳塔文件,并将例示的德耳塔文件应用到安装的图像L1—BL*,以便生成用410指示的新图像L1—New"其被存储在存储器212中确定的新起始地址上。将参数德耳塔的应用到加载模块上可被描述为步骤1:<formula>formulaseeoriginaldocumentpage25</formula>References/03—'8—Refere阔"—挂.步骤3:因此,在步骤1中,德耳塔被应用到基线版本。对德耳塔的参数是分别基线和新版本的起始地址startbaseline、Start婦和加载才莫块可能参照的全局符号的集合SymbolSi。在下一步骤中,全局符号表利用从加载模块的新版本输出的符号而被更新。并且,从其它加载模块到要被更新的基线加载模块的所有参照还需要被更新,以便指向新版本的正确符号。为此,包括引出参照的地图的参照地图与每个安装的加载模块相关联。因此,在第三步骤期间,当前被更新的加载模块的参照地图Referencesi'。"^"被更新。接下来,从其它加载模块到更新的加载模块的参照基于更新的参照地图而被更新。注意到德耳塔文件应用过程401将德耳塔文件应用到安装的二进制图像411是有趣的,然而对德耳塔文件生成过程402的输入包括加载模块403和405,即结果代码格式的文件。结果代码格式分别包括重定位信息414和415,其没有出现在安装图像中。当加载模块被安装(普通的"全"安装)时,重定位信息被消耗。在该过程期间,符号参照被解析。正如由上面的例子所示出的,德耳塔文件的参数化影响德耳塔生成、德耳塔文件格式和德耳塔文件的应用。然而,德耳塔文件的参数化可被执行,使得其利用常规的德耳塔生成技术,现在将结合图5和6进行描述。图5示出了德耳塔文件生成过程的实施例的功能框图。除了德耳塔生成器模块506,德耳塔文件生成过程4Q2还包括预处理器516和后处理器517。'德耳塔生成器模块506可以是常规的德耳塔生成器,其可以没有意识到参数化。适当的德耳塔文件技术的例子包括US6,546,552和"CompressingDifferencesofExecutableCode"byBrendaBaker,UdiManber和RobertMuth,inACMSIGPLANWorkshoponCompilerSupportforSystemSoftware(WCSSS,99),1999中描述的方法。预处理器516的目的是从两个加载才莫块403和405中的每一个,即从更新的/新的版本Ll-N和从基线版本Ll-BL中摘录二进制图像,同时留意在每个加载模块中的参照。二进制图像被馈送到德耳塔生成器506中,并且关于参照的信息被馈送到后处理器517中。后处理器接收来自预处理器516的信息和由德耳塔生成器506生成的德耳塔文件。后处理器然后利用关于由预处理器516采集的参照的信息,用附加信息418扩展德耳塔文件,由此生成参数的德耳塔文件418。注意到,目标装置中的更新代理可被执行为具有相似的结构。图6示出了德耳塔文件应用过程的实施例的功能框图。德耳塔文件应用过程包括德耳塔更新模块620,其后是后处理器621。更新模块620可以是常规的没有意识到参数化的更新代理。后处理器621接收德耳塔更新模块620的输出622和实际的参数值,即在这个实施例中,全局符号表412和加载模块在基线和更新版本中的起始地址413。根据该信息,后处理器例示由更新模块620产生的图像622,得到更新的图{象410。德耳塔文件生成过程的预处理器516模仿安装过程。如上面所提到的,安装过程消耗重定位信息和解析符号参照。通过模仿该过程,预处理器516产生用作对常规德耳塔文件生成器输入的加载模块的表示,所述德耳塔文件生成器反过来产生能够与安装图像相关的德耳》荅文件。然而,参照仍然不能被解析,因为安装图像的位置对德耳塔生成过程未知。因此,包括用于解析参照所需的"配方"的重定位信息414和415被传递到后处理器517。代替解析参照,预处理器可以使它们尽可能相似,由此便于德耳塔生成器506的工作。例如,预处理器516可以用预先确定的值,例如零来代替所有参照。总得来说,两种符号参照是特别感兴趣的绝对和相对参照。绝对参照简单地通过用原始二进制内容中的占位符代替符号值来解析。相对参照被不同地解析符号值和源地址之间的差别用相应公式来计算。参照的目的地是代码的位置。该位置对包含参照的加载模块来说是内部的或外部的。内部位置在加载模块内具有已知的偏移,并且可关于加载模块的起始地址而被参数化(即start+offsetD)。加载模块外部的目的地用符号名来表示。参照源,即根据其进行参照的位置,被定义为在加载才莫块内部。因此,源可^皮表示为(start+offsets)。表l总结了用于上述类型参照的重定位公式<table>tableseeoriginaldocumentpage27</column></row><table>表1:用于到内部和外部位置的绝对和相对参照的重定位公式到内部位置的相对参照可以在建立时间上净皮解析,即在德耳塔文件生成过程期间或之前。这种参照被叫做与位置无关的。因此,三类参照保持被解析到内部位置的绝对参照和到外部位置的绝对以及相对参照。到加载模块内部位置的绝对参照依赖于加载模块的起始地址(start)。到外部位置的绝对参照依赖于未知的符号地址(symbolD)。到外部位置的相对参照依赖于未知的符号地址和加载模块的起始地址。使图像相似的一种方式是使用特殊恒量,例如零来代替未解析的参照。所有绝对参照然后将看来要指向地址零,未解析的相对参照将看来要指向跟随该位置的地址,根据该位置进行参照。一些德耳塔生成器知道相对参照(例如US6,546,552中揭示的德耳塔生成器)。在这些情况下,当预处理器使得未解析的相对参照指向同一位置,例如加载模块的开头时,更高效的德耳塔文件生成可被提供。德耳塔文件生成过程的后处理器517包括关于德耳塔文件中参照的适当信息,从而使得更新代理能够解析参照。当德耳塔文件被应用到目标装置中时,更新代理被指示与新的二进制图像放到一起。为了本说明书的目的,假设通过从安装的图像复制字或通过从被提供作为德耳塔文件一部分的池添加内容来完成这一点。下面,上述两种通常可替换方式被假设分别用德耳塔文件中的"复制"指令和"添加"指令来表示。然而,了解到,一些德耳塔生成器可以利用不同的表示,包括这些指令的子类型和/或变形。下面,将描述通过后处理器517和对目标装置中德耳塔文件应用的相应影响来处理上述类型的参照。为了描述后处理器517的功能,将应用由德耳塔生成器506生成的德耳塔文件的结果与在不固定参照情况下的安装的二进制图像进行比较是有帮助的。这些结果被总结在下面的表2中,并与理想的结果进行比较。<table>tableseeoriginaldocumentpage29</column></row><table>表2:应用德耳塔文件的实际和理想结果首先考虑参照被从安装的图像复制到新图像的情况,对应于表2中的第1-3行,例如由德耳塔文件中相应的"复制"指令引起如果参照是绝对的并且用外部符号作为目的地(表2中的第1行),则正确值(Syrnbol。)将被从安装的图像复制到新图像,即不需要接下来的后处理。在另外两种情况下(参见表2,第2和3行),复制的参照已经被固定下来,因为安装图像中的参照值是基于安装的加载模块中参照源的起始:地址(startj和偏移(offset^,而^皮正确更新的^直应该基于更新图像中的相应值starh和offset"在图6的实施例中,校正参照是后处理器621的工作。因此,在该实施例中,德耳塔更新模块620可以得到在"实际值,,列中列出的地址值,并且后处理器621校正该值,从而生成"理想值,,列中列出的值。为了使更新代理的后处理器621能够执行该过程,德耳塔生成器的后处理器517将德耳塔文件扩展部分418。当复制参照时,被插入在德耳塔文件的部分418中的信息可包括加载模块中参照的源位置和参照的种类(即绝对外部的等)。如果参照未被复制,但是被从包括在德耳塔文件中的新内容池添加,例如由德耳塔文件中的相应"添加"指令引起,则后处理集合需要对应于表2的第4-6行。如上所述,德耳塔生成器506的后处理器517将德耳塔文件扩展部分418,使得校正参照是可能的。在添加参照的情况下,包括在德耳塔文件部分418中的信息可以包括参照在加载模块中的源位置、参照种类、目的地(符号和/或偏移)。注意到,在表2中第6行的情况下,0ffse"的值是隐含已知的,因为Star"+0ffset2是参照的源位置。进一步注意到,表2第4-6行中的"实际结果,,值可以依赖于德耳塔文件生成过程的预处理器516的结果。在表2中,假设预处理器516用零代替所有参照,由此模仿更新的参照等于安装图像中的相应参照,并使得德耳塔文件生成器将那些参照从对应于表2中第1-3行的安装图像复制。然而,如上所述,在可替换实施例中,预处理器516可以使得相对参照指向加载才莫块的开始,而不是指向下一个源地址。在这种情况下,第6行中的实际结果值将会为-0ffset2而不是0。复制的参照(根据表2的第2和3行)可通过应用与当产生新参照(分别根据表2的第5和第6行)时同样的机制而被在模块中后处理。因此,在该情况下,被从安装图像(即"实际结果")复制的信息基本上#皮后处理器621不予考虑。可替换地,当生成正确的更新地址值时,后处理器517可利用安装图像中的信息,由此允许对德耳塔文件进行更紧凑的表示。例如,到内部位置的绝对参照(表2的第2行)涉及从W严StartfK)ffse"到W尸StartrK)ffset2的变换。如果Offset1和Offset2相同,这可以由德耳塔文件生成过程校验,上述变换简化为W2=W1+Start2-Start1因而,加载模块在基线和更新版本中的起始地址Start1和Start2分别是要被插入的参数,并且复制字W1被从安装图像复制。因此,足够德耳塔文件生成过程的后处理器517能指定参照在德耳塔文件中的源位置。相对外部参照(表2的第3行)的情况可以以同样方式处理,得到如下要由后处理器621估计的变换公式W2=W1+Start1+0ffset1-Start2一0ffset2。因此,对SymbolD的依赖被去除,这意味着该符号不必在德耳塔文件中被表示。表3总结了构成德耳塔文件408的扩展418的记录类型<table>tableseeoriginaldocumentpage31</column></row><table>表3:为了由更新代理后处理器使用的德耳塔文件扩展418的记录类型。德耳塔生成器的后处理器517产生扩展的德耳塔文件,如上所述。为此,后处理器517访问由德耳塔生成器506产生的德耳塔文件和访问加载模块的两种版本的重定位信息414和415。对于加载模块新版本中的每个参照,后处理器517找到德耳塔文件中相应的"复制"或"添加,,指令。在"添加"指令的情况下,相应的记录类型(根据表3的第4-6行)被产生。当后处理器517探测到"复制"指令时,后处理器517跟随复制指令到其起源,这可以通过仿效德耳塔应用来执行。后处理器517查询数据在加载模块的基线版本405中被复制所开始的起源。如果在基线加载模块中也有匹配的参照,则后处理器517依赖于参照类型,根据表3的第2或3行生成相应记录。没有记录被产生用于到外部位置(第1行)的绝对参照。然而,可能在基线加载模块中没有匹配的参照,尽管德耳塔文件中有"复制,,指令。这是该预处理步骤516实施例的人工产物,例如通过用预先确定的常数代替所有参照,使不同参照看起来相同。并且,本实施例的其它人工产物是,具有与预先确定的常数相同的值的原始二进制存储器内容不能与用预处理器代替的参照相区分。在这种情况下,作为退路,后处理器517生成对应于"添加"指令的记录,即根据第4-6行,根据参照的类型。因此,在上面,已经描述了利用常规德耳塔生成工具的参数德耳塔更新过程的实施例。在下面,实施例将参照图7-IO而被描述,其利用用于德耳塔文件生成和德耳塔文件应用的明确适用的算法。以这种方式,可以生成较小的德耳塔文件。特别是,当选择复制和添加指令的最佳序列时,可以将修补(fix-up)记录的大小考虑进来。并且,比较加载模块而不是比较预处理器生成的二进制图像,可以允许对参照进行特殊处理。图7示出了德耳塔文件生成过程的另一实施例的流程图。总得来说,德耳塔生成可以被建模为寻找块移动的最小覆盖集合的问题(参见例如WalterF.Tichy:TheString-to-StringCorrectionProblemwithBlockMoves;ACMTransactionsonComputerSystems2:4(November1984),pp309-321)。块移动对应于德耳塔文件中的复制指令。为了德耳塔生成的目的,通常希望生成尽可能小的德耳塔文件,这通常对应于利用尽可能少的块复制的解决方案。块移动的最优覆盖可利用如下算法而被找到-新图像的子串12被定位在旧(基线)图像h中,以便识别共同子串。-每个共同子串对应于块复制。所谓的贪婪算法在每一步中识别出现在h中的最长子串,其中h是l2的前缀。这种算法的更详细例子被显示在图7中。在步骤S701中,该过程通过将目的地指针d设置为零(d=0)来初始化,即指针被初始化为指向更新图像12的开始。该过粗然后重复下面的步骤(S702-S708),直到整个新图像(I2)已经被处理。因此,在步骤S702中,该过程验证整个新图像是否已经;故处理,即是否d-N2,其中N2代表12的大小。如果d-N2,则该过程终止,否则该过程继续步骤S703。在步骤S703中,该过程识别h中l2[d:N2-l]的最长前缀。在没有未解析参照的情况下,寻找最长的前缀对应于寻找s,使得k最大且li[s]=l2[d],l![s+l]-l2[d+l],…,h[s+k-l]^2[d+k-1]。然而,在出现未解析参照时,该过程处理这些参照与图像的其它内容分离,这将在下面进4亍,详细4苗述。在接下来的步骤S704中,该过程检测该子串是否能够被识别。如果没有这种子串能够被找到(即k=0),则该过程生成"添加,,指令(步骤S7Q5)并且将d前进l,除非h中有参照在d处,在这种情况下d祐二前进该参照的长度(步骤S706)。否则,该过程生成"复制"指令(步骤S707),例如"复制s,k,,,即使得目标装置中的更新代理从地址s开始,从当前安装的图像复制长度为k的子串。接下来,该过程使d前进k(步骤S708)。通常,当被复制的块小时(例如3个字节或更小),希望使用"添加"指令而不是"复制"指令。这是由于在"复制"指令中指定源指针s和块长度k的开销。德耳塔文件生成算法的很多实施方式寻找最小的覆盖集合,但是用添加指令代替小块复制。因此,去除不经济的"复制,,指令可以祐:执行为后处理步骤。并且,在一些实施例中,用于德耳塔生成的后处理步骤考虑修补记录的大小,例如当在"复制,,和"添加"指令之间选择时。以这种方式,无益的块移动被避免。特别地,在一些实施例中,无论何时"复制"指令的开销大于可替换指令的开销时,后处理器代替"复制"指令,这通常使用"添加,,指令。"复制,,指令的开销包括表示起始位置、块长度和修补记录所需的存储,所述修补记录包括用于参照解析的地址信息(例如表3的记录)。"添加"指令的开销包括表示块长度、新内容和修补记录(其可能与"复制"指令的相应修补记录的大小不同,如表3所示)所需的存储。后处理器具有将无益的"复制"指令转变为"添加,,指令的选项。并且,可以合并由后处理得到的相邻的"添加"指令。如上面所提到的,步骤S703当识别共同子串时考虑了未解析参照。为此,该过程处理与图像其它内容分离的未解析的参照符号。由于要在图像中编码的值直到加载时间为止是未知的,只有在利用同样符号公式解析的两个参照之间保证相等。出于这个原因,德耳塔文件生成过程匹配/复制整个/完全参照,而不是部分参照。下面,将结合图8-IO描述执行在L中寻找最长前缀l2[d:N-l]的步骤。全部三个例子利用重定位信息,所述信息当生成德耳塔文件时可用,但当将德耳塔文件安装在目标装置中时不一定可用。特别地,重定位信息使得未解析参照可被识别。让R1=r11r12...rm是所安装的加载模块重定位记录的集合,R2=r21r22...r2m2是相应的新加载模块的集合。每个重定位激励rjk被假定为指定解析一个参照所必需的属性。特别地,参照的位置source(rjk),其是在其图像中的偏移,由r,k给定。为了本说明书的目的,进一步假定借助断言的相等(i>,rM),两个相同的解析可被识别。图8示出了在当前和更新的加载模块中确定共同子串的步骤的例子的更详细流程图。图8的过程接收下面的输入整个安装的(基线)图像L、新图像的前缀12[d:N厂l]和分别是重定位记录集合Id和R2。该过程生成下面的输出子串在h中的位置tnax_s及其长度max-len。在初始步骤S801中,该过程初始化指针s到基线图像h,以指向图^象的开4会,即s二O,并净刀4台^i输出j直为0:max_s=max—len=0。该过程然后重复如下步骤(S802-S814),直到整个安装图像(h)已经被处理。因此,在步骤S802中,该过程检查整个图像是否已被处理,即是否s=N"其中^表示h的大小。如果s=N15则该过程返回(max_s,max_l)到德耳塔文件生成过程并终止;否则该过程继续步骤S803。在步骤S803中,该过程初始化共同子串的当前长度k为k=0,并重复步骤S804-S809,直到出现不匹配(参见下面),直到s+k-Ni或直到d+k=N2。因此,在步骤S804中,该过程验证当前的共同子串是否到达其中一个图像的末尾,即s+k-Ni或d+k=N2。如果是这样,则该过程继续步骤S810;否则该过程继续步骤S805。在步骤S805,该过程检查是否有重定位记录r2p,使得source(r2p)=d+k,或者重定位记录rl4,使得source(rlq)=s+k。如果没有找到这样的对,则该过程确定当前地址上的存储器内容是"简单的(plain)"二进制内容,即没有未解析的参照,并且该过程继续步骤S806;否则,当找到参照对、和r2p时,该过程检查是否equal(rlq,r2p)(步骤S807)。如果equal(rlq,r2p),则该过程使k前进匹配参照的长度(步骤S809);否则,存在不匹配,该过程继续步骤S810。在步骤S806,即当该过程比较简单的二进制内容时,该过程确定是否h[s+k]^2[d+k]。如果是这样,则该过程使k增加l(步骤S808);否则,该过程找到不匹配并继续步骤S810。在步骤S810中,该过程确定是否k〉max_len,即最长前缀到现在是否已经被找到。如果是,则该过程设置max—s=s,max—len=k(步骤S811)。接下来,在步骤S812,该过程检查是否存在重定位记录rlq,使得source(rlq)=s,即是否指针s当前指在基线图像中参照上。如果是,则该过程使s前进该参照的长度(步骤S813);否则,该过程使s前进l(步骤S814)。下面,将基于高效匹配算法,描述两种可替换的匹配过程。图9示出了确定当前和更新的加载模块中共同子串的步骤的另一个例子。图9的例子是基于利用散列密钥来高效识别固定大小(例如4字节)的共同子串的方法。^口在"DeltaStorageforArbitraryNon—TextFiles"byChristophReichenberger,inProceedingsofthe3rdinternationalworkshoponSoftwareconfigurationmanagement,May1991,pp144-152中所揭示的,对子串的搜索可以利用固定长度子串上的散列密钥而被加速。不像图8方法的步骤S804-S809中那样考虑每个可能的起始点s,可以限制搜索到具有同样散列密钥的起始点。已经被用于计算散列密钥的子串越长,则不等前缀的分离越好,且需要考虑的起始点越少。然而,密钥长度还限制能被匹配的最短子串。使用对应于最短有益复制指令的密钥长度是一个选择。在预处理步骤中,用于L中给定长度的所有子串的散列密钥被计算。I,中的每个符号影响到几个散列密钥,如图9a所示。图9a示出了包括9个符号"c"、"d"、"b,,、"a"、"t"、"a"、"t,,、"a"和"s"的子串901。串"cdbatatas"中有7个长度为3的子串。串的每个位置都可能是用于串匹配的起始点。因此,假设为了图9例子的目的,密钥长度为3,匹配过程计算7个散列值h(cdb)、h(dba)、h(bat)、h(ata)、h(tat)、h(ata)、h(tas)。图9b示出了该匹配方法的概括。特别地,图9b示出了串903"cdba〈ref〉tas",其中〈ref〉是代替特定参照的特殊符号902。在该例子中,〈ref〉是两个位置宽。子串中未解析的参照902影响散列密钥的值。然而,由于部分匹配参照没有意义,因此该过程不为在参照中间开始的子串计算散列密钥。因此,在该例子中,该过程只计算6个散列值,如图9b所示。为了避免在参照中间结束的子串,该过程将这种密钥扩展为包括整个参照,如图9b中的散列值h(ba〈ref"所示。图10示出了确定当前和更新的加载模块中共同子串的步骤的又一个例子。在该例子中,子串匹配利用了基于后缀的高效算法,被揭示在文章"TheString-to-StringCorrectionProblemwithBlockMoves"byWalterF.TichyinACMTransactiononComputerSystems2:4(November1984),pp309-321中。图10a示出了串"bananas"的后缀树(#是唯一结束标志)。后缀树的边缘用串h(在图9a的例子中,l严"batatas")的子串注释,且节点用可能的子串起始点标注。连接从#^1001到叶的路径的串得到全部后缀lf[s:N广l]。内部节点对应于具有几个可能延续的子串,而叶对应于只剩下一个选项的情况。通过从前缀树的根跟踪l2[d:N2-l]的前缀,直到不匹配被找到或到达叶,L[s:N「l]和12[d:N厂l]的共同子串被定位。例如,当跟踪串"atatd"时,标记为'a,(1002)、'ta,(1003)和'tas#,(1004)的边缘被横贯。在最后一个边缘1004,出现不匹配('tas#,#'td,)。跟踪在标记为1的节点1005处结束,其是共同子串"atat"的起始点。因此,h的后缀树可被用于非常快地找到子串。图10b示出了考虑参照的匹配过程的修改。特别地,图10b示出了串'ba〈ref〉tas,的后缀树,其中〈ref〉是代替特定参照的特殊符号。在该例子中,〈ref〉是两个位置宽。节点标记是指在替换参照之前的原始起始位置。参照的可分性(atomicity)可以通过用符号扩展字母表来实现,其中符号唯一地表示每个未解析的参照(相同的参照用相同的符号表示)。当构造后缀树时,添加的符号代替未解析的参照。当跟踪前缀时,在12中进行同样的替换。因此,在上面已经借助参数化德耳塔文件对加载^^莫块进行增量更新的方法实施例进行了描述。这里所述方法的优点在于,生成德耳塔文件时不必知道安装图像的确切内容。某些值的指定被推迟,直到德耳塔文件被应用。该方法能够与现有的用于德耳塔生成和德耳塔应用的技术一起使用。现有技术被扩展,以允许德耳塔文件的某些特性可被参数化。注意到,上面的实施例主要是参照闪存来描述的。然而,了解到,这里所述的方法还可以与其它类型的存储器相关地执行,包括可以在更小单元,例如按字节或甚至按位的单元中写入的存储器类型。并且,这里所述的方法还与其它存储介质相关地使用,诸如光盘、硬盘、软盘、磁带和/或其它类型的磁和/或光的存储介质。例如,这里所述的方法还可被应用到诸如台式计算机的计算机的更新,其在执行之前将程序从次要存储器/存储介质加载到RAM中。本发明可以通过包括几个不同元件的硬件,并通过适当编程的计算机来执行。在列举几个装置的装置权利要求中,这几个装置可由同一个硬件项来实施,例如^皮适当编程的微处理器或计算机,和/或一个或更多如这里所述的通信接口。在互不相同的从属权利要求中引用或在不同实施例中描述的特定措施的唯一事实不表示这些措施的组合不能被用于改进。应当强调的是,当在本说明书中使用时,术语"包括/包含"被用于指明存在所声称的特征、整体、步骤或部件,但不排除存在或附加一个或更多其它特征、整体、步骤、部件或它们的组合。权利要求1、一种生成德耳塔文件的方法,该德耳塔文件包括用于使目标处理装置将当前存储器图像模块变换为更新的存储器图像模块的更新指令;该方法包括-将第一存储器地址的参数化表示合并到德耳塔文件中,该参数化表示关于至少当前存储器图像模块在存储器空间中的位置和更新的存储器图像模块在存储器空间中的位置来说是参数化的;和-将参数解析指令合并到德耳塔文件中。2、根据权利要求1所述的方法,其中该参数化表示进一步关于每个地址值是参数化的,该每个地址值在更新的存储器图像模块外部,由更新的存储器图像模块参照。3、根据权利要求1或2所述的方法,其中该参数化表示关于至少当前存储器图像模块在存储器空间中的起始地址和更新的存储器图像模块在存储器空间中的起始地址来说是参数化的。4、根据权利要求1至3中任一权利要求所述的方法,包括由包括对存储器地址的符号参照的当前和更新的存储器图像模块的可重定位版本,和由用于当前和更新的存储器图像模块的各个可重定位版本中所述符号参照的当前和更新的重定位指令而生成德耳塔文件。5、根据权利要求4所述的方法,其中生成德耳塔文件进一步包括比较当前和更新的存储器图像模块的可重定位版本,以便识别至少一个共同子串;并且其中比较包括,通过比较所述符号参照和相应的解析指令来比较符号参照。6、根据权利要求5所述的方法,其中比较符号参照包括,只有在所述符号参照在当前和更新的存储器图像模块的可重定位版本相等,并且相应的用于所述符号参照的当前和更新的解析指令相等的情况下,确定符号参照为相等。7、根据权利要求5至6中任一权利要求所述的方法,进一步包括,响应于当前和更新的存储器图像模块的可重定位版本中共同子串的识别-比较与添加指令和复制指令相关联的各个大小,所述添加指令用于使目标处理装置将所识别的共同子串添加到更新的存储器图像模块,所述复制指令用于使目标处理装置将所识别的共同子串从当前的存储器图像模块复制到更新的存储器图像模块,其中比较各个大小包括,比较各个添加和复制指令的各自大小和各个参数解析指令的大小,所述各个参数解析指令用于被包括在共同子串中的符号参照,如果有的话,以便确定各个大小中最小大小的一个;和-响应于比较结果,生成对应于所确定的最小大小的添加指令或复制指令。8、根据权利要求4至7中任一权利要求所述的方法,其中当前和更新的存储器图像模块的可重定位版本包括结果代码格式的程序代码。9、根据权利要求1至8中任一权利要求所述的方法,其中该方法包括预处理步骤、德耳塔文件生成步骤和后处理步骤,其中预处理步骤包括-生成当前和更新的存储器图像模块的各个可重定位版本的各个正则表示,其中对存储器地址的符号参照用预先确定的存储器内容代替;和-将关于所代替的符号参照的信息转送到后处理步骤;其中德耳塔文件生成步骤包括由可重定位的当前和更新的存储器图像模块的正则表示生成德耳塔文件;和成的德;塔文件生a成参数解析指令。'''乡'10、根据权利要求1至9中任一权利要求所述的方法,其中当前存储器图像模块被存储在与目标处理装置相关联的存储介质中。11、根据权利要求10所述的方法,其中该存储介质是处理装置的存储器。12、根据权利要求1至11中任一权利要求所述的方法,其中参数解析指令适用于,使得目标处理装置确定至少当前存储器图像模块在存储器空间中的位置和更新的存储器图像模块在存储器空间中的位置,并由参数化表示和所确定的值来确定笫一存储器地址的地址值。13、根据权利要求1至12中任一权利要求所述的方法,进一步包括,利用更新的存储器图像模块,执行当前存储器图像模块的德耳塔更新,当前存储器图像模块存储在与目标处理装置相关联的存储介质中;其中执行德耳塔更新包括-将所述生成的德耳塔文件发送到目标处理装置;-响应于接收的更新指令和参数解析指令,将当前的存储器图像模块变换为更新的存储器图像模块。14、根据权利要求13所述的方法,进一步包括将更新的存储器图像模块存储在永久性存储器中。15、根据权利要求14所述的方法,进一步包括二执行来自于永久性存储器的包括在更新的存储器图像中的更新的程序代码。16、根据权利要求13至15中任一权利要求所述的方法,进一步包括获得当前存储器图像模块在存储器空间中的位置和更新的存储器图像模块在存储器空间中的位置。17、根据权利要求16所述的方法,进一步包括获得全局符号表,该全局符号表包括至少一个可由更新的存储器图像模块寻址的地址值,该地址值在更新的存储器图像模块外部。18、根据权利要求17所述的方法,其中全局符号表包括可由其它存储器图像模块寻址的当前存储器图像模块内的至少一个当前地址值,并且该方法包括利用更新的存储器图像模块内相应的更新地址值来更新当前地址值。19、根据权利要求18所述的方法,进一步包括将其它存储器图像模块中参照当前地址值的所有参照由所述当前地址值更新为所述更新的地址值。20、根据权利要求13至19中任一权利要求所述的方法,进一步包括提供用于每个存储器图像模块的引出参照的列表,每个引出参照的列表包括从相应存储器图像^t块寻址的全局符号的列表,该全局符号在存储器图像模块外部。21、根据权利要求13至20中任一权利要求所述的方法,其中变换包括确定至少当前存储器图像模块在存储器空间中的位置和更新的存储器图像模块在存储器空间中的位置的值,并由参数化表示和所确定的值来确定第一存储器地址的地址值。22、根据权利要求1至21中任一权利要求所述的方法,其中更新的存储器图像模块包括至少一个对第一存储器地址的参照。23、一种将更新的存储器图像模块加载到存储介质中的方法,该存储介质上已经存储有当前存储器图像模块;该方法包括-接收包括更新指令的德耳塔文件,其中该更新指令包括至少第一存储器地址的参数化表示,该参数化表示关于至少当前存储器图像模块在存储器空间中的位置和更新的存储器图像模块在存储器空间中的位置来说是参数化的;并且其中德耳塔文件进一步包括参数解析指令;-响应于接收的更新指令和参数解析指令,将当前的存储器图像模块变换为更新的存储器图像模块。24、根据权利要求23所述的方法,其中该参数化表示进一步关于每个地址值是参数化的,该每个地址值在更新的存储器图像模块外部,由更新的存储器图像模块参照。25、根据权利要求23或24所述的方法,其中该参数化表示关于至少当前存储器图像模块在存储器空间中的起始地址和更新的存储器图像模块在存储器空间中的起始地址来说是参数化的。26、根据权利要求23至25中任一权利要求所述的方法,其中更新的存储器图像模块包括至少一个对第一存储器地址的参照。27、根据权利要求23至26中任一权利要求所述的方法,进一步包括将更新的存储器图像模块存储在永久性存储器中。28、根据权利要求27所述的方法,进一步包括执行来自永久性存储器的更新的程序代码。29、根据权利要求23至28中任一权利要求所述的方法,进一步包括获得当前存储器图像模块在存储器空间中的位置和更新的存储器图像模块在存储器空间中的位置。30、根据权利要求29所述的方法,进一步包括获得全局符号表,该全局符号表包括至少一个可由更新的存储器图像模块寻址的地址值,该地址值在更新的存储器图像模块外部。31、根据权利要求30所述的方法,其中全局符号表包括可由其它存储器图像模块寻址的当前存储器图像模块内的至少一个当前地址值,并且其中该方法包括利用更新的存储器图像模块内相应的更新地址值来更新当前地址值。32、根据权利要求31所述的方法,进一步包括将其它存储器图像模块中参照当前地址值的所有参照由所述当前地址值更新为所述更新的地址值。33、根据权利要求23至32中任一权利要求所述的方法,进一步包括提供用于每个存储器图像模块的引出参照的列表,每个引出参照的列表包括从相应存储器图像模块寻址的全局符号的列表,该全局符号在存储器图像模块外部。34、根据权利要求23至33中任一权利要求所述的方法,其中当前和更新的存储器图像模块的可重定位版本包括结果代码格式的程序代码。35、根据权利要求23至34中任一权利要求所述的方法,其中存储介质是处理装置的存储器。36、根据权利要求23至35中任一权利要求所述的方法,其中变换包括确定至少当前存储器图像模块在存储器空间中的位置和更新的存储器图像模块在存储器空间中的位置的值,并由参数化表示和所确定的值来确定第一存储器地址的地址值。37、根据权利要求23至36中任一权利要求所述的方法,其中变换包括-确定当前存储器图像模块的第一起始地址和目标装置已经决定加载更新的存储器图像模块所处的第二起始地址;-确定存储在目标装置存储器中的全局符号表;-旅据所确定的参数例示参数德耳塔文件;-将例示的德耳塔文件应用到当前存储器图像模块,从而生成更新的存储器图像模块,该更新的存储器图像模块要被存储在确定的第二起始地址上。38、一种包括程序代码装置的计算机程序产品,适用于当所述程序代码装置在数据处理系统上被执行时,使数据处理系统执行根据权利要求1至22中任一权利要求所述的方法。39、豫用根据权利要求1至"中任一权利要求所述的方法,用于对便携式无线电通信设备进行重编程。40、一种处理装置,包括-存储介质(212),用于存储当前存储器图像模块;-通信接口(210),用于接收德耳塔文件,该德耳塔文件包括更新指令,更新指令包括第一存储器地址的参数化表示,该参数化表示关于至少当前存储器图像模块在存储器空间中的位置和更新的存储器图像模块在存储器空间中的位置来说是参数化的;并且其中德耳塔文件进一步包括参数解析指令;-处理装置(211),适用于响应于接收的更新指令和参数解析指令,将当前的存储器图像模块变换为更新的存储器图像模块。41、根据权利要求40所述的处理装置,其中变换包括确定至少当前存储器图像模块在存储器空间中的位置和更新的存储器图像模块在存储器空间中的位置的值,并由参数化表示和所确定的值来确定第一存储器地址的地址值。42、根据权利要求40或41所述的处理装置,其中更新的存储器图像模块包括至少一个对第一存储器地址的参照。43、根据权利要求40至42中任一权利要求所述的处理装置,其中更新指令进一步关于由更新的存储器图像模块所参照的地址值而被参数化,该地址值在更新的存储器图像模块外部。44、根据权利要求40至43中任一权利要求所述的处理装置,其中处理装置进一步适用于将更新的存储器图像模块存储到永久性存储器中。45、根据权利要求44所述的处理装置,其中该处理装置进一步适用于执行来自永久性存储器的更新的程序代码。46、根据权利要求40至45中任一权利要求所述的处理装置,其中该处理装置进一步适用于确定/获得当前存储器图像模块在存储器空间中的位置和更新的存储器图像模块在存储器空间中的位置。47、根据权利要求46所述的处理装置,其中该处理装置进一步适用于获得全局符号表,该全局符号表包括至少一个可由更新的存储器图像模块寻址的地址值,该地址值在更新的存储器图像模块外部。48、根据权利要求47所述的处理装置,其中全局符号表包括可由其它存储器图像模块寻址的当前存储器图像模块内的至少一个当前地址值,并且其中该处理装置进一步适用于利用更新的存储器图像模块内相应的更新地址值来更新当前地址值。49、根据权利要求48所述的处理装置,其中该处理装置进一步适用于将存储在存储介质中的其它存储器图像模块中参照当前地址值的所有参照由所述当前地址值更新为所述更新的地址值。50、根据权利要求40至49中任一权利要求所述的处理装置,其中该处理装置在其中存储有用于每个存储器图像模块的引出参照的列表,每个引出参照的列表包括从相应存储器图像^t块寻址的全局符号的列表,该全局符号在存储器图像才莫块外部。51、根据权利要求40至50中任一权利要求所述的处理装置,其中该处理装置是便携式无线电通信设备。52、一种用于生成德耳塔文件的系统,该德耳塔文件包括用于使目标处理装置将当前存储器图像模块变换为更新的存储器图像模块的更新指令;该系统包括-存储装置(106),用于存储对应于当前存储器图像模块的当前软件版本的表示;-处理装置(105),适用于通过执行根据权利要求1至22中任一权利要求所述的方法的步骤来生成德耳塔文件。53、根据权利要求52所述的系统,进一步包括通信装置(104),适用于将生成的德耳塔文件发送到处理装置。全文摘要生成德耳塔文件的方法,该德耳塔文件包括用于使目标处理装置将当前存储器图像模块变换为更新的存储器图像模块的更新指令。该方法包括将第一存储器地址的参数化表示合并到德耳塔文件中,该参数化表示关于至少一个参数是参数化的;并将参数解析指令合并到德耳塔文件中,其中该参数解析指令适用于使得目标处理装置确定所述至少一个参数值,并由该参数化表示和所确定的所述至少一个参数的值来确定第一存储器地址的地址值。文档编号G06F9/44GK101361044SQ200680051361公开日2009年2月4日申请日期2006年12月6日优先权日2005年12月20日发明者C·冯普拉滕,J·埃克申请人:艾利森电话股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1