CN107667346B - 用于基于熔断的固件块分派的设备、方法和系统 - Google Patents
用于基于熔断的固件块分派的设备、方法和系统 Download PDFInfo
- Publication number
- CN107667346B CN107667346B CN201680030403.8A CN201680030403A CN107667346B CN 107667346 B CN107667346 B CN 107667346B CN 201680030403 A CN201680030403 A CN 201680030403A CN 107667346 B CN107667346 B CN 107667346B
- Authority
- CN
- China
- Prior art keywords
- firmware
- fuse
- block
- module
- information
- 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.)
- Active
Links
Images
Classifications
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4403—Processor initialisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- 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/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
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)
- Stored Programmes (AREA)
Abstract
本公开涉及基于熔断的固件块分派。设备可以基于设备中的处理模块中的熔断设置来确定在设备的初始化期间要加载的固件块。固件模块可以至少包括包含了引导代码和固件信息表(FIT)的非易失性(NV)存储器。在初始化期间,引导代码可以使得处理模块从熔断模块中读取熔断信息,并且基于熔断信息来确定要加载的至少一个固件块。例如,熔断信息可以包括熔断字符串,并且处理模块可以将熔断字符串与FIT表进行比较,确定FIT表中的与熔断字符串相关联的至少一个指针,并基于NV存储器中的由至少一个指针所识别的位置(例如,偏移)来加载至少一个固件块。
Description
技术领域
本公开涉及设备固件实现,并且更具体地,涉及一种用于基于处理器模块中的熔断来确定固件块以用于分派的系统。
背景技术
设备初始化可以包括当设备(例如,上电、重新启动等)被初始化时执行的操作。例如,在设备初始化期间,固件(例如,被编码在设备中的至少一个电子部件中的软件)可以由设备中的至少一个微处理器加载和/或执行以对装备进行配置并将软件加载到设备中。基本软件资源可以包括例如内核(例如,用于管理设备硬件和高级软件组件(如操作系统(OS))之间的交互的软件)、驱动器、实用程序等。因此,OS的用于与设备中的硬件进行交互的能力可能依赖于在设备初始化期间加载的固件,并且在设备初始化期间加载的固件可能高度取决于被安装在设备中或与设备耦合的装备。
传统上,固件由设备的制造商处的设计人员开发和维护。这有助于确保固件将按照预期并且以稳定的方式来执行、有助于确保固件是安全的、有助于确保更新将维持稳定的性能,等等。此外,可以通过“锁定”固件以防止中间用户(例如,原始装备制造商、集成者等)和/或终端用户能够执行修改,来维持这些相同的操作特性固件。虽然这些行为的理由是清楚的,但在不断变化的现代技术的领域中,它们则变得有问题。依赖于开发人员的特定分组来针对复杂的平台开发固件可能会创建“筒仓效应”,这是因为在负责硬件和固件的开发团队之间可能存在分歧。这对固件开发人员针对各种不同的消费者服务造成了很大的负担。此外,开源固件的可用性(例如,可能无需付费或无需许可就可以公开获得的固件代码和开发工具)可以有利于中间和/或终端用户制定他们自己的固件,该固件可以例如加载如下特征:例如增强的安全资源、定制的装备配置和/或驱动器、性能跟踪和/或增强型应用程序、终端用户特定的实用程序等。用户渴望由开源固件提供的可定制性。
附图说明
随着进行以下的具体实施方式并且当参考附图时,所要求保护的主题的各种实施例的特征和优点将变得显而易见,其中相似的附图标记表示相似的部分,并且其中:
图1示出了根据本公开的至少一个实施例的被配置用于基于熔断的固件块分派的示例设备;
图2示出了根据本公开的至少一个实施例的可用的用于设备的示例配置;
图3示出了根据本公开的至少一个实施例的用于熔断模块的示例配置;
图4示出了根据本公开的至少一个实施例的用于基于熔断的固件块分派的示例操作。
虽然以下具体实施方式将参考说明性实施例来进行,但是实施例的许多替代方案、修改和变化对于本领域技术人员而言将是显而易见的。
具体实施方式
本公开涉及基于熔断的固件块分派。通常,设备可以基于在设备中的处理模块中的熔断设置来确定在设备的初始化期间要加载的固件块。设备中的固件模块可以至少包括包含了引导代码和固件信息表(FIT)的非易失性(NV)存储器。在设备初始化期间,处理模块可以执行引导代码。引导代码可以使处理模块从处理模块内的熔断模块中至少读取熔断信息,并且基于熔断信息来确定要加载的至少一个固件块。例如,熔断信息可以至少包括熔断字符串(fuse string),并且处理模块可以将熔断字符串与FIT表进行比较,确定FIT表中的与熔断字符串相关联的至少一个指针,并从NV存储器中的由至少一个指针识别的至少一个位置(例如存储器偏移)处加载至少一个固件块。此外,在一些实施例中,引导代码可以使得处理模块还加载安全资源以在至少一个固件块被加载之前对该至少一个固件块进行认证。
在至少一个实施例中,用于基于熔断来分派固件块的示例设备可以包括固件模块、至少一个固件块和处理模块。固件模块可以包括用于存储引导代码的至少一个NV存储器。处理模块可以至少包括数据处理电路和熔断模块。数据处理电路可以用于在设备初始化期间执行引导代码,引导代码使得数据处理电路至少从熔断模块中读取熔断信息,基于熔断信息确定要加载的至少一个固件块并且加载该至少一个固件块。
固件模块可以至少包括例如FIT,该FIT包括指向至少一个固件块的至少一个指针。与每个固件块相关联的代理可以用于在固件信息表中创建针对至少一个固件块的至少一个指针。至少一个固件块可以被存储在NV存储器中,并且至少一个指针是指向NV存储器中的至少一个固件块所位于的位置的存储器偏移。
在至少一个实施例中,可以基于包括多个子系统的片上系统架构来配置处理模块。熔断信息可以至少包括熔断字符串,该熔断字符串专用于向处理模块指示多个固件块中的哪一个至少与在设备初始化期间要加载的多个子系统中的每一个相对应。在相同或不同的实施例中,引导代码可以用于使得数据处理电路在设备初始化期间也加载安全资源。安全资源可以用于使得数据处理电路在加载至少一个固件块之前对该至少一个固件块进行认证。
与本公开一致,示例固件模块可以包括至少一个非易失性存储器以用于存储引导代码、固件信息表以及至少一个固件块,其中引导代码用于使得处理模块从处理模块中的熔断模块中读取熔断信息,基于所述熔断信息确定要加载的至少一个固件块并且加载所述至少一个固件块。FIT可以包括指向至少一个非易失性存储器中的至少一个固件块的至少一个指针。引导代码可以用于使得处理模块还加载安全资源以在加载至少一个固件块之前对该至少一个固件块进行认证。与本公开一致,用于基于熔断的固件块分派的示例方法可以包括在设备的初始化期间执行存储在固件模块中的引导代码,从设备中的处理模块中的熔断模块中读取熔断信息,基于熔断信息来确定要加载的至少一个固件块并加载至少一个固件块。
图1示出了根据本公开的至少一个实施例的被配置用于基于熔断的固件块分派的示例设备。以下可以参考或可以采用通常与以下相关联的技术:用于实现固件(例如,基本输入输出系统(BIOS)、统一可扩展固件接口(UEFI)等)的某些技术、某些集成电路(IC)技术例如与由英特尔公司制造的微处理器相关的那些技术,等等。本文中采用这些参考仅用于说明的目的,而不是旨在将与本公开一致的实施例限制于实现的任何特定的方式。虽然这些示例技术可以为理解实施例提供基础,但是实际实现可以采用现在存在或将来开发的其他类似技术。
通常,设备100可以是包括用于处理数据(例如,接收数据输入、处理数据以及生成输出)的资源的任何装置。设备100的示例可以包括但不限于:移动通信设备,例如基于以下OS的蜂窝电话或智能电话:来自谷歌公司的OS、来自苹果公司的或Mac来自微软公司的OS、来自Linux Foundation的OS、来自MozillaProject的来自黑莓公司的来自惠普公司的OS、来自Symbian Foundation的等;移动计算设备,例如以下平板电脑:如来自苹果公司的来自微软公司的来自三星公司的Galaxy来自亚马逊公司的等、包括来自英特尔公司的低功率芯片组的上网本、笔记本电脑、膝上型电脑、掌上电脑等;可穿戴设备,例如腕表形状因子计算设备(如来自三星的Galaxy)、眼镜形状因子计算设备/用户接口(如来自谷歌公司的Google)、虚拟现实(VR)头戴式耳机设备(如来自三星公司的GearOculus VR公司的Oculus等);典型的静态计算设备,例如桌上型计算机、服务器、以高性能计算(HPC)架构组织的一组计算设备、智能电视或其他类型的“智能”设备、小形状因子计算解决方案(例如,针对空间有限的应用、电视机顶盒等)如来自英特尔公司的下一代计算单元(Next Unit ofComputing(NUC))平台等。
设备100可以至少包括例如处理模块102和固件模块104。与本公开一致,处理模块102可以被配置为片上系统(SoC)。SoC可以将通常与计算设备相关联的不同功能(例如,子系统)集成到单个IC封装中。将各种子系统并入到处理模块102中可以允许将设备100的总体尺寸缩小,这是因为该功能不再需要由设备100中的独立资源来提供。可以被并入处理模块102的子系统的示例可以包括但不限于数据处理电路106、本地存储器108、接口电路110等。数据处理电路106可以至少包括数据处理硬件(例如,至少一个处理器核心)。本地存储器108可以包括易失性存储器(例如,用于保持由数据处理电路106处理的数据的高速缓存存储器)和/或可以以半永久方式存储数据的NV存储器。接口电路110可以至少包括允许处理模块与设备100中的其他资源进行交互的硬件资源。处理模块100还可以包括熔断模块112。如本文所提及的,“熔断”可以是数字位,其可被置位/复位(例如,0或1),并且可以至少由数据处理电路106可读。例如,熔断模块112可以包括被组织为但不限于配置熔断114和块识别(ID)熔断116的熔断的至少一个阵列。配置熔断114可以包括控制处理模块102的初始化的熔断、指示在处理模块102中可用的特征的熔断、启用/禁用处理模块102内的特征的熔断等。
与本公开一致,熔断模块112中的块ID熔断116可以是专用于识别在设备100的初始化期间要加载的固件块的熔断。在至少一个实施例中,固件模块104可以包括引导代码118、块存储器120和FIT表122。引导代码118在初始化期间可以被执行以对设备100进行配置。例如,引导代码118可以对处理模块102进行配置,并且可以使各种代码被加载到设备100中以支持处理模块102和设备100中的其他系统。在至少一个实施例中,引导代码118可以是p代码(例如,由数据处理电路106可执行的汇编语言)。块存储器120可以是NV存储器,其用于至少存储固件块124A、块124B、块124C...块124n(以下称为“块124A...n”)。如本文所提及的,固件块可以是可以由数据处理电路106单独地加载或以组为单位加载的代码的部分。例如,假设处理模块102可以被认为是包括多个子系统的SoC,则至少一个块124A...n可以被加载以用于每个子系统。块124A...n可以包括例如硬件驱动器、实用程序、用于支持处理模块102中的子系统或设备100其他地方存在的资源的操作的软件接口、软件库、安全资源、采用各种开源固件技术生成的用户自定义代码,开源固件技术包括但不限于coreboot(www.coreboot.org)、EDK II(www.tianocore.org)、U-Boot(http://www.denx.de/wiki/U-Boot)等。FIT表122可以至少包括熔断信息和指向块存储器120中的块124A...n的位置的相对应的指针。熔断信息可以包括一个熔断设置或不同熔断设置的组合。指针可以包括指示在块存储器120中块124A...n中的每一个开始的位置、块124A...n中的每一个的长度等的存储器偏移。在至少一个实施例中,代理(例如,在设备100中自主运行的程序)可以与一个或多个块124A...n相关联。例如,代理可以将块(例如块124A)安装到块存储器120中,并将具有相对应的指针的熔断信息输入到FIT表122中,使得读取块ID熔断116中的熔断信息可以触发将块124A从块存储器120中的适当位置加载到设备100中。
在操作的示例中,设备初始化(例如,由于设备100的上电、重新启动等)可以使得数据处理电路106执行引导代码118,如图1中的“A”所示。引导代码118的执行可以使得数据处理电路106基于配置熔断114来对硬件(例如,处理模块102和/或其他资源)进行配置,如图1中的“B”所示。数据处理电路106还可以读取块ID熔断116(如图1中的“C”所示)以获得包括例如熔断字符串(例如,一系列熔断设置)的熔断信息。然后可以将熔断字符串与FIT表122进行比较(如图1中的“D”所示)以获得指向块存储器120中的要加载的块124A...n的指针。在图1的示例中,熔断字符串可以指示加载某些固件(例如,块124A和124C,如图1中的“E”所示)。数据处理电路106可以继续进行到加载块124A和124C,并且可以继续设备100的初始化,直到完成。设备100中的块124A...n的加载在本文中也可以被称为“分派”,这是因为这些块正被“分派”以用于加载到设备100中。
在至少一个实施例中,处理模块102可以在将块124A...C加载到设备100中之前加载安全资源。例如,这些安全资源可以确保块124A...C是安全加载的(例如,不包括恶意软件、不会损害设备100的稳定性或安全性等)。例如,每个块124A...n可以使用与保持在处理模块102中(例如,在本地存储器108中)的公钥相对应的私钥来进行签名。然后,每个块124A...n可以在加载之前通过验证签名来被认证。在另一个实施例中,可信执行环境(TEE)可以在加载块124A...n之前在设备100中被建立。例如,来自因特尔公司的软件保护扩展(Software Guard Extensions(SGX))技术可以促进在设备100中安全(例如加密的)存储器区域的建立,其中仅可以执行已知良好的应用,例如安全相关的应用、控制对设备100中的关键系统的访问的应用等。已知良好的应用可以测量(例如,确定其哈希值)随后被加载的软件如块124A...n,并且可以将这些测量与块124A...n的已知良好的版本的测量进行比较,以确保仅加载块124A...n的安全版本。以这种方式,与本公开内容一致的实施例因为可以加载各种块124A...n不仅是灵活的,而且它们也可以是安全的以免于恶意软件的破坏。
各种益处可以被实现在与本公开一致的实施例中。块124A...n的模块化本质可以允许开发可以跨越不同平台被普遍采用的固件。例如,可以将固件映像加载到包含各种块124A...n的设备100中,但是可以仅加载设备100中所需的块124A...n。这减轻了针对每种类型的设备100的定制固件映像的需要。固件映像可以通过改变、添加、移除块124A...n来进行修改,而无需重新制定整个固件映像。硬件设计人员可以开发新的块124A...n以支持不断出现的装备。这些新的块124A...n可以在它们被开发并被自动加载到包括新的装备的设备100中时被添加到固件映像中。固件开发的这种方式可以更好地耦合固件和硬件,并可以减少对集中式固件开发组的依赖。此外,终端用户能够开发他们自己的块124A...n(例如,使用开源技术)以用于包含在设备100中,而不会损害固件的其余部分。例如,设备100可以被开发以加载保护关键和/或易受攻击的系统免受修改或攻击的块124A...n。因此,终端用户可以利用他们自己的块124A...n将功能添加到设备100,而不会危及设备100的稳定性、安全性等。
图2示出了根据本公开的至少一个实施例的可用的用于系统的示例配置。在本公开中,在项目编号(例如,100’)之后包括撇号可以指示正在示出特定项目的示例性实施例。例如,设备100’能够执行图1中公开的活动任何一个活动或全部活动。然而,设备100’仅被呈现为在与本公开一致的实施例中的可用的装置的示例,并且不旨在将本文中公开的实施例中的任何一个实施例限制为实现的任何特定方式。
设备100’可以包括例如系统模块200,其用于管理设备的操作。系统模块200可以包括例如处理模块102’、存储器模块202、功率模块204、用户接口模块206和通信接口模块208。设备100’还可以包括通信模块210。虽然通信模块210被示为与系统模块200是分开的,但是提供图2所示的示例配置在本文中仅为了说明。与通信模块210相关联的功能中的一些功能或全部功能也可以被并入系统模块200中。
在设备100’中,处理模块102’可以包括位于单独的组件中的一个或多个处理器,或者可替代地在单个组件中(例如,在SoC中)的一个或多个处理核心中,与处理器相关的支持电路(例如,桥接接口等)一起。示例处理器可以包括但不限于从英特尔公司可获得的各种基于x86的微处理器,包括Pentium、Xeon、Itanium、Celeron、Atom、Quark、Core i系列、Core M系列产品系列中的那些处理器、进阶精简指令集(例如,精简指令集计算)机器或“ARM”处理器等。支持电路的示例可以包括被配置为提供接口的芯片组(例如,从英特尔公司可获得的北桥、南桥等),处理模块102’可以通过该接口与设备100’中的可以在不同总线上、以不同速度等进行操作的其他系统组件进行交互。此外,通常与支持电路相关联的功能中的一些功能或全部功能也可以被包括在与处理器(例如,诸如在从英特尔公司可获得的Sandy Bridge系列处理器中)相同的物理封装中。
处理模块102’可以被配置为执行设备100’中的各种指令。指令可以包括如下程序代码,所述程序代码被配置为使得处理模块102’执行与读取数据、写入数据、处理数据、制定数据、转换数据、变换数据等相关的活动。信息(例如,指令、数据等)可以存储在存储器模块202中。存储器模块202可以包括固定或可移动格式的随机存取存储器(RAM)和/或只读存储器(ROM)。RAM可以包括被配置为在设备100’的操作期间保持信息的易失性存储器,诸如例如静态RAM(SRAM)或动态RAM(DRAM)。ROM可以包括基于BIOS、UEFI等配置的用于在设备100’被激活时提供指令的非易失性(NV)存储器模块、可编程存储器(例如电子可编程ROM(EPROMS)、闪存等)。其他固定/可移动的存储器可以包括但不限于磁存储器(例如软盘、硬盘驱动器等)、电子存储器(例如固态闪存(例如,嵌入式多媒体卡(eMMC)等))、可移动存储器卡或棒(例如,微存储设备(uSD)、USB等)、光存储器(例如基于压缩盘的ROM(CD-ROM)、数字视频盘(DVD)、蓝光盘等)。
功率模块204可以包括内部电源(例如,电池、燃料电池等)和/或外部电源(例如,机电或太阳能发电机、电力网、外部燃料电池等)和被配置为向装置100’供给操作所需的电力的相关电路。用户接口模块206可以包括允许用户与设备100’进行交互的硬件和/或软件,诸如例如各种输入机制(例如,麦克风、开关、按钮、旋钮、键盘、扬声器、触敏表面、被配置为捕获图像和/或感测接近度、距离、运动、姿势、定向、生物特征数据的一个或多个传感器等)和各种输出机构(例如,扬声器、显示器、点亮/闪烁的指示器、用于振动、运动的机电组件等)。用户接口模块206中的硬件可以被并入设备100’内和/或可以经由有线或无线通信介质被耦合到设备100’。用户接口模块206在某些情况下可以是可选的,诸如例如,其中设备100’是不包括用户接口模块206而是依赖于另一设备(例如,管理终端)以用于用户接口功能的服务器(例如,机架式服务器、刀片式服务器等)的情况。
通信接口模块208可以被配置为管理用于通信模块210的分组路由和其他控制功能,其可以包括被配置为支持有线和/或无线通信的资源。在一些实例中,设备100’可以包括由集中式通信接口模块208管理的多于一个的通信模块210(例如,包括用于有线协议和/或无线无线电的单独的物理接口模块)。有线通信可以包括串行和并行有线介质,诸如例如以太网、USB、火线、Thunderbolt、数字视频接口(DVI)、高清多媒体接口(HDMI)等。无线通信可以包括例如近距离无线介质(例如,诸如基于RF识别(RFID)之类的射频(RF)或近场通信(NFC)标准、红外(IR)等)、短距离无线介质(例如,蓝牙、WLAN、Wi-Fi等)、远距离无线介质(例如,蜂窝广域无线电通信技术、基于卫星的通信等)、经由声波的电子通信等。在一个实施例中,通信接口模块208可以被配置为防止在通信模块210中活跃的无线通信彼此进行干扰。在执行该功能时,通信接口模块208可以基于例如等待传输的消息的相对优先级来安排通信模块210的活动。尽管图2中公开的实施例示出了通信接口模块208与通信模块210是分离的,但是通信接口模块208和通信模块210的功能也可能被并入到相同的模块中。
与本公开一致,处理模块102’可以在设备100’的初始化期间至少与存储器模块202进行交互。例如,处理模块102’可以至少包括数据处理电路106’和熔断模块112’,而存储器模块202可以至少包括固件模块104’。在操作的示例中,至少数据处理电路106’可以执行存储在固件模块104’中的引导代码118。然后,引导代码118可以使得数据处理电路106’然后从块ID熔断116读取熔断字符串,将熔断字符串与固件模块104’中的FIT表122进行比较(例如,将熔断字符串与FIT表122中的由代理配置的熔断设置和/或熔断设置的组合进行比较)并且加载由FIT表122指示为与熔断字符串相对应的块124A...n。
图3示出了根据本公开的至少一个实施例的用于熔断模块的示例配置。熔断模块112’可以包括例如熔断控制器300、至少包括模拟熔断阵列302和数字熔断阵列304’的配置熔断114’、熔断端点(EP)306、熔断端点308和至少包括块ID熔断阵列310的块ID熔断116’。熔断控制器300可以包括控制熔断阵列的逻辑电路。例如,熔断控制器300可以对模拟熔断阵列302、数字熔断阵列304和/或块ID熔断阵列310中的熔断进行置位/复位。在至少一个实施例中,数据处理电路106可以利用熔断控制器300来读取阵列302、304和/或306中的熔断。模拟熔断阵列302可以包括控制处理模块102的模拟元件的熔断。数字熔断元件可以包括控制处理模块102的数字元件的熔断。熔断EP 306和308可以分别与模拟熔断阵列302和数字熔断阵列304相对应。熔断EP 306和308可以向熔断控制器300指示模拟熔断阵列302和数字熔断阵列304在何处终止。虽然可能将块ID熔断存储在已经存在的熔断阵列中,但是在至少一个实施例中,块ID熔断阵列310可以是专用于识别在设备100的初始化期间要加载什么代码块124A...D的独立的阵列。块ID熔断阵列310可以被配置为仅利用一个熔断(例如,一比特)来识别要加载的代码块124A...D,或者可以利用熔断的组合来识别要加载的代码块124A...D。
图4示出了根据本公开的至少一个实施例的基于熔断的固件块分派的示例操作。在操作400中,设备可以被初始化(例如,上电、重新启动等)。在至少一个实施例中,在设备的初始化之后是设备中的处理模块执行可以使得处理模块执行操作402至406的引导代码。在操作402中,可以发生处理模块电源初始化。例如,处理模块可以包括完全集成的稳压器(FIVR),其可以被初始化、斜升、调试等,作为操作402的一部分。然后,在操作404中,至少一个时钟可以被初始化。例如,在操作402中,处理模块中的至少一个时钟至少可以被激活。然后,在操作406中,P代码可以被执行。操作408至426可以发生作为操作406的一部分(例如,p代码可以使得处理模块执行操作408至426)。
在操作408中,可以发生熔断下载。熔断下载可以包括从处理模块中的至少一个熔断阵列中读取熔断信息。然后,在操作410中,可以确定在操作408中下载的熔断信息是否指定要加载的单独的固件块。如果在操作410中确定在熔断信息中没有指定单独的块,则在操作412中,标准启动代码映像可以被分派以用于加载。标准启动代码映像可以与设备的类型、处理模块的类型等相对应,并且可以包括用于设备的基本操作所需的所有固件。然后在操作414中,可以完成设备的初始化。
如果在操作410中确定指定了单独的块,则在操作416中,可以通过将下载的熔断信息中的熔断字符串与设备中的固件模块中的FIT表进行比较来确定要加载的特定固件块。然后,在操作418中,可以对是否应该认证要加载的固件块的可靠性。如果在操作418中确定不需要块的认证,则在操作420中,块可以被分派以用于设备初始化,并且在操作414中可以完成初始化。如果在操作418中确定要被加载的块应该首先被认证,则在操作422中,可以采用设备中的安全资源来验证块的可靠性。在操作424中,在确定要被加载的块中的所有块是可靠的之后,在操作420中可以分派用于设备初始化的块。如果在操作424中确定要被加载的块中的任何块不能被认证,则在操作426中可以发生安全异常。安全异常可以包括例如以下中的一个或多个:停止设备初始化、不加载没有被认证的固件块(如果可能的话)、返回到先前良好的设备初始化流程(例如,包括固件模块的已知良好版本)、通知设备用户、中间设备提供商和/或设备制造商在设备初始化期间发生了错误,等等。
虽然图4示出了根据实施例的操作,但是应当理解,不是图4中所描绘的所有操作对于其他实施例都是必需的。实际上,在本文中完全设想到,在本公开的其他实施例中,图4中所描绘的操作和/或本文中描述的其他操作可以以附图中的任何一个附图中都没有具体示出的方式来进行组合,但仍完全与本公开一致。因此,涉及在一个附图中没有确切显示的特征和/或操作的权利要求被认为是在本公开的范围和内容之内的。
如在本申请和权利要求中所使用的,由术语“和/或”连接的项目的列表可以表示所列项目的任何组合。例如,短语“A、B和/或C”可以表示A;B;C;A和B;A和C;B和C;或A、B和C。如在本申请和权利要求中所使用的,由术语“…中的至少一个”连接的项目的列表可以表示所列项目的任何组合。例如,短语“A、B或C中的至少一个”可以表示A;B;C;A和B;A和C;B和C;或A、B和C。
如本文中的任何实施例所使用的,术语“系统”或“模块”可以指代例如被配置为执行上述操作中的任何操作的软件、固件和/或电路。软件可以被体现为被记录在非暂时性计算机可读存储介质上的软件封装、代码、指令、指令集和/或数据。固件可以被体现为在存储器设备中被硬编码(例如,非易失性)的代码、指令或指令集和/或数据。如在本文的任何实施例中所使用的,“电路”可以包括例如单个或以任何组合形式的硬连线电路、可编程电路(例如,包括一个或多个单独的指令处理核心的计算机处理器)、状态机电路、和/或存储由可编程电路执行的指令的固件。这些模块可以共同地或单独地被体现为形成较大系统(例如集成电路(IC)、片上系统(SoC)、桌上型计算机、膝上型计算机、平板计算机、服务器智能电话等等)的一部分的电路。
本文中描述的操作中的任何操作可以被实现在包括一个或多个存储介质(例如,非暂时性存储介质)的系统中,该存储介质具有单独地或组合地存储其上的指令,该指令当由一个或多个处理器执行时,执行该方法。此处,处理器可以包括例如服务器CPU、移动设备CPU和/或其他可编程电路。此外,本文中描述的操作旨在可以被分布在多个物理设备之中,例如在多于一个不的同物理位置处的处理结构。存储介质可以包括任何类型的有形介质,例如:任何类型的盘(包括硬盘、软盘、光盘、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)以及磁光盘)、半导体器件(例如只读存储器(ROM)、随机存取存储器(RAM)(例如动态和静态RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存、固态磁盘(SSD)、嵌入式多媒体卡(eMMC)、安全数字输入/输出(SDIO)卡、磁卡或光卡)、或适用于存储电子指令的任何类型的介质。其他实施例可以被实现为由可编程控制设备执行的软件模块。
因此,本公开涉及基于熔断的固件块分派。一种设备可以基于设备中的处理模块中的熔断设置来确定在设备的初始化期间要加载的固件块。固件模块可以至少包括包含了引导代码和固件信息表(FIT)的非易失性(NV)存储器。在初始化期间,引导代码可以使得处理模块从熔断模块中读取熔断信息,并且基于熔断信息来确定要加载的至少一个固件块。例如,熔断信息可以包括熔断字符串,并且处理模块可以将熔断字符串与FIT表进行比较,确定FIT表中的与熔断字符串相关联的至少一个指针,并基于NV存储器中的由至少一个指针所识别的位置(例如,偏移)来加载至少一个固件块。
以下示例关于另外的实施例。本公开的以下示例可以包括以下主题材料:例如设备、方法、用于存储指令的至少一个机器可读介质,所述指令当被执行时使得机器基于该方法来执行动作、用于基于该方法来执行动作的单元和/或用于基于熔断的固件块分派的系统。
根据示例1,提供了一种用于基于熔断来分派固件块的设备。所述设备可以包括固件模块,其包括用于存储引导代码的至少一个非易失性存储器、至少一个固件块、以及处理模块,其至少包括数据处理电路和熔断模块,其中,所述数据处理电路用于在设备初始化期间执行所述引导代码,所述引导代码使得所述数据处理电路至少从所述熔断模块中读取熔断信息,基于所述熔断信息来确定要加载的至少一个固件块,并且加载所述至少一个固件块。
示例2可以包括示例1所述的元件,其中,所述固件模块至少包括固件信息表,所述固件信息表包括指向所述至少一个固件块的至少一个指针。
示例3可以包括示例2所述的元件,其中,与每个固件块相关联的代理用于在所述固件信息表中创建针对所述至少一个固件块的所述至少一个指针。
示例4可以包括示例2至3中任一项所述的元件,其中,所述至少一个固件块被存储在所述非易失性存储器中,并且所述至少一个指针是指向所述非易失性存储器中的所述至少一个固件块所位于的位置的存储器偏移。
示例5可以包括示例1至4中任一项所述的元件,其中,所述处理模块是基于包括多个子系统的片上系统架构来进行配置的。
示例6可以包括示例5所述的元件,其中,所述多个子系统至少包括所述数据处理电路、本地存储器和接口电路。
示例7可以包括示例5至6中任一项所述的元件,其中,所述熔断信息至少包括熔断字符串,所述熔断字符串专用于向所述处理模块指示多个固件块中的哪一个至少与在设备初始化期间要加载的所述多个子系统中的每一个相对应。
示例8可以包括示例1至7中任一项所述的元件,其中,所述引导代码用于使得所述数据处理电路在设备初始化期间还加载安全资源。
示例9可以包括示例8所述的元件,其中,所述安全资源用于使得所述数据处理电路在加载所述至少一个固件块之前对所述至少一个固件块进行认证。
示例10可以包括示例9所述的元件,其中,所述安全资源经由检查与所述至少一个固件块相对应的签名,或者测量所述至少一个固件块并且将所述测量与已知良好的固件块的先前的测量进行比较来对所述至少一个固件块进行认证。
示例11可以包括示例1至10中任一项所述的元件,其中,所述处理模块是基于包括多个子系统的片上系统架构来进行配置的,该熔断信息至少包括熔断字符串,所述熔断字符串专用于向所述处理模块指示多个固件块中的哪一个至少与在设备初始化期间要加载的所述多个子系统中的每一个相对应。
示例12可以包括示例1至11中任一项所述的元件,其中,所述引导代码用于使得所述数据处理电路在设备初始化期间还加载安全资源,所述安全资源用于使得所述数据处理电路在加载所述至少一个固件块之前对所述至少一个固件块进行认证。
示例13可以包括示例1至12中任一项所述的元件,其中,所述熔断模块包括配置熔断、块ID熔断、至少与所述配置熔断相对应的至少一个熔断端点以及熔断控制器。
示例14可以包括示例13所述的元件,其中,所述配置熔断包括模拟熔断阵列或数字熔断阵列中的至少一个。
示例15可以包括示例13至14中任一项所述的元件,其中,所述块ID熔断包括至少一个块ID熔断阵列。
示例16可以包括示例1至15中任一项所述的元件,其中,所述至少一个固件块是利用开源固件技术来制定的。
根据示例17,提供了固件模块。所述固件模块可以包括至少一个非易失性存储器以用于存储引导代码、固件信息表以及至少一个固件块,其中,所述引导代码用于使得处理模块从所述处理模块中的熔断模块中读取熔断信息,基于所述熔断信息来确定要加载的至少一个固件块并且加载所述至少一个固件块。
示例18可以包括示例17所述的元件,其中,所述固件信息表包括指向所述至少一个非易失性存储器中的所述至少一个固件块的至少一个指针。
示例19可以包括示例18所述的元件,其中,所示指针是指示所述至少一个固件块在所述非易失性存储器中的位置的存储器偏移。
示例20可以包括示例17至19中任一项所述的元件,其中,所述引导代码用于使得所述处理模块还加载安全资源以在加载所述至少一个固件块之前对所述至少一个固件块进行认证。
根据示例21,提供了一种用于基于熔断的固件块分派的方法。所述方法可以包括在设备的初始化期间,执行存储在固件模块中的引导代码,从所述设备中的处理模块中的熔断模块中读取熔断信息,基于所述熔断信息来确定要加载的至少一个固件块,并且加载所述至少一个固件块。
示例22可以包括示例21所述的元件,并且还可以包括在读取所述熔断信息之前,对所述处理模块中的功率资源和至少一个时钟进行初始化。
示例23可以包括示例21至22中任一项所述的元件,其中,读取熔断信息包括确定单独的固件块是否被指定用于加载。
示例24可以包括示例23所述的元件,并且还可以包括如果确定单独的固件块没有被指定用于加载,则加载标准启动代码映像。
示例25可以包括示例21至24中任一项所述的元件,其中,读取熔断信息包括从所述熔断模块读取熔断字符串。
示例26可以包括示例25所述的元件,其中,确定要加载的至少一个固件块包括将所述熔断字符串与所述固件模块中的固件信息表进行比较。
示例27可以包括示例21至26中任一项所述的元件,并且还可以包括加载安全资源以在加载所述至少一个固件模块之前对所述至少一个固件模块进行认证。
示例28可以包括示例21至27中任一项所述的元件,其中,读取熔断信息包括从所述熔断模块读取熔断字符串并且确定要加载的至少一个固件块包括将所述熔断字符串与所述固件模块中的固件信息表进行比较。
根据示例29,提供了一种至少包括设备的系统,所述系统被布置为执行根据上述示例21至28中任一项所述的方法。
根据示例30,提供了一种被布置为执行根据上述示例21至28中任一项所述的方法的芯片组。
根据示例31,提供了包括多个指令的至少一个机器可读介质,所述指令响应于在计算设备上被执行,使得所述计算设备执行根据上述示例21至28中任一项所述的方法。
根据示例32,提供了一种被配置用于基于熔断的固件块分派的设备,所述设备被布置为执行根据上述示例21至28中任一项所述的方法。
根据示例33,提供了一种用于基于熔断的固件块分派的系统。所述系统可以包括用于在设备的初始化期间执行存储在固件模块中的引导代码的单元,用于从所述设备中的处理模块中的熔断模块中读取熔断信息的单元,用于基于所述熔断信息来确定要加载的至少一个固件块的单元以及用于加载所述至少一个固件块的单元。
示例34可以包括示例33所述的元件,并且还可以包括用于在读取所述熔断信息之前对所述处理模块中的功率资源和至少一个时钟进行初始化的单元。
示例35可以包括示例33至34中任一项所述的元件,其中,所述用于读取熔断信息的单元包括用于确定单独的固件块是否被指定用于加载的单元。
示例36可以包括示例35所述的元件,并且还可以包括用于如果确定单独的固件块没有被指定用于加载则加载标准启动代码映像的单元。
示例37可以包括示例33至36中任一项所述的元件,其中,所述用于读取熔断信息的单元包括用于从所述熔断模块读取熔断字符串的单元。
示例38可以包括示例37所述的元件,其中,所述用于确定要加载的至少一个固件块的单元包括用于将所述熔断字符串与所述固件模块中的固件信息表进行比较的单元。
示例39可以包括示例33至38中任一项所述的元件,并且还可以包括用于在加载所述至少一个固件模块之前加载安全资源以对所述至少一个固件模块进行认证的单元。
示例40可以包括示例33至39中任一项所述的元件,其中,所述用于读取熔断信息的单元包括用于从所述熔断模块中读取所述熔断字符串的单元,并且所述用于确定要加载的所述至少一个固件块的单元包括用于将所述熔断字符串与所述固件模块中的固件信息表进行比较的单元。
本文中已经采用的术语和表达用作进行描述而不是限制的术语,并且在使用这些术语和表达上不旨在排除所示和所描述的特征的任何等同物(或其一部分),并且应该认识到在权利要求的范围内可以进行各种修改。因此,权利要求旨在涵盖所有这样的等同物。
Claims (22)
1.一种用于基于熔断来分派固件块的设备,包括:
固件模块,其包括用于存储引导代码的至少一个非易失性存储器;
至少一个固件块;以及
处理模块,其至少包括数据处理电路和熔断模块,其中:
所述熔断模块包括熔断信息,其中,所述熔断信息包括至少一个熔断字符串,所述熔断字符串包括多个熔断,并且其中,所述多个熔断中的每个熔断是能够在置位值与复位值之间配置并且能够由所述数据处理电路读取的数字位;
所述数据处理电路用于在设备初始化期间执行所述引导代码,所述引导代码使得所述数据处理电路至少从所述熔断模块中读取熔断信息,基于所述熔断信息来确定要加载的至少一个固件块,并且加载所述至少一个固件块;
其中,所述固件模块还至少包括固件信息表,所述固件信息表包括指向所述至少一个固件块的至少一个指针,并且其中,确定要加载的至少一个固件块包括将所读取的熔断信息中的所述至少一个熔断字符串与所述固件信息表进行比较,以获得指向所述至少一个固件块的所述至少一个指针。
2.根据权利要求1所述的设备,其中,与每个固件块相关联的代理用于在所述固件信息表中创建针对所述至少一个固件块的所述至少一个指针。
3.根据权利要求1所述的设备,其中,所述至少一个固件块被存储在所述非易失性存储器中,并且所述至少一个指针是指向其中所述非易失性存储器中的所述至少一个固件块所位于的位置的存储器偏移。
4.根据权利要求1所述的设备,其中,所述处理模块是基于包括多个子系统的片上系统架构来进行配置的。
5.根据权利要求4所述的设备,其中,所述熔断字符串专用于向所述处理模块指示多个固件块中的哪一个固件块至少与在设备初始化期间要加载的所述多个子系统中的每一个子系统相对应。
6.根据权利要求1所述的设备,其中,所述引导代码用于使得所述数据处理电路在设备初始化期间还加载安全资源。
7.根据权利要求6所述的设备,其中,所述安全资源用于使得所述数据处理电路在加载所述至少一个固件块之前对所述至少一个固件块进行认证。
8.一种用于基于熔断的固件块分派的固件模块,包括:
至少一个非易失性存储器以用于存储引导代码、固件信息表以及至少一个固件块,其中,所述引导代码用于使得处理模块从所述处理模块中的熔断模块中读取熔断信息,基于所述熔断信息来确定要加载的至少一个固件块并且加载所述至少一个固件块;
其中,所述熔断信息包括至少一个熔断字符串,所述熔断字符串包括多个熔断,并且其中,所述多个熔断中的每个熔断是能够在置位值与复位值之间配置并且能够由所述处理模块中的数据处理电路读取的数字位;
其中,所述固件信息表包括指向所述至少一个非易失性存储器中的所述至少一个固件块的至少一个指针,并且其中,确定要加载的至少一个固件块包括将所读取的熔断信息中的所述至少一个熔断字符串与所述固件信息表进行比较,以获得指向所述至少一个固件块的所述至少一个指针。
9.根据权利要求8所述的固件模块,其中,所述引导代码用于使得所述处理模块还加载安全资源以在加载所述至少一个固件块之前对所述至少一个固件块进行认证。
10.一种用于基于熔断的固件块分派的方法,包括:
在设备的初始化期间,执行存储在固件模块中的引导代码;
从所述设备中的处理模块中的熔断模块中读取熔断信息,其中,所述熔断信息包括至少一个熔断字符串,所述熔断字符串包括多个熔断,并且其中,所述多个熔断中的每个熔断是能够在置位值与复位值之间配置并且能够由所述处理模块中的数据处理电路读取的数字位;
基于所述熔断信息来确定要加载的至少一个固件块;并且
加载所述至少一个固件块;
其中,所述固件模块至少包括固件信息表,所述固件信息表包括指向所述至少一个固件块的至少一个指针,并且其中,确定要加载的至少一个固件块包括将所读取的熔断信息中的所述至少一个熔断字符串与所述固件信息表进行比较,以获得指向所述至少一个固件块的所述至少一个指针。
11.根据权利要求10所述的方法,还包括:
在读取所述熔断信息之前,对所述处理模块中的功率资源和至少一个时钟进行初始化。
12.根据权利要求10所述的方法,其中,读取熔断信息包括确定单独的固件块是否被指定用于加载。
13.根据权利要求12所述的方法,还包括:
如果确定单独的固件块未被指定用于加载,则加载标准启动代码映像。
14.根据权利要求10所述的方法,其中,所述熔断字符串专用于向所述处理模块指示多个固件块中的哪一个固件块至少与在设备初始化期间要加载的多个子系统中的每一个子系统相对应。
15.根据权利要求10所述的方法,还包括:
加载安全资源以在加载所述至少一个固件块之前对所述至少一个固件块进行认证。
16.一种用于基于熔断的固件块分派的系统,包括:
用于在设备的初始化期间执行存储在固件模块中的引导代码的单元;
用于从所述设备中的处理模块中的熔断模块中读取熔断信息的单元,其中,所述熔断信息包括至少一个熔断字符串,所述熔断字符串包括多个熔断,并且其中,所述多个熔断中的每个熔断是能够在置位值与复位值之间配置并且能够由所述处理模块中的数据处理电路读取的数字位;
用于基于所述熔断信息来确定要加载的至少一个固件块的单元;以及
用于加载所述至少一个固件块的单元;
其中,所述固件模块至少包括固件信息表,所述固件信息表包括指向所述至少一个固件块的至少一个指针,其中,用于确定要加载的至少一个固件块的单元包括用于将所读取的熔断信息中的所述至少一个熔断字符串与所述固件信息表进行比较以获得指向所述至少一个固件块的所述至少一个指针的单元。
17.根据权利要求16所述的系统,还包括:
用于在读取所述熔断信息之前对所述处理模块中的功率资源和至少一个时钟进行初始化的单元。
18.根据权利要求16所述的系统,其中,所述用于读取熔断信息的单元包括用于确定单独的固件块是否被指定用于加载的单元。
19.根据权利要求18所述的系统,还包括:
用于如果确定单独的固件块没有被指定用于加载则加载标准启动代码映像的单元。
20.根据权利要求16所述的系统,其中,所述熔断字符串专用于向所述处理模块指示多个固件块中的哪一个固件块至少与在设备初始化期间要加载的多个子系统中的每一个子系统相对应。
21.根据权利要求16所述的系统,还包括:用于加载安全资源以在加载所述至少一个固件块之前对所述至少一个固件块进行认证的单元。
22.包括多个指令的至少一种机器可读介质,所述指令响应于在计算设备上被执行,使得所述计算设备执行根据权利要求10-15中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/748,656 | 2015-06-24 | ||
US14/748,656 US9836307B2 (en) | 2015-06-24 | 2015-06-24 | Firmware block dispatch based on fusing |
PCT/US2016/033966 WO2016209478A1 (en) | 2015-06-24 | 2016-05-24 | Firmware block dispatch based on fusing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107667346A CN107667346A (zh) | 2018-02-06 |
CN107667346B true CN107667346B (zh) | 2021-11-23 |
Family
ID=57586655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680030403.8A Active CN107667346B (zh) | 2015-06-24 | 2016-05-24 | 用于基于熔断的固件块分派的设备、方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9836307B2 (zh) |
EP (1) | EP3314416B1 (zh) |
CN (1) | CN107667346B (zh) |
WO (1) | WO2016209478A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10635607B2 (en) * | 2016-06-30 | 2020-04-28 | Intel Corporation | Methods, systems and apparatus to improve boot efficiency |
KR102516106B1 (ko) * | 2018-02-14 | 2023-03-31 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
US10896033B2 (en) * | 2018-12-31 | 2021-01-19 | Micron Technology, Inc. | Configurable NAND firmware search parameters |
CN113051123B (zh) * | 2019-12-27 | 2023-12-26 | 上海微电子装备(集团)股份有限公司 | 一种半导体设备的处理器及固件数据采集方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1855313A (zh) * | 2005-04-26 | 2006-11-01 | 国际商业机器公司 | 通过重复数据的使用而提高熔丝编程产率的方法和装置 |
CN101375287A (zh) * | 2006-02-15 | 2009-02-25 | 英特尔公司 | 用于提供安全固件的技术 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6874083B2 (en) * | 2000-12-22 | 2005-03-29 | Intel Corporation | Method and apparatus to ensure proper voltage and frequency configuration signals are defined before applying power to processor |
US7039796B2 (en) | 2002-06-04 | 2006-05-02 | Hewlett-Packard Development Company, L.P. | Method and system of locating a position in memory at which to store incoming firmware image |
US6976119B2 (en) * | 2002-06-14 | 2005-12-13 | Hewlett-Packard Development Company, L.P. | Method and system for providing a location of a data interface |
US7130993B1 (en) * | 2003-07-01 | 2006-10-31 | Unisys Corporation | Firmware interface integrated system reporting and diagnostic tool |
US7657885B2 (en) * | 2004-04-16 | 2010-02-02 | Gateway, Inc. | System and method for downloading software and services |
US8122447B2 (en) | 2007-07-31 | 2012-02-21 | Hewlett-Packard Development Company, L.P. | Firmware installation |
KR20090037712A (ko) * | 2007-10-12 | 2009-04-16 | 삼성전자주식회사 | 보안 부트-업되는 전자 장치, 그것의 해쉬값 계산 방법 및부트-업 방법 |
US8024557B2 (en) | 2007-12-31 | 2011-09-20 | Icera, Inc. | Booting an integrated circuit |
US8219794B1 (en) * | 2009-11-03 | 2012-07-10 | Network Appliance, Inc. | Non-disruptive firmware upgrade of a storage shelf |
US9171165B2 (en) * | 2009-12-23 | 2015-10-27 | Intel Corporation | Methods, systems, and apparatuses to facilitate configuration of a hardware device in a platform |
US8522066B2 (en) | 2010-06-25 | 2013-08-27 | Intel Corporation | Providing silicon integrated code for a system |
US8607210B2 (en) * | 2010-11-30 | 2013-12-10 | Micron Technology, Inc. | Code patching for non-volatile memory |
-
2015
- 2015-06-24 US US14/748,656 patent/US9836307B2/en active Active
-
2016
- 2016-05-24 CN CN201680030403.8A patent/CN107667346B/zh active Active
- 2016-05-24 WO PCT/US2016/033966 patent/WO2016209478A1/en unknown
- 2016-05-24 EP EP16814938.3A patent/EP3314416B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1855313A (zh) * | 2005-04-26 | 2006-11-01 | 国际商业机器公司 | 通过重复数据的使用而提高熔丝编程产率的方法和装置 |
CN101375287A (zh) * | 2006-02-15 | 2009-02-25 | 英特尔公司 | 用于提供安全固件的技术 |
Also Published As
Publication number | Publication date |
---|---|
WO2016209478A1 (en) | 2016-12-29 |
CN107667346A (zh) | 2018-02-06 |
EP3314416B1 (en) | 2022-04-20 |
US20160378507A1 (en) | 2016-12-29 |
EP3314416A1 (en) | 2018-05-02 |
US9836307B2 (en) | 2017-12-05 |
EP3314416A4 (en) | 2019-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10445154B2 (en) | Firmware-related event notification | |
US9846617B2 (en) | System and method for self-healing basic input/output system boot image and secure recovery | |
US9223982B2 (en) | Continuation of trust for platform boot firmware | |
US11809544B2 (en) | Remote attestation for multi-core processor | |
CN107667346B (zh) | 用于基于熔断的固件块分派的设备、方法和系统 | |
US9613196B2 (en) | Protection system including machine learning snapshot evaluation | |
US10311236B2 (en) | Secure system memory training | |
US10185633B2 (en) | Processor state integrity protection using hash verification | |
CN107615711B (zh) | 用于事件传播的系统 | |
US11068276B2 (en) | Controlled customization of silicon initialization | |
US11989304B2 (en) | Secure multi-BIOS-image system | |
WO2017049594A1 (en) | Efficient memory activation at runtime | |
WO2017052505A1 (en) | Hardware protection based on fabrication characteristics |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |