修补只读存储器的引导代码的制作方法
【专利说明】修补只读存储器的引导代码
[0001]相关申请
[0002]本公开要求2013年2月22日提交的美国临时专利申请序列号61/768,097的优先权,其公开内容通过引用方式整体并入于此。
【背景技术】
[0003]在此处提供对【背景技术】的描述是用于从整体上给出本公开上下文的目的。就在此【背景技术】部分中描述的工作而言的、本发明发明人的工作,以及在递交时不以其他方式作为现有技术的描述的方面,并不显式或隐式承认其是本公开的现有技术。
[0004]计算和电子设备通常在通电时执行引导代码,以配置设备的资源或部件。一旦资源和部件被配置,操作系统便由引导代码加载并被执行。然后,对设备的控制被传递到执行操作系统,其实现设备的功能或应用。
[0005]为了阻止未授权软件在设备上的执行,引导代码可以验证操作系统和在引导代码上方的软件层的真实性。因为引导代码是在通电时执行的最低级别的代码,因此引导代码通常被硬编码到设备的硬件中,以确保引导代码的真实性。尽管硬编码引导代码阻止了对引导代码的恶意修改,但是硬编码还阻止为了校正错误而对引导代码的修改。因而,为了校正引导代码中的错误,设备的硬件通常需要重新设计和重新构造,这会消耗相当多的时间、金钱和资源。
【发明内容】
[0006]在附图和下面的描述中阐述一个或多个实施方式的细节。其它特征和优点将从描述和附图中显而易见。因此,本
【发明内容】
不应该被视为描述必要特征,也不应该用于限制所要求保护的主题的范围。
[0007]描述了用于从只读存储器(ROM)发起第一引导代码的执行以开始计算设备的引导过程的方法。方法然后中断第一引导代码的执行,以使得能够执行来自另一存储器的第二引导代码。在执行第二引导代码之后,恢复第一引导代码的执行,以继续计算设备的引导过程。
[0008]描述了用于发起来自ROM的引导代码的执行的另一方法,引导代码的执行经由程序计数器推进。响应于程序计数器到达引导代码中的预定地址,中断引导代码的执行。方法然后执行来自一次性可编程(OTP)存储器的替代引导代码,代替ROM中的引导代码中的一些引导代码。响应于替代引导代码的执行,程序计数器返回到引导代码中的一个地址,用于从ROM恢复执行引导代码。
[0009]描述了片上系统(SoC),其包括处理器、ROM、OTP存储器和中断管理器,中断管理器被配置为响应于处理器的程序计数器遇到引导代码中的预定地址,中断处理器对来自ROM的引导代码的执行。中断管理器进一步配置为使得处理器执行来自OTP存储器的附加引导代码,并且然后使程序计数器返回到引导代码中的一个地址,用于使得处理器从ROM恢复执行引导代码。
[0010]一个或多个实施方式的细节被阐述在附图和下面的描述中。其它特征和优点将从描述和附图中容易理解。
【附图说明】
[0011]在图中,附图标记的最左侧数字标识其中附图标记首次出现的图。在描述中的不同实例中和图中的相同附图标记的使用指示同样的元件。
[0012]图1图示依照一个或多个方面的具有计算设备的操作环境。
[0013]图2图示依照一个或多个方面的计算设备的示例引导架构。
[0014]图3图示用于中断来自只读存储器的引导代码的执行的方法。
[0015]图4图示用于执行来自一次性可编程存储器的替代引导代码的方法。
[0016]图5图示依照一个或多个方面的引导代码和引导代码补丁的示例。
[0017]图6图示用于将引导代码烧录(burn)到一次性可编程存储器的熔断器(fuse)中的方法。
[0018]图7图示用于实现本文中描述的技术方面的片上系统(SoC)环境。
【具体实施方式】
[0019]用于修补只读存储器(ROM)的引导代码的常规技术通常要求重新构造引导代码写(例如,烧录)在其中的ROM硬件。ROM硬件的这一重新构造常常包括另一轮的预硅验证、硅流片或掩模、ROM移植、ROM硬件的制造、以及后硅验证。因此,ROM硬件的重新构造以修补引导代码会消耗相当大量的时间、金钱和资源。
[0020]本公开描述用于修补ROM中的引导代码的装置和技术,这使得其它引导代码(例如,替代或附加引导代码)能够在引导过程期间从另一存储器执行。在一些方面中,该另一存储器是一次性可编程(OTP)存储器,其它引导代码在包括ROM的硬件的构造之后被烧录到一次性可编程(OTP)存储器中。当引导代码体现在片上系统(SoC)中时,SoC可以提供用于其它代码的闭锁机制(例如,修补代码)。例如,如果在引导代码体现在其中的产品出货前、在引导代码(例如,BootROM)的验证之后没有修补被确定为必要的,则SoC可以提供禁用该特征的能力,以确保引导代码贯穿产品寿命的安全性。相似地,如果引导代码的修补必要,则SoC可以提供用于一旦修补(但在硬件出货前)就闭锁OTP存储器的剩余块的另一能力,以确保其它引导代码的安全性。
[0021]以下讨论描述操作环境、操作环境中可以采用的技术、以及其中可以体现操作环境的部件的片上系统(SoC)。在下面的讨论中,仅通过示例的方式参照操作环境。
[0022]操作环境
[0023]图1图示具有计算设备102的操作环境100的示例,计算设备102中的每个均能够传达、访问、呈现或处理各种数据。计算设备102包括智能电话104、平板计算机106、附接网络的存储驱动器108 (NAS驱动器108)、数字相机110、以及因特网协议使能的电视112 (IPTV 112) ο虽然未示出,还设想计算设备102的其它配置,诸如台式计算机、服务器、移动因特网设备(MID)、传真机、打印机、数字摄像机、上网本、超级本、游戏控制台、家庭自动化终端、移动热点、联网的媒体播放器等。
[0024]通常,计算设备102具有范围从“关”状态到“开”状态的操作状态。这些操作状态可以包括完全关状态(机械关)、冬眠状态、睡眠状态、悬挂状态、空闲状态、活跃状态等。当从较低操作状态转变至较高操作状态(例如,从关状态至活跃状态)时,计算设备102被引导。引导计算设备102包括执行低级别的代码(例如,引导代码或二进制),低级别的代码配置计算设备102的部件或资源,以用于由操作系统或较高级别的应用访问。
[0025]每个计算设备102包括处理器核114(例如应用处理器核)和计算机可读存储介质116(CRM 116) ο虽然示出为单核,但是处理器核114可以是其可以以任何适合方式配置的任何适合数目和/或类型的处理核之一(例如,异构多核应用处理器)。在一些情况下,处理器核114被实现为微控制器、嵌入式控制器或数字信号处理器的核。
[0026]CRM 116包括易失性存储器118和非易失性存储器120,其可以包括任何适合类型、组合或数目的内部和/或外部存储器设备。CRM 116的每个存储器可以被实现为硬件的片上存储器区域或者经由数据接口或总线与处理器核114传达数据的片外存储器设备。在这一特定示例中,易失性存储器118包括静态随机存取存储器122 (SRAM 122)和同步动态随机存取存储器124 (DRAM 124)。替代地或附加地,易失性存储器118可以包括其它适合类型的存储器,诸如随机存取存储器(RAM)、异步动态RAM、双数据速率RAM(DDR)等。
[0027]非易失性存储器120包括串行外围接口(SPI)闪存126、NAND闪存128、只读存储器130和一次性可编程(OTP)存储器132。设想的其它非易失性存储器包括非易失性RAM(NVRAM)、电可擦除可编程R0M、嵌入式多媒体卡(eMMC)设备、NOR闪存、单级单元(SLC)闪存、多级单元(MLC)闪存等。在这一特定示例中,ROM 130和OTP存储器132被实现为其被制造成芯片的各种金属和半导体层的片上存储器区域。
[0028]当断电或悬挂时,非易失性存储器120持久地存储计算设备102的数据。计算设备102的引导代码存储在诸如SPI闪存126、NAND闪存128和ROM 130之类的一个或多个非易失性存储器部件中。例如,在制造包括ROM 130的芯片期间,最低级别或安全引导代码被写或烧录到ROM 130中。通过这样做,ROM 130中的引导代码(还称为boot-ROM)在芯片被制造之后不能被修改。ROM 130的不可修改性质确保了 ROM 130中存储的引导代码的真实性和安全性。计算设备102的较高级别引导代码被实现为