CN106030525A - 用于硬件平台的固件的***内供应 - Google Patents

用于硬件平台的固件的***内供应 Download PDF

Info

Publication number
CN106030525A
CN106030525A CN201580010756.7A CN201580010756A CN106030525A CN 106030525 A CN106030525 A CN 106030525A CN 201580010756 A CN201580010756 A CN 201580010756A CN 106030525 A CN106030525 A CN 106030525A
Authority
CN
China
Prior art keywords
firmware
hardware platform
interface
controller
storage device
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.)
Granted
Application number
CN201580010756.7A
Other languages
English (en)
Other versions
CN106030525B (zh
Inventor
N.萨朗哈
R.小罗耶
E.H.乌伊
B.麦克法莱恩
M.卡塔里亚
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN106030525A publication Critical patent/CN106030525A/zh
Application granted granted Critical
Publication of CN106030525B publication Critical patent/CN106030525B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)

Abstract

一种硬件平台,包括可以存储***固件以及针对用于硬件平台的主要操作***的代码的非易失性存储设备。硬件平台包括确定硬件平台缺少从存储设备启动主要操作***的功能固件的控制器。控制器从对接硬件平台外部的设备的外部接口访问固件图像,其中外部设备是固件图像源。控制器从外部设备向存储设备供应固件并且从所供应的固件发起启动序列。

Description

用于硬件平台的固件的***内供应
技术领域
本发明的实施例一般涉及***固件供应,并且更特别地涉及当组件在硬件平台中的***内时供应硬件平台固件。
版权声明/许可
本专利文档的公开部分可能包含受到版权保护的资料。因其出现在专利和商标局专利文件或记录中,版权所有人不反对任何人复制该专利文档或专利公开,但否则无论如何都保留所有版权权利。版权声明应用于以下所描述的所有数据,并且在所附的附图中,以及以下所描述的任何软件:版权©2014,英特尔公司,保留所有权利。
背景技术
计算设备具有各种组件一起耦合在其上以提供用于计算设备的功能的硬件平台。通常,计算设备包括处理器、短期存储器(易失性存储器)和较长期存储器(非易失性存储装置)。典型地,硬件平台上的一个或多个组件执行存储在只读存储器(ROM)中的基本初始代码,其允许硬件平台加载控制硬件组件的固件。固件然后从存储装置向易失性存储器中加载代码和数据(诸如主机操作***)以供处理器执行。
固件传统上存储在分离组件(例如闪速存储设备)中,该分离组件添加在组件自身方面的成本,以及附加设计和制造成本以将组件放置在硬件平台上。ROM代码固定在硬件中并且不能取代现代计算平台上的固件的角色。因此,在没有硬件平台上的固件的情况下,平台传统上不能够发起操作。另外,如果固件代码在某种程度上受到损坏(corruption)或攻击的危害,存在对施行硬件平台的恢复的能力的限制。
附图说明
以下描述包括具有作为本发明的实施例的实现方式的示例给出的图示的图的讨论。附图应当被理解为示例,而非限制。如本文所使用的,对一个或多个“实施例”的引用要理解为描述包括在本发明的至少一个实现方式中的特定特征、结构和/或特性。因此,出现在本文中的诸如“在一个实施例中”或“在可替换的实施例中”之类的短语描述本发明的各种实施例和实现方式,并且不一定都是指相同的实施例。然而,它们也不一定是相互排他的。
图1是向非易失性存储设备上供应固件的***的实施例的框图。
图2是具有协调来自计算***外部的源的固件供应的可管理性引擎的计算***的实施例的框图。
图3是其中可管理性引擎与非易失性存储设备对接的***的实施例的框图。
图4是其中固件可以从USB设备供应的***的实施例的框图。
图5是用于访问可以供应***内固件的***中的操作固件的过程的实施例的流程图。
图6A是用于供应用于计算***的初始操作的固件的过程的实施例的流程图。
图6B是用于结合固件更新供应固件的过程的实施例的流程图。
图6C是用于供应用于从错误恢复的固件的过程的实施例的流程图。
图6D是用于结合存储***固件的设备的硬件升级供应固件的过程的实施例的流程图。
图7是用于从可管理性引擎访问下一代存储器设备接口的过程的实施例的流程图。
图8是用于向通过下一代存储器设备接口的交换应用安全性的过程的实施例的流程图。
图9是其中可以实现***内固件供应的计算***的实施例的框图。
图10是其中可以实现***内固件供应的移动设备的实施例的框图。
以下是某些细节和实现方式的描述,包括图的描述,其可以描绘以下描述的实施例中的一些或全部,以及讨论本文所呈现的发明概念的其它潜在实施例或实现方式。
具体实施方式
如本文所描述的,硬件平台包括非易失性存储设备,其可以存储用于初始启动操作的***固件,以及用于针对硬件平台的主要操作***的代码。在正常启动序列中,硬件平台上的控制器从存储设备加载功能固件以发起硬件平台。在某些环境中,存储设备可以不存储功能固件。因此,控制器确定硬件平台缺少功能固件来从存储设备启动主要操作***,并且发起操作以从外部固件源供应固件图像。控制器经由到硬件平台外部的设备的接口从外部源访问固件图像。控制器从外部设备向存储设备供应固件并且从所供应的固件发起启动序列。控制器可以实现安全过程以确保在固件的供应期间以及在已经供应固件之后维持平台的安全性。
硬件平台在存储设备上存储固件,并且因而不需要诸如闪速存储器之类的分离组件以存储固件。在没有硬件平台上的固件的情况下,硬件平台被视为“裸露(bare)金属”。裸露金属硬件平台是指仅包括硬件组件并且不包括可写入固件组件的硬件平台。硬件组件可以包括ROM(只读存储器)设备。硬件组件还可以包括用于存储固件和软件的组件,但是不预加载有可写入固件。因此存储在平台上的任何软件将不可访问以供执行。ROM可以提供控制逻辑(或只读可执行固件)以访问和供应用于硬件平台的固件。硬件平台可能由于以下固件“生命周期”事件中的一个而缺少功能固件:制造之后的初始启动、固件损坏、平台故障、固件更新或存储固件的硬件组件的升级或改变。
当计算设备上电或功率循环或从睡眠或低功率状态转变到操作状态时,具有代码的平台上的电子组件(例如ROM代码和/或固件)还从掉电状态或在低功率状态中转变到处于上电或操作状态。从低功率或无功率转变到被上电通常被称为“唤醒”。当电子组件唤醒时,其发起其ROM代码,如果其具有任何代码的话。对于一般依赖于固件以用于初始操作的组件(例如存储设备、可管理性引擎或其它平台控制器、处理器或***自身),其ROM代码包括使组件对预期存储固件图像的位置寻址的逻辑。当组件找到位置处的有效固件图像时,固件加载并且执行。如本文所描述的,固件的位置是非易失性存储设备。这样的访问在非易失性存储设备包括允许其如同易失性存储器设备那样被访问的接口时或许是可能的。如本文所描述的,当固件图像丢失或无效时,硬件平台控制器从硬件平台外部的源访问固件。平台控制器包括在不存在存储在非易失性存储设备上的有效图像时使得其能够访问外部接口的ROM代码。
下一代非易失性存储技术预期具有相对于当前代非易失性存储技术降低的访问时间。某些下一代非易失性存储设备预期具有与当前代易失性存储器设备相当的访问时间,其一般比当前代非易失性存储设备访问时间快超过一个数量级。因此,下一代非易失性存储设备(称为NGD或简称为下一代设备)可以利用与易失性存储器访问命令一致的接口来访问。在一个实施例中,NGD可以直接安装在硬件平台上(例如作为“芯片组”的部分)而不是经由传统存储接口。NGD可以具有与当前代非易失性存储设备相当的容量,并且经由不同接口直接可访问。因此,NGD可以降低或消除对于存储固件的闪速设备的需要。当前固件大小一般比预期NGD的容量的百分之一小得多。因此,NGD可以存储固件,如果它们具有适当的接口并且如果存在向存储设备供应固件的机制的话。此外,NGD可以存储固件的备份副本以帮助恢复。
在一个实施例中,平台控制器和NGD中的ROM代码可以允许设备跨下一代设备接口(NGI)与彼此通信。传统上,存储固件的平台闪速设备还存储用于使用高速接口的训练信息。将理解的是,高速接口典型地必须“被训练”,因为需要设置特定时序参数以使得能够实现高速信号的交换。在没有闪速设备的情况下,将不存在为接口存储的训练数据。在没有训练数据的情况下,两个设备之间的信令的时序将几乎必然缺少正确地传送和接收命令和数据所必要的同步性。在一个实施例中,平台控制器和NGD中的ROM代码进入低速通信模式或状态以训练接口,并且然后参与高速模式或状态以供应固件。在一个实施例中,接口的训练可以被视为固件的初始供应。这样的训练机制可以用于初始启动以及用于恢复操作。
在一个实施例中,平台控制器利用以下更加详细描述的一个或多个安全性机制管理接口。简而言之,安全性机制可以确保在安全环境之下施行供应。安全性还可以提供抵抗重播攻击的保护。
在一个实施例中,硬件平台是配置为两级存储器(2LM)***的***,或者具有两级存储器的***。在2LM配置中,硬件平台可以包括第一级存储器,其可以被称为近存储器。在一个实施例中,近存储器实现为易失性存储器。硬件平台还可以包括第二级存储器,其可以称为远存储器。在一个实施例中,远存储器实现为非易失性存储器。远存储器比近存储器更大且更慢。近存储器可以提供用于远存储器的低等待时间和高带宽高速缓存。
在一个实施例中,近存储器由近存储器控制器(NMC)通过近存储器接口(NMI)管理,并且远存储器由远存储器控制器(FMC)通过远存储器接口(FMI)管理。在一个实施例中,FMC将远存储器作为主存储器向在硬件平台上执行的主机操作***报告。在这样的实现方式中,近存储器可以操作为远存储器的透明高速缓存,并且主机操作***不需要分离地配置成识别或寻址近存储器。在一个实施例中,非易失性存储装置实现为下一代存储器,并且经由下一代接口(NGI)与处理器对接。在一个实施例中,下一代接口(NGI)是远存储器接口。
NGD可以是或包括以下存储器技术中的任一个。在一个实施例中,NGD是三维交叉点存储器设备。不同于基于块的基于闪速存储器的设备,三维交叉点存储器设备是字节可寻址的并且可以用于取代DRAM(动态随机存取存储器)作为用于***的主存储器。NGD可以包括其它字节可寻址存储器技术,包括但不限于相变存储器(PCM)、三维交叉点存储器、电阻存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、合并忆阻器技术的磁阻随机存取存储器(MRAM)、自旋转移矩(STT)-MRAM或其它字节可寻址存储器设备,或组合。这样的非易失性存储器的使用可以使得存储器能够被用作***主存储器,以及允许存储固件图像以用于***启动,并且存储主机OS、应用和/或其它程序。
关于2LM***、近存储器、远存储器和FMI的细节可以在2010年12月22日提交的题为“Two-Level System Main Memory”并且转让给与本专利申请相同的公司实体的美国专利申请号12/976,545中找到。2LM***的实施例可以实现在本文所描述的***的任何实施例中,其中这样的2LM***和作为NGI的FMI可以依照在该专利申请中描述的内容来理解。
图1是向非易失性存储设备上供应固件的***的实施例的框图。***100包括硬件平台102和耦合到硬件平台102的外部固件源150。硬件平台102表示其上处理器、非易失性存储设备和外部硬件接口耦合在一起以用于任何类型的计算设备或计算***的硬件平台。硬件平台102可以合并到各种计算机***、手持设备、商用电子设备、消费电子设备或其它设备中的任一个中。
在一个实施例中,硬件平台102包括片上***(SOC)设计,其包括处理资源。将理解的是,SOC还可以作为分离组件实现在硬件平台上。SOC 110表示主要处理器设备或主机处理器设备,诸如中央处理单元(CPU),以用于硬件平台102。SOC 110还可以理解为包括平台控制器设备。在一个实施例中,处理器设备是平台控制器。在一个实施例中,SOC 110包括处理器设备和分离的控制器设备二者。将理解的是,控制器设备可以实现为处理器设备,其可以特定用于控制平台,而不是通用处理器。主机处理器执行操作或执行主机操作***以控制硬件平台102合并在其中的***。
SOC 110包括ROM 112,其表示发起硬件平台102合并在其中的计算***的启动或初始化的SOC 110上的硬编码逻辑。ROM 112包括当SOC通电时发起SOC 110上的一个或多个设备的操作的逻辑。将理解的是,除SOC 110通电之外,ROM代码或ROM 112的逻辑还可以在SOC 110从低功率或睡眠状态转变到正常操作状态时执行。ROM 112包括足以访问用于SOC 110的固件的逻辑。在***100中,用于SOC 110的固件是存储在非易失性(NV)存储装置120中的固件122。存储装置120是非易失性的,因为即便中断到存储设备的功率其内容也保持确定。将非易失性存储装置120与易失性存储器130对照。存储器130被视为易失性的,因为如果在超过短时间段(在几分之一秒的量级上)内中断功率则其内容变得不确定。
在传统***中,固件存储在闪速设备中并且主机操作***存储在分离的存储设备中,存储装置120存储***固件122和主机操作***(OS)124二者。因此,存储装置120是用于硬件平台102的主要非易失性存储设备。固件122提供初始软件和逻辑以加载主机OS 124。固件122还可以提供用于硬件平台102的操作(诸如互连平台的组件的基本操作)的其它逻辑。固件122的一个或多个部分可以与主机OS 124并行并且在其背景中操作。
易失性存储器130可以存储代码的易失性、工作图像以及供硬件平台102执行的工作数据。更特别地,存储器130存储主机OS 124的图像以及存储在存储装置120中的应用的图像以供主机处理器执行。存储器130典型地限于是存储装置120的存储容量的一小部分。在一个实施例中,存储装置130是下一代存储设备(NGD),其具有与存储器130相当的访问时间。不管具有类似的访问时间和多得多的存储,硬件平台102可以包括存储器130和NGD存储装置120二者。在一个实施例中,存储装置120可以解码存储器访问命令。因此,SOC 110可以包括到存储装置120的接口,其允许将传统存储访问命令以及存储器访问命令二者传递到存储装置120。
外部接口140表示使得硬件平台102能够连接到外部设备的硬件平台102上的硬件接口。在一个实施例中,外部接口140是硬件平台102上的通用串行总线(USB)端口。然而,将理解的是,外部接口140可以是另一类型的硬件接口,诸如以太网端口或其它网络接口、无线接口设备、另一设备到设备总线(诸如火线或其它互连)或专用外部互连。在一个实施例中,SOC 110包括外部接口140。因此,外部接口140可以是直接构建到主机处理器***中的硬件电路,其允许平台控制器直接访问接口。硬件接口140可以是除到相同端口连接器的其它硬件接口之外的到端口连接器的接口。固件源150表示经由硬件接口140与平台对接的硬件平台102外部的设备。因此,固件源150包括使得其能够经由外部接口140访问的兼容连接器接口。
在正常操作中,固件122存在(存储)于存储装置130中,并且是有效的。然而,若干生命周期事件中的任一个可以呈现其中固件122丢失或损坏的情形。另一生命周期事件发生在固件122有效并且起作用但是应当进行更新时。这样的事件可以包括硬件平台102的制造、固件122的现场更新(例如BIOS(基本输入/输出***)或其它固件的新版本)、现场升级(例如从160GB存储设备升级到320GB存储设备)或其中固件122被不合法地修改(例如攻击)或固件122的部分由于盘错误而丢失的刷新或损坏事件。因此,在这些情形中的任一个中,固件122不被视为起作用的固件,因为其丢失或损坏,或者其不能被执行,因为其被更新的版本取代。
在一个实施例中,当ROM 112遇到从存储装置120访问有效固件图像的错误时,ROM 112包括逻辑以使其经由外部接口140访问固件源150。硬件平台控制器然后可以从固件源150向存储设备120上供应固件。以下提供关于从外部源供应固件的更多细节。一旦固件122被供应到存储装置120,硬件平台102可以加载固件并且从所供应的固件发起启动序列。
在一个实施例中,***100配置为两级存储器(2LM)***,或具有两级存储器的***。在2LM配置中,***100可以包括作为远存储器的非易失性存储装置120和作为近存储器的易失性存储器130。因此,在一个实施例中,易失性存储器130可以用作用于非易失性存储装置120的高速缓存。在一个实施例中,远存储器由下一代接口控制,其可以是将非易失性存储装置120连接到SOC 110的远存储器接口(FMI)。
图2是具有协调从计算***外部的源的固件供应的可管理性引擎的计算***的实施例的框图。***200表示硬件平台,并且可以是图1的硬件平台102的一个示例。并不是***200的每一个元件都将存在于每一个实现方式中。在一个实施例中,***200包括SOC 210,其包括处理器220、解码器212、存储器控制器214和CSME 230。在一个实施例中,***200包括作为没有配置在片上***中的分离组件的SOC 210的元件。在一个实施例中,***200包括SOC 210中所示的等效组件结构。
处理器220是用于***200的主机处理器或主机处理单元。处理器可以是单核或多核设备。处理器220典型地执行来自高速缓存设备(未具体示出)和/或来自存储器260的指令。存储器260表示易失性存储器设备,并且经由存储器控制器214可访问。存储器控制器214表示基于针对如由解码器212解码的数据的请求生成存储器访问命令的逻辑。解码器212提供由处理器220执行的指令的解码,其影响***200中存储的数据。在一个实施例中,存储器260在指令涉及未高速缓存在存储器260中的数据或代码时经由直接访问路径(未具体示出)访问非易失性存储装置240。
CSME 230表示可管理性引擎。可管理性引擎是一种类型的硬件平台控制器。在一个实施例中,CSME 230可以是整合安全性和可管理性引擎,其包括施行涉及硬件平台***200上的安全性以及对硬件平台上的资源的访问的管理二者的操作的逻辑。出于***200的目的,CSME 230确定硬件平台是否包括非易失性存储设备240上的有效或起作用的固件。在一个实施例中,CSME 230访问外部接口250以获取固件,如果硬件平台缺少起作用的固件的话。在一个实施例中,存储装置240存储主要固件图像和一个或多个备份固件图像。因此,CSME 230可以首先确定存储装置240是否包括起作用或操作的主要固件图像。如果不存在起作用的主要固件图像,CSME 230可以请求存储装置240获取备份或次级固件图像。如果不存在起作用的固件图像,CSME 230访问外部接口250以获取固件图像。在一个实施例中,SOC 210不包括CSME 230,并且将包括用以访问固件的ROM代码和/或控制器设备,其可以施行关于访问和供应固件描述的操作。
存储装置240可以包括用于使用固件的硬件平台上的任何组件的固件。例如,在一个实施例中,存储装置240存储用于CSME 230、存储设备240和处理器220的一个或多个固件图像(例如主要的和一个或多个备份每一个)。如所图示的,CMSE固件242表示用于CSME 230的固件。当CSME 230开始操作时,其执行ROM代码232。ROM代码232将尝试访问CMSE固件242。***固件244表示用于处理器220的固件,其还可以是用于整个***的固件。例如,***固件244可以表示用于使主机处理器在准备中执行以加载主机OS的BIOS。存储固件246表示要由存储设备自身(未明确示出)中的控制器执行的固件。如果存储装置240未能找到其自身的固件,其ROM代码(未具体示出)可以生成到CSME 230(平台控制器)的消息,以指示其不能访问起作用的固件图像。CSME 230然后可以访问外部接口250以获取固件图像。
在一个实施例中,CSME 230发起***固件244的执行,并且将因而确定是否存在起作用的固件图像。在一个实施例中,处理器220包括ROM并且可以发起其自身的固件,在该情况下其可以向CSME 230指示其缺少固件。CSME 230然后可以访问外部接口250以获取固件图像。因此,CSME 230首先访问存储装置240以得到固件图像,并且如果存储装置240不具有有效固件图像,CSME 230访问外部接口以获取固件图像。相比之下,在传统***中,平台控制器将访问闪速设备以访问固件。因此,将理解的是,CMSE 230或处理器220或SOC 210的另一控制器将尝试访问用于***和/或控制器设备自身的固件。在一个实施例中,CMSE 230或处理器220或SOC 210的另一控制器将尝试访问用于处理器220的固件,如果这样的固件从***固件分离的话。
外部接口250表示CSME 230可以经由ROM 232直接访问的任何一个或多个硬件接口。典型地,ROM 232将配置成访问单个外部接口以用于供应固件。在一个实施例中,ROM 232可以配置成访问多个不同的硬件接口以获取要供应的固件图像。在ROM 232配置成访问多个不同接口的情况下,将理解的是,可以存在优选的配置次序,其中首先尝试一个接口,并且如果第一接口不包括有效的固件图像则尝试下一接口。外部接口250的示例可以包括但不限于USB 252、网络接口254和其它接口256。网络接口254可以包括广域网接口、局域网接口、有线接口、无线接口或接口的某种组合。其它接口256可以表示未具体标识的接口,包括配置成提供用于固件图像的外部源的专用接口。
图3是其中可管理性引擎与非易失性存储设备对接的***的实施例的框图。***300表示硬件平台的元件,并且可以是图1的***100或图的***200的元件的示例。更特别地,***300包括CSME 310,其表示用于计算设备的可管理性引擎或平台控制器。将理解的是,CSME 310可以实现为一个或多个分立元件,并且可以比***300中图示的更复杂或更不复杂。在一个实施例中,CSME 310作为片上***和/或多芯片封装而与主机处理器(未示出)集成。
在一个实施例中,CSME 310是或包括处理器设备或控制器设备。CSME 310包括ROM代码(在***300中未具体示出),其每当CSME 310上电或从低功率状态唤醒时发起操作。用于平台控制器的ROM代码传统上非常基本,并且允许控制器访问其固件。用于CSME 310的ROM代码包括与传统提供的相同的基本功能,并且还可以确定在平台上是否存在不起作用的固件,并且从外部源供应固件。
在一个实施例中,CSME 310包括外部接口驱动器330。驱动器330可以是用于直接提供在CSME 310上的硬件接口的控制器。因此,CSME 310可以直接控制外部接口以用于供应固件。在可替换的实施例中,CSME 310经由具有其ROM代码中的逻辑的CSME 310片外的硬件控制器访问外部接口。外部接口驱动器330可以是例如驱动到USB端口的硬件。可替换地,驱动器330可以驱动不同类型的总线或接口,如以上所描述的。除了其它驱动器,驱动器330可以在用于相同接口的硬件平台内。在一个实施例中,CSME 310仅在其确定硬件平台缺少起作用的固件时访问驱动器330。否则,CSME 310可以将驱动器330保持在高阻抗或其它非活跃状态中以防止加载接口。
在一个实施例中,CSME 310从主机处理器接收传统上将发送至闪速设备的请求。例如,传统上将在启动流期间发送至闪速设备以用于读取、写入和/或擦除闪存的命令可以经由CSME 310发送至非易失性(NV)存储设备340。CSME 310通过非易失性存储器接口320与存储设备340对接。在其中存储设备340是下一代设备(NGD)的实施例中,接口320还可以被称为下一代设备接口(NGI)。存储设备340包括接口350,其对应于存储器接口340,并且提供配对接口。接口320出于启动的目的而可以向存储设备340发送的命令的示例可以包括:读取、写入、擦除、读取SFDP、读取JEDEC ID、读取状态和写入状态。
在一个实施例中,CSME 310的接口320和存储设备340的接口350二者支持低速操作和高速操作。低速322和低速352表示低速操作或低速模式,而高速324和高速354表示高速操作或高速模式。将理解的是,“低速”和“高速”是相对的术语。一般如本文所使用的,高速指示要求训练以找到设置从而能够满足通信容限的接口之上的通信速度。低速指示其中容限足够宽使得一般不要求训练以找到正确的接口设置的通信速度。因此,低速操作可以在没有训练的情况下参与,而高速操作要求通过训练找到的设置。训练是指在接口之上交换已知消息和针对正确传送和接收的测试。训练往往是迭代的以测试多个不同设置并且选择提供最佳结果(例如一时间段或数据量上的最少错误或错误的最低百分数)的(多个)设置。在一个实施例中,低速模式322和高速模式324使用相同的硬件接口机制(例如信道、引脚、寄存器、驱动器和其它资源),但是在如何操作接口方面不同(例如使用高速时钟、使用用于读取/解码的不同设置)。
在一个实施例中,接口配置数据在默认低速模式中接收,该接口配置数据然后允许接口320和350偏好使用高速通信或高速模式324,其使得能够实现更大的吞吐量。在一个实施例中,CMSE 310确定其是否具有存储以使得能够实现高速模式324的训练数据或设置。在一个实施例中,训练数据包括时序参数或用于接口的时序设置。时序参数可以指示如何同步采样信号以确保通过接收器的数据采样与通过传送器的数据传送时序对准。
如果CSME 310确定接口320未被训练,CSME 310参与低速模式322以用于与存储设备340的初始通信。在一个实施例中,CSME 310尝试高速模式324,但是发现存储设备340不支持高速模式354。因此,CSME 310可以参与低速模式322以经由低速模式354与接口350通信,直到可以训练高速通信。在一个实施例中,在经由低速模式322, 352向存储设备340发送启动命令或信息之前或取代于它,CMSE 310通过接口320参与对接口350的训练。在利用针对***300的设置训练接口之后,CSME 310可以参与或恢复高速模式324, 354以继续启动操作。在一个实施例中,CSME 310仅经由高速模式324, 354从外部固件源向存储设备340供应固件。
在一个实施例中,CSME 310和存储设备340提供用于通过接口320和350的交换的安全性。将理解的是,为了施行通过接口的安全性,耦合到接口的两个设备包括支持实现的安全性的组件。因此,CMSE 310可以包括安全性引擎312、安全性密钥314和随机数生成器316,而存储设备340可以包括对应的安全性引擎342、安全性密钥344和随机数生成器346。出于简化的目的,安全性操作的讨论参照CSME 310及其安全性组件和接口,并且可以理解成适用于存储设备340及其安全性组件和接口。
安全性引擎312表示使得CSME 310能够应用用于经由接口320的通信的安全性的逻辑。在一个实施例中,安全性引擎312实现在用于CSME 310的ROM代码中。在一个实施例中,安全性引擎312包括从用于CSME 310的固件执行的元件,并且因此直到CSME 310执行有效固件之前不被应用。例如,CSME 310可以在加载固件之前应用用于通过接口320的通信的基于指数的安全性过程,并且然后可以在加载固件之后应用用于通过接口320的通信的共享密钥安全性过程。在一个实施例中,ROM代码可以配置成从基于指数的安全性过程生成共享密钥。
如本领域技术人员将理解的,常见的基于指数的安全性过程是Diffie-Helman实现方式,其中CSME 310和存储设备340二者包括(或者在ROM中,或者融合在固定位置中)基础值(被称为“G”)。分离设备然后利用随机数生成器(316和346)生成分离的指数,该指数被称为“a”和“b”。CSME 310然后可以生成通过G^a签名的请求,并且存储设备340可以生成通过G^b签名的响应。设备然后可以执行握手过程,其在接口上建立会话加密密钥。在建立会话加密密钥之后,CSME 310和存储设备340然后可以在使用会话加密密钥在加密的交换中通过接***换共享密钥或根密钥以交换经加密的根密钥。假定生成共享安全性密钥314, 344的过程是公知的。安全性引擎312和342施行生成密钥(非对称和/或对称的二者)的操作和其它安全***换操作。
将理解的是,共享密钥或根密钥可以通过占有攻击(其中攻击者能够访问硬件和接口)来获取。这样的攻击可以称为“重放攻击”,其中攻击者尝试重放之前通过接口传输的交换以尝试绕过安全性。在一个实施例中,CSME 310可以通过监视共享安全性密钥314的生成和使用来保护***300免受重放攻击。在一个实施例中,CSME 310包括片上熔丝318以监视密钥使用。例如,安全性引擎312可以烧断或设置用于所生成的每一个共享密钥的熔丝或熔丝图案。因此,CSME 310经由安全性引擎312可以保证一次仅一个密钥有效。如果攻击者尝试利用之前的密钥对消息进行签名,CSME 310可以检测到其不是当前有效密钥,并且防止攻击。典型地,使用每个密钥单个熔丝将是足够的,但是本领域技术人员将理解的是,可以理解更复杂的熔丝图案。
本领域技术人员将认识到作为已知共享加密密钥安全性过程的HMAC(散列消息验证代码)。利用HMAC,发送设备利用共享密钥对消息进行签名并且传输经签名/验证的消息。接收设备接收经签名的消息并且利用共享密钥解码它。如果消息没有利用共享密钥正确地验证,接收设备不施行所请求的操作或命令。如果消息验证,接收设备执行所请求的操作或命令。在一个实施例中,***300采用安全散列算法(SHA),诸如HMAC-SHA-256,作为安全性/签名协议。因此,根密钥(存储在安全性密钥314中)可以跨接口320, 350保密。
在一个实施例中,安全性引擎312支持经验证的命令以供应和对共享密钥保密。例如,如以上所提到的,可以参与基于指数的安全性以生成共享密钥。经验证的命令可以包括但不一定限于经验证的根密钥写入,以及经验证的共享密钥更新。在一个实施例中,CSME 310维持重放保护的单调计数器(RPMC)(例如经由安全性引擎312)。在其中包括RPMC的实施例中,附加命令可以包括经验证的计数器读取,以及经验证的计数器递增。
存储设备340包括固件370。固件370包括用于硬件平台的硬件组件(诸如CSME 310、存储设备340和主机处理器(未具体示出))的固件。CSME 310从硬件平台外部的源经由外部接口驱动器330向存储设备340上供应固件370。固件图像372-0到372-(N-1)包括用于每一个设备的主要固件图像,并且可以包括用于任何一个或多个组件的零或更多备份主要图像。不一定所有组件都具有存储在存储设备340上的相同数目的固件图像。常见实现方式将是存储用于硬件平台的每一个硬件组件的主要和次级固件图像。
图4是其中可以从USB设备供应固件的***的实施例的框图。***400表示硬件平台的元件,并且可以是图的***200或图1的***100的元件的示例。***400的硬件平台包括由CSME 410表示的硬件平台控制器、由CPU 430表示的主机处理器、由NG(下一代)存储器460表示的非易失性存储设备以及由USB接口480表示的外部硬件接口。USB接口480连接到USB设备490,其表示外部固件源。在一个实施例中,硬件平台包括将命令从CPU 430对接到NG存储器460的控制器元件,所述命令传统上被路由至存储固件的闪速设备。控制器元件可以包括通过SPI到NGI 440表示的命令转换器和NGI控制器450。
CSME 410包括当CSME 410发起操作时开始操作的ROM代码412。CSME 410在“生命周期事件”时发起操作,该事件可以包括***400的制造,以及从损坏恢复、涉及固件更新的***400的初始化、涉及NG存储器460的升级的***400的初始化或平台控制器的其它功率循环事件。当CSME ROM代码412发起时,其寻找与CSME 410相关联的固件。在一个实施例中,CSME 410可以配置成直接访问下一代存储器设备。在一个实施例中,如所示,硬件平台可以利用将允许传统路径被重新路由至NG存储器460的元件进行修改。
在一个实施例中,CSME 410包括控制硬件平台上的SPI(串行***接口)通信的控制器,其被示出为PCH(***控制器中枢)SPI控制器420。将理解的是,SPI是使得能够实现共享硬件平台的设备或芯片的互连的主-从接口协议。从设备典型地是主机控制器或***400的主机SOC的“***”设备。因此,CSME 410可以发起对用于固件的CSME ROM代码412中所指示的位置的访问。CSME 410最初不具有固件,并且在某些生命周期事件中,NG存储器460也将不具有所存储的有效固件。
在一个实施例中,SPI控制器420,取代于访问将存储固件的外部SPI闪存,经由SPI到NGI(下一代接口)440将访问操作解码成用于NG存储器460的指令。NGI表示到下一代存储器设备的接口,下一代存储器设备预期不同于传统存储设备,以及不同于传统SPI设备,或连接到SPI控制器420的设备。SPI到NGI 440将经由SPI协议发送的命令和请求转换成NG存储器460所理解的命令和请求。NGI控制器450表示控制硬件接口的硬件和/或逻辑(例如用于传输的驱动引脚和用于接收的采样引脚)。NGI控制器462表示完成从CSME 410的接口的NG存储器460内的控制器或控制逻辑。
NG存储器460包括ROM代码464,其表示存储器设备在上电或功率循环(无论是通过断开功率源和设备的硬功率循环,还是通过将设备置于低功率、睡眠或挂起状态的软功率循环)时将执行的代码。NG ROM代码464寻找本地存储在存储设备上的固件图像。NG ROM代码464包括对参与和CSME 410的通信以供应固件468必要的逻辑。固件468存储在NG存储器460的下一代存储技术466中。将理解的是,NG存储器460还存储主机操作***和用于***400的应用。固件468可以在NG存储器460中在***内供应。主机操作***和应用还可以在***内供应到NG存储器460。
在一个实施例中,CSME 410确定其是否存储训练数据(例如时序参数或其它参数或设置)以供NGI控制器450在向NG存储器460发送请求时使用。如果不存在训练数据,CSME 410可以使用低速接口模式以向NG存储器406发送固件请求。如果存在可用的训练数据,CSME 410可以使用高速接口模式以发送请求。在一个实施例中,当NG存储器460没有存储由CSME 410请求的起作用或有效的固件图像时,NG存储器460拒绝请求。CSME 410(经由CSME ROM代码412)从NG存储器460接收拒绝并且然后从外部源请求固件。因此,CSME ROM代码412可以配置成首先检查NG存储器460上的固件,并且然后如果没有找到有效的固件则针对固件检查外部接口。在一个实施例中,CSME 410和NG存储器460可以在低速模式中训练接口以使得能够使用高速模式来供应固件。
为了访问外部接口,CSME ROM代码412可以访问PCH USB控制器470或另一接口控制器(未示出)以访问适当的硬件接口。***400中的硬件接口是USB接口480,其连接到USB设备490,其进而存储固件图像492。在一个实施例中,CSME 410经由主-从配置(类似于SPI协议)访问USB设备490,其中USB设备490是主机并且CSME 410是从机。在这样的配置中,CSME 410可以充当用于USB设备490的存储接收器,其中CSME 410向NG存储器460传递固件图像。
因此,CSME ROM代码412可以从USB设备490读取固件图像492并且将数据写入到SPI控制器420。SPI控制器420然后可以向SPI到NGI解码器440转发数据,并且通过NGI控制器450到NG存储器460的NGI控制器462。最终,NG ROM代码464将图像作为固件468写入在NG存储装置466中。将理解的是,固件图像492到固件468的读取和写入将典型地经由将重复直到完整的图像被写入到NG存储器460的多个读取和写入操作而发生。
在一个实施例中,在向NG存储器460供应固件之后,CSME ROM代码412将重复例程的执行以从NG存储器460寻找固件。因此,CSME 410将经由SPI控制器420,跨SPI到NGI 430和NGI控制器450生成请求。在一个实施例中,CSME ROM代码412在低速模式中发起每一个固件请求,并且参与训练序列以使得能够实现高速模式。当CSME ROM代码412在已经供应固件之后请求固件时,NG存储器460满足请求,导致成功的启动操作。在固件468损坏的事件中,在一个实施例中,适当的ROM代码(例如在对用于CSME 410的固件的损坏的情况下的CSME ROM代码412,或者在对用于NG存储器460的固件的损坏的情况下的NG ROM代码464)可以请求固件的次级图像。如果不存在有效固件,CSME 410再次从外部源供应固件图像492。
在一个实施例中,NGI接口(SPI控制器420,到SPI到NGI 440,到NGI控制器450,到NGI控制器462)支持标准SPI接口功能的转换。因此,标准SPI读取、写入和擦除操作可以映射到用于NG存储器460的相当的操作。此外,在一个实施例中,***400支持RPMC。如果支持RPMC,NGI接口可以将RPMC功能映射到唯一I/O(输入/输出)传递命令。这样的传递命令允许使用RPMC命令,其可以通过NG ROM代码464解码。在一个实施例中,NGI控制器450支持由CPU 430发起的SPI命令的终止,该SPI命令可以包括标准模式命令、SMM(***管理模式)命令和来自CSME 410的执行引擎的命令。
图5是用于访问可以供应***内固件的***中的操作固件的过程500的实施例的流程图。在一个实施例中,平台控制器(例如可管理性引擎或整合的安全性和可管理性引擎)检测唤醒触发,502。唤醒触发发起控制器的执行,并且可以是软重启(例如中断以从低功率状态唤醒设备)或硬重启(例如对设备上电)。控制器响应于唤醒触发而发起其ROM代码的执行,504。ROM代码执行基本初始操作以开始控制器的操作。ROM代码控制的一个操作是访问提供用于控制器的运行时执行逻辑的固件。在一个实施例中,控制器还发起主机处理器,并且可以除自身之外访问用于主机处理器的固件图像。在一个实施例中,主机处理器充当平台控制器。
在一个实施例中,控制器参与安全性过程以保护从控制器到其中应当存储固件图像的非易失性存储设备的接口,506。控制器可以参与基于指数的安全性过程、共享密钥安全性过程或另一安全性过程。控制器访问NGM接口,508,并且经由接口访问NGM设备以获取固件,510。响应于来自控制器的针对固件的请求,NGM设备可以确定其是否具有有效固件。在一个实施例中,做出关于是否存在有效固件的确定包括NGM设备确定是否存在有效的主要固件图像,512。将理解的是,控制器可以访问其固件和用于主机处理器的固件。NGM可以访问其固件并且如果其不能找到有效的固件图像则向控制器指示。
如果NGM设备确定存在有效的固件图像,514“是”分支,其参与正常启动序列,530。在一个实施例中,如果NGM设备确定不存在有效的固件图像,514“否”分支,其可以确定是否存在有效的次级或备份固件图像,516。如果存在有效的次级图像,518“是”分支,NGM设备可以向控制器递送固件图像并且从备份图像恢复主要固件图像,520。控制器然后执行正常启动序列,530。如果NGM设备不具有有效的次级图像,518“否”分支,NGM设备向控制器指示不存在有效的固件,并且控制器访问外部接口以获取固件图像,522。控制器然后从连接到外部接口的源向NGM设备供应***内的固件图像,524。在供应固件之后,控制器然后可以从NGM设备请求固件,该NGM设备将向控制器提供固件。然后控制器然后可以发起正常启动序列,530。
在正常启动序列中,控制器从NGM设备访问固件,532,并且加载固件以供执行。加载固件的部分可以包括加载用于主机处理器的***固件以初始化***,534。主机处理器执行***固件并且发起***操作,536。发起***的部分包括从NGM设备访问主机操作***并且在***上加载它。***然后可以继续正常操作,538。
图6A是用于供应用于计算***的初始操作的固件的过程610的实施例的流程图。计算***的初始操作可以是用于平台控制器将针对其供应新固件的硬件平台上的固件的生命周期事件的一个示例。制造商制造包括具有主机处理器和/或平台控制器、NGM设备和可以被访问以供应固件图像的外部硬件接口的硬件平台,612。在一个实施例中,初始***是裸露金属,并且因而将需要在能够启动之前供应固件。制造商在外部接口处提供外部固件源(例如将源***到USB端口或其它硬件接口中)并且为设备供电以用于第一操作,614。***对操作为唤醒触发的平台控制器上电,和/或生成针对平台控制器的唤醒触发,616。控制器检测唤醒触发并且发起操作,502(来自过程500)。
图6B是用于结合固件更新供应固件的过程620的实施例的流程图。固件更新可以是用于平台控制器将针对其供应新固件的硬件平台上的固件的生命周期事件的一个示例。假定***正常操作,538(来自过程500),当***检测到固件更新就绪时,622。将理解的是,固件更新还可以在***恢复事件(其在图6C的过程630中解决)中提供。在一个实施例中,外部固件源向平台控制器指示固件。控制器或其它逻辑(例如用于存储器设备固件更新的NGM设备上的控制器)可以使NGM设备上的一个或多个(在备份的情况下)当前固件图像无效,624。在一个实施例中,在使当前固件图像无效之后,***然后可以被触发以重启,这将使其遇到其中不存在硬件平台上的有效固件的情形,并且因此控制器将从外部源寻找固件。因此,***可以触发用于控制器的睡眠或掉电状态,626。***还可以生成用于控制器的唤醒事件,502(来自过程500),这将使控制器寻找固件并且当没有找到有效固件时供应固件。
图6C是用于供应固件以用于从错误恢复的过程630的实施例的流程图。从错误或损坏恢复可以是用于平台控制器将针对其供应新固件的硬件平台上的固件的生命周期事件的一个示例。可以假定,在某个时间点处,在损坏事件之前,***正常操作,538(来自过程500)。数个计算机故障或攻击中的任一个可以发生,这危害了固件图像,632。将理解的是,当固件图像被非法修改(例如没有利用有效验证来执行)时,固件图像将不再被视为有效。控制器可以检测到固件图像受损,634,并且使固件图像无效。在一个实施例中,***实现次级固件图像,其也存储在NGM设备上。当使用次级固件图像时,控制器可以请求NGM设备确定是否存在有效次级图像,516(来自过程500)。可替换地,如果***不实现备份固件图像,类似于固件更新事件,***可以被触发以重启,这将使其遇到其中不存在硬件平台上的有效固件的情形。因此,控制器将从外部源寻找固件,并且***生成用于控制器的唤醒事件,502(来自过程500),这将使控制器寻找固件并且当没有找到有效固件时供应固件。
图6D是用于结合存储***内的设备的硬件升级供应固件的过程640的实施例的流程图。硬件升级可以是用于平台控制器将针对其供应新固件的硬件平台上的固件的生命周期事件的一个示例。可以假定***在硬件升级之前正常操作,538(来自过程500)。用户或计算***管理员确定更换NGM设备,642。NGM设备存储用于硬件平台的固件图像。在一个实施例中,更换NGM设备可以成功地预加载有前一存储设备的内容,在该情况下固件可以被成功地转移。在一个实施例中,用于更换NGM设备的安装过程可以损坏预加载到更换NGM设备上的数据。可替换地,利用存储在当前NGM设备上的数据预加载更换NGM设备可以是不方便或困难的。因此,将从外部位置向更换NGM设备供应数据,所述外部位置将包括固件图像。
为了使得能够实现这样的更换,管理员将数据内容拷贝到备份位置,644,离开硬件平台或在将不提供用于执行的固件图像的不同存储设备中。管理员更换NGM设备,646,并且在硬件平台的外部接口处提供固件图像,648。源可以是数据内容的备份副本的位置。在一个实施例中,控制器访问外部接口以获取固件图像,522,并且从外部源向(更换)NGM设备供应固件图像,524(来自过程500)。***然后可以从前一NGM设备恢复数据内容到更换NGM设备并且执行正常操作,650。
图7是用于从平台控制器或可管理性引擎访问下一代存储器设备接口的过程700的实施例的流程图。在一个实施例中,平台控制器发起其ROM代码的执行,504(来自过程500)。控制器ROM代码执行,702,其可以使控制器访问NGM接口(NGI),508。出于本文的目的,控制器将访问NGI的主要目的是访问和/或供应固件。在一个实施例中,控制器ROM代码确定其是否具有用于NGI的训练数据,704。如果接口经训练,706“是”分支,控制器以用于接口的高速模式继续访问操作,708。控制器可以在高速模式中通过经训练的NGI发送访问请求和接收响应,710。
如果NGI未经训练,706“否”分支,控制器ROM代码可以进入用于NGI的低速模式,712。在一个实施例中,控制器ROM代码在低速模式中发起训练序列,714。一旦训练序列成功完成,控制器ROM代码然后可以参与用于NGI的高速模式,716。在进入高速模式之后,控制器和NGM设备可以以高速模式通过NGI通信,710。
图8是用于向通过下一代存储器设备接口的交换应用安全性的过程800的实施例的流程图。在一个实施例中,平台控制器参与安全性过程以结合从NGM设备获取和/或供应固件图像来保护NGI,506。控制器可以发起安全交换,802。在一个实施例中,所使用的安全交换将取决于控制器和NGM设备是否已经建立共享密钥交换。因此,控制器可以确定是否存在有效、匹配对称或共享密钥,804。如果存在共享密钥,806“是”分支,控制器和NGM设备使用密钥交换签名消息,808。发射设备利用密钥对消息签名并且将它们发送到接收设备。接收设备接收加密消息并且利用密钥解码它们。
在一个实施例中,如果不存在共享密钥,808“否”分支,控制器可以参与基于指数的安全性过程(例如Diffie-Helman)。因此,控制器可以生成用于基于指数的安全***换的随机数指数,810。控制器和NGM设备然后可以使用基于指数的安全性过程建立对称加密密钥,812。在一个实施例中,控制器管理和监视所有共享密钥的使用。例如,控制器可以具有与共享密钥的使用相关联的熔丝,并且设置熔丝图案或响应于创建密钥而设置熔丝。密钥然后可以与熔丝图案相关联,并且将仅在密钥与预期熔丝图案匹配时有效。控制器和NGM设备使当前密钥有效并且还可以使之前密钥无效,814。在一个实施例中,有效和无效通过使用片上熔丝或控制器所采用的其它追踪/监视机制而发生。
图9是其中可以实现***内固件供应的计算***的实施例的框图。***900表示依照本文所描述的任何实施例的计算设备,并且可以是膝上型计算机、台式计算机、服务器、游戏或娱乐控制***、扫描仪、复印机、打印机、路由或交换设备或其它电子设备。***900包括处理器920,其提供用于***900的指令的处理、操作管理和执行。处理器920可以包括任何类型的微处理器、中央处理单元(CPU)、处理核或其它处理硬件以提供用于***900的处理。处理器920控制***900的总体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑设备(PLD)等或这样的设备的组合。
存储器子***930表示***900的主存储器,并且为要由处理器920执行的代码或要在执行例程中使用的数据值而提供临时存储。存储器子***930可以包括诸如只读存储器(ROM)、闪速存储器、一种或多种随机存取存储器(RAM)之类的一个或多个存储器设备、或其它存储器设备,或者这样的设备的组合。存储器子***930除其它事情外尤其存储和托管操作***(OS)936以提供用于***900中的指令的执行的软件平台。此外,其它指令938被存储并自存储器子***930被执行以提供***900的逻辑和处理。OS 936和指令938由处理器920执行。存储器子***930包括存储器设备932,其中它存储数据、指令、程序或其它项。在一个实施例中,存储器子***包括存储器控制器934,其是生成和向存储器设备932发布命令的存储器控制器。要理解的是,存储器控制器934可以是处理器920的物理部分。
处理器920和存储器子***930耦合到总线/总线***910。总线910是表示任何一个或多个分离的物理总线、通信线/接口和/或点对点连接(由适当的桥、适配器和/或控制器连接)的抽象。因此,总线910可以包括例如***总线、***组件互连(PCI)总线、超传输或工业标准架构(ISA)总线、小型计算机***接口(SCSI)总线、通用串行总线(USB)或电气与电子工程师协会(IEEE)标准1394总线(通常称为“火线”)中的一个或多个。总线910的总线还可以对应于网络接口950中的接口。
***900还包括一个或多个输入/输出(I/O)接口940、网络接口950、一个或多个内部大容量存储设备960以及耦合到总线910的***接口970。I/O接口940可以包括用户通过其而与***900交互(例如视频、音频和/或字母数字对接)的一个或多个接口组件。网络接口950为***900提供通过一个或多个网络与远程设备(例如服务器、其它计算设备)通信的能力。网络接口950可以包括以太网适配器、无线互连组件、USB(通用串行总线)或其它基于有线或无线标准的或专用接口。
***接口970可以包括并非以上特别提及的任何硬件接口。***设备一般是指依赖性地连接到***900的设备。依赖性连接是其中***900提供在其上执行操作并且用户利用其进行交互的软件和/或硬件平台的一种连接。
在一个实施例中,存储装置960可以是或者包括用于以非易失性方式存储大量数据的任何常规介质,诸如一个或多个基于磁、固态或光学的盘或组合。存储装置960还可以包括下一代存储器技术,如以上所描述的。存储装置960以持久状态(即,尽管去往***900的功率中断也保留值)持有代码或指令和数据962。存储装置960还存储供可管理性引擎(ME)922或另一平台控制器使用的固件图像。存储装置960可以一般被视为“存储器”,尽管存储器930是向处理器920提供指令的执行或操作存储器。存储器930可以包括易失性存储器(即,如果中断去往***900的功率则数据的值或状态是不确定的),而存储装置960是非易失性的。ME 922可以从外部接口(诸如网络接口950或***接口970)向存储装置960供应固件。ME 922一般将响应于固件生命周期事件而供应固件,其中不存在存储于存储装置960上的有效主要固件图像。
图10是其中可以实现***内固件供应的移动设备的实施例的框图。设备1000表示移动计算设备,诸如计算平板、移动电话或智能电话、无线使能的电子阅读器、可穿戴计算设备或其它移动设备。将理解到,一般地示出组件中的某些,并且在设备1000中并未示出这样的设备的全部组件。
设备1000包括执行设备1000的主要处理操作的处理器1010。处理器1010可以包括一个或多个物理设备,诸如微处理器、应用处理器、微控制器、可编程逻辑设备或其它处理构件。由处理器1010执行的处理操作包括其上执行应用和/或设备功能的操作平台或操作***的执行。处理操作包括有关与人类用户或与其它设备的I/O(输入/输出)的操作、有关功率管理的操作和/或有关将设备1000连接到另一设备的操作。处理操作还可以包括有关音频I/O和/或显示I/O的操作。
在一个实施例中,设备1000包括音频子***1020,其表示与向计算设备提供音频功能相关联的硬件(例如音频硬件和音频电路)和软件(例如驱动器、编解码器)组件。音频功能可以包括扬声器和/或耳机输出,以及麦克风输入。用于这样的功能的设备可以集成到设备1000中,或者连接到设备1000。在一个实施例中,用户通过提供由处理器1010接收和处理的音频命令来与设备1000交互。
显示子***1030表示提供用于用户与计算设备交互的视觉和/或触觉显示的硬件(例如显示设备)和软件(例如驱动器)组件。显示子***1030包括显示接口1032,其包括用于向用户提供显示的特定屏幕或硬件设备。在一个实施例中,显示接口1032包括与处理器1010分离的逻辑以执行有关显示的至少一些处理。在一个实施例中,显示子***1030包括向用户提供输出和输入二者的触摸屏设备。
I/O控制器1040表示有关与用户的交互的硬件设备和软件组件。I/O控制器1040可以操作成管理作为音频子***1020和/或显示子***1030的部分的硬件。此外,I/O控制器1040说明了用于连接到用户可以通过其而与***交互的设备1000的附加设备的连接点。例如,可以附接到设备1000的设备可以包括麦克风设备、扬声器或立体声***、视频***或其它显示设备、键盘或小键盘设备或供特定应用使用的其它I/O设备(诸如读卡器或其它设备)。
如以上提到的,I/O控制器1040可以与音频子***1020和/或显示子***1030交互。例如,通过麦克风或其它音频设备的输入可以提供用于设备1000的一个或多个应用或功能的输入或命令。此外,可以提供音频输出来替代于或附加于显示输出。在另一示例中,如果显示子***包括触摸屏,则显示设备还充当输入设备,其可以至少部分地被I/O控制器1040管理。在设备1000上还可以存在附加按钮或开关以提供受I/O控制器1040管理的I/O功能。
在一个实施例中,I/O控制器1040管理诸如加速度计、相机、光传感器或其它环境传感器、陀螺仪、全球定位***(GPS)或可以包括在设备1000中的其它硬件之类的设备。输入可以是直接用户交互的部分,以及向***提供环境输入以影响其操作(诸如针对噪声而滤波、针对亮度检测而调整显示、针对相机而应用闪光、或其它特征)。在一个实施例中,设备1000包括功率管理1050,其管理电池功率使用、电池的充电和有关功率节约操作的特征。
存储器子***1060包括用于存储设备1000中信息的(多个)存储器设备1062。存储器子***1060可以包括非易失性(如果去往存储器设备的功率中断则状态不改变)和/或易失性(如果去往存储器设备的功率中断则状态不确定)存储器设备。存储器1060可以存储应用数据、用户数据、音乐、照片、文档或其它数据,以及有关***1000的应用和功能的执行的***数据(无论长期还是临时的)。在一个实施例中,存储器子***1060包括存储器控制器1064(其还可以被视为***1000的控制的部分,并且可以潜在地被视为处理器1010的部分)。存储器控制器1064包括生成和向存储器设备1062发布命令的调度器。
连接性1070包括使得设备1000能够与外部设备通信的硬件设备(例如无线和/或有线连接器和通信硬件)和软件组件(例如驱动器、协议栈)。外部设备可以是分离的设备,诸如其它计算设备、无线接入点或基站,以及***设备,诸如耳机、打印机或其它设备。
连接性1070可以包括多个不同类型的连接性。为了一般化,设备1000被图示有蜂窝式连接性1072和无线连接性1074。蜂窝式连接性1072一般是指由无线运营商提供的蜂窝式网络连接性,诸如经由GSM(全球移动通信***)或变型或派生物、CDMA(码分多址)或变型或派生物、TDM(时分复用)或变型或派生物、LTE(长期演进——也称为“4G”)或其它蜂窝式服务标准所提供。无线连接性1074是指不是蜂窝式的无线连接性,并且可以包括个域网(诸如蓝牙)、局域网(诸如WiFi)和/或广域网(诸如WiMax)或其它无线通信。无线通信是指通过借由非固体介质的调制电磁辐射的使用而传输数据。有线通信通过固体通信介质发生。
***连接1080包括硬件接口和连接器,以及软件组件(例如驱动器、协议栈)以进行***连接。将理解到,设备1000可以既是去往其它计算设备的***设备(“去往”1082),以及又具有连接到它的***设备(“来自”1084)。设备1000通常具有“坞接(docking)”连接器以连接到其它计算设备用于诸如管理(例如下载和/或上载、改变、同步)设备1000上的内容之类的目的。此外,坞接连接器可以允许设备1000连接到允许设备1000控制例如到视听或其它***的内容输出的某些***设备。
除专用坞接连接器或其它专用连接硬件之外,设备1000可以经由公共或基于标准的连接器来做出***连接1080。公共类型可以包括通用串行总线(USB)连接器(其可以包括许多不同硬件接口中的任一个)、包括迷你显示端口(MDP)的显示端口、高清多媒体接口(HDMI)、火线或其它类型。
除以上所讨论的之外,存储器子***1060可以包括如以上所描述的下一代存储器技术。存储器子***1060以非易失性状态存储固件图像以供可管理性引擎(ME)1012或另一平台控制器使用。ME 1012可以从外部接口(诸如连接性1070或***连接1080)向存储器子***1060中的非易失性存储装置供应固件。ME 1012一般将响应于固件生命周期事件而供应固件,其中不存在存储于存储器子***1060中的有效主要固件图像。
在一个方面中,一种方法包括:在包括处理器、非易失性存储设备和对接硬件平台外部的设备的外部接口的硬件平台中,确定硬件平台缺少启动硬件平台的功能固件;经由外部接口从源访问固件;向存储设备供应固件;以及从供应到存储设备的固件启动硬件平台。
在一个实施例中,存储设备包括字节可寻址存储器设备。在一个实施例中,硬件平台包括两级存储器***,其中非易失性存储设备配置为用于处理器的主存储器,并且还包括配置为用于非易失性存储设备的高速缓存的易失性存储器设备。在一个实施例中,确定硬件平台缺少功能固件包括确定硬件平台缺少有效主要固件图像并且缺少有效备份固件图像。在一个实施例中,供应固件包括针对固件生命周期事件供应固件,该固件生命周期事件包括制造之后的初始启动、对固件的现场更新、非易失性存储设备升级或损坏恢复中的一个。在一个实施例中,供应固件还包括:检测用于到存储设备的接口的时序参数未经训练;进入低速模式以训练时序参数;以及进入高速传输模式以供应固件。在一个实施例中,供应固件还包括参与到存储设备的接口之上的安全性。在一个实施例中,参与安全性还包括:采用基于指数的安全性握手过程以建立对称密钥。在一个实施例中,参与安全性还包括:利用对称密钥交换来交换经加密的消息。在一个实施例中,参与安全性还包括:监视对称密钥使用以防止重放攻击。在一个实施例中,监视对称密钥使用以防止重放攻击还包括:利用相关联的熔丝管理对称密钥使用,其中对称密钥仅在与预确定的熔丝图案相关联时有效。
在一个方面中,一种用于计算设备的硬件平台包括:执行操作的处理器;对接硬件平台外部的设备的外部硬件接口;耦合到处理器的非易失性存储设备;以及耦合到处理器、外部硬件接口和存储设备的控制器设备,控制器设备确定硬件平台缺少启动硬件平台的功能固件,经由外部接口访问固件,向存储设备供应固件,并且从供应到存储设备的固件发起用于硬件平台的启动序列。
在一个实施例中,存储设备包括解码存储器访问命令以供存储设备操作的接口。在一个实施例中,存储设备包括字节可寻址存储器设备。在一个实施例中,硬件平台还包括易失性存储器设备,其中硬件平台包括两级存储器***,其中非易失性存储设备配置为用于处理器的主存储器,并且易失性存储器设备配置为用于非易失性存储设备的高速缓存。在一个实施例中,控制器设备包括可管理性引擎。在一个实施例中,控制器设备包括整合的安全性和可管理性引擎。在一个实施例中,控制器设备访问和供应用于控制器设备的固件。在一个实施例中,控制器设备访问和供应用于处理器的固件。在一个实施例中,控制器设备确定硬件平台缺少有效主要固件图像并且缺少有效备份固件图像。在一个实施例中,控制器设备针对固件生命周期事件供应固件,该固件生命周期事件包括制造之后的初始启动、对固件的现场更新、非易失性存储设备升级或损坏恢复中的一个。在一个实施例中,外部硬件接口包括与通用串行接口、局域网接口或广域网接口中的一个兼容的硬件接口。在一个实施例中,控制器还检测用于到存储设备的接口的时序参数未经训练;进入低速模式以训练时序参数;并且进入高速传输模式以供应固件。在一个实施例中,控制器还参与到存储设备的接口之上的安全性。在一个实施例中,控制器还包括:与关于存储设备的对称密钥安全性协议相关联的片上熔丝,其中控制器针对所生成的每一个对称密钥熔断熔丝。在一个实施例中,控制器还采用基于指数的安全性握手过程以建立对称密钥。在一个实施例中,控制器还利用对称密钥交换来交换经加密的消息。在一个实施例中,控制器还监视对称密钥使用以防止重放攻击。在一个实施例中,控制器还利用相关联的熔丝管理对称密钥使用,其中对称密钥仅在与预确定的熔丝图案相关联时有效。
在一个方面中,一种电子设备包括:用于计算设备的硬件平台,该硬件平台包括:执行操作的处理器;对接硬件平台外部的设备的外部硬件接口;耦合到处理器的非易失性存储设备;以及耦合到处理器、外部硬件接口和存储设备的控制器设备,控制器设备确定硬件平台缺少启动硬件平台的功能固件,经由外部接口访问固件,向存储设备供应固件,并且从供应到存储设备的固件发起用于硬件平台的启动序列;以及耦合到硬件平台以存储从非易失性存储设备访问以供处理器执行的操作数据的同步动态随机存取存储器(SDRAM)设备。
在一个方面中,一种制造品,包括具有存储在其上的内容的计算机可读存储介质,该内容在被执行时施行包括以下的操作:在包括处理器、非易失性存储设备和对接硬件平台外部的设备的外部接口的硬件平台中,确定硬件平台缺少启动硬件平台的功能固件;经由外部接口从源访问固件;向存储设备供应固件;以及从供应到存储设备的固件启动硬件平台。制造品可以包括用于施行操作以执行如以上所阐述的方法的任何实施例的内容。
在一个方面中,一种装置包括:包括处理器、非易失性存储设备和对接硬件平台外部的设备的外部接口的硬件平台;用于确定硬件平台缺少启动硬件平台的功能固件的构件;用于经由外部接口从源访问固件的构件;用于向存储设备供应固件的构件;以及用于从供应到存储设备的固件启动硬件平台的构件。装置可以包括用于施行操作以执行如以上所阐述的方法的任何实施例的构件。
如本文所图示的流程图提供各种过程动作的序列的示例。流程图可以指示由软件或固件例程执行的操作,以及物理操作。在一个实施例中,流程图可以说明有限状态机(FSM)的状态,该有限状态机(FSM)可以实现在硬件和/或软件中。尽管以特定序列或次序示出,但是除非另行指定,否则可以修改动作的次序。因此,所图示的实施例应当仅被理解为示例,并且过程可以以不同的次序执行,并且一些动作可以并行执行。此外,一个或多个动作可以在各种实施例中省略;因此,并非所有动作在每个实施例中都是需要的。其它过程流是可能的。
到各种操作或功能在本文中被描述的程度,它们可以被描述或限定为软件代码、指令、配置和/或数据。内容可以是直接可执行的(“对象”或“可执行”形式)、源代码或差分代码(“增量”或“补丁”代码)。本文所描述的实施例的软件内容可以经由具有存储在其上的内容的制造品提供,或者经由操作通信接口以经由通信接口发送数据的方法提供。机器可读存储介质可以使得机器执行所描述的功能或操作,并且包括以机器(例如计算设备、电子***等)可访问的形式存储信息的任何机制,诸如可记录/非可记录介质(例如只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光学存储介质、闪速存储器设备等)。通信接口包括对接到硬连线、无线、光学等介质中任一个以与另一设备通信的任何机制,诸如存储器总线接口、处理器总线接口、因特网连接、盘控制器等。通信接口可以通过提供配置参数和/或发送信号以使通信接口准备提供描述了软件内容的数据信号而被配置。通信接口可以经由被发送到通信接口的一个或多个命令或信号而被访问。
本文所描述的各种组件可以是用于执行所描述的操作或功能的构件。本文所描述的每个组件包括软件、硬件或这些的组合。组件可以实现为软件模块、硬件模块、特殊用途硬件(例如专用硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬连线电路等。
除了本文所描述的之外,可以对本发明的所公开的实施例和实现做出各种修改而不脱离于其范围。因此,本文中的图示和示例应当在说明性而非限制性的意义上来解释。本发明的范围应当仅仅通过参考随后的权利要求来衡量。

Claims (31)

1. 一种用于***内供应用于硬件平台的固件的方法,包括:
在包括处理器、非易失性存储设备和对接硬件平台外部的设备的外部接口的硬件平台中,确定硬件平台缺少启动硬件平台的功能固件;
经由外部接口从源访问固件;
向存储设备供应固件;以及
从供应到存储设备的固件启动硬件平台。
2. 权利要求1的方法,其中存储设备包括字节可寻址存储器设备。
3. 权利要求1的方法,其中硬件平台包括两级存储器***,其中非易失性存储设备配置为用于处理器的主存储器,并且还包括配置为用于非易失性存储设备的高速缓存的易失性存储器设备。
4. 权利要求1的方法,其中确定硬件平台缺少功能固件包括确定硬件平台缺少有效主要固件图像并且缺少有效备份固件图像。
5. 权利要求1的方法,其中供应固件包括针对固件生命周期事件供应固件,该固件生命周期事件包括制造之后的初始启动、对固件的现场更新、非易失性存储设备升级或损坏恢复中的一个。
6. 权利要求1的方法,其中供应固件还包括:
检测用于到存储设备的接口的时序参数未经训练;
进入低速模式以训练时序参数;以及
进入高速传输模式以供应固件。
7. 权利要求1的方法,其中供应固件还包括参与到存储设备的接口之上的安全性。
8. 权利要求7的方法,其中参与安全性还包括:
采用基于指数的安全性握手过程以建立对称密钥。
9. 权利要求7的方法,其中参与安全性还包括:
利用对称密钥交换来交换经加密的消息。
10. 权利要求9的方法,其中参与安全性还包括:
监视对称密钥使用以防止重放攻击。
11. 权利要求10的方法,其中监视对称密钥使用以防止重放攻击还包括:
利用相关联的熔丝管理对称密钥使用,其中对称密钥仅在与预确定的熔丝图案相关联时有效。
12. 一种用于***内供应用于硬件平台的固件的用于计算设备的硬件平台,包括:
执行操作的处理器;
对接硬件平台外部的设备的外部硬件接口;
耦合到处理器的非易失性存储设备;以及
耦合到处理器、外部硬件接口和存储设备的控制器设备,控制器设备确定硬件平台缺少启动硬件平台的功能固件,经由外部接口访问固件,向存储设备供应固件,并且从供应到存储设备的固件发起用于硬件平台的启动序列。
13. 权利要求12的硬件平台,其中存储设备包括解码存储器访问命令以供存储设备操作的接口。
14. 权利要求12的硬件平台,其中存储设备包括字节可寻址存储器设备。
15. 权利要求12的硬件平台,还包括易失性存储器设备,其中硬件平台包括两级存储器***,其中非易失性存储设备配置为用于处理器的主存储器,并且易失性存储器设备配置为用于非易失性存储设备的高速缓存。
16. 权利要求12的硬件平台,其中控制器设备包括可管理性引擎。
17. 权利要求16的硬件平台,其中控制器设备包括整合的安全性和可管理性引擎。
18. 权利要求12的硬件平台,其中控制器设备访问和供应用于控制器设备的固件。
19. 权利要求12的硬件平台,其中控制器设备访问和供应用于处理器的固件。
20. 权利要求12的硬件平台,其中控制器设备确定硬件平台缺少有效主要固件图像并且缺少有效备份固件图像。
21. 权利要求12的硬件平台,其中控制器设备针对固件生命周期事件供应固件,该固件生命周期事件包括制造之后的初始启动、对固件的现场更新、非易失性存储设备升级或损坏恢复中的一个。
22. 权利要求12的硬件平台,其中外部硬件接口包括与通用串行接口、局域网接口或广域网接口中的一个兼容的硬件接口。
23. 权利要求12的硬件平台,其中控制器还:
检测用于到存储设备的接口的时序参数未经训练;
进入低速模式以训练时序参数;并且
进入高速传输模式以供应固件。
24. 权利要求12的硬件平台,其中控制器还参与到存储设备的接口之上的安全性。
25. 权利要求24的硬件平台,其中控制器还包括:
与关于存储设备的对称密钥安全性协议相关联的片上熔丝,其中控制器针对所生成的每一个对称密钥熔断熔丝。
26. 权利要求24的硬件平台,其中控制器还采用基于指数的安全性握手过程以建立对称密钥。
27. 权利要求24的硬件平台,其中控制器还利用对称密钥交换来交换经加密的消息。
28. 权利要求27的硬件平台,其中控制器还监视对称密钥使用以防止重放攻击。
29. 权利要求28的硬件平台,其中控制器还利用相关联的熔丝管理对称密钥使用,其中对称密钥仅在与预确定的熔丝图案相关联时有效。
30. 一种用于***内供应用于硬件平台的固件的制造品,包括具有存储在其上的内容的计算机可读存储介质,该内容在由计算设备执行时施行操作以执行依照权利要求1至11中任一项的方法。
31. 一种用于***内供应用于硬件平台的固件的装置,包括用于施行操作以执行依照权利要求1至11中任一项的方法的构件。
CN201580010756.7A 2014-03-28 2015-03-27 用于硬件平台的固件的***内供应的方法及其硬件平台 Active CN106030525B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/229708 2014-03-28
US14/229,708 US9594910B2 (en) 2014-03-28 2014-03-28 In-system provisioning of firmware for a hardware platform
PCT/US2015/023175 WO2015149020A1 (en) 2014-03-28 2015-03-27 In-system provisioning of firmware for a hardware platform

Publications (2)

Publication Number Publication Date
CN106030525A true CN106030525A (zh) 2016-10-12
CN106030525B CN106030525B (zh) 2019-12-10

Family

ID=54190477

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580010756.7A Active CN106030525B (zh) 2014-03-28 2015-03-27 用于硬件平台的固件的***内供应的方法及其硬件平台

Country Status (6)

Country Link
US (2) US9594910B2 (zh)
EP (1) EP3123312B1 (zh)
JP (1) JP6333993B2 (zh)
KR (1) KR101825005B1 (zh)
CN (1) CN106030525B (zh)
WO (1) WO2015149020A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107766171A (zh) * 2016-08-18 2018-03-06 华邦电子股份有限公司 与非型快闪存储器及其读出方法
CN112005212A (zh) * 2018-04-20 2020-11-27 艾里逊变速箱公司 用于启动变速器控制模块的空中编程的***和方法
CN115136116A (zh) * 2019-12-06 2022-09-30 美国莱迪思半导体公司 用于可编程逻辑设备的快速引导***和方法

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9594910B2 (en) 2014-03-28 2017-03-14 Intel Corporation In-system provisioning of firmware for a hardware platform
US20160378633A1 (en) * 2015-06-27 2016-12-29 Intel Corporation Repair of failed firmware through an unmodified dual-role communication port
US10055236B2 (en) * 2015-07-02 2018-08-21 Sandisk Technologies Llc Runtime data storage and/or retrieval
US9880831B2 (en) * 2015-11-06 2018-01-30 Storart Technology Co., Ltd. Field firmware upgrading method and computer-readable medium
JP6723863B2 (ja) * 2016-08-01 2020-07-15 オリンパス株式会社 組み込みシステム、撮影機器及びリフレッシュ方法
US10740468B2 (en) * 2016-09-30 2020-08-11 Hewlett Packard Enterprise Development Lp Multiple roots of trust to verify integrity
US10346177B2 (en) * 2016-12-14 2019-07-09 Intel Corporation Boot process with parallel memory initialization
WO2018124894A1 (en) * 2016-12-29 2018-07-05 Intel Corporation Embedded oem code for fault recovery
US10346071B2 (en) * 2016-12-29 2019-07-09 Western Digital Technologies, Inc. Validating firmware for data storage devices
US10643006B2 (en) * 2017-06-14 2020-05-05 International Business Machines Corporation Semiconductor chip including integrated security circuit
JP6340120B1 (ja) 2017-06-16 2018-06-06 アイビーシー株式会社 デバイスプロビジョニングシステム
DE102017212252A1 (de) * 2017-07-18 2019-01-24 Robert Bosch Gmbh Verfahren und Vorrichtung zur Erstprogrammierung eines Nebenrechners
US10582636B2 (en) * 2017-08-07 2020-03-03 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Server having a dual-mode serial bus port enabling selective access to a baseboard management controller
US11163887B2 (en) 2018-02-14 2021-11-02 Microsoft Technology Licensing, Llc Clearance of bare metal resource to trusted state usable in cloud computing
US11748497B2 (en) 2018-09-28 2023-09-05 Hewlett-Packard Development Company, L.P. BIOS access
JP7074020B2 (ja) * 2018-10-24 2022-05-24 Tdk株式会社 メモリコントローラ、及びメモリシステム
US10795746B2 (en) * 2018-12-13 2020-10-06 Micron Technology, Inc. Automated power down based on state of firmware
US10860500B2 (en) * 2019-01-28 2020-12-08 Intel Corporation System, apparatus and method for replay protection for a platform component
US11520662B2 (en) * 2019-02-11 2022-12-06 Hewlett-Packard Development Company, L.P. Recovery from corruption
US11947675B2 (en) 2019-02-11 2024-04-02 Hewlett-Packard Development Company, L.P. Restoration of firmware subsystems based on manufacturing states
US11599426B2 (en) * 2019-02-11 2023-03-07 Hewlett-Packard Development Company, L.P. Recovery via backups of recovery information
US11169819B2 (en) * 2019-05-01 2021-11-09 Dell Products L.P. Information handling system (IHS) and method to proactively restore firmware components to a computer readable storage device of an IHS
TWI749704B (zh) * 2020-08-13 2021-12-11 群聯電子股份有限公司 韌體碼的執行方法、記憶體儲存裝置及記憶體控制電路單元
KR20220085237A (ko) 2020-12-15 2022-06-22 삼성전자주식회사 스토리지 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법
US11568048B2 (en) * 2020-12-23 2023-01-31 Intel Corporation Firmware descriptor resiliency mechanism
KR102386614B1 (ko) * 2020-12-24 2022-05-09 유비벨록스(주) IoT 디바이스 펌웨어 업데이트 시스템, IoT 디바이스 펌웨어 업데이트 방법, 및 IoT 디바이스 부팅방법
WO2022271157A1 (en) * 2021-06-22 2022-12-29 Hewlett-Packard Development Company, L.P. Instruction updates to hardware devices
US20230205895A1 (en) * 2021-12-29 2023-06-29 Arm Limited Methods and apparatus for provisioning a device
TWI807947B (zh) * 2022-08-01 2023-07-01 精英電腦股份有限公司 多顆嵌入式控制器的更新和檢驗方法與其電子設備

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1226060A (zh) * 1997-10-27 1999-08-18 索尼欧州公司 具有外部接口的程序目标和程序部件的***
CN1577252A (zh) * 2003-07-29 2005-02-09 刘丁阳 一种自动安装设备驱动程序的方法及设备
US7043664B1 (en) * 2002-10-31 2006-05-09 Microsoft Corporation Firmware recovery
US20100199078A1 (en) * 2009-02-04 2010-08-05 Novatek Microelectronics Corp. Method of safe and recoverable firmware update and device using the same
US8555273B1 (en) * 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US20130268746A1 (en) * 2012-04-10 2013-10-10 Asmedia Technology Inc. System-on-chip and booting method thereof

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5714768A (en) * 1995-10-24 1998-02-03 Energy Conversion Devices, Inc. Second-layer phase change memory array on top of a logic device
US6212602B1 (en) 1997-12-17 2001-04-03 Sun Microsystems, Inc. Cache tag caching
US7069431B2 (en) * 2001-07-31 2006-06-27 Lenovo ( Singapore) Pte Ltd. Recovery of a BIOS image
JP2003099146A (ja) * 2001-09-20 2003-04-04 Fujitsu Ltd 計算機システムの起動制御方式
US20030106052A1 (en) * 2001-12-03 2003-06-05 Morrison John A. System and method for high availability firmware load
US7200758B2 (en) * 2002-10-09 2007-04-03 Intel Corporation Encapsulation of a TCPA trusted platform module functionality within a server management coprocessor subsystem
US7246266B2 (en) * 2002-11-21 2007-07-17 Chris Sneed Method and apparatus for firmware restoration in modems
US7809836B2 (en) * 2004-04-07 2010-10-05 Intel Corporation System and method for automating bios firmware image recovery using a non-host processor and platform policy to select a donor system
JP2005353149A (ja) * 2004-06-09 2005-12-22 Matsushita Electric Ind Co Ltd 不揮発性半導体記憶装置
US20070022243A1 (en) * 2005-07-22 2007-01-25 John Rudelic Method and apparatus capable of disabling authenticated operations and guaranteed secure boot in a wireless platform
JP5186551B2 (ja) 2007-04-13 2013-04-17 インターナショナル・ビジネス・マシーンズ・コーポレーション ピア・プログラマブル・ハードウェア・デバイスの自動ファームウェア復元方法及びプログラム
US20090006757A1 (en) 2007-06-29 2009-01-01 Abhishek Singhal Hierarchical cache tag architecture
US8065510B2 (en) * 2007-07-30 2011-11-22 Hewlet-Packard Development Company, L.P. System and methods of retrieving firmware between network locations
JP4519923B2 (ja) * 2008-02-29 2010-08-04 株式会社東芝 メモリシステム
US8214653B1 (en) * 2009-09-04 2012-07-03 Amazon Technologies, Inc. Secured firmware updates
US20120137137A1 (en) 2010-11-30 2012-05-31 Brickell Ernest F Method and apparatus for key provisioning of hardware devices
US8612676B2 (en) * 2010-12-22 2013-12-17 Intel Corporation Two-level system main memory
WO2013095639A1 (en) 2011-12-23 2013-06-27 Intel Corporation Utility and lifetime based cache replacement policy
JP5959942B2 (ja) 2012-06-04 2016-08-02 キヤノン株式会社 画像処理装置、その制御方法、及びプログラム、並びにファームウェア更新システム
US20140047175A1 (en) 2012-08-09 2014-02-13 International Business Machines Corporation Implementing efficient cache tag lookup in very large cache systems
US9563497B2 (en) * 2012-12-19 2017-02-07 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Correcting a failure associated with a current firmware image
US9594638B2 (en) 2013-04-15 2017-03-14 Amazon Technologies, Inc. Host recovery using a secure store
TW201516654A (zh) * 2013-10-23 2015-05-01 Hon Hai Prec Ind Co Ltd 電腦bios恢復系統及方法
US9542196B2 (en) 2014-02-28 2017-01-10 Intel Corporation Communication terminal and method for providing configuration data for a modem with system boot firmware
US9594910B2 (en) 2014-03-28 2017-03-14 Intel Corporation In-system provisioning of firmware for a hardware platform

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1226060A (zh) * 1997-10-27 1999-08-18 索尼欧州公司 具有外部接口的程序目标和程序部件的***
US7043664B1 (en) * 2002-10-31 2006-05-09 Microsoft Corporation Firmware recovery
CN1577252A (zh) * 2003-07-29 2005-02-09 刘丁阳 一种自动安装设备驱动程序的方法及设备
US8555273B1 (en) * 2003-09-17 2013-10-08 Palm. Inc. Network for updating electronic devices
US20100199078A1 (en) * 2009-02-04 2010-08-05 Novatek Microelectronics Corp. Method of safe and recoverable firmware update and device using the same
US20130268746A1 (en) * 2012-04-10 2013-10-10 Asmedia Technology Inc. System-on-chip and booting method thereof

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107766171A (zh) * 2016-08-18 2018-03-06 华邦电子股份有限公司 与非型快闪存储器及其读出方法
US10957415B2 (en) 2016-08-18 2021-03-23 Winbond Electronics Corp. NAND flash memory and reading method thereof
CN107766171B (zh) * 2016-08-18 2022-04-01 华邦电子股份有限公司 与非型快闪存储器及其读出方法
CN112005212A (zh) * 2018-04-20 2020-11-27 艾里逊变速箱公司 用于启动变速器控制模块的空中编程的***和方法
CN115136116A (zh) * 2019-12-06 2022-09-30 美国莱迪思半导体公司 用于可编程逻辑设备的快速引导***和方法
CN115136116B (zh) * 2019-12-06 2024-04-09 美国莱迪思半导体公司 用于可编程逻辑设备的快速引导***和方法

Also Published As

Publication number Publication date
EP3123312B1 (en) 2019-02-20
CN106030525B (zh) 2019-12-10
US20170213034A1 (en) 2017-07-27
EP3123312A1 (en) 2017-02-01
KR20160113693A (ko) 2016-09-30
US9594910B2 (en) 2017-03-14
KR101825005B1 (ko) 2018-02-05
JP6333993B2 (ja) 2018-05-30
WO2015149020A1 (en) 2015-10-01
US20150277930A1 (en) 2015-10-01
EP3123312A4 (en) 2017-11-01
JP2017511530A (ja) 2017-04-20
US10402565B2 (en) 2019-09-03

Similar Documents

Publication Publication Date Title
CN106030525A (zh) 用于硬件平台的固件的***内供应
US10853519B2 (en) System on chip and method for implementing secure operating system switching
KR102074018B1 (ko) 저전력 상태로의 포트 진입을 동기화하기 위한 시스템, 방법 및 장치
US20190172047A1 (en) System on chip and processing device
EP2778945B1 (en) Systems, methods, and apparatuses for handling timeouts
JP5380276B2 (ja) 共用不揮発性メモリ・アーキテクチャ
US9152428B2 (en) Alternative boot path support for utilizing non-volatile memory devices
CN102929674A (zh) 电子装置以及开机方法
KR102401088B1 (ko) 보안 장치, 이를 포함하는 전자 장치 및 전자 장치의 동작 방법
ES2965751T3 (es) Dispositivo electrónico y procedimiento de uso de su espacio de almacenamiento
CN111373379A (zh) 一种数据备份方法及终端
CN116266467A (zh) 具有安全启动更新及自动恢复的存储器装置
CN103198257B (zh) 在混合信息处理设备环境下的安全性重新使用
CN112860144B (zh) 一种控制方法及***
JP5698194B2 (ja) 情報端末装置を同期する方法および情報端末装置
JP5715592B2 (ja) ディスク・ドライブに対するアクセスの制御方法およびコンピュータ・システム
CN116107411B (zh) 开机方法及相关装置
US12013795B1 (en) System and method for managing ports of data processing systems and attached devices
US20220043915A1 (en) Storage of network credentials
JP2017004200A (ja) Pxeプログラムに対応した無線lan機能を内蔵したタブレット端末
KR20080010084A (ko) 이동식 시모스 장치를 구비한 퍼스널 컴퓨터

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant