CN1529847A - 内嵌软件更新系统 - Google Patents

内嵌软件更新系统 Download PDF

Info

Publication number
CN1529847A
CN1529847A CNA028141911A CN02814191A CN1529847A CN 1529847 A CN1529847 A CN 1529847A CN A028141911 A CNA028141911 A CN A028141911A CN 02814191 A CN02814191 A CN 02814191A CN 1529847 A CN1529847 A CN 1529847A
Authority
CN
China
Prior art keywords
software
hotfix
embedded software
embedded
data
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
Application number
CNA028141911A
Other languages
English (en)
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Publication of CN1529847A publication Critical patent/CN1529847A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories

Abstract

本发明提供了一个内嵌软件更新系统的系统及方法,本系统及方法可协助厂商或贩卖商避免因软件错误或硬件问题而导致的高成本的产品回收。本发明一方面展示一个错误更正系统,可以远端遥控数字产品,更正其软件错误并降低硬件问题对产品所造成的影响。另一方面展示一个软件更新系统,能够利用软件修补数据而将数字产品中的软件模块予以更新。本发明中的软件修补系统使制造商能够经由传送软件修补数据到一个正在使用的数字产品中进行软件错误的修补以及降低硬件问题的影响。该软件修补数据也可包含更新一数字产品的NVM存储器或可删除可编程只读存储器中的某些数据所需的参数,这对一个服务提供商或制造商在修改其服务项目内容或是产品功能时非常具有实用性。

Description

内嵌软件更新系统
相关申请
本专利申请要求以下临时申请的优先权:申请日为2001年7月16日,发明名称为“内嵌软件修补系统”,申请号60/305,704;申请日为2002年2月8日,发明名称为“内嵌软件修补系统”,申请号60/354,915。本专利申请将前述两个申请案列为参考文献,视同将其内容完全结合于本申请案中。
技术领域
本发明可应用于具备内嵌软件处理系统的数字电子产品,更具体地说,是在一数字产品上市销售前或上市后,对该产品之中的内嵌软件进行更新、更正、修改或升级的系统及方法。
背景技术
数字科技的发展与革新充分地改变人们的生活、工作与休闲。日益轻薄短小的电脑、手机、个人数字助理、携带型传呼器、PCMCIA无线数据卡,或其他使用公用标准或专属I/O连接器的无线数据卡是科技成为人们越来越不可或缺的最好例子。这些数字科技帮助人们更有效率地工作、与亲属保持联系及获取更多的数据及娱乐。
手机、个人数字助理(PDA)及机顶盒(set-top boxes)等数字产品都使用大规模的内嵌软件系统。这些产品的内嵌软件系统通常都拥有几万行的原始程序码。不可避免的,这些内嵌软件会出现错误,而这些错误将造成数字产品的故障。有些致命的严重错误甚至迫使厂商必须回收他们的产品。由于产品回收所造成的财务损失,一些厂商不得不决定避开某些特定的商业市场,或至少等到产品的品质及可靠度得到改善为止。当然,这些做法所导致的厂商公共关系的恶果及消费者信心的丧失,也是厂商做决定时的重要考量因素。
尽管数字产品的研发与制造不断地改善,产品缺陷仍不可避免。而且越先进复杂的数字产品越容易产生软件、硬件、材料或生产上的错误或缺陷。厂商可使用许多预防措施,以在产品销售至市场之前便尽可能降低或检测出缺陷。然而,一旦这些产品流入市场,尝试修理这些数字产品的努力将有可能成为产品回收的恶果。若仅有少量的产品出现缺陷,贩卖商可提供消费者维修或更换的服务,但唯有当如此的不便很少发生或贩卖商于维修期间内自行提供替代产品时,消费者才可能忍受如此的不便。
当产品出现缺陷的数量很大且牵涉多批产品时,贩卖商仍有可能提供消费者维修或更换的服务。但是对于如此庞大的数量,贩卖商可能根本没有足够的资源来及时修复或更换这些有错误的产品。虽然贩卖商可于维修的期间内提供替代产品,但它必须先有足够的库存替代产品来提供给消费者暂时使用。而这种提供暂时使用的方式也导致所涉及的存货丧失营收的机会,因为贩卖商将无法以正常的方式将它们销售获利。
此外,即使在数字产品已经销售到市场后,厂商有时仍需要对该产品进行改善、加强或升级,因而可能需要更改该产品的内嵌软件。若为重大改变时,厂商可能决定发行一新版的产品,这样的决定可能是昂贵的,但却是必须的。而对于小幅度的更改,厂商将面临是否提早发行新版或等到累积许多小幅更改之后再发行的抉择。产品过早的发行或是不适时的发行将耗费公司的资源,但若等到有较多改变时再发行,将背负引起消费者抱怨的风险。
所以,若能减少这些具备内嵌软件系统的数字产品的回收,则为较符合厂商需求的作法。
若能减少这些具备内嵌软件系统的数字产品过早与不适时的发行,亦为较符合厂商需求的作法。
若能以修理、修补、更新、升级或加强的方式来减少这些数字产品发行的次数,亦为较符合厂商需求的作法。
发明内容
本发明的目的是提供一个内嵌软件更新系统的系统及方法,本系统及方法可协助厂商或贩卖商避免因软件错误(“bugs”)或硬件问题而导致的高成本的产品回收。本发明一方面展示一个错误更正系统(Error correction system),可以远端地(remotely)遥控数字产品,更正软件的错误与降低硬件问题对产品所造成的影响。另一方面展示一个软件更新系统,能够利用软件修补数据(Software patches)而将数字产品中的软件模块予以更新。本发明中的软件修补系统使制造商能够经由传送软件修补数据到一个正在使用的数字产品中以进行软件的修补以及降低硬件问题的影响。该软件修补数据也可包含用以更新一数字产品的NVM存储器或可删除可编程只读存储器(EEPROM,ElectricallyErasable Programmable Read-Only Memory)中的某些数据所需的参数,这对一个服务提供商或制造商在修改其服务项目内容或是产品功能时是非常具有实用性的。
本发明的软件更新系统具有传统软件升级/更新系统所不具备的优点。相比较之下,本发明的软件更新系统仅需要很小的存储器空间来储存用以修复错误或更新关键模块的软件修补数据。这项优点对于小且轻便的数字产品而言更为显著,它不像传统的软件升级/更新系统那样需要庞大的存储器空间来容纳整个应用软件数据以进行新版本软件的升级。
由于本发明的软件更新系统的每个修补数据的大小一般都很小,它仅仅需要有限的网络资源来做修补程序的传输。相对而言,传统的软件升级/更新系统则需要很宽的频宽或很大量的网络资源来传输大量的应用软件数据以进行新版本软件的更新。
由于数字科技的发展日新月异,新的标准、规格与服务项目升级的需求也比以往来得更加频繁。这类升级通常需要新的数字硬件设备来支持新的先进项目。
本发明的软件更新系统的另一方面用途在于厂商可以经由软件更新,以较简便且经济的方式来进行产品升级,如此也尽可能地减少了更改硬件的次数。此外,本发明的软件更新系统可被用来修复隐藏于操作系统中的问题,这些操作系统可能用于支持应用程序的下载,比如JAVA Virtual Machines或BREW(Binary Runtime Environment forWireless)。
本发明将数字产品之内嵌软件划分为多个不同的区域,并于更新该内嵌软件时,只对必要的区域做更新的动作。本发明所采用的作法相对于传统作法中必须更新整个软件系统的方式是具有优势的,因为本发明所采用的作法对于网络传输所需的资源能做到最佳化的运用。
在设计中央处理器(CPU),微处理器单元(MCU),或数字信号处理器(DSP)时也可加入一种机制,这种机制能于执行软件区域之前先依本发明检查软件更新数据是否存在。中央处理单元/微处理器单元/数字信号处理器可被设计成能够在内嵌软件执行时自动检测软件更新数据并跳至更新程序码所在的地址。
附图说明
图1:显示数字产品中典型的微处理器系统简图
图2:显示数字产品中典型传统数字信号处理器系统简图
图3:显示数字产品中修补系统的软件结构范例
图4:显示数字产品中原始内嵌软件的区域划分及更新处理程序配置的范例简图
图5:显示一个与本发明的应用有关,以程序区域为基础来执行软件更新的设计与实施范例
图6:显示另一个与本发明的应用有关,经由修补控制程序,使用JUMP来跳入修补程序以执行软件更新的设计及实施范例
图7:显示另一个与本发明的应用有关,经由修补控制区块,使用JUMP来跳入修补程序以执行软件更新的设计及实施范例
图8:显示一个与本发明的应用有关,用以传送修补数据之通讯协定层范例
图9:显示一个与本发明的应用有关的修补程序与修补程序数据包格式的范例
图10:显示一个与本发明的应用有关,将修补数据写入存储器的范例图
图11:显示一个与本发明的应用有关的修补服务器结构的范例
图12:显示使用短信信息来传送修补数据的设计范例
较佳实施例的具体说明
1、本专利申请展示了一种用于数字产品中的内嵌软件更新系统的方法与系统。在下述的详尽说明中,许多特定细节是为了让读者对于本发明有一个完整的了解。然而很明显的,对一位已具备本领域一般技术水准的人来说,无须这些特定的细节描述就得以实施本发明。此外,众所周知的结构与技术内容将不会在以下详细说明,以避免对本发明内容产生不必要的混淆。并且下列内容所使用的数字标题仅系为了描述各自主题上及参阅上的方便而设。必须特别说明的是此处所说的“内嵌软件”是指为了使数字产品运作而以C/C++/Java/Assembler或其他软件程序语言所写成的软件,它同样的也可以用任何CPU/Microprocessor或是DSP(Digital Signal Processor)的可执行机器码来撰写。
2.系统结构
首先先从系统结构方面来说明本发明中的软件更新系统。参考图1,它显示一个简化的典型微处理器系统。在一个典型数字产品的微处理器系统中会包含一个中央处理器(CPU)100,随机存取存储器(RAM)110,FLASH/ROM存储器115,以及一些周边装置120。在执行程序时CPU100可读取位于FLASH/ROM存储器115中的软件程序。FLASH为一种持续有电的不变性存储器,它可以被抹除以及再编程,但必须以一个区块(blocks)为单位。ROM为“只读存储器“。
类似于图1所示的微处理器系统,图2为传统数字产品中的数字信号处理器(DSP)系统,其中可包含一个DSP核心230,随机存取存储器(RAM)240,FLASH/ROM存储器245,以及一些周边装置250。在执行程序时DSP核心230可读取位于FLASH/ROM存储器245中的软件程序。
一个典型的数字产品,例如一个数字行动电话,通常包含一个微处理器系统,并也可能包含一个DSP系统。本发明的软件更新系统可以被配置在数字产品的微处理器系统及/或DSP系统里的内嵌软件中。根据本发明所实施的软件更新系统被用在一个数字产品中时,如图3所示,它可包含一个用来接收修补数据的软件模块302,一个用来将修补数据写入存储器的软件模块304,一个储存修补程序的数据库310,以及一个用来选用修补程序的修补更正处理器320。图3即显示一个简化的数字产品修补系统的软件结构范例。
参照图3,修补数据接收模块302是用以接收软件修补程序。它可包含采用有线连结或无线连结的数据接收机制,和数据查错机制及/或数据安全检查机制。在修补数据接收模块302正确地收到修补程序后,它将会将此修补程序传递给修补数据写入模块304。这个修补数据写入模块304是用来将修补程序写入修补资料库310中。它会包含一个可将数据写入FLASH,NVM,EEPROM存储器及/或其他类型存储器中的程序。修补资料库310是FLASH存储器中用来存放修补程序的一块记忆区。而修补更正处理器320则是负责让软件在执行时使用修补程序而不再使用原来的错误程序。它可包含一个机制,能够让软件在执行时从原含有错误的程序码区跳入修补程序数据区。
3.软件更新技术
3.1  将软件划分为多个软件区域
为了获得本发明应用在软件更新系统时所具备的优势,在将一个内嵌软件安装到数字产品前,首先必须在软件中选定多个位置,做为以后软件更新的起点。这些位置依照地址顺序由小到大排列,可以用L1,L2,...,Ln来表示,其中n是这些位置的总数。
位于两个连续位置之间的部分(如L1与L2之间),我们把它定义成内嵌软件中的一个软件区域(如S1)。如此一来,这一内嵌软件实际上就被分割为多个软件区域,依照地址顺序由小到大排列即S1,S2,...,Sn,其中n是软件区域的总数。最后一个区域Sn是从Ln开始一直到这个内嵌软件结束为止。
如同任何其他软件,内嵌软件需要不时地加以更新或修改。比方说,当需要更新区域S2中的程序码时,可由位置L2开始将程序的执行由软件区域S2导向软件修补程序。于是这个修补程序在软件执行时被用来取代原S2中的程序码。在某些情况下,从其他的位置(例如L1)开始做更新可能会更方便,此时内嵌软件的执行将由L1开始被导向修补程序,虽然需要被更新的程序码发生在S2中。换言之,在某些情况下,从较前面的区域开始将软件的执行导向修补程序是比较好的。
软件区域的大小未必是固定的,它可依据各个区域不同的需求而大小各异。决定L1,L2“,Ln的位置并依此将内嵌软件区分为软件区域S1,S2“,Sn的方式可能基于以下的标准,如软件程序功能的界限,软件程序的行数,CPU/DSP的指令类型,软件的设计方式,硬件的设计方式,软件修改的需求,或是错误更正的需求等可被熟悉本领域的人所认同的方式。
在每一个位置L1,L2,...,Ln置入一个更新处理程序来处理软件的更新。参考图4,显示一个简化的软件区域分隔及更新处理程序配置的图解范例。为了调整内嵌软件400,我们在软件400中每一个区域401,402,403一开始的地方置入一个更新处理程序404,405,406。
“更新处理程序”为一个负责软件更新处理的程序。如果存在一个用来更新某软件区域(例如S2)中一些程序码的软件修补数据,位于L2的更新处理程序会将CPU/DSP的执行导向软件修补程序开始的地址,并执行那段修补程序。这个更新处理程序在指示程序跳入修补程序的起始地址之前可能会牵涉到使用一个“修补控制程序”,我们将在图6做进一步说明。如果用来更新区域S2的修补数据不存在,位在L2的更新处理程序将指示CPU/DSP执行现有的S2中的程序;也就是说,CPU/DSP将会在不影响正常执行的状况下继续执行S2的程序。
更新处理程序的内容可以依照位置的不同而有所不同,也可以全部设计为相同内容。
3.2  以软件区域为基础的软件更新
图5显示一个以软件区域为基础来做软件更新的设计与实施范例。当存在一个用来更新软件区域K 510的软件修补数据时,区域K中的更新处理程序505会在软件执行时将CPU/DSP执行的地址跳506到修补程序507的起始地址502来更新软件区域K。这样一来,修补程序507将取代区域K中的原始程序而被执行。在执行完这个修补改程序507后,CPU/DSP的指令指针会被指示跳508到一个事先决定的原始程序中的位置。这个位置通常就紧接在区域510中需要被更新的程序码之后。如此一来,区域510中的任何错误将因修补程序的执行而被绕过。
图6显示另一个以软件区域为基础来做软件更新的设计及实施范例。当存在一个用来更新软件区域K 610的软件修补数据时,区域K中的更新处理程序605会指示CPU/DSP将其执行跳606到一个修补控制程序609。修补控制程序609是一个可以控制一般修补程序执行的程序,比如修补程序执行前的准备程序及/或根据如一个“修补控制表”  (将说明于下)里的修补状态及系统参数来决定修补程序607的起始地址602。这个修补控制程序609指示CPU/DSP将其执行跳611到区域K 610的修补程序607的起始地址602。这样一来,修补程序607将取代区域K 610中的原始程序而被执行。在执行完毕这个修补程序后,CPU/DSP的指令指针会被指示跳608到一个事先决定的原始程序中的位置,这个位置通常就紧接在需要被更新的程序码之后。
前述的修补控制表是一个存有用来控制修补数据之接收,写入存储器以及修补信号处理的数据表。这个数据表可以包含已被写入数字产品的修补数据的识别码所形成的表格,及/或被这些修补数据更新过的对应区域的识别码所形成的表格。它也可以包含一个修补资料库的数据,比如可用于储存新修补数据的修补程序数据区的字节数。它还可能包含其他用来控制修补数据之接收、写入存储器,以及信号处理的数据。这个修补控制表可以位于修补控制程序中或数字产品存储器600中的其他任何地方。
使用如修补控制程序609这样的中间步骤有其优点,是会被熟悉本领域的人所认同的。软件的修补会经由这个中间步骤来指示CPU/DSP的指令指针跳到如图6所示之修补程序607的起始地址602,而不直接跳到如图5所示的修补程序507的起始地址502。如果有必要对一个已有修补数据的区域进行新的修补时,可以将对应于既有修补数据的区域识别码从修补控制程序609所负责的修补控制表中删除(例如设定成零),而对于新的修补数据,可将原来的区域识别码配合新的修补数据识别码及/或修补程序起始地址,写入修补控制表中。如此一来,修补控制程序609将可以从修补控制表的内容来决定新的修补程序的起始地址,并指示CPU/DSP的指令指针跳到这个新的修补程序。
用来储存修补程序码的记忆区可以被安排在内嵌软件程序码范围以外的区域,也可以被放在内嵌软件程序码范围以内的地方。例如,FLASH存储器内的一个记忆区可以被保留并填满十六进位“0xFF“以做为数据区或数据缓冲区,这个记忆区可以被放在内嵌软件程序码的范围内,经由更改或覆写这些十六进位“0xFF“成为修补程序码来存放修补程序。
3.3  设计更新处理程序
以下章节将讨论更新处理程序的相关设计与实施方式。
3.3.1  使用修补检查程序来设计更新处理程序
使用修补旗标或修补检查程序是设计与实施更新处理程序的一个例子。用这样的方法,每一个软件区域将有一个对应的修补旗标及/或一个修补检查程序来标示这一区域是否有修补数据存在于修补程序数据区中。
当修补程序数据区中不存在对应于某区域的修补数据时,其更新处理程序可以用程序描述语言表示如下,这段程序的描述可以直接被翻译成C/C++Java/Assembler及其他程序语言或是CPU/微处理器及DSP的可执行机器码:
(at the beginning of a software section.)
Patch-Checking-Routine(修补检查程序)
If(the Patch-Checking-Routine declares that there is a patch for updating thissection)
{
Patch-Correction-Routine(修补更正程序)
}
ORIGINAL SECTION CODE.
在以上的程序中使用了一个修补检查程序。这个修补检查程序是一个用来检查修补程序数据区中有无更新这个区域的修补程序的软件程序。它可以检查某些修补旗标或系统参数,或使用某些软件程序来得知有无用来更新这个区域的修补程序。
修补更正程序是一个用来指示CPU/微处理器或是DSP使用修补程序码而不用原区域程序码的软件程序。当有必要为跳入修补程序做准备动作时,修补更正程序可以执行比如储存一些参数或设定一些参数及程序等的前置处理。修补更正程序也包含一些指示CPU/微处理器或DSP指令指针的指令,可以如图5将指针指向修补程序的起始地址,或如图6指向一个修补控制程序。使用修补控制程序的优点已在3.2中说明。
3.3.2  使用Jump/Branch指令来设计更新处理程序
另一个设计与实施更新处理程序的例子是使用JUMP(或ARM语法中的BRANCH)指令或其他类似的CPU/DSP指令。请注意JUMP这个于程序设计中众所周知的概念在本申请案中是被当成一般的用词,代表将CPU/DSP的执行从一个位置导向另一个位置。
当修补程序数据区中不存在对应于某区域的修补数据时,其更新处理程序可以用程序描述语言表示如下,这段程序的描述可以直接被翻译为C/C++/Java/Assembler及其他程序语言或是CPU/DSP的可执行机器码:
(At the beginning of a software section,in case of no patch programmed)
   Jump to Label_O
Label_P:Patch-Correction-Routine(修补更正程序)
Label_O:ORIGINAL SECTION CODE
当修补程序数据区中不存在对应于某区域的修补程序时,更新处理程序的第一个指令为JUMP到Label_O,也就是JUMP到这个区域原程序码的起始地址。
当修补程序数据区中有一个对应此区域的修补程序时,更新处理程序的第一个指令将会被更改,使得CPU/DSP指令指针指到Label_P而非Label_O。这个更新处理程序可以用程序描述语言表示如下,这段程序的描述可以直接被翻译成C/C++/Java/Assembler及其他程序语言,或是CPU/微处理器及DSP的可执行机器码:
(At the beginning of a software section,in case that there is a patch for updatingthis section)
        Jump to Label_P
Label_P:Patch-Correction-Routine(修补更正程序)
Label_O:ORIGINAL SOFTWARE CODE
在此情况下,CPU/微处理器或是DSP的指令指针将被导向修补更正程序。修补更正程序的设计方式已在之前的3.3.1中说明过。必需注意的是FLASH存储器的内容只允许被从“1“改成“0“,从“0“改成“1“是不被允许的。因此,把jump的位差(offset)初始值设定成十六进位“0xFFF”可以在进行软件更新时用来减少位差。
3.3.3  使用Direct Jump/Branch指令来设计更新处理程序
以下我们将说明另一个将本发明应用在更新处理程序之设计与实施的范例。当修补程序数据区中不存在对应于某个区域的修补数据时,其更新处理程序可以用程序描述语言表示如下,这段程序的描述可以直接被翻译为C/C++/Java/Assembler及其它程序语言,或是CPU/微处理器及DSP的可执行机器码:
(At the beginning of a software section in case of no patch programmed)
    Jump to Label_O
Label_O:ORIGINAL SECTION CODE
当修补程序数据区中不存在对应于某区域的修补程序时,其更新处理程序的第一个指令且是唯一的一个指令就是JUMP到Label_O,而Label_O就是本区域原程序码的起始地址。
当修补程序数据区中有一个对应此区域的修补程序时,更新处理程序的第一个并且唯一的指令将会被更改,使得CPU/DSP的执行被导向一个修补更正程序的起始地址,或是修补程序的起始地址。这个更新处理程序可以用程序描述语言表示如下,该程序的描述可以直接被翻译为C/C++/Java/Assembler及其它程序语言,或是CPU/微处理器及DSP的可执行机器码:
(At the beginning of a software section,in case that there is a patch for updatingthis section)
       Jump to Patch-Correction-Routine(or Patch Start Address)
Label_O:ORIGINAL SECION CODE
修补更正程序的设计方式已在之前的3.3.1中说明过。
以下我们说明一个使用ARM(Advanced RISC Machines)CPU汇编语言的例子,这个例子是特别针对使用32比特指令组的ARM模式而做的。
(At the beginning of a software section,in case of no patch
programmed)
    B Label_O
Label_O:ORIGINAL SECTION CODE
在此范例中,ARM CPU的Branch指令”B”被用来当作更新处理程序。因为它跳到下一行,它的位差应是“0xFFFFFF”。由于在将数据写入FLASH存储器时一个比特可以从”1”被改成”0”,这个位差值“0xFFFFFF”可轻易地被变更为任何其他24比特值。
在收到用来更新此区域的修补程序后,修补程序就会被写入修补程序数据区中。这个“B“指令的位差也将从原本对应于Label_O的“0xFFFFFF“被改为对应到修补程序的位差值。
(At the beginning of a software section,in case that there is a patch
for updating this section)
     B Patch_Start_Address
Label_O:ORIGINAL SECTION CODE
3.4  以修补处理区为基础之软件更新
本节将介绍在软件中配置或保留用来操作修补之修补处理区的技术。修补处理区是一个可用以操作修补程序的记忆区或数据区块。举例来说,它可以是包含前述的更新处理程序的记忆区,储存JUMP指令来指示CPU/DSP指令指指针跳到修补程序起始地址的记忆区、储存修补控制程序的记忆区、以及包含修补程序的记忆区。
类似于3.1节,首先应先决定地址由小到大依序为L1,L2,“,Ln的一组位置。如此一来,这一内嵌软件实际上就被分隔为多个软件区域,即S1,S2,...,Sn。我们可在L1,L2,...,Ln中的每一个位置,或至少某些或大部份位置,配置或保留一个修补处理区。某些修补处理区也可以被插入或保留在内嵌软件的最尾端,或在内嵌软件程序码范围以外的一个记忆区域内。
一种实施方式是直接在原来的内嵌软件中保留一些记忆区,并用这些记忆区作为更新内嵌软件用的修补处理区。在这样的情况下,上述所使用的“配置”一词将会更近似于“保留”的意思,就是使用内嵌软件的某些指令来进行记忆区的保留。
当定义了一个修补处理区并且把它用做更新处理程序时,它可以如上一节所示地被放在内嵌软件的每一个软件区域中。
以下我们用一个例子来说明如何在汇编语言程序中配置或保留修补处理区。在汇编语言程序中,我们通常可以在汇编语言指令中宣告某些数据区并且利用这些数据区来容纳某些固定参数或一整块的数据。基于此一特性,我们可以在程序中宣告某些数据区并把它们专门作修补处理之用。当FLASH存储器被数字产品用来存放软件程序时,我们也可以将某些数据区宣告成填满十六进位的”0xFF“。如此一来,以后修补程序就可以轻易地将这些“0xFF“十六进位码改成修补程序码,比如修补更正程序的程序码,修补控制程序的程序码,或是用来更新软件区域或修复错误的修补程序码。这是建立在FLASH存储器的内容只可以从“1”被改成“0”而不可以从“0”被改成“1”的事实上。我们也可以一开始就在修补处理区中定义某些专门处理修补工作的程序。
当CPU执行到的软件区域在修补程序数据区存在更新此区域的修补程序时,CPU的指令指针应被指向修补程序的起始地址,比如图5中的修补程序起始地址502及图6中的修补程序起始地址602。然而,汇编语言的jump/branch指令通常有最大的跳入范围限制。例如,当一个ARM CPU使用THUMB模式时,branch指令“B”的最大跳跃范围仅有“2048字节。如果CPU的指令指针不能用一个jump/branch指令跳到修补程序的起始地址,多个jump/branch指令可被用来做长距离的跳入。例如,当ARM CPU使用THUMB模式时,我们可以用branch指令”B”及Long Branch with Link指令”BL“来达到比±2048字节更远的跳入。而为此我们需要为这些jump/branch指令保留修补处理区。以下我们将说明一个可以在配置这些修补处理区时节省记忆空间的技术。
首先,我们在每一个软件区域中插入一个jump/branch指令。例如,当ARM CPU使用THUMB模式时,我们插入这个具备最大跳入范围为±2048字节的jump/branch指令”B”。再把它的位差设定成跳到下一行命令。如此一来,CPU将执行原来的程序码,这个jump/branch指令此时并没有被用到。这个方法已经在3.3.3中说明。
一个修补处理区可包含一个修补控制区块(Patch-Control-Block)。修补控制区块的功能与修补控制程序相同,并且可以有第二级(secondary)的jump/branch指令。当使用一个FLASH存储器时,修补控制区块可以被事先宣告成填满十六进位的“0xFF“。如此一来,在修补程序中,将数据写入FLASH时可以轻易地将这些十六进位的“0xFF”码改成任何程序码,例如第二级的jump/branch指令码。而多个软件区域可以共用一个修补控制区块。
图7是一个修补控制区块如何执行跳入修补程序数据区的例子。用一个短距离的jump706将程序的执行从软件区域710带入修补控制区块709,这个控制区块被用作一个修补控制程序。再用第二个jump711将程序的执行带到修补程序707的起始地址702。在执行完毕修补程序707后,它跳回到软件区域710的最末端。
下列的程序范例是以程序描述语言写成的,它显示一个被四个软件区域(即区域A,区域B,区域C以及区域D)共用的修补控制区块。在此例中,区域A的修补处理区被定义为一个更新处理程序”Jump to Label_O-A”;区域B的修补处理区被定义为一个更新处理程序”Jump to Label_O_B”;区域C的修补处理区被定义为一个填满十六进位0xFF的N个字节的数据区块以作为修补控制区块,及一个更新处理程序”Jump toLabel_O_C”;区域D的修补处理区被定义为一个更新处理程序”Jump to Label_O_D“。
(At the beginning of Section-A,when there are no patches for updating

    Section-A)

      Jump to Label_O_A

    Label_O_A:ORIGINAL SECTION-A CODE

    (At the beginning of Section-B,when there are no patches for updating

    Section-B)

      Jump to Label_O_B
        <!-- SIPO <DP n="11"> -->
        <dp n="d11"/>
    Label_O_B:ORIGINAL SECTION-B CODE

    (At the beginning of Section-C,when there are no patches for updating Section-
C)

      Jump to Label_O_C

    Declare a data block area of N bytes being filled with hexadecimal 0xFF,which is
used as a Patch-Control-Block

    (0xFF,0xFF,.,0xFF)

    Label_O_C:ORIGINAL SECTION-C CODE

    (At the beginning of Section-D,when there are no patches for updating Section-
D)

      Jump to Label_O_D

    Label_O_D:ORIGINAL SECTION-D CODE
当收到一个软件修补数据时,修补程序就启动FLASH数据写入的程序去改变相对应的软件区域中的jump/branch位差,并且也把某些在相对应的修补控制区块中的字节从0xFF变更为第二级的jump/branch指令,或是变更为某些DSP/CPU指令码以执行如3.3.1中所讨论的修补更正程序的工作。例如,在收到一个软件区域A的修补数据时,修补控制区块中的前几个字节将被改成区域A的修补更正程序。在收到软件区域D的修补数据时,修补控制区块中的另些字节将被改成区域D的修补更正程序。这些修补更正程序将指示CPU/DSP的指令指针转向到修补程序的起始地址。
(At the beginning of Section-A,When there is a patch for updating

    Section-A)

      Jump to Label_P_A

    Label_O_A:ORIGINAL SECTION-A CODE

    (At the beginning of Section-B,When there are no patches for updating Section-B)

      Jump to Label_O_B

    Label_O_B:ORIGINAL SECTION-B CODE

    (At the beginning of Section-C,When there are no patches for updating Section-
C)

      Jump to Label_O_C

    Data block area of N bytes,which is used as Patch-Control-Block

       (

    Label_P_A:Patch-Correction-Routine of Section-A
        <!-- SIPO <DP n="12"> -->
        <dp n="d12"/>
    Label_P_D:Patch-Correction-Routine of Section-D

      Other remaining bytes 0xFF,0xFF,.,0xFF

      )

    Label_O_C:ORIGINAL SECTION-C CODE

    (At the beginning of Section-D,When there is a patch for updating

    Section-D)

      Jump to Label_P_D

    Label_O_D:ORIGINAL SECTION-D CODE
以下我们将介绍一种减小修补控制区块大小的技术。在某些情况下,节省FLASH存储器空间相当重要,或是有使用存储器空间的限制,那么尽可能减少FLASH存储器的使用就变成必要的。减少修补处理时使用的FLASH存储器的方法之一,就是减小修补控制区块的大小。在前面的范例中,修补控制区块是被四个软件区域所共用,即区域A、区域B、区域C与区域D。然而如果这四个区域同时都有其相对修补程序的机率非常低,那么修补控制区块就可以被设计成仅够处理三个软件区域或甚至两个软件区域所需的空间。
3.5  配置修补处理程序时的软件编译
在原始的内嵌软件中配置更新处理程序或修补处理区后,进行软件编译时可能会出现某些复杂的情况。
以下我们介绍一种能够避免软件编译时无法对齐程序字组的技术。如同前述,每一个软件区域都可以被配置一个更新处理程序来检查该区域在修补程序数据区中是否有修补数据。我们也可以藉由在组合程序码中宣告多个存储器区块为参数数据区来配置修补控制区块,而该区块可以用来容纳第二级的jump/branch指令。然而,这样地插入程序码可能会造成软件编译时的复杂状况。例如在软件编译中某些CPU可能要求程序指令要对齐到字组。例如,当ARM CPU使用THUMB模式时,汇编命令LDR可能需要一个可以被4整除的地址位差(offset address)。因此,当我们插入jump/branch指令及修补控制区块以供修补处理时,需要调整我们插入的字节使得LDR的地址位差能够被4整除。也就是说,藉由调整用作修补处理的字节,我们可以解决在编译过程中需要对齐字组的问题。
以下我们介绍一种可以避免在编译过程中发生位差超出容许范围的技术。例如,当ARM CPU使用THUMB模式时,汇编命令LDR可以用来把一些位差少于2048字节的数据放入暂存器中。如果为了修补处理而插入的程序码是在LDR与位差地址之间,而位差地址处含有一些要被放入暂存器的数据,则插入程序码后这个LDR所需的位差值将有可能大于2048字节,如此就会产生编译问题。一项可以避免此种问题的技术就是将这些必须被载入的数据移到一个比较接近某些汇编命令(比如LDR码)的地方,如此一来,位差值就可以少于2048字节。也就是说,藉由把这些必须以某些汇编命令(比如LDR)载入暂存器的数据移到或复制到较接近这些汇编命令(比如LDR)的地方,就可避免在编译过程中某些汇编命令发生位差超出范围的问题。
同样地,在将某些与修补程序相关的字节放到内嵌软件中后,某些原来的程序码(比如ARM汇编命令的B指令)的位差可能会超出范围,亦即B指令要跳入的目标位置过远。在B与目标位置之间插入另一个jump/branch指令可防范在编译过程中发生超出范围的问题。也就是说,将长距离的jump分成两次来跳。
3.6  以新的修补程序来更新已有的修补程序
一个数字产品在成功地写入一个修补程序后,就会开始使用它来取代软件区域中原有的程序码。然而,即使是已经写入的修补程序有时还是有可能会有某些问题,或是这个修补程序在一段时间后必须加以更新。下列说明即介绍一个更新修补程序的技术。
为了对数字产品中已经写入的修补程序进行更新,我们可以做一个新的修补程序来更新它。为了支持这个功能,当设计一修补程序时,应保留一些码的空间给未来新的修补程序做修补处理之用;或类似前述的更新软件区域的方式,在修补程序中插入一个更新处理程序。因此,当CPU/DSP执行到一个已有旧修补程序的软件区域却发现它有一个新修补程序时,CPU/DSP可以经由这个更新处理程序将指针指向新的修补程序而非旧的修补程序。
于本申请书中所展示的所有用来设计修补程序以更新软件区域的技术,均可以被应用于设计修补程序来更新另一个已存在的修补程序。
3.7  避免编译器最佳化处理所生效应
内嵌软件可以以C/C++/JAVA/Assembler或其他程序语言撰写。如果一个软件程序并非以汇编命令所撰写,而是以C/C++/JAVA/或其他程序语言所写时,这个程序可以透过编译工具加以翻译成汇编命令。软件编译工具可能对软件程序进行最佳化处理,在将C/C++/JAVA/或其他程序语言所撰写的程序转换成目的码或汇编命令的编译过程中,可能对原本的程序进行更改/最佳化。由于最佳化的处理,某些程序码可能消失。因此,如果我们把更新处理程序直接放在以C/C++/JAVA撰写的程序中,这个更新处理程序可能在编译器执行最佳化的过程中被改变或被移除。然而,在完成编译后,将汇编命令转换成目的码的阶段中,一般并不会再做程序码最佳化的动作。而且在使用软件连结工具把目的码连结成最后的可执行的机器码的阶段,也不会再做程序码最佳化的动作。
一个以C/C++/JAVA以及其他程序语言所撰写的软件程序可以以下列两种方式加以编译。
编译方法1:使用软件编译工具将以C/C++/JAVA程序语言所写的程序码转换为目的码(可能并用最佳化程序)。然后,透过软件连结工具将目的码连结以产生可执行机器码。
编译方法2:使用软件编译工具将以C/C++/JAVA程序语言所写的程序码转换为汇编命令(可能并用最佳化程序)。然后,利用软件组合工具将汇编命令转换为目的码。最后,透过软件连结工具将目的码连结以产生可执行机器码。
正常情形下,由编译方法1所产生的最后可执行的机器码与编译方法2所产生的最后可执行的机器码是相同的。如果一个软件程序是直接以汇编语言撰写,我们可以透过使用软件组合工具将之转换为目的码。然后,透过软件连结工具将目的码连结以产生可执行的机器码。
在此说明一个利用编译方法2将更新处理程序与修补处理区放入软件程序中的技术。于编译方法2中,在利用软件编译工具将一个以C/C++/JAVA程序语言所撰写的程序码转换为汇编命令码(可能并用最佳化程序)之后,我们可将更新处理程序、修补控制程序与修补处理区插入这个汇编命令中。因为在将汇编命令转换为目的码以及将目的码连结以产生可执行机器码的编译过程中,是不会执行最佳化程序而改变程序码或将之最佳化的,所以修补程序及修补程序所在的空间将不受影响。
另一个方法是,将一个用C/C++/JAVA程序语言所撰写的程序码转换为目的码,然后把更新处理程序、修补控制程序或修补处理区插入目的码中。之后再透过软件连结工具将目的码连结以产生可执行的机器码。
3.8  以软件工具配置修补处理程序
本发明另一方面指出了在数字产品(例如行动电话)的内嵌软件中配置或插入前述的更新处理程序以及修补处理区的方法。由于数字产品是在生产线上完成制造,因此必须先写入内嵌软件使其得以处理之后才能推出到市场上。而在内嵌软件被写入数字产品之前,更新处理程序及/或修补处理区应当已被放在其中。
为了有效率地在数字产品的内嵌软件中配置更新处理程序及修补处理区,本发明另一方面提出了一个配置工具来完成自动配置。
配置工具的一个实际应用就是将内嵌软件的编译程序及配置程序整合起来。例如,在对原始码进行编译前,配置工具可以自动地起动来完成配置的工作。在这样的方式下,软件开发者将只需要考虑自己的程序撰写工作,而无须涉及或担忧配置的处理。
例如,配置处理的一个应用可被实行在汇编命令而非C/C++/JAVA码之上。在此情况下,C/C++/JAVA码将先被编译为相对应的汇编命令,然后,配置程序再被用来在汇编命令中插入更新处理程序与修补处理区。之后汇编命令再进一步被编译为目的码。在此方式下,任何对C/C++/JAVA码的编译最佳化处理将不会影响更新处理程序以及修补处理区。
虽然娴熟相关领域技术的人透过了解本发明内容就可以轻易研发自己的配置工具,我们仍将介绍以下两个配置软件工具的例子。
[范例A]
对于以C/C++/Java/Assembler或其他程序语言,或CPU/微处理器及DSP的可执行机器码撰写的软件程序码,配置工具可以每隔N行或N个字节(N是一个事先定义好的数字)就插入一个更新处理程序及/或修补处理区。配置工具在必要时也可依据相对应的区域识别码来变更更新处理程序中的参数与标签。配置处理是直接在含有内嵌软件原始码的原始文件中进行的。
[范例B]
在某些应用中,数字产品中的内嵌软件的原始码可能包含在一个以上的文件中。对于每一个文件,配置工具将产生另一个与原来文件含有相同程序码的文件(亦即对该文件做一个拷贝)。然后,配置工具把更新处理程序及/或修补处理区插入复制的文件中,而非原来的文件中。也就是说,对于以C/C++/Java/Assembler及其他程序语言或是CPU/微处理器及DSP的可执行机器码撰写的软件程序码,配置工具可以在复制的文件中每隔N行或N个字节(N是一个事先定义好的数字)就插入一个更新处理程序及/或修补处理区。配置工具在必要时也可依据相对应的区域识别码来变更更新处理程序中的参数及标签。
4.修补数据的传送与接收
4.1  修补数据的传送
首先我们将说明如何把软件修补数据从修补服务器传送到数字产品中。图8显示一个使用某些通讯协定层来传送修补程序的范例。依据传输系统的设计方式及需求的不同,有些实际应用可能仅包含支持控制修补程序传输的三层协定中的一层或两层。某些其他的应用可能利用数据传输通道或传输管道,比如线路数据传输或数据包数据传输。也有某些其他的应用可能使用声音或影像传输通道,把修补程序放在这些通道或传输管道中来传送修补程序到数字产品中。
所谓修补服务器,对于熟知此一领域技术之人来说,应是一个可以将软件修补数据分送或传输到一个或多个数字产品中的系统,且最好是透过现存的通讯设备或通道,比如无线连接,或是有线连接。修补服务器在处理时可有某种程度的自动化。如图3所示在传输时,一个数字产品透过它的修补数据接收模块302来接收修补程序。
在修补程序传输的过程中或传输完成后,数字产品可传送信号(或信息)到修补服务器中来做确认。另一个例子是数字产品可传送信号(或信息)到一个修补回复信息收集器而非传送到一个修补服务器。然后,这个修补回复信息收集器会传送一个相对应的信号与数据到修补服务器中。这个修补回复信息收集器是一个用来收集来自数字产品的回复信息的信息接受器。它可以被放在与修补服务器不同的地点。
对于使用以TIA/EIA-95及CDMA2000标准为基础的CDMA技术的数字行动电话,可以使用Data Burst Messages来携带修补程序。一个使用Data Burst Messages的例子就是使用以TIA/EIA-637标准为基础的短信(SMS)传输。以下我们将说明一个使用短信来传送修补程序的范例,不过熟悉数据传输领域的人可以使用其它的信号或信息来设计自己的传输方法。由于短信传输的通讯协定(TIA/EIA-637)已包含了查错的程序,因此使用短信作为修补程序传输的低层协定,数字产品将可接收到几乎无错误的修补程序数据包。
参考图8,我们说明一个依据本发明而实施的修补程序传输协定的连结层820范例。连结层820的工作是通过检测传输错误及重传有错的数据来可靠地传送修补信号信息800及修补程序810。查错可以使用以CRC或checksum为基础的技术,或其他被熟悉此一领域者所惯用的技术。连结层820也可包含安全检查机制。例如,在传送修补程序前,修补服务器可以使用某些加密演算法对一修补程序进行加密后再将该修补程序送到数字产品中。当数字产品接收到一个修补程序时,它将对这个修补程序进行解密运算来检查所收之修补程序的正确性。
在使用短信的范例中,由短信所携带的修补程序数据包被收到后,这个短信会被传到解密模块去进行CRC检查及解密程序来检查这个修补程序数据包的正确性。
在一个数字产品不能正确地接收修补程序时,修补服务器应该再传送修补程序到这个数字产品。例如,修补程序的重新传输可以建立在一个以时间为基础的机制之上:这个修补服务器具有一个支持修补程序传输的计时器。修补服务器在送出一个修补程序给数字产品后就会启动计时器。如果修补服务器在其计时器计时终了时尚未收到任何从数字产品所传送来的相对应的回复信息(例如修改状态报告),修补服务器将会重新传送这个修补程序数据包给数字产品。在某些特别状况下,当服务器在执行预设次数的修补程序重新传送后,仍未收到任何来自于数字产品所传出的回复信号时,服务器将会暂停重新传输的工作。对于熟悉此一领域技术之人,可以透过了解本发明而运用其他的计时方式来做修补程序的传输及重新传输。
在之前使用短信的范例中,有一个名为修补状态报告的修补信号信息,它是一个由数字产品传送到修补服务器的信息,其中包含了该数字产品当前的修补状态数据。如果这个数字产品接收到一个无错误的修补程序,在下列情况下它将会利用一个反向的短信传送出修补状态报告给修补服务器:
(a)当这个数字产品发现所收到的修补程序曾被成功地写入(programmed),或
(b)当这个数字产品成功地完成修补程序的写入工作。
4.2  修补程序的编写
参考图9,在此将进一步说明修补程序940的编写。最好将修补程序940划分成数个修补程序数据包,每一个修补程序数据包可以由传递层820的一个信息来携带。
在使用短信的范例中,一个修补程序数据包可以用一个短信信息来携带。为了与一般的短信信息区别并辨识载有修补程序的短信信息,修补服务器在送出修补程序之前可先将修补程序短信中的使用者数据(User Data)的前K个字节(K是一个事先定义好的数字,可以是任何一个从零开始的正数)设定成一个K字节密语(K-character Magic-word)。在该密语之后,插入一个修补程序数据包到短信信息中。
图9显示修补程序与修补程序数据包之间的关系。修补程序数据包950可以被划分为数据包前置数据组945以及负载信息数据组947。一个数据包前置数据组945的设计可包含以下的数据:
(a)修补程序识别码
(b)当前数据包号码
(c)最后数据包号码
熟悉此一领域之人可在了解本发明内容后以其他方式来设计数据包前置数据组。
在修补程序数据包950中的负载信息数据947,955,965可以包含全部或一部份的修补程序940。
修补程序数据包950可以由修补服务器在传输前,先以某些加密演算方法予以加密。修补服务器可以利用静态及/或动态的钥匙来对软件修补程序进行加密:前者可以是一个CPU识别码,MAC层地址及其他.电信服务相关的参数,比如电话号码,ESN及TMSI临时辨识玛;后者是以位置或时间或使用者档案数据为基础的可变的钥匙。
4.3  修补程序处理
在接收到一个可能含有修补程序数据包950的信息后,数字产品将会检查这个信息是否包含一个真正的修补程序数据包。数字产品也可以对这个收到的信息进行查错及/或数据解密。在成功地接收到所有的必要的修补程序数据包后,这个数字产品将会把数据包中的负载信息数据947,955,965组合成相对的修补程序。
在使用短信信息的范例中,当数字产品接收到一个短信信息时,它将会检查信息中的前k个字节是否与密语相同。如果不吻合的话,这个短信信息将会被当成一个一般的短信信息而非一个修补程序数据包。
如果吻合的话,数字产品将会进一步对这个信息数据执行解密以检查这个信息数据的正确性。如果解密程序显示这个信息数据是正确的,这个信息数据将被当成一个修补程序数据包,并且会用一个缓冲区来暂存这个数据。否则,这个短信信息将被当作一个一般的短信信息。
在根据修补程序识别码数据(即修补程序数据包中的当前数据包号码及最后数据包号码)成功地收到所有必要的修补程序数据包后,这个数字产品将会把这些数据包组合成相对应的修补程序。
修补程序940可以包含某些下列的参数项目,比如:
(a)确认所收到的修补程序是否是给这个数字产品的参数项目,例如
-ESN(Electronically Serial Number);
-MIN(Mobile Identification Number)或IMSI(International Mobile StationIdentity);
-制造识别码(Manufacture Identifier);
-产品型号(Product model number);
-软件版本号码(Software version number);
-CPU识别码(CPU Identifier);
-MAC(Medium Access Control)层地址;
-其他可以作为识别一个数字产品的参数
-其他可以作为识别用户的参数
(b)修补数据写入(patch programming)所需的参数项目,例如,
-控制数据,用来指出某些修补程序必须被写入FLASH存储器,及/或某些修补程序必须被写入NVM(Non Volatile Memory)存储器及/或EEPROM(Electrically ErasableProgrammable Read-Only Memory);
-修补程序的地址数据,这可能是存储器地址,区域配置数据或其他在数字产品的FLASH/NVM/EEROM存储器的地址数据;
-可以被用来做软件更新的修补程序码;
-如何解译修补程序码的数据,例如在该修补程序中被使用的程序语言数据(C/C++/Java/Assembler及其他程序语言,或CPU/微处理器或DSP的可执行机器码)
-可被用来更新在FLASH存储器,NVM,及/或EEPROM存储器中某些数据区或数据表的修补数据;
-被这个修补程序所更新的软件区域的识别码;
-其他用来描述修补程序与数据区更新的数据。
(c)用以决定修补数据写入后的后续程序之参数项目,例如,
-重新起动旗标(Reset Flag)。
-传送回复信息到修补服务器的控制旗标。
-其他用以决定修补数据写入后的后续程序之控制信号与数据。
在收到的修补程序被组合后,必要时该数字产品最好对合成的修补程序进行解密。这是为了加强对修补程序的安全检查。当然,修补服务器端应在将修补程序分成修补程序数据包之前对该修补程序进行加密。
修补程序码可以以C/C++/Java/Assembler及其他程序语言或CPU/微处理器或DSP的可执行机器码撰写。这个修补程序可包含某些如何转译修补程序码的转译数据。如果这个修补程序码可以根据这个转译数据来加以转译,某些做法是用一个软件翻译模块来把收到的修补程序从一个格式翻译成另一个格式。在某些应用之中CPU/DSP需要用到这个修补程序,那么修补程序也可以被转译或翻译成CPU/DSP的可执行机器码。
修补程序中含有软件更新的数据,该更新数据是用来取代内嵌软件中某一部份原来的程序。此修补程序可以被做成从修补起始地址开始。而且,举例说,在一个修补程序的结尾处,可以用一个指令来让程序跳回一个在内嵌软件中预先定好的位置,而该位置是在被跳过的过时/错误原始码之后,或是过时/错误原始码所在的区域的末尾处。
修补程序也可以包含用以更新FLASH存储器,NVM,及/或EEPROM存储器中的数据区的数据。例如,一个修补程序可以包含一个新的数据表,用来取代在数字产品的NVM存储器中的旧数据表。
数字产品可检查修补程序中的某些数据项目(例如,ESN,制造识别码,产品型号,以及软件版本号码等)是否与储存在该数字产品中的参数值相同。如果不吻合的话,这个数字产品将丢弃这个修补程序(或是如在使用短信信息的例子中将那些信息当成一般的短信)。如果吻合,这个数字产品将进一步检查这个收到的修补程序是否曾经被写入到它的存储器中了。如果还没有被写入过,这个数字产品将开始把收到的修补程序写入存储器。否则,它会送出一个修补回复信息给修补服务器,并且完成修补程序的处理。
5.修补数据写入
修补数据写入的程序牵涉到把修补程序写入FLASH存储器中的相对应的修补程序数据区,及/或把新的参数写入NVM/EEPROM存储器之中。修补数据写入的程序最好是在这个数字产品处于待机(idle)状态(即未被使用状态)时进行。将新参数写到NVM/EEPROM存储器中的工作可使用一般的数据复写程序来进行。然而,要将数据写入FLASH存储器中,在某些情况下需要额外的处理工作,特别是当这个FLASH存储器正在被这个数字产品读取时。为了将修补程序写入正在运作中的数字产品中,我们将介绍一种在RAM存储器中执行FLASH数据写入程序的技术,此一技术亦是本发明的一种应用。
5.1  利用RAM存储器执行FLASH数据写入的程序
用来执行将数据写入FLASH存储器中的软件程序,可以被放在RAM存储器之中。熟悉此领域技术的人已有许多方式可将软件程序放到RAM存储器中。例如,可以在将数据写入FLASH存储器之前,将一个FLASH数据写入的程序用一个软件程序复制到RAM存储器中。另一个例子是,我们可在编译内嵌软件时指示编译器把FLASH数据写入的程序放在RAM存储器中,如此一来,编译器就会自动地将这个程序配置到RAM存储器中。RAM存储器可以是与CPU/DSP核心位在同一晶片上的RAM/SRAM存储器,或是位在包含CPU/DSP的晶片之外的RAM存储器。当有必要将修补相关数据写到FLASH存储器中时,可以在RAM中执行FLASH数据写入的程序。这个程序会将数据写入相对应的FLASH地址中、读取FLASH的状态值,并且确认数据写入的正确性以及工作是否完成。这项将数据写入FLASH的工作最好被设定成具有最高的优先执行顺序,并且当它开始执行时,最好先停止所有的CPU/DSP中断服务的功能,如此当它在执行时,所有其他软件的工作以及所有的CPU/DSP的中断服务将处于停止并等待的状态中。
另一个方式是在一个中断处理程序中执行FLASH数据写入的程序,并且当这个程序开始执行时,最好先停止所有其他的中断服务,如此当它在执行时,所有的软件工作以及CPU/DSP的中断服务程序将处于停止并等待的状态。
另一个确保将数据写入FLASH的过程中不受来自其他软件工作及中断服务程序的影响的方法,是在开始执行FLASH数据写入的程序之前停止与FLASH数据写入的程序或软件修补处理无关的软件的工作以及中断服务程序。
5.2  修补数据写入的程序
修补数据写入的程序可被分为数个子状态,图10即显示一个这样的范例。在成功地接收到修补程序后,这个数字产品将会把修补程序写入FLASH存储器,NVM及/或EEPROM存储器之中。
如果某些修补程序是用来更新在FLASH存储器,NVM及/或EEPROM存储器中的的数据区或数据表,此数字产品应将这些数据写入FLASH存储器,NVM或EEPROM存储器中的相对应地址。
如果某些修补程序是用来更新某些软件区域中的程序码,此数字产品应将修补程序码写入FLASH存储器中的相对应地址。
然后,这个数字产品可以开始将修补识别数据写入修补控制表1020或某些修补资料库中。这些修补识别数据可以包含修补数据地址,修补数据识别码以及软件区域识别码等。
然后,此数字产品将会进行下一个步骤,即区域状态写入1030。根据前面介绍过的更新处理程序的设计方式,一个软件区域的更新处理程序可以包含一个或两个JUMP指令,或包含一个可以检查修补旗标的修补检查程序。在修补程序成功地写入后,如果更新处理程序使用修补标旗,那个相对应的修补标旗将被变更以反映修补程序存在的事实;如果更新处理程序是使用JUMP指令,相对应的JUMP位差也必须被更改,使得CPU/DSP指令指针跳到相对应的修补程序起始地址。某些在修补控制区块及/或修补处理区中的数据字节有可能必须被FLASH数据写入的程序变更。在前述的说明中已详细描述从无修补程序的状态变到有修补程序的状态时,更新处理程序及修补控制区块的改变。
在更新处理程序中,改变关键性的JUMP位差或修补旗标的动作最好是放在最后进行,这样如果修补数据写入的程序在中途停止时,该数字产品不致于无法正常运作。例如,如要更改如本说明第3.4节所描述软件区域A中的更新处理程序时,此数字产品应首先将修补控制区块中的数据字节在Label_P_A处变更为实施Patch-Correction-Routine of Section-A的指令。然后再修改JUMP指令的位差来把Jump to Label_O_A改成Jump to Label_P_A。用这样的方法,从使用原来的程序码转换成使用修补程序码的动作,只有在所有的写入处理都完成后才会发生。
当修补数据写入成功地完成时,此数字产品将会进行某些后续处理,比如发送修补状态信息到修补服务器,及/或在必要时执行系统重新起动。在使用短信信息的例子中,数字产品可能执行以下的后续处理:
-此数字产品将会以短信信息的方法发送一个修补状态报告给修补服务器。这个修补状态报告包含用户终端装置的数据以及当前的修补状态。
-然后,如果在修补程序中的重置标旗已被设定,此数字产品将进行系统重新起动。
6.修补服务器
参考图11,显示一个修补服务器1100的范例之简化图。一个修补服务器1100最好拥有一个修补资料库1130,一个修补数据生成器1110,以及一个修补数据传输控制器1120。
修补资料库1130储存与每一个数字产品有关的修补数据。它可以储存如下的项目:
(a)制造识别码;
(b)产品型号;
(c)软件版本号码;
(d)软件区域识别码;
(e)修补数据识别码;
(f)CPU识别码;
(g)MAC(Medium Access Control)层地址;
(h)其他可以作为识别一个数字产品的参数项目;
(i)其他可以作为识别用户的参数项目;
(j)修补数据的地址数据;
(k)重置旗标设定数据(Reset Flag Information);
(l)修补程序码。
(m)有关如何转译修补程序码的数据,例如在该修补程序中被使用的程序语言数据(C/C++/Java/Assembler及其他程序语言,或CPU/微处理器或DSP的可执行机器码)。
(n)用来更新此数字产品的数据记忆区(NVM/EEPROM)的数据参数
当修补服务器要送一个修补数据给一个数字产品时,修补数据生成器1110就会根据修补资料库1130中的数据来产生一个相对应的修补程序。当修补程序无法用一个修补程序数据包来载运时,修补数据生成器1110可进一步将修补程序分为数个区域,并把每一个区域放入一个修补数据数据包中来传输。
修补数据传输控制器1120是负贵将修补程序数据包可靠地传送到数字产品中的装置。一个设计的范例就是用一个计时器来控制修补程序的重新传输,其详细的设计内容将在以下说明。
修补服务器在发送一个修补数据给数字产品后就会启动一个计时器。如果修补服务器在这个计时器所设定的时间经过后,并未收到任何从该数字产品所回应的回复信息(例如修补状态报告),修补服务器将会再发送这个修补程序数据包给这个数字产品。在某些特别的情况下,修补服务器已经执行了一个预定次数的重新传输,却没有收到任何从数字产品发送回来的回复信息,那么这个修补服务器可以暂停重新传输的动作一阵子,或是完全停止使用这个计时器并且在一个记录档案中注明未收到回复信息。
在收到一个来自于数字产品的回复信息(例如修补状态报告)时,修补服务器将会停止控制修补数据重新传输的计时器,并且在修补资料库中更新这个数字产品的修补状态。
以下我们用一个设计范例来说明一个软件修补数据如何经由短信信息从修补服务器被传到数字产品中。这个设计范例的说明将参考图12。
在这个设计范例中,含有内嵌软件的数字产品是数字行动电话1250。修补服务器的硬件是由一台电脑1200和一个能够接收短信信息的无线数据机1210所组成。这台电脑将产生修补数据及相对应的修补短信信息,之后经由网际网络1205将此信息传到一个通讯服务提供者的信息服务器1240中。而该通讯服务提供者则提供无线服务给数字产品1250。将这个信息传到信息服务器的传输方式可以采用一般电子邮件所使用的SMTP(Simple Mail Transfer Protocol)及TCP/IP。通讯服务提供者的信息服务器1240将把修补短信信息当成一般的短信信息1225传给基地台1220。最后,基地台1220经由无线介面信息(比如载送短信信息1225的Data Burst Message)将这个信息1225传到相对应的行动电话1250中。
修补服务器的无线数据机1210是接在修补服务器的电脑1200上。这个无线数据机是用来接收来自于数字产品1250的回复信息1215并将这个回复信息1215转送到电脑1200中。电脑1200将根据这个回复信息1215中所含的数据来确认修补的状态。
虽然本发明在本申请书中是以我们所喜好的应用为参考来加以说明,但一个熟悉同一领域的人已经可以在不偏离本发明的范围的情况下,用其他应用方法来取代前述的各项实施说明。因此,本发明所包含的范围当仅受限于以下的专利要求项目。
缩写词汇
ARQ.Automatic Repeat reQuest.自动再送信要求
CPU.Central Processing Unit.中央处理器
CRC.Cyclic Redundancy Codes.循环冗长码
DSP.Digital Signal Processor.数字信号处理器
EEPROM.Electrically Erasable Programmable Read-Only Memory.
可删除可编辑只读存储器
ESN.Electronic Serial Number.电子型连续码
FLASH.一种持续有电的不变性存储器(constantly-powered nonvolatilememory),可以区块(block)为单位被删除及重写。
MAC.Medium Access Control.媒介操作控制层
MCU.Micro Processor Unit.微处理器
NVM.Non Volatile Memory.不挥发性存储器
Patch data.所有由修补服务器(patch server)送给数字产品的修补数据所合成的数据.
Patch data packet.修补程序数据包,即修补程序传输的单元。一个修补数据可以被分成数个修补程序数据包来传输。一个修补程序数据包可由一条信息来载送。
Patch program.用来更新软件的软件程序,它是由一或多个CPU/DSP指令所组成,可用来更新内嵌软件中的一或多个程序码。
Patch programming.将修补程序写入存储器的过程。
Patch server.修补服务器。一或多个用来传送修补程序给数字产品的服务器。
PCMCIA.Personal Computer Memory Card International Association.个人电脑存储卡国际协会
PDA.Personal Digital Assistant.个人数字助理
RAM.Random Access Memory.随机存取存储器
ROM.Read-Only Memory.只读存储器
SMS.Short Message Service.短信服务

Claims (57)

1、一个调整运作于数字产品中的内嵌软件的方法,使其在调整后能够通过一软件修补程序来做就地的修改,其步骤为:
a)根据一个事先定好的规则,在该内嵌软件内选定多个插入位置,以每一个选定的插入位置定义该内嵌软件的一个区域;
b)在选定的多个插入位置上配置相应的更新处理程序,每一个更新处理程序都可被改写而得以修正该内嵌软件在相对应的区域的执行,这个改写与修正的动作发生在该区域存在一个软件修补程序时;
c)在数字产品中决定一个记忆区来供该软件修补程序使用;
d)将该配置有多个更新处理程序的内嵌软件载入该数字产品的一个内嵌软件程序码区;
2、权利要求1的方法中,供修补程序用的记忆区位于该内嵌软件的程序码区之内。
3、权利要求1的方法中,供修补程序用的记忆区位于该内嵌软件的程序码区之外。
4、权利要求1的方法中,决定插入位置的步骤是以至少一个下列的方法为基础:
基于该内嵌软件程序的程序行数;
基于该内嵌软件的程序功能单元;
基于该内嵌软件的指令类型;
基于该数字产品的软件设计方式;
基于该数字产品的硬件设计方式;
基于该内嵌软件的修改机制;
基于该内嵌软件的错误更正机制
5、权利要求1的方法中,配置多个更新处理程序的步骤是以至少一个下列的方法为基础:
a)在将该内嵌软件编译为可执行的机器码前,将该更新处理程序配置在该内嵌软件中;
b)将该内嵌软件编译为相对应的组合程序码后,将该更新处理程序配置于该组合程序码中,然后将该组合程序码编译为可执行的机器码;
c)将该内嵌软件编译为相对应的目的码后,将该更新处理程序配置于该目的码中,然后将该目的码编译为可执行的机器码;
d)将该内嵌软件编译为可执行的机器码后,将该更新处理程序配置在该可执行的机器码中。
6、权利要求1的方法中,配置多个更新处理程序的步骤进一步包含修改至少一个该内嵌软件的程序指令。
7、权利要求5的方法中,配置多个更新处理程序的步骤进一步包含修改至少一个该内嵌软件的程序指令。
8、权利要求1的方法中,至少一个所述的更新处理程序被改写而具备下面的功能:
如果存在一个用来更新该内嵌软件中某个区域的软件修补程序,将该内嵌软件的执行导向该软件修补程序所在的位置去执行。
如果没有这样的软件修补程序,执行该内嵌软件的该区域程序。
9、权利要求4的方法中,至少一个所述的更新处理程序被改写而具备下面的功能:
如果存在一个用来更新该内嵌软件中某个区域的软件修补程序,将该内嵌软件的执行导向该软件修补程序去执行。
如果没有这样的软件修补程序,执行该内嵌软件的该区域程序。
10、权利要求1的方法中,至少一个所述的更新处理程序被改写而具备下面的功能:
检查是否有一个用来更新该内嵌软件中一区域的软件修补程序,及
如果存在这样的软件修补程序,将该内嵌软件的执行导向该软件修补程序的位置去执行。
如果没有这样的软件修补程序,执行该内嵌软件的该区域程序。
11、权利要求4的方法中,至少一个所述的更处理程序被改写而具备下面的功能:
检查是否有一个用来更新该内嵌软件中一区域的软件修补程序,及
如果存在这样的软件修补程序,将该内嵌软件的执行导向该软件修补程序的位置去执行。
如果没有这样的软件修补程序,执行该内嵌软件的该区域程序。
12、权利要求8的方法中,将该内嵌软件的执行导向该软件修补程序所在位置的步骤,进一步包含:
将该内嵌软件的执行导向一个修补控制程序所在的的第一个位置,然后再根据该修补控制程序,将该内嵌软件的执行导向该软件修补程序所在的第二个位置,并执行该软件修补程序。
13、权利要求10的方法中,将该内嵌软件的执行导向该软件修补程序所在位置的步骤,进一步包含:
将该内嵌软件的执行导向一个修补控制程序所在的的第一个位置,然后再根据该修补控制程序,将该内嵌软件的执行导向该软件修补程序所在的第二个位置,并执行该软件修补程序。
14、权利要求1的方法中,多个更新处理程序包含下列至少一项:
第一个程序被改写成,如果存在一个用来更新该内嵌软件中某一区域的软件修补程序,将该内嵌软件的执行导向该软件修补程序所在的位置去执行,如果没有这样的软件修补程序,执行该内嵌软件的该区域;
第二个程序被改写成能够检查是否有一个用来更新该内嵌软件中一区域的软件修补程序,且如果存在这样的软件修补程序,将该内嵌软件的执行导向该软件修补程序所在的位置去执行,如果没有这样的软件修补程序,则执行该内嵌软件的该区域;
第三个程序被改写成能够检查是否有一个用来更新该内嵌软件中一区域的软件修补程序,且如果存在这样的软件修补程序,将该内嵌软件的执行导向一个修补控制程序所在的第一个位置,然后再根据该修补控制程序,将该内嵌软件的执行导向该软件修补程序所在的第二个位置去执行,如果没有这样的软件修补程序,则执行该内嵌软件的该区域;
第四个程序被改写成,如果存在一个用来更新该内嵌软件中一区域的软件修补程序,将该内嵌软件的执行导向一个修补控制程序所在的第一个位置,然后再根据该修补控制程序,将该内嵌软件的执行导向该软件修补程序所在的第二个位置去执行,如果没有这样的软件修补程序,则执行该内嵌软件的该区域。
15、权利要求1的方法中,进一步包含:
e)产生一个软件修补程序,使它提供一个预先决定的功能;
f)通过一个通讯连接方法将该软件修补程序传到该数字产品中;
g)由该数字产品接收该软件修补程序;
h)将该软件修补程序写入该记忆区中。
16、权利要求8的方法中,进一步包含:
e)产生一个软件修补程序,使它提供一个预先决定的功能;
f)通过一个通讯连接方法将该软件修补程序传到该数字产品中;
g)由该数字产品接收该软件修补程序;
i)将该软件修补程序写入该记忆区中。
17、权利要求10的方法中,进一步包含:
e)产生一个软件修补程序,使它提供一个预先决定的功能;
f)通过一个通讯连接方法将该软件修补程序传到该数字产品中;
g)由该数字产品接收该软件修补程序;
h)将该软件修补程序写入该记忆区中。
18、权利要求12的方法中,进一步包含:
e)产生一个软件修补程序,使它提供一个预先决定的功能;
f)通过一个通讯连接方法将该软件修补程序传到该数字产品中;
g)由该数字产品接收该软件修补程序;
h)将该软件修补程序写入该记忆区中。
19、权利要求15的方法中,进一步包含使用该软件修补程序来改写该内嵌软件中该更新处理程序的至少一部份的步骤。
20、权利要求19的方法中的该被改写的部分是一个预先决定的跳入位差。
21、权利要求15的方法中,产生软件修补程序的步骤包含使用一个修补服务器,这个修补服务器至少具备下列功能之一:
产生该软件修补程序;
以一个预先决定的加密演算法对该软件修补程序进行加密。
22、权利要求15的方法中,传输软件修补程序的步骤包含使用一个修补服务器,这个修补服务器至少具备下列功能之一:
传输该软件修补程序;
接收至少一个自该数字产品传来的信息;
处理该软件修补程序的重新传输。
23、权利要求22的方法中,进一步包含从该数字产品传送至少一个信息到该修补服务器,传送的动作发生在至少下列时间之一:
在该数字产品接收到该软件修补程序后;
在将该软件修补程序写入该记忆区之后。
24、权利要求1的方法中,该软件修补程序至少包含下列各项之一:
制造识别码
产品型号
软件版本号码
软件区域识别码
修补数据识别码
CPU识别码
MAC层地址
修补数据的地址信息
更新该内嵌软件的修补程序
有关如何转译修补程序的数据
重置旗标设定数据
可用作修补数据写入后的后续处理之用的数据
可用作识别一数字产品之用的数据
可用作识别一个用户之用的数据
用来更新该数字产品的数据区的数据参数
25、一个调整运作于数字产品中的内嵌软件的方法,使其在调整后能够藉由一个软件修补程序来做就地的修改,其步骤为:
a)根据一个事先定好的规则,在该内嵌软件内选定多个插入位置,至少两个选定的插入位置定义该内嵌软件的两个区域:
b)在该内嵌软件中配置多个修补处理区;
c)设定该修补处理区为第一个内容,而第一个内容可以有选择性地被改为第二个内容
d)将该配置有多个修补处理区的内嵌软件装入该数字产品中。
26、权利要求25的方法中,配置的步骤包含:
将该修补处理区配置在该内嵌软件的相应的插入位置上。
27、权利要求25的方法中,进一步包含在内嵌软件的程序码区之外的一个预先决定的记忆区中,配置至少其中一个修补处理区。
28、权利要求26的方法中,进一步包含在内嵌软件的程序码区之外的一个预先决定的记忆区中,配置至少其中一个修补处理区。
29、权利要求25的方法中,配置的步骤包含:
以在该内嵌软件中写入程序指令的方式保留记忆区以作为该修补处理区
30、权利要求26的方法中,配置的步骤包含:
以在该内嵌软件中写入程序指令的方式保留记忆区以作为该修补处理区。
31、权利要求27的方法中,配置的步骤包含:
以在该内嵌软件中写入程序指令的方式保留记忆区以作为该修补处理区。
32、权利要求25的方法中,决定插入位置的步骤是以至少一个下列的方法为基础:
基于该内嵌软件程序的程序行数
基于该内嵌软件的程序功能单元
基于该内嵌软件的指令类型
基于该数字产品的一个已预先决定的软件设计方式
基于该数字产品的一个已预先决定的硬件设计方式
基于该内嵌软件的一个已预先决定的修改机制
基于该内嵌软件的一个已预先决定的错误更正机制
33、权利要求25的方法中,配置多个修补处理区的步骤进一步包含修改至少一个该内嵌软件的程序指令。
34、权利要求25的方法中,所述之修补处理区包含下列至少一项:
第一个更新处理程序被改写成,如果存在一个用来更新该内嵌软件中某一区域的软件修补程序,将该内嵌软件的执行导向该软件修补程序所在的位置去执行,如果没有这样的软件修补程序,执行该内嵌软件的该区域;
第二个更新处理程序被改写成能够检查是否有一个用来更新该内嵌软件中一区域的软件修补程序,且如果存在这样的软件修补程序,将该内嵌软件的执行导向该软件修补程序所在的位置去执行,如果没有这样的软件修补程序,则执行该内嵌软件的该区域;
第三个更新处理程序被改写成能够检查是否有一个用来更新该内嵌软件中一区域的软件修补程序,且如果存在这样的软件修补程序,将该内嵌软件的执行导向一个修补控制程序所在的第一个位置,然后再根据该修补控制程序,将该内嵌软件的执行导向该软件修补程序所在的第二个位置去执行;如果没有这样的修补程序,则执行该内嵌软件的该区域;
第四个更新处理程序被改写成,如果存在一个用来更新该内嵌软件中一区域的软件修补程序,将该内嵌软件的执行导向一个修补控制程序所在的第一个位置,然后再根据该修补控制程序,将该内嵌软件的执行导向该软件修补程序所在的第二个位置去执行;如果没有这样的软件修补程序,执行该内嵌软件的该区域;
第五个更新处理程序被改写成能够检查是否存在一个软件修补程序,如果有,则修改该内嵌软件中相对应区域的执行,使其跳到该软件修补程序去执行;
一个jump指令被改写成,如果该软件修补程序存在,则修改该jump指令的位差使该内嵌软件中相对应修补程序的区域得以执行,如果该软件修补程序不存在,则跳到该区域;
一个被该jump指令所用的jump位差值,可有选择性地被改成另一个jump位差值;
一个修补控制程序被改写成能够造成跳入到该软件修补程序;
一个修补程序被改写而能修改该内嵌软件的执行;
一个修补控制区块有选择地被变更为一个修补更正程序;
第一个记忆区被设定成预先决定的内容,用来修改该内嵌软件的执行;
第二个记忆区被设定成预先决定的内容,可有选择性地被变更为用来修改该内嵌软件之执行的参数;
第三个记忆区被设定成预先决定的内容,可有选择性地被变更为用来修改该内嵌软件之执行的软件程序。
35、权利要求34的方法中,该修补控制区块是由该内嵌软件中的多个区域所共用。
36、权利要求25的方法中,多个修补处理区的配置时机,是根据以下至少一种方法:
a)在将该内嵌软件编译为可执行的机器码之前,配置至少一个修补处理区到该内嵌软件中;
b)将该内嵌软件编译为相对应的组合程序码后,配置至少一个所述的修补处理区到组合程序码中,然后将该组合程序码编译为可执行的机器码;
c)将该内嵌软件编译为相对应的目的码后,在该目的码中配置至少一个所述的修补处理区,然后将该目的码编译为可执行的机器码;
d)将该内嵌软件编译为可执行的机器码后,在该可执行的机器码中配置至少一个所述的修补处理区。
37、权利要求25的方法中,进一步包含:
e)产生一个软件修补程序,使它提供一个预先决定的功能;
f)通过一个通讯连接方法将该软件修补程序传到该数字产品中;
g)由该数字产品接收该软件修补程序;
h)将该软件修补程序写入至少一个所述的修补处理区中。
38、权利要求27的方法中,进一步包含:
e)产生一个软件修补程序,使它提供一个预先决定的功能;
f)通过一个通讯连接方法将该软件修补程序传到该数字产品中;
g)由该数字产品接收该软件修补程序;
h)将该软件修补程序写入至少一个所述的修补处理区中。
39、权利要求28的方法中,进一步包含:
e)产生一个软件修补程序,使它提供一个预先决定的功能;
f)通过一个通讯连接方法将该软件修补程序传到该数字产品中;
g)由该数字产品接收该软件修补程序;
h)将该软件修补程序写入至少一个所述的修补处理区中。
40、权利要求29的方法中,进一步包含:
e)产生一个软件修补程序,使它提供一个预先决定的功能;
f)通过一个通讯连接方法将该软件修补程序传到该数字产品中;
g)由该数字产品接收该软件修补程序;
h)将该软件修补程序写入至少一个所述的修补处理区中。
41、权利要求34的方法中,进一步包含:
e)产生一个软件修补程序,使它提供一个预先决定的功能;
f)通过一个通讯连接方法将该软件修补程序传到该数字产品中;
g)由该数字产品接收该软件修补程序;
h)将该软件修补程序写入至少一个所述的修补处理区中。
42、权利要求37的方法中,该写入的步骤包含使用该软件修补程序来改变至少一个jump位差值的步骤。
43、权利要求37的方法中,产生软件修补程序的步骤包含使用一修补服务器,这个修补服务器至少具备下列功能之一:
产生该软件修补程序;
以一个预先决定的加密演算法对该软件修补程序进行加密。
44、权利要求37的方法中,传输软件修补程序的步骤包含使用一个修补服务器,这个修补服务器至少具备下列功能之一:
传输该软件修补程序;
接收至少一个自该数字产品传来的信息;
处理该软件修补程序的重新传输。
45、权利要求37的方法中,传输的步骤包含使用CDMA标准中所定义的DataBurst Message来传送该软件修补程序。
46、权利要求44的方法中,进一步包含从该数字产品传送至少一个信息到该修补服务器,传送的动作发生在至少下列情形之一:
在该数字产品接收到该软件修补程序之后;
在将该软件修补程序写入该修补处理区之后。
47、权利要求37的方法中,该软件修补程序至少包含下列数据之一:
制造识别码
产品型号
软件版本号码
软件区域识别码
修补数据识别码
CPU识别码
MAC层地址
修补数据的地址数据
为更新该内嵌软件的修补程序
有关如何转译修补程序的数据
重置旗标设定数据
可供作修补数据写入后之后续处理之用的数据
可供作识别一数字产品之用的数据
可供作识别一个用户之用的数据
用来更新该数字产品的数据区的数据参数
48、权利要求37的方法中,进一步包含由该数字产品以下列的至少一种方法来转译该软件修补程序的至少一个项目:
在将该软件修补程序写入到该修补处理区之前,将所述的至少一个项目从第一个程序语格式变更为第二个程序语言格式。
在使用该软件修补程序来执行之前,将所述的至少一个项目从第一个程序语言格式变更为第二个程序语言格式。
在将该软件修补程序写入到该修补处理区之前,将所述的至少一个项目从第一个数据格式变更为第二个数据格式。
在使用该软件修补程序来执行之前,将所述的至少一个项目从第一个数据格式变更为第二个数据格式。
49、权利要求37的方法中,将该软件修补程序写入该修补处理区,是由至少一个能够将数据写入FLASH存储器中的FLASH数据写入的程序来执行的。
50、权利要求49的方法中,写入软件修补程序的步骤,进一步包含在将数据写入FLASH之前,先把该FLASH数据写入的程序放入RAM存储器中。
51、一个修改含有FLASH存储器及non-volatile存储器(NVM),且由一内嵌软件来处理数字产品的方法,其步骤为:
a)产生一个软件修补程序,该软件修补程序包含至少一个用来更新FLASH存储器内容的修补程序,及至少一个用来更新NVM内容的数据参数
b)通过一个无线通讯连接方式将该软件修补程序传到该数字产品中
c)由该数字产品接收该软件修补程序
d)将该软件修补程序写入该数字产品中
52、权利要求51的方法中,写入的步骤包含至少下列步骤之一:
将至少一个数据参数以改写该NVM中既有数据的方法写入该NVM存储器中;
将所述的至少一个修补程序写入该FLASH存储器中。
53、权利要求52的方法中,进一步包含至少下列步骤之一:
将该软件修补程序的识别数据写入该内嵌软件的修补控制表中;
将该软件修补程序的修补控制数据写入该内嵌软件的修补控制表中。
54、一个电脑可读取的媒介,其中包含用以更新数字产品中内嵌软件的指令,它们可以是作为下列用途的指令:
执行该内嵌软件;
决定一个可供该内嵌软件中一区域使用的修补程序是否存在;
如果该修补程序可供该区域使用,将该内嵌软件在该区域的执行导向该修补程序,
在执行该修补程序后,将执行导回到该内嵌软件中一个预先决定的位置。
55、权利要求54中的电脑可读取之媒介,其中该内嵌软件配置了多个被改写而能够判定是否有可用之修补程序的程序。
56、权利要求54中的电脑可读取之媒介,其中该预先决定的位置为需被更新的部份程序的末端。
57、权利要求55中的电脑可读取之媒介,进一步包含作为下列用途的指令:
通过一个通讯连接方法来接收一个修补程序;
将该修补程序写入该数字产品中。
CNA028141911A 2001-07-16 2002-07-15 内嵌软件更新系统 Pending CN1529847A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US30570401P 2001-07-16 2001-07-16
US60/305,704 2001-07-16
US35491502P 2002-02-08 2002-02-08
US60/354,915 2002-02-08

Publications (1)

Publication Number Publication Date
CN1529847A true CN1529847A (zh) 2004-09-15

Family

ID=26974732

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA028141911A Pending CN1529847A (zh) 2001-07-16 2002-07-15 内嵌软件更新系统

Country Status (6)

Country Link
US (3) US6760908B2 (zh)
EP (1) EP1410181A1 (zh)
JP (1) JP2004536405A (zh)
KR (1) KR20040022451A (zh)
CN (1) CN1529847A (zh)
WO (1) WO2003009136A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100435108C (zh) * 2004-12-22 2008-11-19 迅杰科技股份有限公司 存储装置固件修补方法
CN101950254A (zh) * 2010-09-16 2011-01-19 新邮通信设备有限公司 一种软件更新方法和系统
CN101075213B (zh) * 2006-02-21 2011-04-20 三星电子株式会社 只读存储器数据修补电路和方法、及其嵌入式系统
CN102880494A (zh) * 2012-09-26 2013-01-16 浙江大学 一种用于微小卫星系统的局部代码更新方法及其系统
CN106462416A (zh) * 2014-06-11 2017-02-22 家居控制新加坡私人有限责任公司 用于在小存储器设备上安装软件的系统

Families Citing this family (249)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8321356B2 (en) * 2000-05-18 2012-11-27 United Parcel Service Of America, Inc. System and method for calculating real-time costing information
US8725656B1 (en) 2000-05-18 2014-05-13 United Parcel Service Of America, Inc. Freight rate manager
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
US20030140126A1 (en) * 2001-03-30 2003-07-24 Vitria Technology, Inc. Method of deployment for concurrent execution of multiple versions of an integration model
US7613716B2 (en) * 2001-07-20 2009-11-03 The Mathworks, Inc. Partitioning for model-based design
US7069546B2 (en) * 2001-12-03 2006-06-27 Corrigent Systems Ltd. Generic framework for embedded software development
EP1331643B1 (en) * 2002-01-29 2009-12-16 Agere Systems Inc. Differential flash memory programming technique
US20030191823A1 (en) * 2002-04-03 2003-10-09 Aplion Networks, Inc. System and method for providing customizable device capabilities to network equipment in a non-service affecting manner
US20040015943A1 (en) * 2002-07-17 2004-01-22 Ying-Chou Chen Embedded computer system equipped with an upgradeable software library
US7784044B2 (en) * 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
DE10260103A1 (de) * 2002-12-19 2004-07-01 Robert Bosch Gmbh Verfahren und Vorrichtung zur Änderung von Software in einem Steuergerät sowie entsprechendes Steuergerät
US9092286B2 (en) * 2002-12-20 2015-07-28 Qualcomm Incorporated System to automatically process components on a device
WO2004066091A2 (en) * 2003-01-21 2004-08-05 Bitfone Corporation Update system capable of updating software across multiple flash chips
US6941453B2 (en) * 2003-02-11 2005-09-06 Bitfone Corporation System and method for determining if a device needs to be updated and locating and invoking an update agent to update the firmware or software in the device
US6886472B2 (en) * 2003-02-20 2005-05-03 General Electric Company Method and system for autonomously resolving a failure
JP2004312711A (ja) * 2003-03-25 2004-11-04 Ricoh Co Ltd 画像形成装置及び画像形成装置を遠隔のアプリケーションにより操作する方法
JP4523991B2 (ja) * 2003-03-25 2010-08-11 株式会社リコー 端末装置、方法、システム、及びプログラム
GB2403303B (en) * 2003-06-23 2005-08-17 Matsushita Electric Ind Co Ltd Embedded device with software registry
JP2005050073A (ja) * 2003-07-28 2005-02-24 Matsushita Electric Ind Co Ltd データ復旧方法およびデータ記録装置
US7886287B1 (en) * 2003-08-27 2011-02-08 Avaya Inc. Method and apparatus for hot updating of running processes
KR100880783B1 (ko) * 2003-09-03 2009-02-02 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘 피 전자 장치에서의 3-단계 부팅 프로세스
US7673297B1 (en) * 2003-09-03 2010-03-02 The Directv Group, Inc. Automatic software update detection and flexible installer for set-top boxes
US8555273B1 (en) 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US7624393B2 (en) * 2003-09-18 2009-11-24 International Business Machines Corporation Computer application and methods for autonomic upgrade maintenance of computer hardware, operating systems and application software
EP2629515A1 (en) * 2003-11-04 2013-08-21 Electronics and Telecommunications Research Institute Apparatus and method for receiving data broadcasting service to support connection with mobile networks
WO2005048604A1 (en) * 2003-11-17 2005-05-26 Samsung Electronics Co., Ltd. Method for updating software of a target device using an extended identifier in digital broadcasting
US7409538B2 (en) * 2003-12-18 2008-08-05 International Business Machines Corporation Update in-use flash memory without external interfaces
EP1569102B1 (en) 2004-02-27 2010-04-28 Telefonaktiebolaget LM Ericsson (publ) Flash memory programming
KR100620729B1 (ko) * 2004-03-31 2006-09-13 주식회사 팬택앤큐리텔 소프트웨어 이미지 생성 방법
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
US7600216B2 (en) * 2004-04-22 2009-10-06 Gteko, Ltd Method for executing software applications using a portable memory device
US20050251798A1 (en) * 2004-05-05 2005-11-10 News, Iq, Inc. System and method for inventory control and management
US8539469B2 (en) 2004-05-11 2013-09-17 Microsoft Corporation Efficient patching
US7559058B2 (en) * 2004-05-11 2009-07-07 Microsoft Corporation Efficient patching
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
CN100370431C (zh) * 2004-08-16 2008-02-20 上海华为技术有限公司 对嵌入式系统进行在线监测的方法及其系统
US8526940B1 (en) 2004-08-17 2013-09-03 Palm, Inc. Centralized rules repository for smart phone customer care
US7373492B2 (en) * 2004-08-30 2008-05-13 Lehman Brothers Inc. Boot disk management utility
FR2875921B1 (fr) * 2004-09-27 2006-12-01 Gemplus Sa Campagne de telechargement de donnees dans des objets communicants portables
US20060075401A1 (en) * 2004-10-05 2006-04-06 Microsoft Corporation Patch installation control
KR100784783B1 (ko) * 2004-12-07 2007-12-14 한국전자통신연구원 정량적인 프로세스 관리를 위한 임베디드 시스템 개발 방법론 지원 시스템
US8019725B1 (en) 2004-12-15 2011-09-13 Apple Inc. Software update management
US8347285B2 (en) * 2004-12-16 2013-01-01 Intel Corporation Embedded agent for self-healing software
US7426571B2 (en) * 2005-01-06 2008-09-16 Dell Products L.P. Providing files to an information handling system using a remote access controller
US7734574B2 (en) * 2005-02-17 2010-06-08 International Business Machines Corporation Intelligent system health indicator
US20060200656A1 (en) * 2005-03-03 2006-09-07 Cardinell Charles S Apparatus and method to capture data from an embedded device
US7757274B2 (en) 2005-04-05 2010-07-13 Mcafee, Inc. Methods and systems for exchanging security information via peer-to-peer wireless networks
US7761710B2 (en) * 2005-04-05 2010-07-20 Mcafee, Inc. Captive portal system and method for use in peer-to-peer networks
US7606370B2 (en) * 2005-04-05 2009-10-20 Mcafee, Inc. System, method and computer program product for updating security criteria in wireless networks
US7822972B2 (en) * 2005-04-05 2010-10-26 Mcafee, Inc. Remotely configurable bridge system and method for use in secure wireless networks
US20060248107A1 (en) * 2005-04-11 2006-11-02 Coronado Juan A Apparatus system and method for updating software while preserving system state
CN100521676C (zh) 2005-04-14 2009-07-29 华为技术有限公司 在机顶盒中单独升级业务软件的实现方法和装置
US20060265692A1 (en) * 2005-05-20 2006-11-23 Mengjin Su Method, apparatus, and computer program product for code patching
US8399390B2 (en) 2005-06-29 2013-03-19 Exxonmobil Chemical Patents Inc. HVI-PAO in industrial lubricant and grease compositions
US7667874B2 (en) * 2005-07-06 2010-02-23 Xerox Corporation Method and system for improving print quality
WO2007011462A1 (en) 2005-07-19 2007-01-25 Exxonmobil Chemical Patents Inc. Lubricants from mixed alpha-olefin feeds
JP5635234B2 (ja) 2005-07-19 2014-12-03 エクソンモービル・ケミカル・パテンツ・インク ポリαオレフィン組成物およびこれを生成するためのプロセス
EP1934727B1 (en) * 2005-08-23 2019-01-16 Red Bend Ltd. Method and system for in-place updating content stored in a storage device
US7577872B2 (en) * 2005-08-26 2009-08-18 Home Box Office Dynamic system diagnosis
US20070074187A1 (en) * 2005-09-29 2007-03-29 O'brien Thomas E Method and apparatus for inserting code fixes into applications at runtime
CN100416503C (zh) * 2005-11-04 2008-09-03 中兴通讯股份有限公司 一种软件版本更新的方法
KR101259908B1 (ko) * 2005-11-30 2013-05-02 텔레콤 이탈리아 소시에떼 퍼 아찌오니 이동 통신 단말기에서의 애플리케이션 업데이트 방법 및시스템
US20070132774A1 (en) * 2005-12-01 2007-06-14 Samsung Electronics Co., Ltd. System and method for a patch minimization tool
DE102005059319A1 (de) 2005-12-09 2007-06-14 Robert Bosch Gmbh Verfahren zum Betreiben einer Einrichtung
DE602005025385D1 (de) * 2005-12-20 2011-01-27 Ericsson Telefon Ab L M Erstellung inkrementeller Programmaktualisierungen
US7660558B2 (en) 2005-12-31 2010-02-09 Adobe Systems Incorporated Interrupting and resuming a media player
US7603113B2 (en) 2005-12-31 2009-10-13 Adobe Systems Incorporated Using local codecs
KR100746036B1 (ko) 2006-02-23 2007-08-06 삼성전자주식회사 플래시 메모리를 제어하는 장치 및 방법
US8834705B2 (en) 2006-06-06 2014-09-16 Exxonmobil Research And Engineering Company Gear oil compositions
US8501675B2 (en) 2006-06-06 2013-08-06 Exxonmobil Research And Engineering Company High viscosity novel base stock lubricant viscosity blends
US8921290B2 (en) 2006-06-06 2014-12-30 Exxonmobil Research And Engineering Company Gear oil compositions
US8299007B2 (en) 2006-06-06 2012-10-30 Exxonmobil Research And Engineering Company Base stock lubricant blends
US8535514B2 (en) 2006-06-06 2013-09-17 Exxonmobil Research And Engineering Company High viscosity metallocene catalyst PAO novel base stock lubricant blends
US8209676B2 (en) 2006-06-08 2012-06-26 Hewlett-Packard Development Company, L.P. Device management in a network
US8584107B2 (en) * 2006-07-07 2013-11-12 United Parcel Service Of America, Inc. Compiled data for software applications
WO2008014454A2 (en) 2006-07-27 2008-01-31 Hewlett-Packard Development Company, L.P. User experience and dependency management in a mobile device
US8112747B2 (en) * 2006-11-27 2012-02-07 Sap Ag Integrated software support for a distributed business application with seamless backend communications
US20130167024A1 (en) 2006-12-05 2013-06-27 Adobe Systems Incorporated Embedded document within an application
US8533820B2 (en) * 2006-12-12 2013-09-10 International Business Machines Corporation Reserved write positions on install media
FR2911023B1 (fr) * 2006-12-29 2009-04-17 Radiotelephone Sfr Procede de securisation d'un flux de donnees.
DE102007003580A1 (de) * 2007-01-24 2008-07-31 Giesecke & Devrient Gmbh Installieren eines Patch in einem Smartcard-Modul
US7743339B1 (en) * 2007-02-01 2010-06-22 Adobe Systems Incorporated Rendering text in a brew device
US8819668B2 (en) * 2007-02-08 2014-08-26 Microsoft Corporation Accessible limited distribution release software change catalog
EP1956482B1 (en) * 2007-02-09 2011-08-17 Telefonaktiebolaget LM Ericsson Generating delta updates for a processing device
US8589779B2 (en) * 2007-03-08 2013-11-19 Adobe Systems Incorporated Event-sensitive content for mobile devices
CN101681346A (zh) * 2007-05-24 2010-03-24 费斯布克公司 用于访问互联网应用的个性化平台
US20090019435A1 (en) * 2007-07-12 2009-01-15 Sauer-Danfoss Inc. System and method for over the air programming
EP2051150B1 (de) * 2007-10-16 2011-03-16 Siemens Aktiengesellschaft Verfahren zur automatischen Modifikation eines Programms
US7802129B2 (en) * 2007-10-17 2010-09-21 Hewlett-Packard Development Company, L.P. Mobile handset employing efficient backup and recovery of blocks during update
US8213923B1 (en) * 2007-11-02 2012-07-03 Trend Micro Incorporated Product update via voice call in mobile security
US8009757B2 (en) * 2007-11-12 2011-08-30 Motorola Mobility, Inc. Method and apparatus for encoding a modulated signal in a communication system
ES2371995T3 (es) 2007-12-13 2012-01-12 Telefonaktiebolaget Lm Ericsson (Publ) Actualización del firmware de un dispositivo electrónico.
US8839225B2 (en) * 2008-01-23 2014-09-16 International Business Machines Corporation Generating and applying patches to a computer program code concurrently with its execution
EP2247629B1 (en) 2008-01-31 2011-09-14 ExxonMobil Chemical Patents Inc. Improved utilization of linear alpha olefins in the production of metallocene catalyzed poly-alpha olefins
FR2928754B1 (fr) * 2008-03-13 2012-05-18 Sagem Securite Carte a circuit integre ayant un programme d'exploitation modifiable et procede de modification correspondant
US8865959B2 (en) 2008-03-18 2014-10-21 Exxonmobil Chemical Patents Inc. Process for synthetic lubricant production
CN105175597A (zh) 2008-03-31 2015-12-23 埃克森美孚化学专利公司 剪切稳定的高粘度pao 的制备
US9058230B1 (en) * 2008-05-27 2015-06-16 Symantec Operating Corporation Online expert system guided application installation
US20110107070A1 (en) * 2008-06-23 2011-05-05 Grig Barbulescu Patching of a read-only memory
US8394746B2 (en) 2008-08-22 2013-03-12 Exxonmobil Research And Engineering Company Low sulfur and low metal additive formulations for high performance industrial oils
US8930930B2 (en) * 2008-09-04 2015-01-06 International Business Machines Corporation Updating a computer system
US8312447B2 (en) * 2008-09-25 2012-11-13 Microsoft Corporation Managing updates using compiler and linker information
US8247358B2 (en) 2008-10-03 2012-08-21 Exxonmobil Research And Engineering Company HVI-PAO bi-modal lubricant compositions
KR101016916B1 (ko) * 2008-10-30 2011-02-22 한국항공우주산업 주식회사 비행 시뮬레이션 및 테스트를 위한 항공기 임베디드 시스템의 데이터 주입 방법
US20100180104A1 (en) * 2009-01-15 2010-07-15 Via Technologies, Inc. Apparatus and method for patching microcode in a microprocessor using private ram of the microprocessor
US9104521B2 (en) * 2009-03-16 2015-08-11 Tyco Electronics Subsea Communications Llc System and method for remote device application upgrades
US10055251B1 (en) 2009-04-22 2018-08-21 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for injecting code into embedded devices
JP5310324B2 (ja) * 2009-07-07 2013-10-09 株式会社リコー 情報処理装置、情報処理方法、及びプログラム
WO2011006513A2 (en) * 2009-07-13 2011-01-20 Eyad Aii Mohammad Al Qalqili Method and system for advertising on the mobile main screen by cbs technology
US8716201B2 (en) 2009-10-02 2014-05-06 Exxonmobil Research And Engineering Company Alkylated naphtylene base stock lubricant formulations
CN107586353A (zh) 2009-12-24 2018-01-16 埃克森美孚化学专利公司 用于生产新型合成基础油料的方法
US8759267B2 (en) 2010-02-01 2014-06-24 Exxonmobil Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low and medium speed engines by reducing the traction coefficient
US8728999B2 (en) 2010-02-01 2014-05-20 Exxonmobil Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low and medium speed engines by reducing the traction coefficient
US8748362B2 (en) 2010-02-01 2014-06-10 Exxonmobile Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low and medium speed gas engines by reducing the traction coefficient
US8642523B2 (en) 2010-02-01 2014-02-04 Exxonmobil Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low and medium speed engines by reducing the traction coefficient
US8598103B2 (en) 2010-02-01 2013-12-03 Exxonmobil Research And Engineering Company Method for improving the fuel efficiency of engine oil compositions for large low, medium and high speed engines by reducing the traction coefficient
CN102156661B (zh) * 2010-02-11 2013-06-12 华为技术有限公司 在线补丁的激活方法、装置及系统
US9392017B2 (en) 2010-04-22 2016-07-12 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for inhibiting attacks on embedded devices
CN101930375A (zh) * 2010-08-26 2010-12-29 深圳市共进电子有限公司 单用户光网络单元中内存空间自适应的程序数据升级方法
US9815915B2 (en) 2010-09-03 2017-11-14 Exxonmobil Chemical Patents Inc. Production of liquid polyolefins
TW201246075A (en) * 2011-05-06 2012-11-16 Asmedia Technology Inc Flash device and associated booting method
DE102012103654A1 (de) 2011-05-17 2012-11-22 International Business Machines Corp. Installieren und Prüfen einer Anwendung auf einer stark genutzten Computerplattform
CN104160003B (zh) 2011-10-10 2016-01-20 埃克森美孚研究工程公司 高效发动机油组合物
KR102132501B1 (ko) 2012-02-15 2020-07-09 더 트러스티이스 오브 콜롬비아 유니버시티 인 더 시티 오브 뉴욕 매립 디바이스에 대한 공격을 금지하기 위한 방법, 시스템 및 미디어
JP5886099B2 (ja) * 2012-03-21 2016-03-16 日立オートモティブシステムズ株式会社 自動車用電子制御装置
CN102707978A (zh) * 2012-05-18 2012-10-03 苏州万图明电子软件有限公司 图像设备的更新软件
US9798557B2 (en) * 2012-08-24 2017-10-24 Ca, Inc. Injection of updated classes for a java agent
US9817656B2 (en) 2012-08-24 2017-11-14 Ca, Inc. Hot rollback of updated agent
US9921954B1 (en) * 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
US8930932B2 (en) 2012-10-09 2015-01-06 Futurewei Technologies, Inc. In-service software patch
US10310863B1 (en) * 2013-07-31 2019-06-04 Red Hat, Inc. Patching functions in use on a running computer system
US9547581B2 (en) 2013-10-01 2017-01-17 Wipro Limited Systems and methods for fixing software defects in a binary or executable file
CN103530184B (zh) * 2013-10-24 2017-04-12 华为技术有限公司 一种在线补丁激活的方法及装置
CN103645924A (zh) * 2013-12-27 2014-03-19 金三立视频科技(深圳)有限公司 嵌入式设备程序参数管理方法及装置
US9736098B2 (en) * 2014-02-07 2017-08-15 Lenovo (Singapore) Pte. Ltd. Email-based software delivery
US9547489B2 (en) * 2014-03-31 2017-01-17 Qualcomm Incorporated System and method for modifying a sequence of instructions in a read-only memory of a computing device
US10282187B2 (en) 2014-07-03 2019-05-07 Oracle International Corporation Efficient application patching in heterogeneous computing environments
US10657262B1 (en) 2014-09-28 2020-05-19 Red Balloon Security, Inc. Method and apparatus for securing embedded device firmware
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9715402B2 (en) * 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
KR102261815B1 (ko) * 2014-10-30 2021-06-07 삼성전자주식회사 펌웨어 업데이트 시간을 줄일 수 있는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US9413626B2 (en) 2014-12-05 2016-08-09 Amazon Technologies, Inc. Automatic management of resource sizing
US10101987B2 (en) 2015-03-11 2018-10-16 Echelon Corporation Method and system of processing an image upgrade
EP3040858A1 (en) * 2014-12-31 2016-07-06 Echelon Corporation A method and system of processing an image update
US9727725B2 (en) 2015-02-04 2017-08-08 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9886263B2 (en) 2015-03-24 2018-02-06 Oracle International Corporation Techniques for efficient application configuration patching
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US11334605B2 (en) 2015-06-04 2022-05-17 Here Global B.V. Incremental update of compressed navigational databases
US10063629B2 (en) 2015-06-23 2018-08-28 Dell Products, L.P. Floating set points to optimize power allocation and use in data center
US10754494B2 (en) 2015-06-23 2020-08-25 Dell Products, L.P. Method and control system providing one-click commissioning and push updates to distributed, large-scale information handling system (LIHS)
US10009232B2 (en) 2015-06-23 2018-06-26 Dell Products, L.P. Method and control system providing an interactive interface for device-level monitoring and servicing of distributed, large-scale information handling system (LIHS)
CN106354524B (zh) 2015-07-17 2021-01-01 恩智浦美国有限公司 实时更新固件的系统和方法
US9928108B1 (en) 2015-09-29 2018-03-27 Amazon Technologies, Inc. Metaevent handling for on-demand code execution environments
US10042660B2 (en) 2015-09-30 2018-08-07 Amazon Technologies, Inc. Management of periodic requests for compute capacity
US9830175B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9811363B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US10013267B1 (en) 2015-12-16 2018-07-03 Amazon Technologies, Inc. Pre-triggers for code execution environments
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US9830449B1 (en) 2015-12-16 2017-11-28 Amazon Technologies, Inc. Execution locations for request-driven code
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US10002026B1 (en) 2015-12-21 2018-06-19 Amazon Technologies, Inc. Acquisition and maintenance of dedicated, reserved, and variable compute capacity
US10162672B2 (en) 2016-03-30 2018-12-25 Amazon Technologies, Inc. Generating data streams from pre-existing data sets
US10108412B2 (en) 2016-03-30 2018-10-23 Square, Inc. Blocking and non-blocking firmware update
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
WO2017183565A1 (ja) * 2016-04-21 2017-10-26 日本電気株式会社 ネットワークシステム、パッチファイル適用方法、及び記録媒体
CN106055979B (zh) * 2016-05-24 2019-04-09 百度在线网络技术(北京)有限公司 内核修复方法和装置
US10282229B2 (en) 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US9952896B2 (en) 2016-06-28 2018-04-24 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US11010765B2 (en) 2016-06-29 2021-05-18 Square, Inc. Preliminary acquisition of payment information
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10817869B2 (en) 2016-06-29 2020-10-27 Square, Inc. Preliminary enablement of transaction processing circuitry
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
CN110300955B (zh) 2017-02-28 2024-03-08 日本电信电话株式会社 通信处理装置、信息处理装置和通信处理装置的控制方法
CN111133412A (zh) 2017-07-25 2020-05-08 奥罗拉实验室有限公司 基于工具链构建车辆ecu软件的软件增量更新和异常检测
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10303492B1 (en) 2017-12-13 2019-05-28 Amazon Technologies, Inc. Managing custom runtimes in an on-demand code execution system
US10572375B1 (en) 2018-02-05 2020-02-25 Amazon Technologies, Inc. Detecting parameter validity in code including cross-service calls
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
CN108874438B (zh) * 2018-06-25 2021-09-21 南京中感微电子有限公司 补丁生成方法、装置、电子设备及计算机存储介质
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
DE102018009835A1 (de) * 2018-12-14 2020-06-18 Giesecke+Devrient Mobile Security Gmbh Inkrementelles Aktualisieren einer Firmware
US10990969B2 (en) 2018-12-21 2021-04-27 Square, Inc. Point of sale (POS) systems and methods for dynamically processing payment data based on payment reader capability
US11049095B2 (en) 2018-12-21 2021-06-29 Square, Inc. Point of sale (POS) systems and methods with dynamic kernel selection
US10762196B2 (en) 2018-12-21 2020-09-01 Square, Inc. Point of sale (POS) systems and methods with dynamic kernel selection
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
WO2020194000A1 (en) 2019-03-28 2020-10-01 Validata Holdings Limited Method of detecting and removing defects
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
CN110333890A (zh) * 2019-06-28 2019-10-15 南京兆伏电力科技有限公司 远程烧写固化flash数据的方法
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US10997056B1 (en) * 2019-10-09 2021-05-04 Fujitsu Limited Generation of explanatory and executable repair examples
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
US11669621B2 (en) * 2020-06-16 2023-06-06 Bank Of America Corporation Custom patching automation with machine learning integration
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
CN114860308A (zh) * 2021-02-04 2022-08-05 北京国基科技股份有限公司 一种嵌入式软件重构方法及装置
CN113076125B (zh) * 2021-04-25 2024-04-12 北京金山云网络技术有限公司 直播业务升级处理方法、装置、介质和服务器
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
CN113656059B (zh) * 2021-10-21 2022-02-08 北京联盛德微电子有限责任公司 嵌入式软件系统
US11900106B2 (en) 2022-03-02 2024-02-13 International Business Machines Corporation Personalized patch notes based on software usage
CN115469901B (zh) * 2022-08-16 2023-05-12 哈尔滨理工大学 一种双核dsp可拆卸远程升级系统及升级方法

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4954941A (en) * 1988-08-31 1990-09-04 Bell Communications Research, Inc. Method and apparatus for program updating
EP1031992B1 (en) * 1989-04-13 2006-06-21 SanDisk Corporation Flash EEPROM system
US5481713A (en) * 1993-05-06 1996-01-02 Apple Computer, Inc. Method and apparatus for patching code residing on a read only memory device
US5675803A (en) * 1994-01-28 1997-10-07 Sun Microsystems, Inc. Method and apparatus for a fast debugger fix and continue operation
US5666293A (en) 1994-05-27 1997-09-09 Bell Atlantic Network Services, Inc. Downloading operating system software through a broadcast channel
US5699275A (en) 1995-04-12 1997-12-16 Highwaymaster Communications, Inc. System and method for remote patching of operating code located in a mobile unit
US5619698A (en) * 1995-05-05 1997-04-08 Apple Computer, Inc. Method and apparatus for patching operating systems
US5689825A (en) 1995-07-28 1997-11-18 Motorola, Inc. Method and apparatus for downloading updated software to portable wireless communication units
US5896566A (en) 1995-07-28 1999-04-20 Motorola, Inc. Method for indicating availability of updated software to portable wireless communication units
US5802549A (en) * 1995-12-14 1998-09-01 International Business Machines Corporation Method and apparatus for patching pages of ROM
US5907708A (en) * 1996-06-03 1999-05-25 Sun Microsystems, Inc. System and method for facilitating avoidance of an exception of a predetermined type in a digital computer system by providing fix-up code for an instruction in response to detection of an exception condition resulting from execution thereof
EP0825530A3 (en) * 1996-06-20 2004-06-02 Sharp Kabushiki Kaisha Computer apparatus having electrically rewritable nonvolatile memory, and nonvolatile semiconductor memory
US5848064A (en) 1996-08-07 1998-12-08 Telxon Corporation Wireless software upgrades with version control
JP3755204B2 (ja) 1996-09-20 2006-03-15 カシオ計算機株式会社 通信装置、通信制御方法及び通信システム
US5963970A (en) * 1996-12-20 1999-10-05 Intel Corporation Method and apparatus for tracking erase cycles utilizing active and inactive wear bar blocks having first and second count fields
TW325551B (en) 1997-01-04 1998-01-21 Inventec Corp Auto switching memory space method capable of judging if there is updated version stored in memory circuit to automatically select program stored in ROM or memory circuit as execution stating location
US6266736B1 (en) * 1997-01-31 2001-07-24 Sony Corporation Method and apparatus for efficient software updating
US6049830A (en) 1997-05-13 2000-04-11 Sony Corporation Peripheral software download of a broadcast receiver
US5936667A (en) 1997-05-13 1999-08-10 Sony Corporation System and method for testing and updating stored content of a remote transmitter for an entertainment system
US5974312A (en) * 1997-07-10 1999-10-26 Ericsson Inc. System and method for updating a memory in an electronic device via wireless data transfer
US6002941A (en) 1997-12-17 1999-12-14 Motorola, Inc. Method and apparatus for implementing a service in a wireless communication system
US6167567A (en) * 1998-05-05 2000-12-26 3Com Corporation Technique for automatically updating software stored on a client computer in a networked client-server environment
US6209069B1 (en) * 1998-05-11 2001-03-27 Intel Corporation Method and apparatus using volatile lock architecture for individual block locking on flash memory
US6330715B1 (en) 1998-05-19 2001-12-11 Nortel Networks Limited Method and apparatus for managing software in a network system
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
US6353926B1 (en) 1998-07-15 2002-03-05 Microsoft Corporation Software update notification
US6366898B2 (en) 1998-09-21 2002-04-02 Sun, Microsystems, Inc. Method and apparatus for managing classfiles on devices without a file system
US6202208B1 (en) * 1998-09-29 2001-03-13 Nortel Networks Limited Patching environment for modifying a Java virtual machine and method
US6237091B1 (en) 1998-10-29 2001-05-22 Hewlett-Packard Company Method of updating firmware without affecting initialization information
US6378069B1 (en) 1998-11-04 2002-04-23 Nortel Networks Limited Apparatus and methods for providing software updates to devices in a communication network
US6594822B1 (en) * 1999-02-19 2003-07-15 Nortel Networks Limited Method and apparatus for creating a software patch by comparing object files
US6434744B1 (en) * 1999-03-03 2002-08-13 Microsoft Corporation System and method for patching an installed application program
US6223291B1 (en) 1999-03-26 2001-04-24 Motorola, Inc. Secure wireless electronic-commerce system with digital product certificates and digital license certificates
US6357021B1 (en) * 1999-04-14 2002-03-12 Mitsumi Electric Co., Ltd. Method and apparatus for updating firmware
US6507881B1 (en) * 1999-06-10 2003-01-14 Mediatek Inc. Method and system for programming a peripheral flash memory via an IDE bus
US6321380B1 (en) * 1999-06-29 2001-11-20 International Business Machines Corporation Method and apparatus for modifying instruction operations in a processor
US6397385B1 (en) 1999-07-16 2002-05-28 Excel Switching Corporation Method and apparatus for in service software upgrade for expandable telecommunications system
US7032213B1 (en) * 1999-09-01 2006-04-18 Microsoft Corporation Fixing incompatible applications using a light debugger
US6640334B1 (en) * 1999-09-27 2003-10-28 Nortel Networks Limited Method and apparatus of remotely updating firmware of a communication device
US6769059B1 (en) * 1999-12-17 2004-07-27 Intel Corporation System for updating computer's existing video BIOS without updating the whole computer's system BIOS
US20020012329A1 (en) 2000-06-02 2002-01-31 Timothy Atkinson Communications apparatus interface and method for discovery of remote devices
US6256232B1 (en) * 2000-07-07 2001-07-03 Institute For Information Industry Data access method capable of reducing the number of erasing to flash memory and data patch and access device using the same
US20020026474A1 (en) 2000-08-28 2002-02-28 Wang Lawrence C. Thin client for wireless device using java interface
GB2366693B (en) 2000-08-31 2002-08-14 F Secure Oyj Software virus protection
US6529416B2 (en) * 2000-11-30 2003-03-04 Bitmicro Networks, Inc. Parallel erase operations in memory systems
US7055148B2 (en) * 2000-12-07 2006-05-30 Hewlett-Packard Development Company, L.P. System and method for updating firmware
US6813571B2 (en) * 2001-02-23 2004-11-02 Power Measurement, Ltd. Apparatus and method for seamlessly upgrading the firmware of an intelligent electronic device
GB0123415D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
US20030079216A1 (en) * 2001-10-18 2003-04-24 International Business Machines Corporation Apparatus and method of using a hybrid of fixed media data and network-based data to provide software changes
JP4279528B2 (ja) * 2002-09-18 2009-06-17 株式会社ミクニ ウォータポンプ
JP2005135187A (ja) * 2003-10-30 2005-05-26 Toshiba Corp 電子機器および組み込みソフトウェア更新方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100435108C (zh) * 2004-12-22 2008-11-19 迅杰科技股份有限公司 存储装置固件修补方法
CN101075213B (zh) * 2006-02-21 2011-04-20 三星电子株式会社 只读存储器数据修补电路和方法、及其嵌入式系统
CN101950254A (zh) * 2010-09-16 2011-01-19 新邮通信设备有限公司 一种软件更新方法和系统
CN101950254B (zh) * 2010-09-16 2014-07-30 新邮通信设备有限公司 一种软件更新方法和系统
CN102880494A (zh) * 2012-09-26 2013-01-16 浙江大学 一种用于微小卫星系统的局部代码更新方法及其系统
CN102880494B (zh) * 2012-09-26 2016-02-10 浙江大学 一种用于微小卫星系统的局部代码更新方法及其系统
CN106462416A (zh) * 2014-06-11 2017-02-22 家居控制新加坡私人有限责任公司 用于在小存储器设备上安装软件的系统
CN106462416B (zh) * 2014-06-11 2020-08-25 家居控制新加坡私人有限责任公司 用于在小存储器设备上安装软件的系统

Also Published As

Publication number Publication date
US6760908B2 (en) 2004-07-06
US20040237068A1 (en) 2004-11-25
EP1410181A1 (en) 2004-04-21
US20030084434A1 (en) 2003-05-01
KR20040022451A (ko) 2004-03-12
JP2004536405A (ja) 2004-12-02
WO2003009136A1 (en) 2003-01-30
US20050063242A1 (en) 2005-03-24

Similar Documents

Publication Publication Date Title
CN1529847A (zh) 内嵌软件更新系统
CN1229724C (zh) 外部存储设备和数据处理方法
CN1596401A (zh) 非易失性存储器装置的控制方法
CN1143208C (zh) 用于消息转换的装置和方法
CN1270270C (zh) 接近通信系统、接近通信方法、数据管理装置、数据管理方法、记录介质和计算机程序
CN1809818A (zh) 在产生差别文件中使用的处理软件
CN1437110A (zh) 用于断点设定的装置和方法
CN1190741C (zh) 用于支持数据事务的设备和方法
CN1193783A (zh) 存储器卡
CN1758221A (zh) 程序处理装置
CN1498367A (zh) 信息处理装置、存储器管理装置、存储器管理方法及信息处理方法
CN1542584A (zh) 程序电子水印处理装置
CN1098501C (zh) 用于sql关系数据库的仿真器及方法
CN1503953A (zh) 分配装置、终端装置以及其中所用的程序和方法
CN1629815A (zh) 具有多数个存储系统的数据处理系统
CN1858742A (zh) 一种在实时数据库中实现更新数据的方法和系统
CN1637710A (zh) 用于调度数据处理基础结构中工作单元执行的方法和系统
CN1758222A (zh) 程序处理装置
CN1722170A (zh) 内容系统、内容终端、参考服务器、内容程序和参考程序
CN1174319C (zh) 数据结构管理装置、数据结构管理系统和方法
CN1271440A (zh) 数据库的模式改变方法
CN1912926A (zh) 可中断图形处理单元处理多个程序的方法和图形处理单元
CN1841328A (zh) 脚本语言的自动机方法
CN1795434A (zh) 程序执行控制设备,程序执行控制方法,控制程序和记录介质
CN1325057A (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
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication