用于固件更新的方法和装置的制作方法

文档序号:7943394阅读:253来源:国知局
专利名称:用于固件更新的方法和装置的制作方法
技术领域
本发明涉及存储在可重写非易失性存储器中的固件,特别涉及对存储在能够存储多个固件代码映像的可重写非易失性存储器中的固件进行更新。
背景技术
微处理器,例如,实现专用功能或服务的嵌入式系统的微处理器,使用存储在非易失性存储器中的固件或计算机可读程序代码。调制解调器、电话应答机、汽车控制器、磁盘驱动器、磁带驱动器、数字照相机、医药注入系统、以及存储自动化产品都是可包含嵌入式系统的例子。这些系统中的处理器控制要有一定的灵活性,以在提高产品质量的同时降低成本。
对嵌入式系统的系统固件提供升级的能力是有利的。它简化了对产品提供增强和维修的任务。例如,以新的特点和功能的形式对产品提供增强是很常见的。例如,在引入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一起提供,并可存储在存储器中,例如RAM 103中,可按顺序提供,并且当所希望的映像出现在I/O接口105进行选择,或者可由外部请求及计算机处理器102的响应来提供所希望的固件映像,或在计算机处理器102的请求下提供。
在步骤423中,接收选择的更新固件代码映像,并且处理器102将其写到非易失性存储器中,并覆盖要被更新的固件代码映像。可在图1中的I/O接口105接收选择的更新固件代码映像,并且在写入到非易失性存储器104之前,将其保存在存储器中,例如RAM 103中,或者,在接收的同时直接将其写入到非易失性存储器中。在任何一种情况下,更新固件代码映像在接收时都可被缓存。
在图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的另外的布置。
虽然对本发明的优选实施例进行了详细说明,但是很明显,本领域的技术人员在不脱离由下面的权利要求书所阐明的本发明的范围的情况下可以对那些实施例进行修改和变化。
权利要求
1.一种可与其中嵌入计算机可读程序代码的可编程计算机一起使用的计算机程序产品,用于更新存储在可重写非易失性存储器中的固件,所述可重写非易失性存储器能够存储多个固件代码映像,所述固件代码映像具有与位置相关的代码,包括使计算机处理器确定存储在所述可重写非易失性存储器中的多个固件代码映像中哪个要被更新的计算机可读程序代码;以及使计算机处理器选择适合于代替所述确定要被更新的固件代码映像的、具有与位置相关的代码的、多个更新固件代码映像中的一个的计算机可读程序代码。
2.如权利要求1所述的计算机程序产品,其中使计算机处理器选择所述更新固件代码映像的所述计算机可读程序代码,使计算机处理器在接口上指示所述选择。
3.如权利要求1所述的计算机程序产品,其中,使计算机处理器选择所述更新固件代码映像的所述计算机可读程序代码,使计算机处理器从存储在存储器中的多个更新固件代码映像中选择所述的一个更新固件代码映像。
4.如权利要求3所述的计算机程序产品,还包括使计算机处理器从所述存储器复制所述选择的一个更新固件代码映像,来覆盖所述可重写非易失性存储器中的所述确定的固件代码映像的计算机可读程序代码。
5.如权利要求1所述的计算机程序产品,其中,使计算机处理器选择所述更新固件代码映像的所述计算机可读程序代码,使计算机处理器从在接口提供的多个更新固件代码映像中选择所述的一个更新固件代码映像,来覆盖所述可重写非易失性存储器中的所述确定的固件代码映像。
6.如权利要求1所述的计算机程序产品,其中,存储在所述可重写非易失性存储器中的所述多个固件代码映像中至少有一个包含当前操作的代码,并且,所述计算机程序产品还包括使计算机处理器确定所述选择的一个更新固件代码映像是否已成功存储到所述可重写非易失性存储器中以覆盖所述确定的固件代码映像的计算机可读程序代码;以及使计算机处理器标记存储在所述可重写非易失性存储器中的所述多个固件代码映像中的至少一个非更新的固件代码映像,以防止所述标记的固件代码映像在后来被用作当前的所述操作码的计算机可读程序代码。
7.如权利要求1所述的计算机程序产品,其中所述计算机可读程序代码被嵌入到所述非易失性存储器的引导区中。
8.如权利要求1所述的计算机程序产品,其中,存储在所述可重写非易失性存储器中的所述多个固件代码映像中的至少一个包含操作码,并且,其中,所述计算机可读程序代码被嵌入到当前操作的所述固件代码映像中。
9.如权利要求1所述的计算机程序产品,其中所述计算机可读程序代码被嵌入到所述更新固件代码映像中的至少一个中。
10.一种可与其中嵌入计算机可读程序代码的可编程计算机一起使用的计算机程序产品,用于更新存储在可重写非易失性存储器中的固件,所述可重写非易失性存储器能够存储多个固件代码映像,其中,存储在所述可重写非易失性存储器中的所述多个固件代码映像中的至少一个包含当前操作的代码,包括使计算机处理器确定存储在所述可重写非易失性存储器中的多个固件代码映像中哪一个要被更新的计算机可读程序代码;使计算机处理器用更新固件代码代替所述确定的要被更新的固件代码映像的计算机可读的程序代码;使计算机处理器确定所述更新固件代码映像是否已成功存储到所述可重写非易失性存储器中以覆盖所述确定的固件代码映像的计算机可读程序代码;以及使计算机处理器标记存储在所述可重写非易失性存储器中的所述多个固件代码映像中的至少一个非更新的固件代码映像,以防止所述标记的固件代码映像在后来被用作当前操作的所述固件代码映像。
11.一种可与其中嵌入计算机可读程序代码的可编程计算机一起使用的计算机程序产品,包括使计算机处理器提供多个具有与位置相关的代码的更新固件代码映像的计算机可读程序代码,所述与位置相关的代码指定可重写非易失性存储器的位置,每个所述固件代码映像与位置相关的代码指定与所述多个更新固件代码映像中其它任何一个所述固件代码映像所不同的、所述可重写非易失性存储器的位置,以使每个所述更新固件代码映像适合于代替存储在所述非易失性存储器中的不同的固件代码映像。
12.一种装置,包括计算机处理器;以及存储用于操作所述计算机处理器的计算机可读程序代码的可重写非易失性存储器,所述计算机可读程序代码包含多个固件代码映像,所述固件代码映像具有与位置相关的计算机可读程序代码,并且包含使所述的计算机处理器完成以下任务的计算机可读程序代码确定存储在所述可重写非易性存储器中的多个固件代码映像中哪一个是要被更新的;以及选择适合于代替所述确定的要被更新的固件代码映像的、具有与位置相关的代码的多个更新固件代码映像中的其中一个。
13.如权利要求12所述的装置,还包括一个接口,其中,使所述计算机处理器选择所述更新固件代码映像的所述计算机可读程序代码,使所述计算机处理器在所述接口指示所述选择。
14.如权利要求12所述的装置,还包括一个存储器,并且,其中,使所述计算机处理器选择所述更新固件代码映像的所述的计算机可读程序代码,使所述计算机处理器从存储在所述存储器中的多个更新固件代码映像中选择所述的一个更新固件代码映像。
15.如权利要求14所述的装置,还包括使所述计算机处理器从所述存储器中复制所述选择的一个更新固件代码映像来覆盖所述可重写非易失性存储器中的所述确定的固件代码映像的计算机可读程序代码。
16.如权利要求12所述的装置,其中,所述计算机可读程序代码还包括使所述计算机处理器确定所述选择的一个更新固件代码映像是否已成功存储在所述可重写非易失性存储中来覆盖所述确定的固件代码映像的计算机可读程序代码;以及使所述计算机处理器标记存储在所述可重写非易失性存储器中的所述多个固件代码映像中的至少一个非更新的固件代码映像,以防止所述标记的固件代码映像在后来被用作当前操作的代码映像的计算机可读程序代码。
17.如权利要求12所述的装置,其中,存储在所述可重写非易失性存储器中的所述计算机可读程序代码还包括一个引导区,并且,其中,所述计算机可读程序代码被嵌入到所述非易失性存储器的引导区中。
18.如权利要求12所述的装置,其中,所述用于确定多个固件代码映像中哪一个要被更新、以及用于选择所述多个更新固件代码映像中的其中一个的所述计算机可读程序代码,被嵌入到所述当前操作的固件代码映像中。
19.一种装置,包括计算机处理器;存储用于操作所述计算机处理器的固件计算机可读程序代码的可重写非易失性存储器,所述固件计算机可读程序代码包含多个固件代码映像,所述固件代码映像具有与位置相关的计算机可读程序代码;接口;以及用于临时存储嵌入到在所述接口接收到的至少一个更新固件代码映像中的计算机可读程序代码的存储器,所述计算机可读程序代码使所述计算机处理器完成以下任务确定存储在所述可重写非易失性存储器中的所述多个固件代码映像中哪一个是要被更新的;以及选择适合于代替所述确定的要被更新的固件代码映像的、具有与位置相关的代码的多个更新固件代码映像中的一个。
20.一种装置,包括计算机处理器;以及存储用于操作所述计算机处理器的计算机可读程序代码的可重写非易失性存储器,所述计算机可读程序代码包含多个固件代码映像,并且包含使所述计算机处理器完成以下任务的计算机可读程序代码确定存储在所述可重写非易失性存储器中的所述多个固件代码映像中哪一个是要被更新的;用更新固件代码映像代替所述确定的要被更新的固件代码映像;确定所述更新固件代码映像是否已成功存储到所述可重写非易失性存储器中,以覆盖所述确定的固件代码映像;以及标记存储在所述可重写非易失性存储器中的所述多个固件代码映像中的至少一个非更新的固件代码映像,以防止所述标记的固件代码映像在后来被用作当前操作的代码映像。
21.一种用于更新存储在可重写非易失性存储器中的固件的方法,所述可重写非易失性存储器能够存储多个固件代码映像,所述固件代码映像具有与位置相关的代码,包含以下步骤确定存储在所述可重写非易失性存储器中的多个固件代码映像中的哪一个是要被更新的;以及选择适合于代替所述确定的要被更新的固件代码映像的、具有与位置相关的代码的多个更新固件代码映像中的一个。
22.如权利要求21所述的方法,其中,所述选择所述更新固件代码映像的步骤还包括在接口指示所述选择。
23.如权利要求21所述的方法,其中,所述选择所述更新固件代码映像的步骤包括从存储在存储器中的多个更新固件代码映像中选择所述的一个更新固件代码映像。
24.如权利要求23所述的方法,还包括下面的步骤从所述存储器中复制所述选择的一个更新固件代码映像来覆盖所述可重写非易失性存储器中的所述确定的固件代码映像。
25.如权利要求21所述的方法,其中,存储在所述可重写非易失性存储器中的所述多个固件代码映像中至少一个包含当前操作的代码,并且,所述方法还包括以下步骤确定所述选择的一个更新固件代码映像是否已成功存储到所述可重写非易失性存储器中,以覆盖所述确定的固件代码映像;以及标记存储在所述可重写非易失性存储器中的所述多个固件代码映像中的至少一个非更新固件代码映像,以防止所述标记的固件代码映像在后来被作用当前操作的代码映像。
26.一种用于更新存储在可重写非易失性存储器中的固件的方法,所述可重写非易失性存储器能够存储多个固件代码映像,其中,存储在所述可重写非易失性存储器中的所述多个固件代码映像中至少一个包含当前操作的代码,包括以下步骤确定存储在所述可重写非易失性存储器中的多个固件代码映像中的哪一个是要被更新的;用更新固件代码映像代替所述确定的要被更新的固件代码映像;确定所述更新固件代码映像是否已成功存储到所述可重写非易失性存储器中,以覆盖所述确定的固件代码映像;以及标记存储在所述可重写非易失性存储器中的所述多个固件代码映像中的至少一个非更新的固件代码映像,以防止所述标记的固件代码映像在后来被用作当前操作的所述固件代码映像。
27.一种提供用于更新存储在可重写非易失性存储器中的固件的固件的方法,所述可重写非易失性存储器能够存储多个固件代码映像,包括提供多个具有与位置相关的代码的更新固件代码映像,所述与位置相关的代码指定可重写非易失性存储器的位置,每个所述固件代码映像的与位置相关的代码指定与所述多个更新固件代码映像中其它任何一个固件代码映像所不同的所述可重写非易失性存储器的位置,以使每个所述更新固件代码映像适合于代替存储在非易失性存储器中的不同的固件代码映像。
全文摘要
对存储多个具有与位置相关的代码的固件代码映像的可重写非易失性存储器中存储的固件进行更新。使多个更新代码映像可用,其具有指定可重写非易失性存储器位置的与位置相关的代码,以使每个更新代码映像适合于代替不同的一个存储的代码映像。计算机处理器确定哪一个存储的代码映像是要被更新的;并选择适合于代替要被更新的代码映像的、具有与位置相关的代码的、多个更新代码映像中的一个。
文档编号H04L29/08GK1495610SQ03156698
公开日2004年5月12日 申请日期2003年9月8日 优先权日2002年9月13日
发明者布赖恩·G·古德曼, 罗伯特·A·克莱姆, 蒂莫西·K·皮尔斯, A 克莱姆, K 皮尔斯, 布赖恩 G 古德曼 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1