CN1282078C - 用于固件更新的方法和装置 - Google Patents
用于固件更新的方法和装置 Download PDFInfo
- Publication number
- CN1282078C CN1282078C CNB031566987A CN03156698A CN1282078C CN 1282078 C CN1282078 C CN 1282078C CN B031566987 A CNB031566987 A CN B031566987A CN 03156698 A CN03156698 A CN 03156698A CN 1282078 C CN1282078 C CN 1282078C
- Authority
- CN
- China
- Prior art keywords
- firmware
- code
- reflection
- nonvolatile memory
- rewritable nonvolatile
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
对存储多个具有与位置相关的代码的固件代码映像的可重写非易失性存储器中存储的固件进行更新。使多个更新代码映像可用,其具有指定可重写非易失性存储器位置的与位置相关的代码,以使每个更新代码映像适合于代替不同的一个存储的代码映像。计算机处理器确定哪一个存储的代码映像是要被更新的;并选择适合于代替要被更新的代码映像的、具有与位置相关的代码的、多个更新代码映像中的一个。
Description
技术领域
本发明涉及存储在可重写非易失性存储器中的固件,特别涉及对存储在能够存储多个固件代码映像的可重写非易失性存储器中的固件进行更新。
背景技术
微处理器,例如,实现专用功能或服务的嵌入式系统的微处理器,使用存储在非易失性存储器中的固件或计算机可读程序代码。调制解调器、电话应答机、汽车控制器、磁盘驱动器、磁带驱动器、数字照相机、医药注入系统、以及存储自动化产品都是可包含嵌入式系统的例子。这些系统中的处理器控制要有一定的灵活性,以在提高产品质量的同时降低成本。
对嵌入式系统的系统固件提供升级的能力是有利的。它简化了对产品提供增强和维修的任务。例如,以新的特点和功能的形式对产品提供增强是很常见的。例如,在引入56K调制解调器技术后,许多调制解调器生产商向现有顾客提供了固件更新。更新使现有的调制解调器能够支持用于提高的通信速度的新技术。再例如,IBM 3584Ultra Scalable Tape Library首次引入时带有LTO(Linear TapeOpen,线性开放磁带)驱动器和媒体支持,后来,进行了改进以支持“Quantum(昆腾)DLT”(Digital Linear Tape,数字线性磁带)驱动器和媒体。尤其是对昂贵的系统,顾客希望在未来的许多年都能够以最小的投入和最小的破坏来升级他们的产品。
对嵌入式系统提供可靠安全(failsafe)的固件更新是人们所希望的,在有些情况下是至关重要的。“可靠安全(Failsafe)”意味着即使更新步骤中断了,嵌入式系统也至少能在固件更新之前的水平上继续工作。例如,许多嵌入式系统在固件更新中断后,变为不能正常工作。在美国专利6,357,021中,固件存储在一个可更新的部分和一个固定的部分中。固定的部分包含缺省任务,而可更新的部分则存储任何的更新。这样,存储在固定部分中的固件就不会因更新下载未完成而丢失或破坏。问题是如果固件更新中断了,则系统必须回到原始的默认值,其先前最近的更新将会丢失,还有可能使嵌入式系统不能工作。
然后,嵌入式系统可能会需要专门的程序来使它们重新工作,例如,需要授权的维修专家,或者需要将产品返回工厂。
包含的′844美国专利申请提供的非易失性存储器具有多个独立的可擦除的区或存储区,用于存储至少两个独立的操作码副本,以及与操作码分开存储的引导程序。可对操作码的任何副本进行更新而不需要更新引导代码。例如,如果存在两个副本,这两个副本可以都是最近的更新,或者一个副本比另一个副本更新。任何新的更新都将对低级的操作码执行。这样,就保留了在新的更新之前的、已成功操作系统的操作码,并且,在新的更新中断的情况下,成功操作的代码将会简单地恢复它的职责。
操作码的两个副本或映像(image)独立地执行。有些处理器或编译器不支持与位置无关的代码,以防止执行多于一个的操作码副本。可使用附加的存储器来将两个代码映像中的任何一个复制到RAM或其它的存储区中来执行,并且固件被编译成在RAM中的新复制的代码的地址运行。然而,现有的嵌入式系统可能没有保存代码映像副本的附加存储器,而新系统将不得不为复制存储器承担额外的成本和板空间(board space)。
发明内容
根据本发明的内容,提供了用于更新存储在能够存储多个固件代码映像的可重写非易失性存储器中的固件的计算机程序产品、计算机实现系统和方法。
在一个实施例中,固件代码映像具有与位置相关的代码,使多个更新固件代码映像具有与位置相关的代码,与位置相关的代码指定可重写非易失性存储器的位置,每个固件代码映像与位置相关的代码指定的可重写非易失性存储器的位置不同于多个更新固件代码映像的其它任何一个固件代码映像。这样,每个更新固件代码映像适合于替代存储在非易失性存储器中的不同固件代码映像。
计算机处理器确定存储在可重写非易失性存储器中的多个固件代码映像中的要更新的一个;并且选择多个具有与位置相关的代码的更新固件代码映像的一个,用于代替确定的要更新的固件代码映像。
在一个实施例中,计算机处理器在接口指示出选择,并提供选择的更新固件代码映像用于更新。
在另一实施例中,对嵌入式系统提供了多个更新固件代码映像,并将其存储在存储器中,并且计算机处理器从存储在存储器中的多个代码映像中选择那个更新固件代码映像。
然后,计算机处理器从存储器中复制选择的那个更新固件代码映像、来覆盖所确定的位于可重写非易失性存储器中的固件代码映像。
在另一实施例中,在接口对嵌入式系统提供了多个更新固件代码映像,并且计算机处理器选择那个更新固件代码映像,并直接覆盖所确定的位于可重写非易失性存储器中的固件代码映像。
在本发明的另一实施例中,把用于操作计算机处理器以执行更新的计算机可读程序代码嵌入到非易失性存储器的引导区中。
在另一实施例中,把用于操作计算机处理器以执行更新的计算机可读程序代码嵌入到当前起作用的固件代码映像中。
在另一实施例中,把用于操作计算机处理器以执行更新的计算机可读程序代码嵌入到至少一个更新固件代码映像中,并将程序代码临时存储在用于执行程序代码的存储器中。
本发明的另一方面是关于更新存储在能够存储多个固件代码映像的可重写非易失性存储器中的固件,其中,存储在可重写非易失性存储器中的多个固件代码映像包含操作码,计算机处理器:
确定存储在可重写非易失性存储器中的多个固件代码映像中的要更新的一个;
用更新固件代码映像代替所确定的、要更新的固件代码映像;
确定更新固件代码映像是否已成功地存储到可重写非易失性存储器中以覆盖所确定的固件代码映像;以及
如果是这样的话,对存储在可重写非易失性存储器中的多个固件代码映像的至少一个不更新的固件代码映像进行标记,以防止被标记的固件代码映像在以后被用作当前的操作码。
参照下面结合附图的详细说明,将会对本发明有更加充分的理解。
附图说明
图1是实现本发明的微处理器系统的方框图;
图2是图1的非易失性存储器的内容的图形表示;
图3是更新固件代码映像的图形表示;
图4是描述本发明的、用于更新图1系统的固件的方法的实施例的流程图;以及
图5是描述对图1系统选择用于执行的固件代码映像的流程图。
具体实施方式
下面参照附图对优选实施例进行描述,并以此来说明本发明,其中,相同的编号代表相同或相似的元件。尽管本发明是按照实现本发明目的最佳模式进行说明的,然而本领域的技术人员应该理解,在不脱离本发明的精神或范围的条件下可根据这些教导实现各种变化。
参照图1,作为一个例子图解说明了微处理器系统100,例如实现专用功能或服务的嵌入式系统。嵌入式系统的例子有调制解调器、电话应答机、汽车控制器、磁盘驱动器、磁带驱动器、数字照相机、医药注入系统、以及控制存取器或提供通信的存储自动化产品。图解说明的微处理器系统具有计算机处理器102、可选的RAM(随机存取存储器)103、可重写非易失性存储器104、设备专用电路101以及I/O接口105。正如本领域的技术人员所了解的,计算机处理器102可以是现成的成品微处理器、定制的处理器、离散逻辑等。可重写非易失性存储器104保存可执行的固件和用于计算机处理器102的任何非易失性数据,它可以是闪速(flash)PROM(可编程只读存储器)、电池后备RAM,此外,还有许多其它类型的非易失性存储器也被本领域的技术人员所公知。I/O接口105是使计算机处理器102能够与外部世界进行通信的某种形式的通信接口。例如,可包括串行接口、SCSI(小型计算机系统接口)、以太网、光纤信道接口等。固件更新映像通过I/O接口105进行传送。设备专用电路101提供的附加硬件能够使嵌入式系统100执行专用功能,例如,车辆的防爆死制动系统的执行器控制、用于自动数据存储器库的存取器的电机控制等。设备专用电路101可包括提供脉宽调制(PWM)控制、模数转换(ADC)、数模转换(DAC)、以及用于液晶显示器(LCD)控制等的电子设备。图1中的任何元件都可以组合成一个或多个部件,例如,非易失性存储器104、RAM 103、以及I/O接口105可包含处理器102的元件。
如上所述,对嵌入式系统提供系统固件升级的能力是十分有利的。它简化了对产品提供增强和维修的任务。对嵌入式系统提供可靠安全(failsafe)的固件更新是人们所希望的,在有些情况下是至关重要的。这样,即使更新步骤中断了,嵌入式系统也至少能在固件更新之前的水平上继续工作。包含的′844美国专利申请提供的非易失性存储器具有多个独立的可擦除的区或存储区,用于存储至少两个独立的操作码副本、以及与操作码分开存储的引导程序。可对操作码的任何副本进行更新而不需要更新引导代码。例如,如果存在两个副本,这两个副本可以都是最近的更新,或者一个副本比另一个副本更新。任何新的更新都将对低级的操作码执行。这样,就保留了在新的更新之前的、已成功操作系统的操作码,并且,在新的更新中断的情况下,成功操作的代码将会简单地恢复它的职责。
图2图解说明了图1的非易失性存储器104的内容的一个例子。非易失性存储器的一部分存储引导区201,引导区中写有比较简单的引导程序。图中的多个固件代码映像202、203构成供图1中的计算机处理器102使用的固件。尽管只示出了两个固件代码映像,然而使用几个或许多固件映像都是可以的。
操作码的两个副本或映像是独立地执行的。在某些处理器中,可支持与位置无关的代码,它使用相对寻址。这样,由于对任何一个副本都使用相同的相对地址,因而任何一个副本都是可执行的。然而,一些处理器和编译器为防止执行一个以上的操作码副本而不支持与位置无关的代码。如上所述,可使用附加的存储器来将两个代码映像中的任何一个复制到RAM或其它的存储区中来执行,并且固件被编译成在RAM中的新复制的代码的地址运行。然而,现有的嵌入式系统可能没有保存代码映像副本的附加存储器,而新系统将不得不为复制存储器承担额外的成本和板空间。
在图2中,示出了引导区201、第一代码映像202和第二代码映像203的存储器地址。如果将更新代码映像编译成从十六进制地址00002000开始运行,并且第一代码映像202从十六进制地址00002000开始,那么更新代码映像将会正常执行。然而,如果改为在第二代码映像203中写入相同的更新代码映像,则不能正确执行,这是因为第二代码映像203实际上是从十六进制地址00021000开始的。企图在第二代码映像203以外执行固件更新映像将会导致致命错误,例如,处理器异常。
参照图3,在本发明的一个实施例中,要更新的固件代码映像具有与位置相关的代码,多个更新固件代码映像302、303可用,其具有与位置相关的代码,与位置相关的代码指定可重写非易失性存储器的位置。更新固件代码映像302的与位置相关的代码指定图1的可重写非易失性存储器104的位置、不同于多个更新固件代码映像中其它任何一个固件代码映像,更新固件代码映像303的与位置相关的代码也同样。在图2和图3的例子中,更新固件映像302的与位置相关的代码从十六进制地址00002000开始,而更新固件代码映像303的与位置相关的代码从十六进制地址00021000开始。这样,更新固件代码映像302适合于代替固件代码映像202,而更新固件代码映像303适合于代替存储在非易失性存储器104中的固件代码映像203。另外,虽然只图解说明了两个更新固件映像,但是可以使用几个或多个固件映像,每一个都与图1中的非易失性存储器104中一个不同的固件代码映像相匹配。
这样,根据本发明,计算机处理器,例如,图1中的处理器102,确定存储在图2的可重写非易失性存储器104中的、图2的多个固件代码映像202、203中要更新的一个;并且在图3中的具有与位置相关的代码的多个更新固件代码映像302、303中选择适合于代替所确定的要更新的固件代码映像的一个。
图4图解说明了本发明的用于更新非易失性存储器中的固件代码映像的计算机实现方法的实施例。实现本发明的计算机程序产品可包含如下的计算机可读程序代码:图2的引导区201的、或者是当前执行的固件代码映像202、203的、或者是更新固件映像302、303的计算机可读程序代码,此外还可包含磁盘并从磁盘来提供,等等,并且在图1的接口105进行通信。如果计算机可读程序代码嵌入到图3的一个或多个将要进行更新的固件代码映像302、303中,则将计算机可读程序代码复制到存储器中,例如,图1的RAM 103,并可编译成从该存储器位置执行。如果一个以上的更新固件代码映像嵌入了计算机可读程序代码,则可将它们都编译成从相同的地址执行。可以从第一个提供的更新固件代码映像读取计算机可读程序代码,并且决定是选择其映像还是另一个更新映像。剩余的过程可由进行选择的同一个计算机可读程序代码执行,或者,也可由所选择的代码映像的计算机可读程序代码执行。
在所有这些例子中,可将计算机程序产品的计算机可读程序代码复制到另一个存储器,并且如果计算机可读程序代码来自更新固件映像302、303,则复制是必须的,必须对其计算机可读程序代码进行复制以便用来执行代码。
固件更新从图4中的步骤401开始。固件更新可能是操作员或维修人员手动启动的更新,或者是由主机、另一嵌入式系统、或另一处理器等启动的自动固件更新。在图4的步骤405中,图1的计算机处理器102检查非易失性存储器104中的固件代码映像,例如,图2中的代码映像202或203,并确定其任何一个是否有缺陷或标记为不使用。如果其中一个固件代码映像有缺陷或者标记为不使用,则在图4的步骤407中,处理器将有缺陷的代码映像确定为将要由更新代码映像覆盖的代码映像。
如果步骤405指示没有一个固件代码映像被标记或是有缺陷,则步骤411确定固件代码映像中的任何一个与至少一个其它固件代码映像比较起来是否是最近最少更新(least recently updated)。这里,术语“最近最少更新”是指一个固件代码映像与至少一个其它固件代码映像比起来、是否低级或更早(less recent)。保留当前工作的固件映像,而不要覆盖它是很重要的,即使它是最早的。最近最少更新的固件可由较低的固件版本、较早的日期/时间戳、或某些其它的标记来指示。如果其中一个固件代码映像与其它固件代码映像比较起来是最近最少更新的,并且不是当前工作的固件,则在步骤412中,处理器将最近最少更新的代码映像确定为将由更新代码映像覆盖的代码映像。
如果步骤405指示没有一个固件代码被标记或是有缺陷,并且步骤411指示没有一个固件代码映像与至少一个其它固件代码映像比较起来是最近最少更新的,则在步骤415中,任意决定要由更新代码映像覆盖的代码映像。根据步骤407、步骤412、或步骤415的确定,在步骤418中,计算机处理器确定要被覆盖的代码映像的位置。要被覆盖的映像的位置可包含任意的映像编号、地址、偏移量、或一些其它的位置要被覆盖的标记。
然后,在步骤420中,计算机处理器选择并可能报告出需要哪个固件更新映像来进行固件更新的指示。选择的更新代码映像将具有与位置相关的代码,并适合于代替所确定的要被覆盖和更新的固件代码映像。在图1中,计算机处理器102可能是由来自更新计算机的查询触发,或者也可能是来自正被更新的嵌入式系统的请求。处理器102可报告在接口105的选择,或者,如果在接口105从外部接收到了多个更新固件代码映像,则处理器将选择所希望的更新代码映像。例如,参照图2和图3,如果确定固件代码映像203为要被覆盖的代码映像,则将选择适合于代替所确定的要被更新的固件代码映像的、具有与位置相关的代码的更新固件代码映像303。
在步骤403中,更新系统或操作员使图3中的多个更新固件映像302、303可用于选择过程。如上所述,每个固件更新映像已被编译成从不同的存储器位置执行。更新固件代码映像可在图1中的I/O接口105一起提供,并可存储在存储器中,例如RAM103中,可按顺序提供,并且当所希望的映像出现在I/O接口105进行选择,或者可由外部请求及计算机处理器102的响应来提供所希望的固件映像,或在计算机处理器102的请求下提供。
在步骤423中,接收选择的更新固件代码映像,并且处理器102将其写到非易失性存储器中,并覆盖要被更新的固件代码映像。可在图1中的I/O接口105接收选择的更新固件代码映像,并且在写入到非易失性存储器104之前,将其保存在存储器中,例如RAM103中,或者,在接收的同时直接将其写入到非易失性存储器中。在任何一种情况下,更新固件代码映像在接收时都可被缓存。
在图4的步骤424中,进行可选的检查,以确定固件更新是否成功完成。如果更新没有成功,则可选择性地执行步骤425中的出错恢复,和/或可结束过程但未完成固件更新。
然而,如果成功地完成了固件更新,则过程转到可选的步骤430。在步骤430中,对一个或多个没有被更新的代码映像,例如,以前执行的或当前执行的固件代码映像,进行标记,以防止系统100在下次通电或复位时使用。这可以是使标识符设成无效的校验和、无效的CRC、无效的签名字段等的动作。对于只单方向支持固件更新的嵌入式系统来说该步骤不是必需的,因而该步骤是可选的。例如,在复位或通电后选择执行图2中的哪一个代码映像202、203时,如果没有一个代码映像是有缺陷的,则可选择较高固件版本的代码映像。图4中的步骤430防止在固件降级后选择当前执行的代码映像。在更新与位置无关的代码的情况下,也可以使用步骤430,例如包含的′844美国专利申请,以便同样用来防止选择当前执行的映像。固件更新过程在步骤437结束,在这里,可对嵌入式系统复位以便开始执行新的更新代码映像。
参照图5,图解说明了在图1的嵌入式系统100复位或通电后代码映像的选择过程。参照图2,引导区201中的固件负责图5中的步骤,如包含的′844美国专利申请所讨论的那样。在图5中,只说明了两个固件代码映像,但是,仍然是可提供几个或多个固件代码映像。
通电或复位发生在步骤501中。在步骤502中,进行检查以确定图1中的第一个固件代码映像202是否被标记或有缺陷。这可能是检查标识符、校验和测试、CRC测试、检查有效签名字段等。如果第一代码映像是有缺陷的,则过程转到图5的步骤503,在这里,选择图2中的第二代码映像并执行。或者,图5中的步骤503确保第二代码映像是完好的,并且如果它不是完好的,则选择性地执行出错恢复程序或报告错误。另外,如果提供了另外的代码映像,则步骤503将是步骤502的重复,并且然后,过程仍将选择另外一个代码映像来执行。
然而,如果步骤502确定图2中的第一代码映像202没有被标记,如在图4中的步骤430,并且没有缺陷,则过程转到图5中的步骤504。在步骤504中,进行检查以便确定图2中的第二代码映像203是否被标记或是有缺陷。这仍然可以是校验和测试等。如果第二代码映像被标记或有缺陷,则控制转到图5中的步骤505,在这里,选择图2中的第一代码映像202并执行。如果图5中的步骤505断定第二代码映像没有被标记或没有缺陷,则过程转到步骤506。
在步骤506中,进行检查来确定哪个固件代码映像是较近的。这可由较高的固件版本、较近的日期/时间戳、或一些其它的标记指示。在这个直接的例子中,如果图2中的第一代码映像202比第二代码映像203的时间更近,则过程转到图5中的步骤507,在这里,选择第一代码映像并执行。然而,如果步骤506断定图2中的第一代码映像202没有第二代码映像203的时间更近,则控制转到图5中的步骤508,在这里,选择第二代码映像并执行。或者,如果在图4中的步骤430中,标记了低级的代码映像,则可除去图5中的步骤504、506、507和508。在这种情况下,来自步骤502的“否”的回答将把过程引导至步骤505。这是有可能的,因为实际上总是有来自图4中的步骤430的被标记的或有缺陷的代码映像。
本领域的技术人员可以构想计算机处理器和非易失性存储器的另外的布置,以及图4和图5的另外的布置。
虽然对本发明的优选实施例进行了详细说明,但是很明显,本领域的技术人员在不脱离由下面的权利要求书所阐明的本发明的范围的情况下可以对那些实施例进行修改和变化。
Claims (16)
1.一种用于更新存储在可重写非易失性存储器中的固件的装置,所述可重写非易失性存储器能够存储多个固件代码映像,所述固件代码映像具有与位置相关的代码,所述装置包括:
用于确定存储在所述可重写非易失性存储器中的多个固件代码映像中哪一个是要被更新的装置;和
用于选择适合于代替所述确定的要被更新的固件代码映像的、具有与位置相关的代码的多个更新固件代码映像中的其中一个的装置。
2.如权利要求1所述的装置,还包括一个接口,其中,选择所述更新固件代码映像的装置在所述接口指示所述选择。
3.如权利要求1所述的装置,还包括一个存储器,其中,选择所述更新固件代码映像的装置从存储在所述存储器中的多个更新固件代码映像中选择所述的一个更新固件代码映像。
4.如权利要求3所述的装置,还包括从所述存储器中复制所述选择的一个更新固件代码映像来覆盖所述可重写非易失性存储器中的所述确定的固件代码映像的装置。
5.如权利要求1所述的装置,还包括:
确定所述选择的一个更新固件代码映像是否已成功存储在所述可重写非易失性存储器中来覆盖所述确定的固件代码映像的装置;以及
标记存储在所述可重写非易失性存储器中的所述多个固件代码映像中的至少一个非更新的固件代码映像,以防止所述标记的固件代码映像在后来被用作当前操作的代码映像的装置。
6.如权利要求1所述的装置,其中,所述可重写非易失性存储器中还包括一个引导区。
7.如权利要求1所述的装置,其中,所述固件代码映像用于帮助确定多个固件代码映像中哪一个要被更新,以及用于选择所述多个更新固件代码映像中的其中一个。
8.如权利要求1所述的装置,进一步包括:
接口;以及
用于临时存储嵌入到在所述接口接收到的至少一个更新固件代码映像中的计算机可读程序代码的存储器。
9.一种用于更新存储在可重写非易失性存储器中的固件的装置,所述可重写非易失性存储器能够存储多个固件代码映像,其中,存储在所述可重写非易失性存储器中的所述多个固件代码映像中至少一个包含当前操作的代码,所述装置包括:
用于确定存储在所述可重写非易失性存储器中的所述多个固件代码映像中哪一个是要被更新的装置;
用于用更新固件代码映像代替所述确定的要被更新的固件代码映像的装置;
用于确定所述更新固件代码映像是否已成功存储到所述可重写非易失性存储器中,以覆盖所述确定的固件代码映像的装置;以及
用于标记存储在所述可重写非易失性存储器中的所述多个固件代码映像中的至少一个非更新的固件代码映像,以防止所述标记的固件代码映像在后来被用作当前操作的代码映像的装置。
10.一种用于更新存储在可重写非易失性存储器中的固件的方法,所述可重写非易失性存储器能够存储多个固件代码映像,所述固件代码映像具有与位置相关的代码,包含以下步骤:
确定存储在所述可重写非易失性存储器中的多个固件代码映像中的哪一个是要被更新的;以及
选择适合于代替所述确定的要被更新的固件代码映像的、具有与位置相关的代码的多个更新固件代码映像中的一个。
11.如权利要求10所述的方法,其中,所述选择所述更新固件代码映像的步骤还包括在接口指示所述选择。
12.如权利要求10所述的方法,其中,所述选择所述更新固件代码映像的步骤包括从存储在存储器中的多个更新固件代码映像中选择所述的一个更新固件代码映像。
13.如权利要求12所述的方法,还包括下面的步骤:从所述存储器中复制所述选择的一个更新固件代码映像来覆盖所述可重写非易失性存储器中的所述确定的固件代码映像。
14.如权利要求10所述的方法,其中,存储在所述可重写非易失性存储器中的所述多个固件代码映像中至少一个包含当前操作的代码,并且,所述方法还包括以下步骤:
确定所述选择的一个更新固件代码映像是否已成功存储到所述可重写非易失性存储器中,以覆盖所述确定的固件代码映像;以及
标记存储在所述可重写非易失性存储器中的所述多个固件代码映像中的至少一个非更新固件代码映像,以防止所述标记的固件代码映像在后来被用作当前操作的代码映像。
15.一种用于更新存储在可重写非易失性存储器中的固件的方法,所述可重写非易失性存储器能够存储多个固件代码映像,其中,存储在所述可重写非易失性存储器中的所述多个固件代码映像中至少一个包含当前操作的代码,包括以下步骤:
确定存储在所述可重写非易失性存储器中的多个固件代码映像中的哪一个是要被更新的;
用更新固件代码映像代替所述确定的要被更新的固件代码映像;
确定所述更新固件代码映像是否已成功存储到所述可重写非易失性存储器中,以覆盖所述确定的固件代码映像;以及
标记存储在所述可重写非易失性存储器中的所述多个固件代码映像中的至少一个非更新的固件代码映像,以防止所述标记的固件代码映像在后来被用作当前操作的所述固件代码映像。
16.一种提供用于更新存储在可重写非易失性存储器中的固件的方法,所述可重写非易失性存储器能够存储多个固件代码映像,包括以下步骤:
提供多个具有与位置相关的代码的更新固件代码映像;
利用所述与位置相关的代码确定可重写非易失性存储器的位置;以及
利用每个所述固件代码映像的与位置相关的代码确定与所述多个更新固件代码映像中其它任何一个固件代码映像所不同的所述可重写非易失性存储器的位置,以使每个所述更新固件代码映像适合于代替存储在非易失性存储器中的不同的固件代码映像。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/242,750 | 2002-09-13 | ||
US10/242,750 US7089547B2 (en) | 2002-09-13 | 2002-09-13 | Firmware updating |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1495610A CN1495610A (zh) | 2004-05-12 |
CN1282078C true CN1282078C (zh) | 2006-10-25 |
Family
ID=31991474
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031566987A Expired - Lifetime CN1282078C (zh) | 2002-09-13 | 2003-09-08 | 用于固件更新的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7089547B2 (zh) |
CN (1) | CN1282078C (zh) |
TW (1) | TWI224748B (zh) |
Families Citing this family (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7984434B1 (en) * | 2003-05-21 | 2011-07-19 | Altera Corporation | Nondestructive patching mechanism |
US6996673B2 (en) * | 2003-08-21 | 2006-02-07 | International Business Machines Corporation | Method and apparatus for managing inventory and door status during firmware update of an automated data storage library |
TWI224729B (en) * | 2003-12-15 | 2004-12-01 | Mediatek Inc | Method for determining program code |
US7546596B2 (en) * | 2004-03-29 | 2009-06-09 | International Business Machines Corporation | Non-disruptive method, system and program product for overlaying a first software module with a second software module |
US20050235076A1 (en) * | 2004-04-14 | 2005-10-20 | Winarski Daniel J | Targeted communications for microcode updates using dedicated LUNs |
CN100345115C (zh) * | 2004-07-23 | 2007-10-24 | 芯邦科技(深圳)有限公司 | 一种具有兼容配置功能的存储控制芯片 |
US7827544B2 (en) * | 2004-11-18 | 2010-11-02 | International Business Machines Corporation | Updating elements in a data storage facility using a predefined state machine, with parallel activation |
US7747573B2 (en) * | 2004-11-18 | 2010-06-29 | International Business Machines Corporation | Updating elements in a data storage facility using a predefined state machine, with serial activation |
US8347285B2 (en) * | 2004-12-16 | 2013-01-01 | Intel Corporation | Embedded agent for self-healing software |
US20060143600A1 (en) * | 2004-12-29 | 2006-06-29 | Andrew Cottrell | Secure firmware update |
US7516315B2 (en) | 2005-03-18 | 2009-04-07 | Research In Motion Ltd. | Electronic device having an alterable configuration and methods of manufacturing and configuring the same |
EP1703383A1 (en) * | 2005-03-18 | 2006-09-20 | Research In Motion Limited | Electronic device having an alterable configuration and methods of manufacturing and configuring the device |
CN100371908C (zh) * | 2005-05-10 | 2008-02-27 | 展讯通信(上海)有限公司 | 一种嵌入式系统中rom代码的修改方法 |
CN100371909C (zh) * | 2005-05-10 | 2008-02-27 | 展讯通信(上海)有限公司 | 嵌入式系统中rom代码的修改方法 |
US7426633B2 (en) * | 2005-05-12 | 2008-09-16 | Hewlett-Packard Development Company, L.P. | System and method for reflashing disk drive firmware |
US20090129593A1 (en) * | 2005-05-30 | 2009-05-21 | Semiconductor Energy Laboratory Co., Ltd. | Semiconductor device and method for operating the same |
US8037474B2 (en) * | 2005-09-27 | 2011-10-11 | Sony Computer Entertainment Inc. | Task manager with stored task definition having pointer to a memory address containing required code data related to the task for execution |
US7522168B2 (en) * | 2005-09-27 | 2009-04-21 | Sony Computer Entertainment Inc. | Cell processor task and data management |
US7734827B2 (en) * | 2005-09-27 | 2010-06-08 | Sony Computer Entertainment, Inc. | Operation of cell processors |
US8141076B2 (en) * | 2005-09-27 | 2012-03-20 | Sony Computer Entertainment Inc. | Cell processor methods and apparatus |
US7506123B1 (en) | 2005-09-27 | 2009-03-17 | Sony Computer Entertainment Inc. | Method and system for performing memory copy function on a cell processor |
US8316220B2 (en) * | 2005-09-27 | 2012-11-20 | Sony Computer Entertainment Inc. | Operating processors over a network |
US7975269B2 (en) * | 2005-09-27 | 2011-07-05 | Sony Computer Entertainment Inc. | Parallel processor methods and apparatus |
US7820010B2 (en) * | 2005-12-15 | 2010-10-26 | Kimberly-Clark Worldwide, Inc. | Treated tissue products having increased strength |
US8595747B2 (en) * | 2005-12-29 | 2013-11-26 | Sony Computer Entertainment Inc. | Efficient task scheduling by assigning fixed registers to scheduler |
US20070220335A1 (en) * | 2006-02-28 | 2007-09-20 | Gollub Marc A | Hardware function isolating during slow mode initial program loading |
US8996784B2 (en) * | 2006-03-09 | 2015-03-31 | Mediatek Inc. | Command controller, prefetch buffer and methods for accessing a serial flash in an embedded system |
US9395968B1 (en) * | 2006-06-30 | 2016-07-19 | American Megatrends, Inc. | Uniquely identifying and validating computer system firmware |
US7797696B1 (en) | 2006-06-30 | 2010-09-14 | American Megatrends, Inc. | Dynamically updating a computer system and firmware image utilizing an option read only memory (OPROM) data structure |
US7590835B1 (en) | 2006-06-30 | 2009-09-15 | American Megatrends, Inc. | Dynamically updating a computer system firmware image |
US8261133B1 (en) * | 2006-08-04 | 2012-09-04 | Oracle America, Inc. | Protection and recovery of non-redundant information stored in a memory |
US8776037B2 (en) * | 2007-01-04 | 2014-07-08 | International Business Machines Corporation | Apparatus and method to update multiple devices disposed in a computing system |
US8429643B2 (en) * | 2007-09-05 | 2013-04-23 | Microsoft Corporation | Secure upgrade of firmware update in constrained memory |
US20090083725A1 (en) * | 2007-09-20 | 2009-03-26 | Zhenghong Wang | Firmware upgrading method for an interface card |
US7895428B2 (en) * | 2007-09-28 | 2011-02-22 | International Business Machines Corporation | Applying firmware updates to servers in a data center |
TWI393939B (zh) * | 2007-10-02 | 2013-04-21 | Top Victory Invest Ltd | 液晶顯示設備及控制該液晶顯示設備運作的方法 |
US8245217B2 (en) * | 2007-10-12 | 2012-08-14 | Microsoft Corporation | Management of software and operating system updates required for the process of creating a virtual machine facsimile of an existing physical or virtual machine |
US20090271780A1 (en) * | 2008-04-24 | 2009-10-29 | Moschip Semiconductor Technology Limited | Automatic complete firmware upgrade |
US20090292941A1 (en) * | 2008-05-22 | 2009-11-26 | Nec Laboratories America, Inc. | Proof-guided error diagnosis (ped) by triangulation of program error causes |
CN101339597B (zh) * | 2008-08-28 | 2011-10-05 | 飞天诚信科技股份有限公司 | 一种升级读写器固件的方法、系统和设备 |
JP5261113B2 (ja) * | 2008-09-29 | 2013-08-14 | キヤノン株式会社 | システム、サーバ、画像形成装置、制御方法及びプログラム |
KR20100070899A (ko) * | 2008-12-18 | 2010-06-28 | 한국전자통신연구원 | 가상 파티션 기법을 이용한 노드 갱신 시스템 및 그 제어방법 |
US8623494B2 (en) | 2008-12-29 | 2014-01-07 | Otter Products, Llc | Protective cushion cover for an electronic device |
EP2382538A4 (en) * | 2009-01-29 | 2012-06-06 | Hewlett Packard Development Co | LOADING A PLURALITY OF APPLICATION BOXES ON A BLADE SERVER |
US9104521B2 (en) * | 2009-03-16 | 2015-08-11 | Tyco Electronics Subsea Communications Llc | System and method for remote device application upgrades |
US8965458B2 (en) | 2009-08-21 | 2015-02-24 | Otter Products, Llc | Protective cushion cover for an electronic device |
US20110099556A1 (en) * | 2009-10-22 | 2011-04-28 | International Business Machines Corporation | Updating system for a microcontroller and associated methods |
US9025317B2 (en) | 2010-03-17 | 2015-05-05 | Otter Products, Llc | Multi-material protective case for sliding/articulating/rotating handheld electronic devices |
CN102339227A (zh) * | 2010-07-28 | 2012-02-01 | 环旭电子股份有限公司 | 多固件嵌入式系统及其固件更新方法 |
US9549598B2 (en) | 2010-10-12 | 2017-01-24 | Treefrog Developments, Inc. | Housing for encasing an electronic device |
CA2814206C (en) | 2010-10-12 | 2018-09-18 | Gary Rayner | Housing for encasing an object |
US8706955B2 (en) * | 2011-07-01 | 2014-04-22 | Apple Inc. | Booting a memory device from a host |
US8707019B2 (en) | 2011-07-02 | 2014-04-22 | Intel Corporation | Component update using management engine |
TWI448966B (zh) * | 2011-07-04 | 2014-08-11 | Realtek Semiconductor Corp | 用於具有內建網路單元之嵌入式系統裝置的網路單元置換方法以及嵌入式系統裝置 |
CN102426529A (zh) * | 2011-10-26 | 2012-04-25 | 中兴通讯股份有限公司 | 固件更新的方法、装置及系统 |
US9037779B2 (en) * | 2011-12-19 | 2015-05-19 | Sandisk Technologies Inc. | Systems and methods for performing variable flash wear leveling |
US9241551B2 (en) | 2012-06-13 | 2016-01-26 | Otter Products, Llc | Protective case with compartment |
US9092300B2 (en) | 2013-04-18 | 2015-07-28 | Ottr Products, Llc | Peripheral device and method for updating firmware thereof |
US9220328B2 (en) | 2013-05-18 | 2015-12-29 | Otter Products, Llc | Waterproof protective case for an electronic device |
WO2015016865A1 (en) * | 2013-07-31 | 2015-02-05 | Hewlett-Packard Development Company, L.P. | Generating a second code from a first code |
US9300078B2 (en) | 2013-08-23 | 2016-03-29 | Otter Products, Llc | Waterproof housing for mobile electronic device and waterproof adapter for accessory device |
CN104699410B (zh) * | 2013-12-04 | 2019-08-27 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
CN105225204B (zh) * | 2014-06-26 | 2018-04-13 | 优视科技有限公司 | 代码定位方法及装置 |
KR102261815B1 (ko) * | 2014-10-30 | 2021-06-07 | 삼성전자주식회사 | 펌웨어 업데이트 시간을 줄일 수 있는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템 |
DE102014116321A1 (de) * | 2014-11-10 | 2016-05-12 | Harting Electric Gmbh & Co. Kg | Update einer Firmware |
US9577697B2 (en) | 2015-05-27 | 2017-02-21 | Otter Products, Llc | Protective case with stylus access feature |
US9857975B2 (en) | 2015-06-26 | 2018-01-02 | International Business Machines Corporation | Non-volatile memory drive partitions within microcontrollers |
US9960521B2 (en) | 2016-02-24 | 2018-05-01 | Otter Products, Llc | Connector for fluidly sealing an aperture of a protective case |
US10860541B2 (en) * | 2016-04-11 | 2020-12-08 | Johnson Controls Fire Protection LP | Fire detection system with distributed file system |
TWI602124B (zh) * | 2017-01-20 | 2017-10-11 | 神雲科技股份有限公司 | 用於風扇轉速控制的基板管理控制器韌體更新方法 |
CN110192179A (zh) * | 2017-01-20 | 2019-08-30 | 惠普发展公司,有限责任合伙企业 | 更新固件 |
WO2018138789A1 (ja) * | 2017-01-25 | 2018-08-02 | 三菱電機株式会社 | 組み込み装置及びファームウェア更新方法 |
JP2018120422A (ja) * | 2017-01-25 | 2018-08-02 | ルネサスエレクトロニクス株式会社 | 車載通信システム、ドメインマスタ、及びファームウェア更新方法 |
US10394542B1 (en) * | 2018-04-16 | 2019-08-27 | Infineon Technologies Ag | Low-power device recovery using a backup firmware image |
CN108595199A (zh) * | 2018-04-19 | 2018-09-28 | 济南浪潮高新科技投资发展有限公司 | 一种一键升级嵌入式系统固件的方法 |
US10963592B2 (en) | 2019-02-05 | 2021-03-30 | Western Digital Technologies, Inc. | Method to unlock a secure digital memory device locked in a secure digital operational mode |
US11232210B2 (en) | 2019-03-26 | 2022-01-25 | Western Digital Technologies, Inc. | Secure firmware booting |
US10997297B1 (en) | 2019-12-06 | 2021-05-04 | Western Digital Technologies, Inc. | Validating firmware for data storage devices |
KR20210079601A (ko) * | 2019-12-20 | 2021-06-30 | 주식회사 실리콘웍스 | 펌웨어를 업데이트하는 터치 시스템 및 방법 |
US20210389937A1 (en) * | 2020-06-12 | 2021-12-16 | Western Digital Technologies, Inc. | Systems And Methods For Fixing Incompatibilities In Field Firmware Updates |
KR20220005852A (ko) * | 2020-07-07 | 2022-01-14 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작방법 |
US20220197746A1 (en) * | 2020-12-18 | 2022-06-23 | Advanced Micro Devices, Inc. | Combination bios with a/b recovery |
EP4075266A1 (de) * | 2021-04-12 | 2022-10-19 | Elektrobit Automotive GmbH | Verfahren, computerprogramm und vorrichtung zum durchführen eines bootvorgangs eines systems |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5878256A (en) * | 1991-10-16 | 1999-03-02 | International Business Machine Corp. | Method and apparatus for providing updated firmware in a data processing system |
US6357021B1 (en) * | 1999-04-14 | 2002-03-12 | Mitsumi Electric Co., Ltd. | Method and apparatus for updating firmware |
US6754828B1 (en) * | 1999-07-13 | 2004-06-22 | Intel Corporation | Algorithm for non-volatile memory updates |
US6708231B1 (en) * | 1999-08-12 | 2004-03-16 | Mitsumi Electric Co., Ltd. | Method and system for performing a peripheral firmware update |
US7055148B2 (en) * | 2000-12-07 | 2006-05-30 | Hewlett-Packard Development Company, L.P. | System and method for updating firmware |
JP2003025688A (ja) * | 2001-07-12 | 2003-01-29 | Fujitsu Ltd | プリンタのファームウエアインストール方法、プリンタ及びプリンタシステム |
US20030074657A1 (en) * | 2001-10-12 | 2003-04-17 | Bramley Richard A. | Limited time evaluation system for firmware |
US20040030877A1 (en) * | 2002-08-06 | 2004-02-12 | Aleksandr Frid | Using system BIOS to update embedded controller firmware |
-
2002
- 2002-09-13 US US10/242,750 patent/US7089547B2/en not_active Expired - Lifetime
-
2003
- 2003-07-25 TW TW092120358A patent/TWI224748B/zh not_active IP Right Cessation
- 2003-09-08 CN CNB031566987A patent/CN1282078C/zh not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
TWI224748B (en) | 2004-12-01 |
CN1495610A (zh) | 2004-05-12 |
TW200404255A (en) | 2004-03-16 |
US20040054883A1 (en) | 2004-03-18 |
US7089547B2 (en) | 2006-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1282078C (zh) | 用于固件更新的方法和装置 | |
CN1097225C (zh) | 对光盘驱动器微控制器和光盘驱动器更新程序代码的方法 | |
EP0559487B1 (en) | Handling data in a system having a processor for controlling access to a plurality of data storage disks | |
CN101821727B (zh) | 管理更新以创建虚拟机复制品 | |
US6990611B2 (en) | Recovering data from arrays of storage devices after certain failures | |
US6816950B2 (en) | Method and apparatus for upgrading disk drive firmware in a RAID storage system | |
US6907602B2 (en) | Method for updating firmware of computer device | |
US8245187B2 (en) | Disk array apparatus | |
US20090187786A1 (en) | Parity data management system apparatus and method | |
WO2007021474A1 (en) | Method and apparatus for managing patchable software systems | |
US7620786B2 (en) | Storage recovery using a delta log | |
CN1464386A (zh) | 嵌入式系统中固件程序在线升级的实现方法 | |
JP2000090011A (ja) | メモリ書き換え方法及びコンピュ―タシステム | |
US5263152A (en) | Process for replacing non-volatile memory in electronic printing systems | |
US7171518B2 (en) | Data storage system recovery from disk failure during system off-line condition | |
CN101739270B (zh) | 电子装置及其系统更新方法 | |
CN1755629A (zh) | 能够更新存储的程序的信息处理装置 | |
JP4248164B2 (ja) | ディスクアレイのエラー回復方法、ディスクアレイ制御装置及びディスクアレイ装置 | |
CN1567199A (zh) | 交叉式固件升级方法 | |
JP2868001B1 (ja) | ディスクアレイ装置制御方法およびディスクアレイ装置 | |
CA2746602C (en) | Partial fault tolerance in an embedded appliance | |
CN114398087A (zh) | 一种提高单片机更新程序后运行稳定性的方法及单片机 | |
EP2490122A2 (en) | Hardware turnkey mobility | |
WO2018150820A1 (ja) | 情報処理装置 | |
US6665830B2 (en) | System and method for building a checksum |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1064466 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1064466 Country of ref document: HK |
|
CX01 | Expiry of patent term |
Granted publication date: 20061025 |
|
CX01 | Expiry of patent term |