用于固件更新的方法和装置制造方法及图纸

技术编号:2872179 阅读:294 留言:0更新日期:2012-04-11 18:40
一种可与其中嵌入计算机可读程序代码的可编程计算机一起使用的计算机程序产品,用于更新存储在可重写非易失性存储器中的固件,所述可重写非易失性存储器能够存储多个固件代码映像,所述固件代码映像具有与位置相关的代码,包括:    使计算机处理器确定存储在所述可重写非易失性存储器中的多个固件代码映像中哪个要被更新的计算机可读程序代码;以及    使计算机处理器选择适合于代替所述确定要被更新的固件代码映像的、具有与位置相关的代码的、多个更新固件代码映像中的一个的计算机可读程序代码。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及存储在可重写非易失性存储器中的固件,特别涉及对存储在能够存储多个固件代码映像的可重写非易失性存储器中的固件进行更新。
技术介绍
微处理器,例如,实现专用功能或服务的嵌入式系统的微处理器,使用存储在非易失性存储器中的固件或计算机可读程序代码。调制解调器、电话应答机、汽车控制器、磁盘驱动器、磁带驱动器、数字照相机、医药注入系统、以及存储自动化产品都是可包含嵌入式系统的例子。这些系统中的处理器控制要有一定的灵活性,以在提高产品质量的同时降低成本。 对嵌入式系统的系统固件提供升级的能力是有利的。它简化了对产品提供增强和维修的任务。例如,以新的特点和功能的形式对产品提供增强是很常见的。例如,在引入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,此外,还有许多其它类本文档来自技高网
...

【技术保护点】

【技术特征摘要】
书所阐明的本发明的范围的情况下可以对那些实施例进行修改和变化。权利要求1.一种用于更新存储在可重写非易失性存储器中的固件的装置,所述可重写非易失性存储器能够存储多个固件代码映像,所述固件代码映像具有与位置相关的代码,所述装置包括用于确定存储在所述可重写非易失性存储器中的多个固件代码映像中哪一个是要被更新的装置;和用于选择适合于代替所述确定的要被更新的固件代码映像的、具有与位置相关的代码的多个更新固件代码映像中的其中一个的装置。2.如权利要求1所述的装置,还包括一个接口,其中,选择所述更新固件代码映像的装置在所述接口指示所述选择。3.如权利要求1所述的装置,还包括一个存储器,其中,选择所述更新固件代码映像的装置从存储在所述存储器中的多个更新固件代码映像中选择所述的一个更新固件代码映像。4.如权利要求3所述的装置,还包括从所述存储器中复制所述选择的一个更新固件代码映像来覆盖所述可重写非易失性存储器中的所述确定的固件代码映像的装置。5.如权利要求1所述的装置,还包括确定所述选择的一个更新固件代码映像是否已成功存储在所述可重写非易失性存储器中来覆盖所述确定的固件代码映像的装置;以及标记存储在所述可重写非易失性存储器中的所述多个固件代码映像中的至少一个非更新的固件代码映像,以防止所述标记的固件代码映像在后来被用作当前操作的代码映像的装置。6.如权利要求1所述的装置,其中,所述可重写非易失性存储器中还包括一个引导区。7.如权利要求1所述的装置,其中,所述固件代码映像用于帮助确定多个固件代码映像中哪一个要被更新,以及用于选择所述多个更新固件代码映像中的其中一个。8.如权利要求1所述的装置,进一步包括接口;以及用于临时存储嵌入到在所述接口接收到的至少一个更新固件代码映像中的计算机可读程序代码的存储器。9.一种用于更新存储在可重写非易失性存储器中的固件的装置,所述可重写非易失性存储器能够存储多个固件代码映像,其中,存储在所述可重写非易失性存储器中的所述多个固件代码映像中至少一个包含当前操作的代码,所述装置包括用于确定存储在所述可重写非易失性存储器中的所述多个固件代码映像中哪一个是要被更新的装置;用于用更新固件代码映像代替所述确定的要被更新的固件代码映像的装置;用于确定所述更新固件代码映像是否已成功存储到所述可重写非易失性存储器中,以覆盖所述确定的固件代码映像的装置;以及用于标记存储在所述可重写非易失性存储器中的所述多个固件代码映像中的至少一个非更新的固件代码映像,以防止所述标记的固件代码映像在后来被用作当前操作的代码映像的装置。10.一种用于更新存储在可重写非易...

【专利技术属性】
技术研发人员:布赖恩·G·古德曼罗伯特·A·克莱姆蒂莫西·K·皮尔斯
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1