CN115803712A - 设备固件描述符 - Google Patents
设备固件描述符 Download PDFInfo
- Publication number
- CN115803712A CN115803712A CN202080102839.XA CN202080102839A CN115803712A CN 115803712 A CN115803712 A CN 115803712A CN 202080102839 A CN202080102839 A CN 202080102839A CN 115803712 A CN115803712 A CN 115803712A
- Authority
- CN
- China
- Prior art keywords
- firmware
- update
- volume
- hash value
- descriptor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 claims description 4
- 238000000034 method Methods 0.000 description 24
- 238000004891 communication Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 7
- 238000013459 approach Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008672 reprogramming Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
描述了基于固件更新来更新电子设备的设备固件的示例。设备固件可以包括包含多个设备固件文件的设备固件卷和对应于设备固件卷的内容的设备固件描述符。固件更新还可以包括包含多个更新的固件文件的固件更新卷和包括固件更新卷的内容的散列值的固件更新描述符。另外,可以基于固件更新卷的散列值与设备固件卷的对应散列值之间的比较来更新设备固件卷。
Description
背景技术
设备固件可以是在电子设备的计算硬件上编程的软件。设备固件使电子设备的计算硬件操作并与其它硬件或软件组件通信。例如,设备固件使得计算硬件能够与电子设备的操作系统交互。设备固件的示例包括但不限于电子设备内的BIOS、UEFI和计算机程序,所述电子设备诸如计算设备、打印机、遥控器、电视(TV)、硬盘驱动器和视频卡。
附图说明
以下详细描述参考附图,其中:
图1图示了根据示例的电子设备的集成电路;
图2图示了根据示例的包括要更新的设备固件的电子设备的框图;
图3图示了根据示例的具有包括要更新的设备固件的电子设备的联网环境;
图4图示了根据示例的设备散列值和固件散列值的示例布局;
图5图示了根据示例的用于更新电子设备的设备固件的示例方法;和
图6图示了根据示例的实现用于更新电子设备的设备固件的非暂时性计算机可读介质的计算环境。
具体实施方式
电子设备的设备固件可以存储在电子设备的非易失性存储器内。设备固件可以为电子设备的特定硬件提供设备级控制,并且可以存储在电子设备的闪速只读存储器(ROM)内,其中,在设备固件要用固件更新进行更新的情况下,闪速ROM能够被擦除和重新编程。另外,闪速存储器(ROM)可以是基于NOR的。设备固件的示例包括但不限于用于计算设备、打印机和其它电子设备的操作系统的BIOS、UEFI和计算机程序。
其内安装了设备固件的存储器可以被分成多个可编程段。在一个示例中,可编程段可以是存储4KB大小数据的扇区或页面。在另一示例中,可编程段可以是存储64KB大小数据的块。如将理解的,一个块可以包括对应于16个相邻扇区的数据。与设备固件相关的文件可以跨存储器的可编程段进行存储。
与其它软件类似,设备固件可能必须不时地进行更新,以供电子设备以最优方式运行。设备固件可以基于固件更新来更新。固件更新可以包括某些更新的文件或数据,基于这些文件或数据,考虑中的设备固件可以最终被更新。设备固件的更新可以涉及擦除和进一步重新编程设备存储器的可编程段中的数据。这样的可编程段存储设备固件文件和数据,然后可以用来自固件更新的更新文件或数据来替换这些文件和数据。对设备存储器的每个可编程段施行这样的擦除和重新编程。以这样的方式,可以更新设备固件。
固件更新可以以磁盘映像的形式。磁盘映像可以是包括磁盘卷或整个数据存储设备的内容和结构的任何计算机可读文件。在这样的情况下,磁盘映像承载(bear)存储在数据存储设备中的数据的类似架构。在示例中,通过逐扇区复制源磁盘储存器中可用的固件更新版本来创建磁盘映像。在这样的情况下,可以将固件段(其可以存储更新的文件或数据)与对应的可编程段进行比较,以检查是否要更新任何给定可编程段。
在某些情况下,可能不是所有的可编程段都要更新,而是仅设备固件的某些可编程段要更新。为此,可以将设备固件的可编程段内存在的内容与固件更新中对应段内的内容进行比较。如果内容匹配,则不改变考虑中的可编程段的内容。如果内容不匹配,即不同,则可以基于固件更新内的对应段对设备固件的可编程段内的内容进行重新编程。可以通过匹配内容的散列值来匹配内容。对电子设备的存储器内的每个设备固件可编程段施行更新是低效且耗时的。此外,即使在更新之前匹配内容,但随着设备固件本身大小的增加,这样的方法也可能花费过多的时间。
描述了用于基于固件更新来更新电子设备的设备固件的方法。可以在电子设备的存储器内获得设备固件。这样的电子设备的示例可以包括但不限于基于计算的设备,诸如膝上型计算机和智能电话。在示例中,要更新的设备固件可以进一步包括设备固件卷和设备固件描述符。设备固件卷进一步包括在其内可以存储设备固件文件的多个可编程段(例如,扇区)。在示例中,固件卷可以对应于要由设备固件实现的某些功能。
在设备固件内提供的设备固件描述符对应于设备固件卷。设备固件描述符可以以数据结构的形式。在与设备固件卷有关的其它信息中,设备固件描述符包括设备固件卷的内容的散列值。在示例中,设备固件描述符形成了基于其可以施行设备固件更新的基础。在设备固件的更新可以发起之前,可以施行完整性检查以评估固件更新是否对应于设备固件。在示例中,可以接收用以更新设备固件的固件更新。
与设备固件类似,固件更新也包括固件更新卷。固件更新卷包括多个更新的固件文件,基于这些文件可以更新设备固件。一旦接收到固件更新,就可以确定固件卷的固件更新描述符。在两者都确定的情况下,然后可以获得并比较相应的固件更新描述符和设备固件描述符的属性信息。如果固件更新描述符和设备固件描述符两者的属性信息匹配,则固件更新可以被验证为要用于更新设备固件的固件更新。在示例中,固件更新描述符的属性信息包括固件更新描述符的散列值。类似地,设备固件描述符的属性信息包括设备固件描述符的散列值。
随着固件更新得以验证,可以获得对应于固件更新卷内的内容的散列值。然后可以将固件更新卷的散列值与对应设备固件卷内的内容的散列值进行比较。在任一种情况下,在相应描述符的数据结构内提供相应散列值。一旦获得,就可以比较固件更新卷和设备固件卷的散列值。基于该比较,可以利用固件更新来更新设备固件。例如,散列值的匹配可以指示固件更新卷和设备固件卷中存在的内容之间没有改变。在这样的实例中,可能不需要更新设备固件卷。然而,卷的散列值的差异将指示可能必须对设备固件卷进行更新。
在示例中,设备固件卷的更新可以基于对底层可编程段(例如,扇区)的评估。在确定要更新设备固件时,可能必须将设备固件卷的可编程段中的每一个与固件更新卷的对应可编程段进行比较。如果可编程段匹配,则可能不需要对这样的可编程段进行更新。在不匹配的情况下,设备固件卷的可编程段的内容可以基于固件更新的对应可编程段的内容进行重新编程。
如可以注意到的,本方法利用固件更新描述符和设备固件描述符用于更新设备固件。这些方法评估设备固件是否要在卷级别上初始更新,并且然后在可编程段级别上随后更新。结果,可以最小化逐扇区比较和评估的需要,由此减少更新设备固件所花费的时间。
图1图示了根据示例的集成电路102的框图。集成电路102可以安装在电子设备的内部电路(图1中未示出)中或者是其一部分。电子设备继而也可以是施行某些特定功能的任何处理器使能设备。这样的电子设备的示例包括但不限于计算设备,诸如移动电话、智能电话、台式计算机、膝上型计算机以及诸如此类,以及外围设备,诸如打印机、扫描仪等等。在不脱离本主题的范围的情况下,也可以在其它类型的电子设备中实现本方法。
集成电路102可以是集成以操作用于施行某些功能的一组电子电路或半导体设备。集成电路102可以进一步包括存储器104,其用以存储设备固件106。设备固件106是一组编码的可执行指令,其使得电子设备能够操作,集成电路102可以安装在该电子设备内。在示例中,设备固件106可以进一步包括设备固件卷108和设备固件描述符110。除了其它事物之外,设备固件卷108进一步包括多个可编程段(以扇区的形式),设备固件文件112可以存储在这些可编程段内。在示例中,设备固件卷108在被执行时可以对应于要由设备固件106实现的某些功能。
设备固件描述符110与设备固件卷108相关联,并且可以实现为数据结构的形式。在与设备固件卷108有关的其它信息中,设备固件描述符110包括设备固件卷110中存在的内容的散列值114。在示例中,可以使用固件更新来更新设备固件106。这样的固件更新还包括对应的固件更新描述符。如将结合其它附图解释的,可以基于设备固件描述符110和固件更新描述符来更新设备固件106。
集成电路102可以安装在各种电子设备中或者可以在各种电子设备中可用。承载设备固件106的集成电路102可以由设备固件106控制。图2中图示了示例电子设备200。图2图示了根据示例的具有电子设备200的可更新设备固件的电子设备200。电子设备200(被称为设备200)可以是施行某些特定功能的任何处理器使能设备。设备200的示例包括但不限于计算设备,诸如移动电话、智能电话、台式计算机、膝上型计算机以及诸如此类,以及外围设备,诸如打印机、扫描仪等等。设备200可以是独立设备或通过通信网络与其它设备(图2中未示出)通信。在不脱离本主题的范围的情况下,也可以在其它类型的设备200中实现本方法。
设备200可以进一步包括用于更新设备200内的设备固件的更新代理202。在示例中,更新代理202可以执行用于更新设备200的设备固件的计算机可读指令。尽管未描绘,但是设备200可以包括其它组件,诸如通过通信网络与外部储存器、显示器、输入/输出接口、操作系统、应用以及诸如此类进行通信的接口,为了简洁起见,没有对其进行描述。
在操作中,更新代理202可以接收固件更新(由框204表示)。固件更新可以用于更新设备200的设备固件。固件更新使得其包括固件更新卷。固件更新卷可以包括多个可编程段,其内存储了多个更新的固件文件。在示例中,除了固件更新卷之外,固件更新可以进一步包括对应于固件更新卷的固件更新描述符。除了其它事物之外,固件更新描述符可以进一步包括可以存储在固件更新卷内的内容的散列值。
一旦接收到固件更新,更新代理202就可以进一步从该固件更新获得固件更新描述符(由框206表示)。如前所述,固件更新描述符包括可以存储在固件更新卷中的内容的散列值。固件更新描述符形成了基于其可以更新设备固件的基础。在示例中,类似于固件更新,设备固件也包括设备固件卷和设备固件描述符。设备固件卷也可以包括其中可以存储多个设备固件文件的多个可编程段(例如,扇区)。设备固件进一步包括可以存储在设备固件卷内的内容的散列值。
更新代理202随后可以将存在于固件更新描述符中的散列值与可能存在于设备固件描述符内的对应散列值进行比较(由框208表示)。基于存在于固件更新描述符和设备固件描述符中的散列值的比较,更新代理202可以使设备固件卷内的可编程段基于固件更新卷的内容(其包括更新的固件文件)来更新。在其中固件更新描述符和设备固件描述符中的散列值相同的实例中,可以指示固件更新卷和设备固件卷的内容之间不存在差异。在这样的情况下,可以不施行设备固件卷的更新。
然而,固件更新描述符和设备固件描述符的散列值之间的差异可以指示固件更新卷和设备固件卷的内容不同,由此指示可能必须施行对设备固件卷的更新。在这样的情况下,更新代理202可以使设备固件卷的内容基于固件更新卷的内容来更新。在示例中,更新代理202可以将设备固件卷的多个可编程段中可用的特定内容的散列值与固件更新卷的对应可编程段中可用的特定内容的散列值进行比较。基于该比较,设备固件卷的可编程段的内容可以基于固件更新来更新。
图3图示了包括电子设备302的联网环境300。电子设备302适于通过通信网络306与固件更新储存库304通信。这样的电子设备302的示例包括但不限于计算设备、打印设备、成像设备或其它电子设备,诸如台式计算机、膝上型计算机、笔记本计算机、平板、扫描仪、机顶盒和智能电视。
返回到本示例,电子设备302进一步包括(一个或多个)接口308、存储器310和更新代理312。(一个或多个)接口308可以包括各种软件和硬件接口,其允许设备302与除了诸如网络实体、web服务器和外部储存库之类的其它设备以外的诸如固件更新储存库304之类的其它设备,以及诸如输入/输出(I/O)设备(为了简洁起见,图中未示出)之类的外围设备交互。存储器310可以包括本领域已知的任何计算机可读介质,包括例如易失性存储器,诸如静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM),和/或非易失性存储,诸如只读存储器(ROM)、可擦可编程ROM(EPROM)、闪速存储器、硬盘、光盘和磁带。
更新代理312用以基于固件更新316来更新设备固件314,如将在随后解释的。更新代理312可以实现为硬件和编程的组合,例如,用以实现更新代理312的各种功能性的可编程指令。在本文中所描述的示例中,可以以若干不同的方式来实现这样的硬件和编程的组合。例如,更新代理312的编程可以是可执行指令。这样的指令可以存储在非暂时性机器可读存储介质上,该存储介质可以直接与电子设备302耦合或者间接耦合(例如,通过联网手段)。在示例中,更新代理312可以包括处理资源,例如,单个处理器或多个处理器的组合,以执行这样的指令。在本示例中,非暂时性机器可读存储介质可以存储当由处理资源执行时实现更新代理312的指令。在其它示例中,可以将更新代理312实现为电子电路。
进一步进行,电子设备302可以进一步包括设备固件314和固件更新316。设备固件314可以包括实现电子设备302的某些功能的文件,诸如编码指令、数据或其组合。另一方面,固件更新316可以包括设备固件314的某些更新的编码指令和数据。固件更新316可以用于改善电子设备302的某些功能性、可用性或性能。在某些实例中,诸如在计算设备的情况下,固件更新316可以用于修复安全问题,或者用于解决电子设备302的任何故障。在示例中,应电子设备302的请求,可以从固件更新储存库304检索固件更新316。在示例中,设备固件314和固件更新316可以保存在电子设备302的存储器310内。例如,设备固件314可以存在于电子设备302的存储器310的各种可编程段中。固件更新316还可以包括某些可编程段(被称为固件段),这些可编程段继而包括更新的编码指令或数据,基于这些指令或数据,可以更新设备固件314。
以分层方式实现设备固件314和固件更新316。在示例中,设备固件314可以进一步包括设备固件卷318和对应的设备固件描述符320。以类似的方式,固件更新316可以进一步包括对应的固件更新卷322和对应的固件更新描述符324。设备固件卷318是电子设备302的存储器310的一部分,其包括多个可编程段,其内可以存储设备固件文件。类似地,固件更新卷322可以包括固件段,其可以存储可以用于更新设备固件314的更新文件。在示例中,设备固件卷318可以对应于可以由设备固件314施行的特定功能。例如,在设备固件314是实现统一可扩展固件接口(UEFI)规范的基本输入/输出系统(BIOS)的上下文中,设备固件卷318可以对应于初始化、控制或操作计算设备的不同阶段。例如,设备固件卷318可以对应于由UEFI实现的初始化阶段的SEC和PEC阶段。可以注意到,BIOS和UEFI仅是某些示例。在不脱离本主题的范围的情况下,其它类型的固件也是可能的。
设备固件描述符320可以是维持与设备固件卷318有关的信息的数据结构。尽管本示例图示了单个设备固件卷318,但是可以存在多个这样的固件卷。在这样的情况下,设备固件314可以包括对应于相应设备固件卷的设备固件描述符,而不脱离本主题的范围。例如,在接收到更新设备固件314的请求时生成设备固件描述符320。设备固件描述符320可以由更新代理312生成并存储在设备固件314内,以在发起设备固件314的更新时被访问。在示例中,设备固件描述符320可以进一步包括与设备固件卷318有关的信息。这样的信息(被称为设备卷信息326)的示例包括但不限于描述符签名、设备固件卷的唯一标识符、用以指示设备固件卷318内的第一个扇区和最后一个扇区的扇区标识符、空扇区指示符、以及列出可以存在于设备固件卷318的可编程段中的内容的散列值的散列值表。
设备固件描述符320可以进一步包括对应于设备固件卷318的某些属性的属性信息328。这样的属性信息328的示例包括但不限于设备固件描述符320的表签名、描述符计数和散列。除了设备卷信息326和属性信息328之外,设备固件描述符320还可以包括设备散列值330。在示例中,设备散列值330可以包括存储在存在于设备固件卷318内的可编程段中的内容的散列值。以类似的方式,固件更新描述符324也可以包括固件卷信息332和固件属性信息334。在示例中,固件更新描述符324可以进一步包括固件散列值336。固件散列值336可以存储固件更新卷322的固件段(其类似于设备固件314的可编程段)中存储的内容的散列值。
基于设备固件描述符320和固件更新描述符324,可以利用固件更新316来更新设备固件314。还结合图4进一步解释更新设备固件314的方式。图4描绘了设备散列值330和固件散列值336的结构。可以注意到,对设备固件314和固件更新316的结构的表示仅是说明性的,并且不应被解释为以任何方式进行限制。
根据图4,设备散列值330可以以数据表的形式。在示例中,设备散列值330进一步包括存储在相应可编程段中的内容的散列值402-1、2、...、N(统称为散列值402)。例如,散列值402-1可以对应于可以存储在第一可编程段中的内容的散列值,而散列值402-2可以对应于可以存储在设备固件卷318内第二可编程段中的内容的散列值。以类似的方式,固件散列值336也可以实现为数据表的形式,其中散列值404-1、2、...、N(统称为散列值404)对应于固件更新卷322内固件段中可以获得的内容的散列值。
通过更新代理312施行设备固件314的更新。在示例中,更新代理312可以最初检查设备固件314是否要被更新。更新代理312的检查可以基于某些预定义的条件。例如,更新代理312可以周期性地检查是否有任何更新可用于设备固件314。为此,更新代理312可以轮询固件更新储存库304以确定是否存在任何更新。
在确定存在更新(例如,固件更新316)时,更新代理312可以检索该更新。在示例中,检索到的固件更新316可以以磁盘映像的形式。如早期所描述的,磁盘映像从源磁盘储存器复制数据的分层结构。在该上下文中,对应于固件更新316的磁盘映像可以包括以与设备固件314类似的架构方式布置的固件相关文件。在固件更新316被标识的情况下,更新代理312可以在可以更新设备固件314之前对设备固件314和固件更新316施行完整性检查。
在示例中,更新代理312可以最初检查设备固件314是否已经经历了改变。为此,更新代理312可以从存储器位置寄存器获得设备固件314的散列值。存储器位置寄存器可以对应于基于硬件的安全模块的寄存器。例如,可以从可信平台模块(TPM)平台配置寄存器(PCR)获得散列值。然后,可以将获得的散列值与存储和维持在电子设备302的非易失性随机存取存储器(NVRAM)中的设备固件的另一先前生成的散列值进行比较。在确定从基于TPM的寄存器获得的散列值不同于从非易失性随机存取存储器获得的散列值时,可以推断出设备固件314可能已经经历了改变。这样的改变可能由于错误或由于设备固件314的损坏而发生。然而,如果从TPM寄存器获得的散列值与从非易失性随机存取存储器获得的散列值的散列值相同,则可以推断出设备固件314是一致的。此后,更新代理312可以进一步继续更新设备固件314。
在示例中,更新代理312可以进一步评估固件更新316是否对应于要更新的设备固件314。如可以理解的,仅与设备固件314相对应且相关的这样的固件更新可以用于更新设备固件314。更新代理312可以评估固件更新316是否对应于设备固件314。在示例中,更新代理312可以获得对应于设备固件314的属性信息328。属性信息328可以包括各种信息,诸如设备固件描述符320的表签名、描述符计数和散列。在其它方面中,表签名可以指示对应于设备固件314的任何描述符是否存在于设备固件卷318中。描述符的计数可以指示可以存在于设备固件314中的卷及对应描述符的数量。以类似的方式,更新代理312也可以获得对应于固件更新316的固件属性信息334。
一旦获得,更新代理312就可以对属性信息328和固件属性信息334进行比较。如可以注意到的,设备固件314的属性信息与固件更新316的属性信息之间的对应性可以指示固件更新316是有效的,并且可以用于更新设备固件314。例如,如果描述符或卷的计数以及描述符的散列一致,则固件更新316可以被推断为设备固件314的有效更新。基于该比较,更新代理312可以查明固件更新316是否是设备固件314的有效固件更新316。例如,如果基于该比较,确定属性信息328和固件属性信息334不匹配,则更新代理312可以中止用于更新设备固件314的本方法,并且替代地通过评估和重新编程设备固件314内的每个可编程段的内容来施行更新。然而,在确定属性信息328和固件属性信息334相同时,固件更新316被评估为有效。此后,更新代理312可以基于设备固件描述符320和固件更新描述符324继续并更新设备固件314,如进一步解释的。
如先前所描述的,设备固件描述符320可以包括设备卷信息326。在示例中,设备卷信息326指定与对应的固件卷(诸如设备固件卷318)有关的某一信息。虽然属性信息328指定与设备固件描述符320有关的信息,但是设备卷信息326提供与它所对应的设备固件卷318有关的信息。在示例中,设备卷信息326可以包括诸如指示对应的设备固件描述符存在的描述符签名的信息。此外,设备卷信息326还可以指定设备固件卷318的唯一标识符、设备固件卷318的对应散列、指示设备固件卷318的第一个和最后一个可编程段的扇区标识符、空扇区的数量和标识符以及散列值表。在示例中,散列值表用以存储设备固件卷318的对应多个可编程段中存储的内容的多个散列值。以类似的方式,固件卷信息332指定与对应的固件更新卷322有关的信息。
基于设备卷信息326和固件卷信息332,更新代理312标识设备固件314的哪些可编程段要被更新。更新代理312可以比较设备卷信息326和固件卷信息332。如果基于该比较,确定与卷有关的信息匹配,则设备固件卷318和固件更新卷322可以被推断为一致,并且因此可以不施行更新。例如,设备固件卷318的散列与固件更新卷320的对应散列之间的匹配指示没有改变,并且因此可以不施行对应设备固件卷318的更新。然而,如果这样的信息不匹配,则可以看出固件更新卷322与设备固件卷318不同,由此指示设备固件卷316要被更新。
基于上面的方法,更新代理312可以基于固件更新316来确定是否要更新设备固件卷318。尽管已经在单个设备固件卷318的上下文中描述了本示例,但是相同的方法也适用于设备固件314包括多个这样的设备固件卷的实例。在这样的情况下,上述示例可以迭代地应用于连续的设备固件卷,直到设备固件314内的所有卷都可以被评估为止。
如上面所描述的,更新代理312可以基于设备卷信息326和固件卷信息332之间的比较来确定要施行更新。在确定要施行更新时,更新代理312可以继续将设备散列值330和对应的固件散列值336进行比较。设备散列值330可以包括存储在设备固件314的可编程段中的内容的散列值。另一方面,固件散列值336可以包括可以存储在固件更新316的固件段中的内容的散列值。在示例中,设备散列值330和固件散列值336可以分别被实现为设备固件描述符320和固件更新描述符324内的散列值表。关于图4,设备散列值330可以进一步包括散列值402-1、2、...、N(统称为散列值402),其中固件散列值336包括散列值404-1、2,...、N(统称为散列值404)。
然后,更新代理312可以继续并将散列值402中的每一个与相应的散列值404进行比较。在示例中,更新代理312可以将设备固件卷318内引用的散列值402-1与固件更新卷322内的散列值404-1进行比较。散列值402-1和散列值404-1之间的匹配可以指示设备固件314的对应可编程段的内容与固件更新316的固件段的内容一致。因此,在这样的情况下,可以不施行更新。在内容不同的情况下,即散列值402-1与散列值404-1不匹配,则更新代理312可以将承载对应于散列值402-1的内容的可编程段分配给更新队列。更新代理312然后可以分别比较和评估设备散列值330和固件散列值336内的剩余散列值402和散列值404。然后可以将对应于未发现匹配的散列值402的设备固件314内的可编程段分配给更新队列。在更新队列内,更新代理312然后可以基于固件更新316的对应固件段对设备固件314的可编程段重新编程。
可以注意到,设备固件卷318内的某些可编程段可以是空的。在这样的情况下,更新代理312可以跳过它们的对应散列值(即散列值402或散列值404)的比较。即使在这样的情况下,有可能跳过对应于空的可编程段的散列值的比较可能导致错误地推断出需要或不需要更新。为了确保所有适当的可编程段被评估,更新代理312可以最初确定设备固件描述符320中提供的空扇区的第一起始扇区号(第一扇区号)。以类似的方式,更新代理312也可以确定可以在固件更新描述符324中提供的空扇区的第二起始扇区号(第二扇区号)。更新代理312然后可以确定第一扇区号和第二扇区号中的较低者。然后,可以从固件的起始扇区号减去较低的索引,比如第一扇区号,以给出上界值。在示例中,更新代理312可以将下界值设置为“0”,并且用如上面计算出的上界,然后可以基于下界和上界,关于散列值404评估散列值402中的每一个。因此,在散列值402和散列值404不匹配的情况下,可以更新设备固件314的可编程段。
在示例中,在确定要更新的设备固件卷318的可编程段时,更新代理312可以进一步确定全局扇区号。全局扇区号可以基于多个参数来确定。例如,更新代理312可以基于要更新的固件卷(即设备固件卷318)的唯一标识符,以及基于来自固件更新卷322的对应固件段的数据来确定全局扇区号。然后,可以将全局扇区号连同要更新设备固件314的可编程段所基于的数据一起放入更新队列中进行更新。
如先前所描述的,更新代理312可以在更新队列中对要更新的设备固件314的可编程段进行排队。在示例中,更新代理312可以确定可能必须要更新的多个可编程段,并且相应地在更新队列中对它们进行排队。在示例中,更新代理312可以将一组可编程段在更新队列中组合成可更新块。一旦确定了可更新块,更新代理312就可以基于固件更新316对该可更新块重新编程。更新代理312可以递归地评估任何其它固件卷,并相应地更新设备固件314。
以上面描述的方式,可以基于分别存在于设备固件314和固件更新316中的设备固件描述符320和固件更新描述符324来更新设备固件314。在示例中,一旦基于固件更新316更新了设备固件314,更新代理312就可以基于固件更新描述符324进一步修改设备固件描述符320。结果,对于随后的更新,更新代理312将利用经修改的设备固件描述符(其将与固件更新描述符324相同)。
图5图示了根据示例的用于基于固件更新来更新电子设备的设备固件的方法500。描述上述方法500的次序不意图被解释为限制,并且所描述方法框中的一些可以以不同的次序组合以实现方法或替代方法。
此外,上述方法500可以以任何合适的硬件、计算机可读指令或其组合来实现。方法500的框可以由设备在存储在非暂时性计算机可读介质上的机器可执行指令中的指令下施行,或者由专用硬件电路、微控制器或逻辑电路施行。例如,方法500可以由电子设备200或电子设备302施行。在本文中,一些示例还意图覆盖非暂时性计算机可读介质(例如,数字数据存储介质),其是计算机可读的并且编码计算机可执行指令,其中所述指令施行上述方法的一些或全部步骤。
参考图5,在框502处,接收用于更新电子设备的设备固件的固件更新。例如,电子设备302内的更新代理312可以最初检查是否要更新设备固件314。更新代理312的检查可以基于某些预定义的条件,或者可以安排在特定的时刻。在示例中,更新代理312可以查询固件更新储存库304(其可以与电子设备302通信)。在另一示例中,固件更新316可以以磁盘映像的形式。
在框504处,可以检查设备固件的完整性。如可以注意到的,在电子设备的使用期间,设备固件可能经历某些改变。在这样的情况下,设备固件可能已经经历了改变是可能的。为此,在基于固件更新来更新设备固件之前,可以检查设备固件的完整性。在示例中,更新代理312可以从基于硬件的安全模块的存储器位置寄存器获得设备固件314的散列值。在示例中,该模块可以基于可信平台模块(TPM),其中存储器寄存器是TPM内的平台配置寄存器(PCR)。然后,可以将获得的散列值与电子设备302的非易失性随机存取存储器(NVRAM)中的设备固件的另一先前生成的散列值进行比较。从基于TPM的寄存器和从非易失性随机存取存储器获得的散列值之间的差异可以指示设备固件314的改变。在这样的情况下,可以不使用固件更新316来更新设备固件314。然而,如果从TPM寄存器获得的散列值与从非易失性随机存取存储器获得的散列值相同,则可以推断出设备固件314是一致的,并且可以继续更新设备固件314。
在框506处,比较与设备固件描述符和固件更新描述符有关的属性信息,以确定固件更新是否对应于要更新的设备固件。例如,更新代理312可以获得对应于设备固件314的属性信息328。以类似的方式,更新代理312也可以获得对应于固件更新316的固件属性信息334。此后,更新代理312可以比较属性信息328和固件属性信息334。基于该比较,更新代理312可以查明固件更新316是否是设备固件314的有效固件更新316。如果基于该比较,确定属性信息328和固件属性信息334不匹配(来自框506的“否”路径),则该方法可以继续进行到框508,在框508中,可以基于固件更新316来评估和重新编程设备固件314的每个可编程段。然而,在确定属性信息328和固件属性信息334相同时(来自框506的“是”路径),固件更新316被评估为有效(框510),并且方法500进一步继续进行。
在框512处,获得设备卷信息和固件卷信息。在示例中,设备卷信息326指定与对应的固件卷(诸如设备固件卷318)有关的某一信息。设备卷信息326可以包括诸如指示对应设备固件描述符的存在的描述符签名、设备固件卷的唯一标识符、设备固件卷的对应散列、指示设备固件卷的第一个和最后一个可编程段的扇区标识符、空扇区的数量和标识符以及散列值表的信息。散列值表用以存储设备固件卷318的对应多个可编程段中存储的内容的多个散列值。以类似的方式,固件卷信息332指定与对应的固件更新卷322有关的信息,诸如唯一标识符、散列值表等。
在框514处,比较设备卷信息和固件卷信息。在示例中,更新代理312可以比较设备卷信息326内的设备固件卷的散列和固件卷信息332内的固件更新卷的散列。如果基于该比较,确定与卷有关的信息匹配(来自框514的“是”路径),则设备固件卷318和固件更新卷322可以被推断为一致,并因此可以不施行更新(框516)。然而,如果这样的信息不匹配(来自框514的“否”路径),则可以推断出固件更新卷322与设备固件卷318不同(框518),由此指示设备固件卷316要被更新,而本方法继续进行到框518。
在框520处,可以获得设备散列值和固件散列值。在示例中,设备散列值330可以包括可以存储在设备固件314的可编程段中的内容的散列值(例如,散列值402)。另一方面,固件散列值336可以包括可以存储在固件更新316的固件段中的内容的散列值(例如,散列值404)。
在框522处,将对应于设备固件的散列值与对应于固件更新的散列值进行比较,以确定它们是否匹配。例如,更新代理312可以将设备固件卷318内引用的散列值402-1与固件更新卷322内的散列值404-1进行比较。散列值402-1和散列值404-1之间的匹配(来自框522的“是”路径)可以指示设备固件314的对应可编程段的内容与固件更新316的固件段的内容一致。因此,在这样的情况下,可以不施行更新(框524)。此后,该方法可以继续返回到520,其中可以获得并进一步评估对应于设备固件卷和固件更新卷中的内容的随后散列值。
然而,如果内容不同,即散列值402-1与散列值404-1不匹配(来自框522的“否”路径),则更新代理312可以将承载对应于散列值402-1的内容的可编程段分配给更新队列(框526)。随后可以重复该过程,其中分别评估和比较设备散列值330和固件散列值336内的剩余散列值402和散列值404,并且相应地,可以在更新队列中对与发现不同的散列值402相对应的可编程段进行排队。
在框528处,基于固件更新来更新在更新队列中排队的设备固件的可编程段。例如,更新代理312然后可以基于固件更新316的对应固件段对在更新队列中排队的设备固件314的可编程段重新编程。在示例中,更新代理312可以将多个可编程段组合成可更新块,该可更新块继而可以基于固件更新316的对应固件块来更新。
图6图示了根据示例的实现用于更新电子设备的设备固件的非暂时性计算机可读介质604的计算环境600。在示例实现方式中,计算环境600可以是例如网络环境300。在示例中,计算环境600包括通过通信链路606通信地耦合到非暂时性计算机可读介质604的(一个或多个)处理器602。(一个或多个)处理器602可以具有用于从非暂时性计算机可读介质604获取和执行计算机可读指令的至少一个处理资源。(一个或多个)处理器602和非暂时性计算机可读介质604可以例如在电子设备200或电子设备302中实现。
非暂时性计算机可读介质604可以是例如内部存储器设备或外部存储器设备。在示例中,通信链路606可以是直接通信链路,诸如任何存储器读/写接口。在另一示例中,通信链路606可以是间接通信链路,诸如网络接口。通信链路606可以是单个网络或多个网络的组合,并且可以使用各种不同的通信协议。
(一个或多个)处理器602和非暂时性计算机可读介质604还可以通信地耦合到固件更新储存库608,该固件更新储存库608提供用于更新电子设备302的设备固件的固件更新。在示例实现方式中,非暂时性计算机可读介质604包括一组计算机可读指令610,(一个或多个)处理器602可以通过通信链路606访问该组指令,并且随后执行该组指令以用于更新电子设备302的设备固件。参考图6,在示例中,非暂时性计算机可读介质604包括指令610,所述指令610使(一个或多个)处理器602获得固件更新,诸如固件更新316,以更新计算设备的存储器内的设备固件,诸如设备固件314。固件更新316可以进一步包括固件更新卷。固件更新卷(诸如固件更新卷322)可以进一步包括多个更新的固件文件。此后,可以进一步执行指令610以获得对应于固件更新卷的固件更新描述符。在示例中,从固件更新316获得固件更新描述符324。在示例中,固件更新描述符324可以指定与固件更新卷(例如,固件更新卷322)有关的信息。在获得固件更新描述符324的情况下,可以进一步执行指令610以获得与固件更新描述符324有关的属性信息。在示例中,固件属性信息334可以指定诸如固件更新描述符324的表签名、描述符计数和散列之类的信息。可以执行指令610以引起固件属性信息334和这样的对应属性信息(例如,与设备固件描述符320有关的属性信息328)之间的比较。如果发现与设备固件描述符320和固件更新描述符324有关的属性信息一致,则固件更新316可以被验证为对更新设备固件314有效。在示例中,指令610可以进一步引起基于固件更新316来更新设备固件314。
尽管已经以特定于结构特征和/或方法的语言描述了本公开的示例,但是应当理解,所附权利要求不一定限于所描述的特定特征或方法。而是,特定特征和方法作为本公开的示例被公开和解释。
Claims (15)
1.一种电子设备的集成电路,所述集成电路包括:
用以存储设备固件的存储器,其中所述设备固件进一步包括:
包括多个设备固件文件的设备固件卷;和
对应于设备固件卷的设备固件描述符,所述设备固件描述符是数据结构,并且进一步包括设备固件卷的内容的散列值。
2.根据权利要求1所述的集成电路,其中所述设备固件描述符进一步包括:
表签名,用以指示设备固件卷的设备固件描述符的存在,其中所述设备固件卷进一步包括多个扇区;
设备固件卷的唯一标识符;
用以指示设备固件卷内的所述多个扇区中的第一个扇区和最后一个扇区的扇区标识符;
空扇区指示符,用以指示所述多个扇区中的空扇区的数量;和
散列值表,用以存储在对应的多个扇区中存储的内容的多个散列值。
3.根据权利要求1所述的集成电路,进一步包括更新代理,其中所述更新代理用以:
接收固件更新以更新设备固件,其中所述固件更新包括具有多个更新的固件文件的固件更新卷;
获得对应于固件更新卷的固件更新描述符,其中所述固件更新描述符包括与固件更新卷有关的信息;
确定固件更新描述符的属性信息;和
基于固件更新描述符的属性信息和设备固件描述符的属性信息之间的比较,验证要用于更新设备固件的固件更新。
4.根据权利要求3所述的集成电路,其中所述更新代理进一步用以:
从固件更新描述符获得固件更新卷内的内容的散列值;
将固件更新卷的散列值与设备固件卷的对应散列值进行比较,其中在对应于设备固件卷的设备固件描述符内指定设备固件卷的散列值;和
基于所述比较,引起设备固件卷的可编程段的更新。
5.根据权利要求1所述的集成电路,其中所述设备固件描述符是在接收到更新设备固件的请求时生成的。
6.一种电子设备,包括:
更新代理,用以:
接收用以更新设备固件的固件更新,所述固件更新进一步包括具有多个更新的固件文件的固件更新卷;
获得对应于固件更新卷的固件更新描述符,所述固件更新描述符包括固件更新卷内的内容的散列值;
将固件更新卷的散列值与包括多个设备固件文件的设备固件卷的对应散列值进行比较,在设备固件描述符内指定设备固件卷的散列值;和
基于所述比较,引起设备固件卷的可编程段的更新。
7.根据权利要求6所述的电子设备,其中所述更新代理,用以引起可编程段的更新,进一步用以:
在确定固件更新卷的散列值不同于设备固件卷的散列数值时,
获得存储在固件更新卷内的第一可编程段中的内容的第一散列值;
获得存储在设备固件卷内的第二可编程段中的内容的第二散列值;和
在确定第一散列值和第二散列值不同时,基于存储在第一可编程段中的内容更新存储在第二可编程段内的内容。
8.根据权利要求7所述的电子设备,其中在确定可编程段的第一散列值和第二散列值相等时,更新代理要跳到固件更新卷内的下一个可编程段,而不更新存储在可编程段中的内容。
9.根据权利要求7所述的电子设备,其中所述第一散列值从固件更新描述符内提供的第一散列值表获得,并且所述第二散列值从设备固件描述符内提供的第二散列值表获得。
10.根据权利要求6所述的电子设备,其中所述更新代理,用以引起可编程段的更新,用以:
确定要更新的设备固件卷的另外可编程段;
将可编程段和另外的可编程段组合成可更新块;和
基于固件更新引起可更新块的更新。
11.根据权利要求6所述的电子设备,其中所述设备固件存储在电子设备的基于NOR的非易失性存储器内。
12.一种非暂时性计算机可读介质,包括可由处理资源执行的指令,用以:
获得固件更新以更新计算设备的存储器内的设备固件,所述固件更新包括具有多个更新的固件文件的固件更新卷;
从固件更新卷获得固件更新描述符,所述固件更新描述符包括与固件更新卷有关的信息;
确定固件更新描述符的属性信息;和
基于固件更新描述符的属性信息与设备固件描述符的属性信息之间的比较,验证要用于更新设备固件的固件更新。
13.根据权利要求12所述的非暂时性计算机可读介质,其中所述指令进一步用以:
在接收到固件更新之前,从对应于基于硬件的安全模块的存储器位置寄存器获得设备固件的先前存储的散列值;和
将所获得的散列值与存储在计算设备的非易失性随机存取存储器中的另一散列值进行比较,以验证计算设备的存储器内的设备固件的完整性。
14.根据权利要求12所述的非暂时性计算机可读介质,其中固件更新描述符的属性信息包括固件更新描述符的表签名、固件更新描述符的计数和固件更新描述符的散列值之一。
15.根据权利要求12所述的非暂时性计算机可读介质,其中所述指令进一步用以基于固件更新卷的散列值与在设备固件描述符内指定的设备固件卷的对应散列值之间的比较,引起设备固件卷的可编程段的更新。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2020/041222 WO2022010470A1 (en) | 2020-07-08 | 2020-07-08 | Device firmware descriptors |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115803712A true CN115803712A (zh) | 2023-03-14 |
Family
ID=79552667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080102839.XA Pending CN115803712A (zh) | 2020-07-08 | 2020-07-08 | 设备固件描述符 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240012633A1 (zh) |
CN (1) | CN115803712A (zh) |
DE (1) | DE112020007393T5 (zh) |
WO (1) | WO2022010470A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12093183B1 (en) * | 2023-03-09 | 2024-09-17 | Dell Products L.P. | Caching techniques using a mapping cache and maintaining cache coherency using physical to logical address mapping |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8555273B1 (en) * | 2003-09-17 | 2013-10-08 | Palm. Inc. | Network for updating electronic devices |
US8165998B2 (en) * | 2004-05-14 | 2012-04-24 | Sap Ag | Fast comparison using multi-level version format |
US20080126779A1 (en) * | 2006-09-19 | 2008-05-29 | Ned Smith | Methods and apparatus to perform secure boot |
KR102139546B1 (ko) * | 2014-03-11 | 2020-07-30 | 삼성전자주식회사 | 펌웨어 검증 기능을 갖는 모바일 시스템 그리고 그것의 펌웨어 업데이트 방법 |
US9298371B1 (en) * | 2014-12-22 | 2016-03-29 | American Megatrends, Inc. | System and method of reducing write cycles and increasing longevity of non-volatile memory in baseboard management controller (BMC) |
JP6609199B2 (ja) * | 2016-03-01 | 2019-11-20 | ルネサスエレクトロニクス株式会社 | 組込み機器 |
US10108412B2 (en) * | 2016-03-30 | 2018-10-23 | Square, Inc. | Blocking and non-blocking firmware update |
TWI705374B (zh) * | 2017-01-23 | 2020-09-21 | 威鋒電子股份有限公司 | 電子裝置及其操作方法 |
TWI647617B (zh) * | 2018-01-23 | 2019-01-11 | 緯創資通股份有限公司 | 電子裝置與其韌體更新方法 |
-
2020
- 2020-07-08 DE DE112020007393.9T patent/DE112020007393T5/de active Pending
- 2020-07-08 US US18/004,444 patent/US20240012633A1/en active Pending
- 2020-07-08 CN CN202080102839.XA patent/CN115803712A/zh active Pending
- 2020-07-08 WO PCT/US2020/041222 patent/WO2022010470A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
DE112020007393T5 (de) | 2023-06-29 |
WO2022010470A1 (en) | 2022-01-13 |
US20240012633A1 (en) | 2024-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8832028B2 (en) | Database cloning | |
US9965270B2 (en) | Updating computer firmware | |
US10936301B2 (en) | System and method for modular patch based firmware update | |
US8549271B1 (en) | Method, system, and computer readable medium for updating and utilizing the contents of a non-essential region of a memory device | |
US11003438B2 (en) | Method and device for incremental upgrade | |
KR101451482B1 (ko) | 데이터 이용가능성의 마운트타임 조정 | |
US20130066832A1 (en) | Application state synchronization | |
CN110162429B (zh) | 系统修复方法、服务器及存储介质 | |
US10664598B1 (en) | Firmware security patch deployment | |
US8578359B2 (en) | Method and apparatus for reliable in-place update | |
US10726133B1 (en) | Securely loading UEFI images at runtime | |
CN113238790B (zh) | 基于sd卡和eeprom的固件程序更新方法及系统 | |
US8788800B2 (en) | OS processing method, system and non-transitory computer readable storage medium thereof | |
US20100287205A1 (en) | Operating system / electronic device and method for storing or reading a file | |
US20100115004A1 (en) | Backup system that stores boot data file of embedded system in different strorage sections and method thereof | |
WO2007026484A1 (ja) | 実行バイナリイメージの作成及び実行を行う装置、方法、プログラム、該プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
CN115803712A (zh) | 设备固件描述符 | |
US20110145600A1 (en) | Nonvolatile memory internal signature generation | |
US20200117722A1 (en) | Efficient file storage and retrieval system, method and apparatus | |
US9507665B2 (en) | Computing device and method for accessing BIOS using middleware controller of the computing device | |
US9026553B2 (en) | Data expanse viewer for database systems | |
US20060230190A1 (en) | Method and apparatus for executing application in system having NAND flash memory | |
TW201516869A (zh) | 電子裝置、通用可延伸韌體介面基本輸入輸出系統之韌體檔案之更新方法、記錄媒體及電腦程式產品 | |
US10572451B2 (en) | File system storage | |
US8060685B2 (en) | Electronic device data access system and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |