CN101026825A - 用于补丁最小化工具的***和方法 - Google Patents
用于补丁最小化工具的***和方法 Download PDFInfo
- Publication number
- CN101026825A CN101026825A CNA2006100644678A CN200610064467A CN101026825A CN 101026825 A CN101026825 A CN 101026825A CN A2006100644678 A CNA2006100644678 A CN A2006100644678A CN 200610064467 A CN200610064467 A CN 200610064467A CN 101026825 A CN101026825 A CN 101026825A
- Authority
- CN
- China
- Prior art keywords
- assembly
- reflection
- patch
- file
- base address
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/18—Information format or content conversion, e.g. adaptation by the network of the transmitted or received information for the purpose of wireless delivery to users or terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic 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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
本公开涉及一种用于提供供在移动设备中使用的映像的方法,该方法包括:从汇编器以机器语言的方式接收形成映像所需的多个目标文件中的至少一个,并识别多个接收到的目标文件;从目标文件形成多个组件;为每个组件确定基地址;生成存储器布局来在相应的基地址处定义每个被识别的组件的位置;以及调用链接器以如由存储器布局所定义的那样链接组件,从而创建映像。
Description
技术领域
本发明一般涉及用于更新无线设备的软件的***和方法,尤其是,涉及用于补丁最小化工具的***和方法,其中补丁的大小可以被最小化,以便更新无线设备。
背景技术
通常,手持机和其它无线设备包含以可执行指令和不可执行数据的形式存储在存储器中的软件。软件为这些设备提供执行不同功能的能力,诸如经由无线网络的通信,处理诸如呼叫等待和呼叫转移的呼叫特征,以及维持日历和地址薄。
然而,一旦无线设备提供给终端用户,提供额外的软件或者修正已经安装在设备上的软件就变得困难了。为了处理这一问题,开发了空中固件(FOTA)来使服务提供商能够通过无线网络发送软件更新到无线设备。这样的更新可以为已经存在于无线设备上的软件提供附加功能,或可以提供错误修复来处理现有软件的问题。然而,虽然诸如FOTA的更新处理提出了一种方式来发送软件到无线设备,利用该更新处理不是没有问题。因而,通过空中接口有效地提供软件给无线设备是有挑战性的。
发明内容
本发明的一个目的在于提供一种用于补丁最小化工具的***和方法,其中,当提供在移动设备中使用的映像时,最终的映像以这样的方式被创建以便将来更新的影响被最小化。
本发明的另一个目的在于提供一种用于补丁最小化工具的***和方法,其中,当提供在移动设备中使用的映像时,基于原始映像与更新的映像之间的映像差别的重定向机制被使用以便更新移动设备的映像。
为了达到这些目的,根据本发明的一方面,提供一种用于提供映像的方法。该方法包括:识别形成无线设备的映像所需的多个目标文件,其中从汇编器以机器语言的方式接收至少一个目标文件。从目标文件形成多个组件并且为每个组件确定基地址。生成存储器布局来在相应的基地址处定义被识别的每个组件的位置,以及调用链接器以如由存储器布局所定义的那样链接组件,从而创建映像。
根据本发明的另一方面,提供一种用于更新移动设备的方法。该方法包括:确定存储在移动设备上的原始映像与更新的映像之间的映像差别,并基于映像差别识别重定向机制中的任何变化的地址,其中重定向机制识别原始映像内的位置。更新重定向机制来反映任何变化的位置,以及将由映像差别识别的变化和更新的重定向机制传送到移动设备。
根据本发明的另一方面,提供一种用于最小化补丁大小的方法。该方法包括:从创建补丁所需的多个文件形成组件,其中至少一个文件以机器语言代码被接收。为每个组件确定基地址并生成存储器布局来在相应的基地址处定义每个组件的位置。调用链接器以如由存储器布局所定义的那样链接组件,从而创建补丁。
根据本发明的另一方面,提供一种用于最小化补丁大小的***。该***包括:汇编器、链接器、以及补丁最小化模块。当至少一个文件由汇编器处理之后,配置补丁最小化模块以机器语言代码方式接收多个文件,并从该多个文件形成组件。也配置补丁最小化模块来为每个组件确定基地址,产生存储器布局来在相应的基地址处定义每个组件的位置,以及调用链接器来如由存储器布局定义的那样产生补丁。
附图说明
当与相随的附图一起阅读时,从下面的详细描述中可以最好地理解本公开的各个方面。强调的是,按照工业中的标准实践,不同的特征未按比例画出。实际上,为了讨论的简明,不同特征的尺度可以任意地增加或减少。
图1解释根据本发明的一个实施例的***;
图2是根据图1的实施例的映像创建***的框图;
图3是根据图1的实施例的无线设备的框图;
图4A-4C解释包含单一映像的存储器的不同的实施例;
图5是根据本发明的一实施例的用于产生映像方法的流程图,该映像具有最小化将来更新的变化的布局;
图6解释根据本发明的一实施例的用于生成可执行文件的编译***;
图7是根据本发明的一实施例的用于产生映像过程的流程图,该映像具有最小化将来更新的变化的布局;
图8是根据本发明的另一实施例的用于产生映像过程的流程图,该映像具有最小化将来更新的变化的布局;
图9A和9B解释根据本发明的实施例的包括单一映像和重定向机制的存储器;
图10是根据本发明的一实施例的用于更新现有的单一映像过程的流程图,该映像具有补丁最小化布局。
具体实施方式
可以理解,下面公开提供了用于实现本发明的不同特征的许多不同的实施例,或者实例。如下描述的组件的特定实例和安排来简化本发明的公开。当然,它们仅仅是实例并不是限制性的。另外,本公开可以在不同的实例中重复附图标记和/或字母。该重复是为了简化和清楚,并不是本身指示所讨论的不同实施例和/或配置之间的关系。
参考图1,解释根据本发明的一个实施例的一种***100。该***100包括映像创建***102,无线网络104,以及无线设备106。如下将更详细地描述的那样,映像创建***102提供来创建包含可执行指令和/或数据的映像的功能。该映像经由无线网络104被传送到无线设备106。然后无线设备106利用被传送的映像为用户提供各种功能和经由无线网络104与其它设备通信。映像可用包含各种功能的组合和数据,以及附加的特征和错误修复可以由映像创建***102用于更新映像。无线网络104可以是任何类型的网络,包括集中式的和临时(ad hoc)网络,而且可以使用任何类型的网络技术,包括码分多址(CDMA),全球移动通信***(GSM),正交频分复用(OFDM),或类似的通信技术。在本实施例中,网络被描述为基于分组的网络,但是可以理解,本公开可以以相同的方式应用到任何类型的传输中。
参考图2,计算机被显示为上述图1的映像创建***102的一个实施例。尤其是,映像创建***102可以包括中央处理单元(“CPU”)202,存储器单元204,输入/输出(“I/O”)设备206,以及网络接口208。
例如,网络接口208可以是一个或多个无线和/或有线网络接口卡(NIC),其中每个都与媒体访问控制(MAC)地址相关联。另外,网络接口208可以被直接耦合到无线网络104或者可以经由一个或者多个其它网络(未示出)被耦合到无线网络104。同时,映像创建***102的各个组件202,204,206,和208可以由总线***210互连。
映像创建***(即计算机)102可以被不同地配置,而且列出的组件中的每一个可以实际代表几个不同的组件。例如,CPU202可以代表多处理器或者分布式处理***;存储器单元204可包括不同等级的高速缓冲存储器、主存储器、硬盘、和远程存储位置;以及I/O设备206可以包括监视器,键盘等等。
此外,尽管在映像创建***102内示出,但是一些组件(例如键盘)可以在物理上位于映像创建***102之外。另外,组件202,204,206,和208中的一些或者全部可以是分布式的。因而,映像创建***102的配置中可以预见较宽范围的灵活性。
参考图3,解释图1的无线设备106的一个实施例。无线设备106包括处理器302,存储器304,和无线通信***306。无线设备106可以是任何移动设备,包括蜂窝电话,个人数字助理,和膝上电脑。操作***可以用于控制无线设备106并提供用户接口,通过该用户接口,设备的用户可以访问和使用各种功能。
无线设备106的存储器304包括包含在无线设备内的可执行指令和数据的二进制映像,但是应该注意:在映像中可能不包括所有的指令和数据。在本实施例中,映像可以是任何类型的映像,包括可以或不可以具有动态链接特性的静态的单一映像。更明确地,包含在存储器304中的映像的类型一般取决于用于控制无线设备106的操作***。操作***可以或不可以支持动态链接(例如,通过使用动态链接库(DLL)或动态共享对象(DSO))。
众所周知,DLL通常可以被定义为包含可执行代码和/或数据的文件,其在加载时间或者运行时间被绑定到程序,而不是在链接期间。因而,多个应用程序可以同时共享DLL中的代码和数据。DLL与WINDOWS操作***相关联(WINDOWS是Redmond,WA的微软公司的注册商标)。DSO通常可以被定义为一种机制,其提供一种方式来以特定格式构建一段程序代码用于在运行时间加载到可执行程序的地址空间中。DSO获取可执行程序符号集的相关信息就好像已经与它静态链接在一起了。DSO与UNIX/LINUX操作***相关联。
与映像的使用相关的问题常常源于映像更新,当存在于无线设备106之上的映像用新的映像更新时发生该问题。当发生映像更新时,在设备上的映像与将被传送到该设备的新映像之间的区别被称为在两个映像之间的映像差别(例如变化的量)。一个这样的问题是“代码滑动(code slide)”,其在以下情况下发生:映像差别大,而且映像的更新导致形成映像的一部分代码滑入由另一部分代码占据的存储空间中。该问题将在图4a-4c中更详细地解释。
首先,参考图4a,解释单一映像400的一个实施例。单一映像400可以包括第一和第二指令区域402和406以及数据区域404。这些区域402,404,和406只是为了解释的目的,并且可以提供指令和数据的任何组合和组织。如图所示,单一映像的每个区域402,404,和406邻接下一个区域,并且有第二指令区域406之后的连续存储器的可用区域408。然而,如果不同于第二区域406的任何区域被更新,则没有其中可以在与正被更新的区域连续地存储更新的可用的存储器。
附带参考图4b,图4a的映像显示有利用分段链接结构。该分段链接结构将映像400分成各个区域(例如,第一,第二,和第三区域402,404,和406)并且为每个区域隔离一块可用的存储器。例如,连续第一指令区域402有一可用区域410,连续第二指令区域404有一可用区域412,以及参考图4a所描述的一个分离的可用区域408。值得注意的是:由于可用区域410和412的存在,分离的可用区域408现在更小。在不需要重新创建整个单一映像的条件下,可用区域允许区域402和404的某种扩充。在一些场合该解决方案是可行的,但是通常无法解决代码滑动问题,因为更新常常比分配的连续存储器更大,如图4c所解释的。
附带参考图4c,指令区域402需要比原来在可用区域412中分配的空间更大的空间。因而,如果指令区域402将保持作为连续块,它将与数据区域404重叠,如由重叠区域414所指示的那样。在本实施例中,重叠区域414可以覆盖数据区域404,重叠区域414可被分解成非连续区域并被部分地存储在非连续可用存储器中,或者数据区域404将不得不被移走。显然,覆盖数据区域404的开始可能破坏功能。将重叠区域414分解成非连续区域常常是非希望的,而且移走数据区域404可能导致更大的更新。
同时,尽管分段链接结构通常是比使用没有由分段链接提供的可用连续存储器空间的映像文件更好的解决方案,但是该结构不能满意地解决由单一映像呈现的问题。例如,为了生成分段链接结构,可能使用诸如分散文件(scatter file)的文件。众所周知,分散文件被用于告知链接器在存储器中在哪里加载文件或者对象。通常生成分散文件是耗时的。而且,分段链接结构趋于消耗相对大量的存储器,因为分段之间的可用空间应当足够大来承担相应的分段中期望的容量增加。尽管那样,由于更新和错误修复可用的空间也可能相对快地溢出,这意味着新的分散文件不得不被生成。在分段之间移动功能也可能要求生成新的分散文件。分段链接结构所需的复杂度和空闲存储器通常正比于代码大小。
通常不可能相对于第三方的库执行分段链接。另外,分段链接结构维持分段之间的引用,因此修改分段可能导致需要更新映像中的所有引用。为了这些和其它原因,对可读写数据、只读数据、以及未初始化数据的改变可能导致对映像的很大改变。
通常,由映像所代表的软件的结构几乎没有多少灵活性。利用无线设备之外的工具创建映像,然后在完成时将其传送给无线设备。诸如附加特征和错误修复的更新可能要求整个映像被修改并被传送到无线设备。由于多种原因这是不切实际的。不仅长时间占用用户带宽是不切实际的,而且政府的规定也可能限制更新可以花费的时间量。例如,政府规定911限制条款可能要求更新不得超过五分钟。由于这样,更新移动设备上的现有映像的大部分常常是不可行的。
参考图5,解释用于处理当创建映像时的代码滑动问题的方法500的一个实施例。在步骤502,方法500识别映像的文件。一个或者多个所需的文件可能从汇编器以机器语言代码接收。在步骤504,构成映像的多个组件从所需的文件中形成。如随后将更详细的描述的那样,组件包含形成映像的模块,并可能与将从同一映像中形成的分段链接结构的分段有很少的或者没有对应关系。组件或模块可以是缺省类型或可以由用户定义。
在步骤506,为每个组件确定基地址。基地址被选择来最小化随后更新对映像的影响。例如,如果对其正创建映像的存储器是闪存,则基地址可以被选择来最小化将需要在随后的更新中被修改的闪存扇区的数量。在步骤508,利用组件和基地址来生成存储器布局。最后,在步骤510,链接器被调用来基于存储器布局链接组件。因而,最终的映像可以被以这样的方式构建,以便最小化今后更新的影响。
参考图6,编译***600的一个实施例利用各种模块来编译在图1的映像创建***102中的可执行程序612。软件程序通常利用高级语言编写(即源代码),并被转换成机器可读语言(即目标代码)。尽管在术语与实际的处理中可能发生一些变化,但是编译***600提供在通常转换过程中使用的模块,包括预处理器602、编译器604、汇编器606、以及链接器610。预处理器602、编译器604、汇编器606、以及链接器610是通常使用的模块,它们与特定的编程语言和/或平台相关联。
同时,补丁最小化模块608被***在汇编器606和链接器610之间的过程中来在链接前修改汇编器的输出,如下面将更详细地描述的那样。该结构使补丁最小化模块608能够在各种文件变得太大不容易操作前操作它们。
预处理器602负责收集将要被编译的源程序的不同部分。编译器604获得预处理器602的输出并将其转换成汇编语言代码,以及汇编器606将汇编语言代码翻译成机器语言代码。传统地,然后链接器610将获得该机器语言代码,识别由机器语言代码引用的任何库或其它外部模块,并且将这些模块绑定到机器语言代码来形成最终的映像612。
在本实施例中,补丁最小化模块608接收由汇编器606产生的机器语言代码,修改该代码,然后调用链接器610来链接被修改的代码。应当注意,汇编器606和链接器610可能基本对不包括补丁最小化模块608的***没有改变。例如,汇编器606可能被改变来调用补丁最小化模块608而不是链接器610,或来自汇编器的调用可能被补丁最小化模块截取。在其它实施例中,汇编器输出可能被写入一个文件,并且补丁最小化模块608可以在调用链接器610之前对该文件进行操作。链接器610可以是不变的。
因为需要在机器代码级识别和操作代码,和因为机器代码通常针对特定平台/体系结构创建,所以可以理解,可能需要针对提供该补丁最小化功能的每个平台编写不同的补丁最小化模块608。例如,不同的补丁最小化模块可能被提供作为用来操作目标代码的编程工具的插件程序或者模块,诸如BFD(二进制文件描述符)。
众所周知,BFD是一种软件工具,不管目标文件的格式,其使用库来允许应用程序使用一套例程对目标文件进行操作。通过创建新的BFD后端,并将该新的目标文件添加到BFD库中,可以支持新的目标文件格式。BFD被分离成前端和一个或多个后端,针对每个目标文件格式具有一个后端。前端提供用户接口和管理存储器以及各种规范的数据结构,还确定使用哪个后端以及何时调用后端例程。另外,每个后端提供前端可以使用的一套调用程序来维持其规范的形式。因而,针对特定平台/体系结构的每个补丁最小化模块可以被提供作为诸如BFD的工具的后端。
参考图7,在另一实施例中,方法700提供补丁最小化处理的更加详细的实例。首先,在步骤702,方法700调用链接器(例如图6的链接器610)来识别形成将被传送到无线设备的映像所需的目标文件。链接器的输出可以被写入由方法700的随后步骤使用的文件中。
在以这种方式识别所需的目标文件之后,在步骤704,基于目标文件形成多个组件。每个组件被形成来最小化今后更新将对映像的影响。每个组件可以是模块集合,其中模块是可再定位目标,以及该集合可以预定义(例如归档文件)。例如,归档文件(常常具有*.a和*.lib的名称)可以是包括多个模块的库,并且库本身可以被识别为组件。为了识别组件,方法700检查机器语言代码来识别各段代码之间的相近形,然后,除非另有指示,否则基于那些相近形创建组件。
组件可以基于用户提供的定义、缺省定义、或者用户提供的和缺省定义的组合。例如,缺省定义可以将组件定义为相关的模块的集合(例如单个库或其它定义的集合),其中任何非库文件被组合到单个组件中。因而,如果有两个库和多个非库文件,则将有三个组件。
相反地,如果用户已经提供了组件定义,则可以覆盖任何适用的缺省定义。例如,用户可以将多个库组合成单个组件,将库分成多个组件等等。另外,用户定义的和缺省定义可以混合,其中用户定义特定组件并允许根据缺省定义定义其它组件。
如解释的那样,在步骤704内,可以在步骤706做出关于对其正准备映像的平台是否支持动态链接(例如DLL或DSO)的决定。如果平台支持动态链接,则该方法形成有每个DLL或DSO作为组件的组件(除非用户已经另外指定)。相反地,如果平台不支持动态链接,该方法继续到步骤708,其中它可能调用另一个处理来将目标文件划分成组件。
在步骤710,确定每个组件的基地址。可以通过检查现有的存储器结构和引导链接器在特定存储器空间加载文件或目标的诸如分散文件的任何文件来确定基地址。每个基地址被选择来最小化今后更新可能导致的变化量。例如,很可能要求频繁更新的组件可以被给予基地址,其允许该组件比很少被更新的组件具有更多代码滑动空间。
在步骤712,哑目标被生成来存储组件及其基地址用作今后的更新。在步骤714,用于链接器的存储器布局基于组件及其基地址被生成。最后,在步骤716,链接器被调用来基于存储器布局链接组件。
参考图8,在又一实施例中,方法800提供了由图6的补丁最小化模块608执行的图7的方法700的更加详细的实例。为了解释的目的,本实施例利用由英国的ARM有限公司出产的ARM链接器(“armlink”)作为链接器610(图6)。因而,应该理解:取决于所使用的链接器,对armlink的各种引述可以由其它链接器代替。另外,本实例中引用可执行可链接格式(ELF)的文件,但是也可以使用其它文件格式。
方法800从多个步骤802,804,806,808,810,812,和814进行下去,并且可以使用许多不同文件作为输入和产生其它文件作为输出。输入文件可以包括一个或多个分散加载(SCL(scatter load))文件816,各种目标和归档文件818,armlink输出文件820,先前可执行文件822,以及地址范围824。输出文件可以包括另一个SCL文件826,重定向机制828,目标文件830,哑目标832,以及最终的ELF映像834。应当注意,术语“文件”可以代表任何类型的目标,包括文本文件,脚本文件,或以源代码、汇编、或机器代码语言表示的代码。
方法800被假设去创建对今后更新最优化的最终映像。如果映像正在被重新创建(例如映像是一基础编译版本(base build)),则方法800在存储器中组织映像来最小化今后更新的影响。如果映像正在被更新,而不是被重新创建,则先前可执行文件822(例如基础编译版本或者先前更新的映像)也可以被用来识别和形成组件。如果映像正在被更新而且原始映像不是利用补丁最小化模块608形成的,则方法800可以试着在不需要整个映像更新的条件下尽可能地最优化映像。基础编译版本使方法800能够最优化随后的映像更新。
在步骤802,方法800分析(多个)SCL文件816。SCL文件816通常被作为硬件特定文件创建,其详细描述具体体系结构的硬件布局。SCL文件使得用户可以将映像划分成被扩散到整个存储器地址映射的许多分离的代码和数据区域。
SCL文件816和目标以及归档文件818(例如各种目标文件和库)也可被用来创建armlink输出文件820。例如,方法800可以通过利用诸如“-list”参数的参数调用armlink来重定向armlink的标准输出流到文件,来创建armlink输出文件820。可替换地,方法800可以使用在最终输出之前创建的各种armlink列表并利用那些列表来操作。armlink输出文件820可由方法800使用以识别用来形成映像的所有模块。
在步骤804,方法800基于所分析的SCL文件816和armlink输出文件820形成组件。组件可以包括单一模块或模块集合,其中模块可以是可重定位的目标文件。在本实施例中,模块可以是诸如ELF的格式。如果映像正在被更新,而不是被重新创建,则先前可执行文件822也可以被用来识别和形成组件。
如上所述,取决于所针对的平台是否支持动态链接,可以使用不同的处理。例如,方法800可以为支持动态链接的平台识别和形成组件本身,同时另一个处理可以用来为不支持动态链接的平台识别和形成组件。
在步骤806,为每个组件确定基地址。该确定合并为组件定义硬件中可用的地址范围的地址范围824。这使得可以限制组件可以被放置的位置。例如,如果特定数量的存储器被保留用于今后的更新,则地址范围可以被如此定义以便使被保留的存储器不用于存储组件。
尽管步骤808,810,和812以并行方式被示出,但是可以理解,它们实际可能不被并行地执行。在步骤808,一个或多个SCL文件826被生成。SCL文件826从原始SCL文件816被修改来利用在步骤806确定的基地址说明组件的布置。
在步骤810,方法800创建重定向机制830,并改变原始接收的目标文件(现在包含在组件中)来基于重定向机制创建修改的目标文件828。重定向机制830使得方法800可以去除组件之间的任何直接引用,并且以到重定向机制的引用替换直接引用。不改变组件内部的引用。
例如,重定向机制可以是一个或者多个跳转表或表面代码(veneer)。跳转表是包含子程序地址(例如提供到每个子程序的间接引用)的数组。因而,如果组件引用该数组的特定元素,则该组件将被重定向到相应的子程序。Veneer是用于进行子程序调用的短指令序列。请求调用的组件利用诸如限制范围分支指令的指令传送控制到veneer。然后veneer通过允许转移到相应目的地的机制将控制传送到目的地的子程序。因而,跳转表和veneer都使之能够进行重定向。可以理解可以替换其它重定向机制,但是依据所使用的具体的重定向机制可能需要一些修改。
在步骤812,该方法生成重链接信息来创建哑目标832。哑目标832可用于今后的更新。在本实施例中,ELF格式(或其它格式)被扩展为包括存储更新信息的空间,包括组件及其基地址。然后在步骤814链接器(例如armlink)被调用来创建最终的映像834。
同时,如果映像正在被更新则映像差别可能被形成。在这种情况下,只有变化了的信息(例如组件)将被上载。因为映像本身已经被最优化并且组件之间的任何链接已被改变为到重定向机制的引用,因此只有正在更新的组件将需要被上载,连同对重定向机制的任何改变。
为了举例的目的,映像本身可能接近22MB,但是可以理解,可以使用任何大小的映像。每个跳转表(假设每个组件都有跳转表)可接近4KB。可用的存储器空间806和808的大小可接近4-16KB,并且可以位于包含一个或多个组件的每4KB空间之后。剩余的存储器可以组成接近250KB与800KB之间的连续存储器空间。可以理解,这些值只是用于解释,以及映像、(多个)跳转表、可用的存储器空间、以及剩余存储器的大小可以是所希望的任何大小。
参考图9a,单一映像900的一个实施例包括组件A(由附图标记902代表)和组件B(由附图标记904代表)。组件A与相应的连续存储器空间的可用区域906相关联。和组件B与相应的连续存储器空间的可用区域908相关联。这些可用的区域906和908为它们相应的组件提供一些连续扩展的空间。如上所述,对于单一映像900可以用单一的跳转表910,或者可以使用多个跳转表(如由图9b的跳转表910和912所示)。例如,在一些实施例中,小跳转表可能需要更小的空间,因为它能够在单个指令中提供与符号的位置相应的地址和跳转指令。相反地,大跳转表可能需要独立的加载地址和跳转指令。如果使用较小的跳转表,可以理解,包含在每个表中的符号可以被分解以便具体组件只需要利用一个或两个跳转表。然而,符号与跳转表的任何组合都可以被使用。
参考图10,在另一个实施例中,方法1000可以被用于为先前被创建有重定向机制并被存储在无线设备上的现有映像打补丁(即更新)。方法1000可以例如在图1的映像创建***102上执行。首先,在步骤1002,方法1000确定现有映像与新映像之间的映像差别来识别两个映像之间的区别。在步骤1004,基于映像差别识别包含在映像重定向机制中的任何符号的地址的任何变化。在步骤1006,在重定向机制中的地址被更新来反映所识别的变化。最后,在步骤1008,任何组件和重定向机制更新被传送到无线设备。
本发明是有利的,即当在移动设备中使用的映像被更新时,补丁最小化模块最小化补丁大小使得更新的影响被最小化。而且,当提供在移动设备中使用的映像时,基于原始映像与更新的映像之间的映像差别的重定向机制被使用,使得移动设备的映像更新可以被最小化。
尽管本公开只有一些示例性的实施例在上被详细地描述,所属领域的技术人员将容易地理解,在不偏离本公开的新颖的教导和优点的条件下,在示例性的实施例中的许多修改是合理的。例如,虽然本公开为了示例的目的频繁使用移动设备,可以理解,本公开的实施例可以用于非移动的设备,诸如那些更新的大小很重要的设备。还有,关于一些实施例所解释和上述的特征可以与关于其它的实施例所解释和上述的特征进行组合。因而,所有这样的修改意在包括在本公开的范围之内。
Claims (20)
1、一种用于提供供在移动设备中使用的映像的方法,该方法包括:
从汇编器以机器语言的方式接收形成映像所需的多个目标文件中的至少一个,并识别多个接收的目标文件;
从目标文件形成多个组件;
为每个组件确定基地址;
生成存储器布局来在相应的基地址处定义每个被识别的组件的位置;以及
调用链接器以如由存储器布局所定义的那样链接组件,从而创建映像。
2、权利要求1的方法,进一步包括:生成哑目标,其存储代表每个被识别的组件的信息和与每个组件相应的基地址。
3、权利要求2的方法,其中所述信息被存储在哑目标的未分配的区段。
4、权利要求3的方法,进一步包括:利用存储在哑目标中的信息更新映像。
5、权利要求1的方法,其中形成多个组件包括:
确定映像兼容的操作***不支持动态链接;以及
调用程序来将目标文件划分成组件并为组件之间的引用创建跳转表。
6、权利要求1的方法,其中为每个组件确定基地址包括:考虑到其中存储映像的存储器的闪存边界。
7、权利要求1的方法,其中为每个组件确定基地址包括:分析至少一个分散描述符文件来识别预定的地址约束。
8、权利要求1的方法,进一步包括:将创建的映像经由无线接口传送到移动设备。
9、一种用于更新移动设备的方法,该方法包括:
确定存储在移动设备上的原始映像与更新的映像之间的映像差别;
基于映像差别识别重定向机制中的任何变化的地址,该重定向机制识别在原始映像内的位置;
更新重定向机制来反映任何变化的位置;以及
传送由映像差别识别的变化和更新的重定向机制到移动设备。
10、权利要求9的方法,其中映像差别通过分析机器语言代码来确定。
11、权利要求10的方法,进一步包括:在更新重定向机制以反映任何变化的位置之后,调用链接器来创建可执行的映像。
12、权利要求9的方法,进一步包括:基于映像差别识别形成原始映像的多个组件中的哪些已经在更新的映像中变化了,其中传送由映像差别识别的变化包括只传送已经被改变的组件。
13、权利要求12的方法,其中每个组件与重定向机制中的唯一位置相关联。
14、权利要求13的方法,进一步包括:生成哑目标,其存储代表每个被识别的组件的信息和与它相关联的位置。
15、一种在创建用在数字***中的补丁时、用于最小化补丁大小的方法,该方法包括:
以机器语言代码的方式接收创建补丁所需的多个文件中的至少一个,并从多个接收到的文件形成组件;
为每个组件确定基地址;
生成存储器布局来在相应的基地址处定义每个组件的位置;以及
调用链接器以如由存储器布局所定义的那样链接组件,从而创建补丁。
16、权利要求15的方法,其中形成组件包括:
确定补丁兼容的操作***不支持动态链接;以及
调用程序来将文件划分成组件并为组件之间的引用创建重定向机制。
17、权利要求15的方法,其中形成组件包括修改以机器语言代码方式接收的文件中的至少一个。
18、一种在创建用在数字***中的补丁时、用于最小化补丁大小的***,该***包括:
汇编器;
链接器;以及
补丁最小化模块,被配置来:
在至少一个文件由汇编器处理之后以机器语言代码方式接收多个文件;
从该多个文件形成组件;
为每个组件确定基地址;
生成存储器布局来在相应的基地址处定义每个组件的位置;以及调用链接器以如由存储器布局所定义的那样生成补丁。
19、权利要求18的***,其中补丁最小化模块进一步被配置来:
确定补丁兼容的操作***不支持动态链接;以及
通过调用程序来将文件划分成组件来形成组件,并为所形成的组件之间的引用创建重定向机制。
20、权利要求18的***,其中补丁最小化模块被配置来截取从汇编器到链接器的调用。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US74132205P | 2005-12-01 | 2005-12-01 | |
US60/741,322 | 2005-12-01 | ||
US11/333,847 | 2006-01-18 | ||
KR118497/06 | 2006-11-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101026825A true CN101026825A (zh) | 2007-08-29 |
Family
ID=38744639
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006100644678A Pending CN101026825A (zh) | 2005-12-01 | 2006-12-01 | 用于补丁最小化工具的***和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20070132774A1 (zh) |
KR (1) | KR20070057667A (zh) |
CN (1) | CN101026825A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916194A (zh) * | 2010-06-01 | 2010-12-15 | 浙江大学 | 一种无线传感网节点程序的部署方法 |
CN103218428A (zh) * | 2013-04-09 | 2013-07-24 | 深圳市九洲电器有限公司 | 一种动态链接方法及*** |
CN103312706A (zh) * | 2013-06-04 | 2013-09-18 | 百度在线网络技术(北京)有限公司 | 网络访问控制的方法和装置 |
CN103995726A (zh) * | 2014-04-28 | 2014-08-20 | 华为技术有限公司 | 映像文件生成方法及装置 |
CN104239064A (zh) * | 2014-09-26 | 2014-12-24 | 福建升腾资讯有限公司 | 一种提取和组织arm程序重定位信息的方法 |
CN108027741A (zh) * | 2016-04-27 | 2018-05-11 | 华为技术有限公司 | 基于补丁升级的文件处理方法、装置、终端以及存储介质 |
CN110633090A (zh) * | 2019-08-14 | 2019-12-31 | 华为技术有限公司 | 补丁方法、相关装置及*** |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7409685B2 (en) | 2002-04-12 | 2008-08-05 | Hewlett-Packard Development Company, L.P. | Initialization and update of software and/or firmware in electronic devices |
US8479189B2 (en) | 2000-11-17 | 2013-07-02 | Hewlett-Packard Development Company, L.P. | Pattern detection preprocessor in an electronic device update generation system |
US8555273B1 (en) | 2003-09-17 | 2013-10-08 | Palm. Inc. | Network for updating electronic devices |
US7904895B1 (en) | 2004-04-21 | 2011-03-08 | Hewlett-Packard Develpment Company, L.P. | Firmware update in electronic devices employing update agent in a flash memory card |
US8526940B1 (en) | 2004-08-17 | 2013-09-03 | Palm, Inc. | Centralized rules repository for smart phone customer care |
US7958502B2 (en) * | 2005-08-05 | 2011-06-07 | Hewlett-Packard Development Company, L.P. | Efficient generator of update packages for mobile devices that uses non-ELF preprocessing |
US8209676B2 (en) * | 2006-06-08 | 2012-06-26 | Hewlett-Packard Development Company, L.P. | Device management in a network |
US8296268B2 (en) * | 2006-07-21 | 2012-10-23 | Samsung Electronics Co., Ltd. | System and method for change logging in a firmware over the air development environment |
EP2047420A4 (en) | 2006-07-27 | 2009-11-18 | Hewlett Packard Development Co | USER EXPERIENCE AND DEPENDENCE MANAGEMENT IN A MOBILE DEVICE |
CN102037444B (zh) * | 2008-05-20 | 2014-07-30 | 思杰***有限公司 | 用于修补从通用基础磁盘映像获取的多个磁盘映像的方法和*** |
DE102008048552B4 (de) * | 2008-09-17 | 2014-02-27 | Khs Gmbh | Verfahren zum Betrieb eines industriellen Systems |
US8468516B1 (en) * | 2008-12-19 | 2013-06-18 | Juniper Networks, Inc. | Creating hot patches for embedded systems |
CN107656753A (zh) * | 2016-07-25 | 2018-02-02 | 中兴通讯股份有限公司 | 一种补丁实现方法及装置 |
US20190095187A1 (en) * | 2017-09-28 | 2019-03-28 | Trillium Incorporated | Incremental updates in static libraries |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US6397385B1 (en) * | 1999-07-16 | 2002-05-28 | Excel Switching Corporation | Method and apparatus for in service software upgrade for expandable telecommunications system |
JP3669619B2 (ja) * | 1999-09-06 | 2005-07-13 | 富士通株式会社 | 無線端末装置のソフトウェア更新方法及びその装置 |
ATE296580T1 (de) * | 2000-09-18 | 2005-06-15 | Zimmer Gmbh | Pedikelschraube für intervertebrale stützelemente |
EP1410181A1 (en) * | 2001-07-16 | 2004-04-21 | Yuqing Ren | Embedded software update system |
US7143407B2 (en) * | 2001-07-26 | 2006-11-28 | Kyocera Wireless Corp. | System and method for executing wireless communications device dynamic instruction sets |
US7328007B2 (en) * | 2001-07-26 | 2008-02-05 | Kyocera Wireless Corp. | System and method for organizing wireless communication device system software |
US7027806B2 (en) * | 2001-07-26 | 2006-04-11 | Kyocera Wireless, Corp. | System and method for field downloading a wireless communications device software code section |
US7159214B2 (en) * | 2001-07-26 | 2007-01-02 | Kyocera Wireless Corp. | System and method for compacting field upgradeable wireless communication device software code sections |
US7386846B2 (en) * | 2001-07-26 | 2008-06-10 | Kyocera Wireless Corp. | System and method for the management of wireless communications device system software downloads in the field |
US7092734B2 (en) * | 2001-08-06 | 2006-08-15 | Samsung Electronics Co., Ltd. | IOTA software download via auxiliary device |
US20030186689A1 (en) * | 2001-08-06 | 2003-10-02 | Samsung Electronics Co., Ltd | System and method for IOTA software download notification for wireless communication devices |
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 |
US7752618B2 (en) * | 2002-12-05 | 2010-07-06 | Samsung Electronics Co., Ltd. | Apparatus and method for remote DLL linking of software upgrades for a wireless mobile station |
US7461373B2 (en) * | 2002-12-05 | 2008-12-02 | Samsung Electronics Co., Ltd. | Apparatus and method for upgrading software of a wireless mobile station |
US7149508B2 (en) * | 2003-02-05 | 2006-12-12 | Samsung Electronics Co., Ltd. | System and method for delta-based over-the-air software upgrades for a wireless mobile station |
US8572597B2 (en) * | 2003-06-20 | 2013-10-29 | Samsung Electronics Co., Ltd. | Apparatus and method for performing an over-the-air software update in a dual processor mobile station |
US7810088B2 (en) * | 2003-06-20 | 2010-10-05 | Samsung Electronics Co., Ltd. | Apparatus and method for performing a fail-safe over-the-air software update in a mobile station |
US7657886B1 (en) * | 2004-06-03 | 2010-02-02 | Hewlett-Packard Development Company, L.P. | Mobile device with a MMU for faster firmware updates in a wireless network |
US7529779B2 (en) * | 2004-06-10 | 2009-05-05 | Samsung Electronics Co., Ltd. | Apparatus and method for efficient generation of delta files for over-the-air upgrades in a wireless network |
US7673300B2 (en) * | 2004-06-10 | 2010-03-02 | Samsung Electronics Co., Ltd. | Segmented linker using spatial locality of reference for over-the-air software updates |
US7580959B2 (en) * | 2004-06-14 | 2009-08-25 | International Business Machines Corporation | Apparatus, system, and method for providing efficient disaster recovery storage of data using differencing |
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 |
-
2006
- 2006-01-18 US US11/333,847 patent/US20070132774A1/en not_active Abandoned
- 2006-11-28 KR KR1020060118497A patent/KR20070057667A/ko not_active Application Discontinuation
- 2006-12-01 CN CNA2006100644678A patent/CN101026825A/zh active Pending
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916194A (zh) * | 2010-06-01 | 2010-12-15 | 浙江大学 | 一种无线传感网节点程序的部署方法 |
CN103218428A (zh) * | 2013-04-09 | 2013-07-24 | 深圳市九洲电器有限公司 | 一种动态链接方法及*** |
CN103218428B (zh) * | 2013-04-09 | 2016-07-06 | 深圳市九洲电器有限公司 | 一种动态链接方法及*** |
CN103312706A (zh) * | 2013-06-04 | 2013-09-18 | 百度在线网络技术(北京)有限公司 | 网络访问控制的方法和装置 |
CN103312706B (zh) * | 2013-06-04 | 2017-05-10 | 百度在线网络技术(北京)有限公司 | 网络访问控制的方法和装置 |
CN103995726A (zh) * | 2014-04-28 | 2014-08-20 | 华为技术有限公司 | 映像文件生成方法及装置 |
CN104239064A (zh) * | 2014-09-26 | 2014-12-24 | 福建升腾资讯有限公司 | 一种提取和组织arm程序重定位信息的方法 |
CN104239064B (zh) * | 2014-09-26 | 2017-09-15 | 福建升腾资讯有限公司 | 一种提取和组织arm程序重定位信息的方法 |
CN108027741A (zh) * | 2016-04-27 | 2018-05-11 | 华为技术有限公司 | 基于补丁升级的文件处理方法、装置、终端以及存储介质 |
US10949191B2 (en) | 2016-04-27 | 2021-03-16 | Huawei Technologies Co., Ltd. | Patch-upgrade-based file processing method and apparatus, terminal, and storage medium |
CN110633090A (zh) * | 2019-08-14 | 2019-12-31 | 华为技术有限公司 | 补丁方法、相关装置及*** |
CN110633090B (zh) * | 2019-08-14 | 2022-04-12 | 华为技术有限公司 | 补丁方法、相关装置及*** |
Also Published As
Publication number | Publication date |
---|---|
US20070132774A1 (en) | 2007-06-14 |
KR20070057667A (ko) | 2007-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101026825A (zh) | 用于补丁最小化工具的***和方法 | |
CN101026826B (zh) | 用于提供在无线装置中使用的整体映像的***和方法 | |
US7694291B2 (en) | Build optimizer tool for efficient management of software builds for mobile devices | |
TWI439931B (zh) | 用於增加三角差動效能之目的碼之產生 | |
JP4903686B2 (ja) | フラッシュメモリのプログラミング | |
JP3220055B2 (ja) | 機械語命令列またはアセンブリ言語命令列を最適化する最適化装置、及び、高級言語で記載されたソースプログラムを機械語またはアセンブリ言語の命令列に変換するコンパイラ装置。 | |
US6523101B1 (en) | Installed-software development assistance system | |
US20080040401A1 (en) | Processing of compact functional diferences | |
KR100871778B1 (ko) | 중앙집중형 동적 어드레싱 매니저를 이용한 동적 어드레싱방법 및 장치 | |
KR101401143B1 (ko) | 무선 펌웨어 업데이트 개발 환경에서의 변경 로깅을수행하기 위한 방법 및시스템 | |
EP1691282A1 (en) | Build optimizer tool for efficient management of software builds for mobile devices | |
US20050216537A1 (en) | Dynamic addressing (DA) using a centralized DA manager | |
US20090172338A1 (en) | Feedback linker for increased delta performance | |
CN102722387A (zh) | 动态打补丁的方法和装置 | |
CN111857765A (zh) | 用于药物设计***的插件***及其生成方法和更新方法 | |
CN110532016B (zh) | 版本管理方法、版本更新方法和版本管理*** | |
CN1758220A (zh) | 一种升级软件版本的方法 | |
CN116009959B (zh) | Flash项目的移植方法、装置、***及存储介质 | |
US20040117787A1 (en) | Reorganized storing of applications to improve execution | |
WO2005074621A2 (en) | Dynamic addressing (da) using a centralized da manager | |
EP1793311A2 (en) | System and method for a patch minimization tool | |
CN113220303A (zh) | 一种内核模块的编译方法和*** | |
KR20070081868A (ko) | 이동통신시스템에서 효율적으로 소프트웨어를 업데이트하는방법 | |
CN117331573A (zh) | 一种可自举的轻量级软件包安装方法 | |
EP1806655A2 (en) | System and method for providing monolithic image for use in a wireless device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20070829 |