更新计算机固件的系统、方法与计算机可读取储存媒体技术领域
本发明涉及计算机固件,且特别是涉及更新计算机固件而不用擦除
(flash)整个固件映像档的方法。
背景技术
一般的计算机系统在启动程序期间使用特定的计算机固件来辨认、初始
化与测试计算机系统中的硬件,并且载入启动载入器(boot loader)或者是操作
系统。例如为基本输入输出系统(basic input/output system,BIOS)或是统一可
扩展固件接口(unified extensible firmware interface,UEFI)的固件平台提供了
接口,使得可以设定各种不同的参数,例如为硬件参数或是启动设定参数。
例如,固件接口可用来指令时钟脉冲速度与总线速度,指出那些周边装置是
连接到计算机系统,设定特定的监控程序,并且设定会影响计算机系统效能
与功率使用的其他各种参数。
一般而言,计算机系统的固件是储存在快闪存储器中,例如为非易失随
机存取存储器(non-volatile random access memory,NVRAM)、只读存储器
(read-only memory,ROM)、或者是电可擦除可编程只读存储器(electrically
erasable programmable read-only memory,EEPROM)。快闪存储器可以让固
件与固件设定重复写入而不用将存储器芯片从计算机装置中移除。然而,可
惜的是任何对固件的修改或更新现在都需要将整个固件重新写入至快闪存
储器,此步骤被称为擦除或快闪(flashing)固件映像档。
发明内容
本发明的附加特征和优点将在随后的描述中阐述,其中一部分将从描述
中变得明显,或者可以通过实践在此公开的原理而学习到这些特征与优点。
本发明的附加特征和优点可以借助在权利要求中具体指出的仪器和组合来
实现和获得。这些和其他的本发明特征将从随后的描述和权利要求中变得更
为完全地明显,或者可以通过实践在此阐述的原理来获得。
本发明披露了用于更新计算机固件而不用擦除整个固件映像档的系统、
方法与非暂态计算机可读取储存媒体。此系统可在计算机固件容量中产生用
户固件容量,而计算机固件容量包含了系统在启动程序期间所使用的计算机
固件。在某些例子中,用户固件容量可以是一个档案系统。此外,计算机固
件容量可以是在一个或多个存储器装置上的逻辑容量,这些存储器装置例如
为系统中的快闪存储器储存元件。
此系统可包含固件档案,其是用来更新系统在启动程序期间所使用的计
算机固件。此系统可以通过网络从另一个单独的装置中取得固件档案或者是
在本地产生并储存固件档案。例如,在某些例子下,系统可以从一个伺服器
或是中央位置取得固件档案以将固件档案配置或整合至系统的计算机固件。
在其他例子下,系统可以产生或编译固件档案并将之储存在例如为只读存储
器的存储器中,用以配置或整合至系统的计算机固件中。
接下来,系统可比较固件档案与计算机固件容量的内容,并且基于比较
结果将固件档案储存在计算机固件容量中的用户固件容量,而不用擦除系统
在启动程序期间所使用的计算机固件的全部。此固件档案可包括一个或多个
固件模块。系统可检查固件档案是否已经在计算机固件中。例如,系统可以
检查计算机固件容量以判断固件档案是否已经在计算机固件容量中。如果系
统判断固件档案并不在计算机固件里,它可以简单地把固件档案加入至计算
机固件以成为新的元件(即新档案或模块)。在某些例子下,系统可以检查固
件档案是否已经在计算机固件中和/或在系统的启动程序期间将固件档案加
入至计算机固件。
另一方面,如果系统判断固件档案是对应于已经在计算机固件中的固件
档案,它可以检查或比较固件档案与计算机固件中对应的固件档案的版本,
由此判断固件档案是否为计算机固件中固件档案的新版本或更新版本。如果
系统判断固件档案是计算机固件中固件档案的新版本或更新版本,它可以将
计算机固件中对应的固件档案替换或更新为上述的固件档案。另一方面,如
果系统判断固件档案中的固件模块是计算机固件中对应的固件模块的相同
版本与更旧的版本,它可以决定不要以固件档案中的固件模块来替换或更新
计算机固件中对应的固件模块。
在某些例子下,系统可以检查或比较固件档案的版本和/或在系统的启
动程序期间将计算机固件中对应的固件档案替换或更新为上述的固件档案。
为了一些安全的目的,系统也可以实施加密、签章和/或验证或授权的
机制来保护固件档案和/或计算机固件。例如,系统可以加密和/或签章固件
档案,并且在将固件档案加入或储存至计算机固件容量之前,或是在将现存
固件档案更新或替换为固件档案之前,执行验证或是授权的步骤。在某些例
子下,系统可以通过对固件档案实施一杂凑函数(例如MD5、SHA等)来产
生信息摘要。此外,系统可以选择性地以一加密金钥来加密信息摘要,此加
密金钥例如是非对称加密的私钥(private key)或者是对称加密的金钥。系统可
以将签章后和/或加密后的信息摘要整合至固件档案以产生签章后的固件档
案。
为了验证或授权签章后的固件档案,系统可以从签章后的固件档案撷取
固件档案与信息摘要。如果此信息摘要是先前加密的那一个,系统可以根据
解密金钥(例如,对称式加密所使用的金钥,或者是非对称式加密的公开金
钥)来解密信息摘要。接下来,在签章固件档案时所使用的杂凑函数可用来
实施在从签章后的固件档案所撷取的固件档案上,并且其结果可和从签章后
的固件档案中撷取的(并且选择定地解密)的信息摘要做比较。如果比较结果
显示两者配对,则固件档案可被验证或授权成功。如此一来,系统接着可以
使用此固件档案来更新或修改计算机固件。另一方面,如果比较结果显示两
者不配对,则表示固件档案不被验证或授权成功,因此不会被系统用来更新
或修改计算机固件。通过判断出两个固件档案不配对的比较结果,系统可以
辨认出潜在的妥协或者是骇客的尝试,并且可以避免实施了未被授权的固件
档案。
附图说明
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合
附图作详细说明如下。可理解的是这些图式仅绘示了本发明中示范性的实施
例,并不用以限制本发明,其中的原理会使用所附的图式另外具体且详细的
描述和解释。
图1A与图1B绘示了示范性的系统实施例;
图2绘示了用以通过网络来更新计算机固件的示范性环境的方块图;
图3绘示了用以将固件档案整合至计算机固件容量的一个示范性流程
图的示意图;
图4绘示了用以将计算机固件配置在系统中的一个示范性机制的流程
图;
图5绘示了在计算机固件与系统管理者之间互动流程的示意图;
图6绘示了逻辑固件装置的范例;
图7绘示了用以更新计算机固件的一个示范性程序的示意图;
图8绘示了用以更新计算机固件的一个示范性方法实施例;以及
图9绘示了用以保护固件档案的示范性方法。
附图符号说明
100:系统
105:总线
110:处理器
112:快取存储器
115:存储器
120:只读存储器
125:随机存取存储器
130:储存装置
132:模块一
134:模块二
135:输出装置
136:模块三
138:基板管理控制器
140:通讯接口
142:快闪存储器
145:输出装置
148:固件
150:系统
155:处理器
160:芯片组
165:输出装置
170:储存装置
175:随机存取存储器
180:桥
185:用户接口元件
190:通讯接口
195:固件
200:环境方块图
202:网络
204、206、208:远端装置
210:系统
300:示意图
302:计算机固件容量
304:用户固件容量
306、308:步骤
310:固件档案
400:流程图
402~422:步骤
500:示意图
502:系统管理者
504、506、508、510:步骤
600:逻辑固件装置
602、604、608:固件容量
700:程序
702:计算机固件模块
606:固件容量
704、706、708、710、712:步骤
800、900:方法
802、804、806、808、902、904、906、908、910、912、914:步骤
具体实施方式
以下详细地描述了本发明的各种实施例。当讨论特定的实施方式时,可
理解的是此实施方式只作为解释目的。本领域技术人员可理解的是,当不离
开本发明的精神与范围时,可使用其他的元件与设定。
在此描述的是用以更新计算机固件而不擦除整个固件映像档的系统、方
法与非暂态计算机可读取储存媒体。首先,会先描述用于更新计算机固件而
不擦除整个固件映像档的示范性系统与环境的简单介绍。更新计算机系统而
不擦除整个固件映像档的详细描述(包括范例与变化)都会在之后描述。这些
变化在此应被解释为各种实施例。本发明现在从图1A与图1B开始。
图1A与1B绘示了示范性的系统实施例。在实施此技术时,对于本领
域技术人员来说当可理解有更适当的实施例。本领域技术人员当可理解其他
系统实施例也是可能的。
图1A绘示了系统总线计算系统100,此系统的元件是通过总线105彼
此电性通讯。示范性的系统100包括了处理单元(中央处理器或是处理器)110
与系统总线105,系统总线105将各种系统元件(包括系统存储器115,例如
为储存装置170与随机存取存储器175)耦接至处理器110。系统100可包括
高速的快取存储器112,其是靠近地直接连接到处理器110或是整合为处理
器110的一部分。系统可以将数据从存储器115和/或储存装置130复制到快
取存储器112中,让处理器110快速地存取。以此方式,快取存储器112可
以提升效能,避免处理器110在等待数据时延迟了。这些模块与其他模块可
控制处理器110或是被处理器110所控制,由此执行各种动作。也可以使用
其他的系统存储器115。存储器115可包括多个不同类型且具有不同效能特
性的存储器。处理器110可包括通用目的的处理器与硬件模块或软件模块,
例如为储存在储存装置130的模块132、134与136,用来控制处理器110
成为特定目的的处理器,在此其中的软件指令是与实际的处理器设计一起合
作。处理器110可实质上为完全自足的计算系统,包含多个核心或处理器、
总线、存储器控制器、快取存储器等。多核心的处理器可以为对称式或是非
对称式。
为了让用户与计算机装置100互动,输入装置145可表示为任意数目的
输入机制,例如为语音用的麦克风、用于手势或图形输入的触控面板、键盘、
鼠标、动作输入、语音等等。输出装置135可以为本领域技术人员能理解的
一个或多个输出机制。在一些例子中,多模块的系统可以让用户提供各种输
入来与计算机装置100通讯。一般来说,通讯接口140可用来支配并管理用
户的输入和系统的输出。本发明并不限制运作任意特定的硬件配置,因此随
着硬件的发展,在此基本的特征可以轻易地置换为更好的硬件或固件配置。
储存装置130是一个非易失性的存储器,可以为硬盘或其他形式的计算
机可读取媒体,其可以储存计算机可存取的数据。此计算机可读取媒体例如
为磁带盒(magnetic cassettes)、快闪存储器卡、固态存储器装置、数字通用磁
盘(digital versatile disks)、盒式磁带(cartridges)、随机存取存储器125、只读
存储器120或其组合。
储存装置130可包括软件模块132,134,136,用以控制处理器110。
其他的硬件或软件模块是可预期的。储存装置130可连接至系统总线105。
从某一个角度,实施特定功能的一个硬件模块可包括储存在计算机可读取媒
体的软件元件,此计算机可读取媒体是连接到必要的硬件元件,例如为处理
器110、总线105、显示器135等等,由此进行上述的功能。
基板管理控制器(baseboard management controller,BMC)138可以为系
统100中专门的微控制器或处理器。在某些例子中,基板管理控制器138可
以是智能平台管理接口(Intelligent Platform Management Interface,IPMI)的一
部分。此外,在一些例子中,基板管理控制器138可以嵌入在系统的主机板
或主要电路板中。基板管理控制器138可管理系统管理软件与平台硬件之间
的接口。在系统中建置的不同种类的传感器可以回报一些参数给基板管理控
制器138,这些参数例如为温度、冷却风扇速度、电源状态、操作系统状态
等等。基板管理控制器138可以监控这些传感器并且通过网络接口(例如为
通讯接口140)发出警告给管理员(administrator),如果有任一个参数没有落在
预设的限制或临界值内,上述的警告可指出系统100潜在的故障或是错误。
管理员也可以远端地与基板管理控制器138通讯以采取正确的动作,例如重
置系统100或执行电源循环,由此回复系统的功能。
快闪存储器142可以为电子式非易失性计算机储存媒体或是芯片,其可
被系统100用来作为储存和/或转移数据的用途。快闪存储器142可被电子
式地擦除和/或重新编程。例如,快闪存储器142可包括可擦除可编程只读
存储器(erasable programmable read-only memory,EPROM)、电子式可擦除
可编程只读存储器(electrically erasable programmable read-only memory,
EEPROM)、只读存储器、非易失性随机存取存储器或互补金属氧化物半导
体(complementary metal-oxide semiconductor,CMOS)。快闪存储器142可
储存固件148,当系统100开机时系统100会执行固件148与固件148指定
的一组设定。快闪存储器142也可以被固件148所使用的设定。
固件148可包括基本输入/输出系统、其继承者(successors)或具有相同功
能的系统,例如可扩展固件接口(Extensible Firmware Interface,EFI)、或者
是统一可扩展固件接口(Unified Extensible Firmware Interface,UEFI)。每次
系统100开机时,固件148可被载入且执行为一顺序程序(sequence program)。
固件可以基于上述该组设定来辨认、初始化与测试系统100中的硬件。固件
可以在系统100上执行自我测试,例如为电力开启自我测试
(Power-on-Self-Test,POST)。此自我测试可以测试各种硬件元件,例如为硬
盘驱动器、光学读取装置、冷却装置、存储器模块、扩充卡等的功能。固件
148在存储器115、只读存储器120、随机存取存储器125和/或储存装置130
中定址且分配出一个区域,由此储存操作系统。固件148可载入一个启动载
入器和/或操作系统,并且将系统100的控制交给操作系统。
系统100的固件148可包括固件设置,其定义了固件148如何控制系统
100中的各种元件。此固件设置可决定系统100中各种硬件元件启动的顺序。
固件148可以提供例如为统一可扩展固件接口的接口,使得可设定各种不同
的参数,这些设定的参数可不同于预设固件设置中的参数。例如,用户(例
如管理员)可以使用固件148来指定时钟脉冲速度或是总线速度,定义那些
周边装置是连接至系统100,设定健康状况(例如风扇速度与中央处理器的温
度上下限)的监视,和/或提供会影响系统100整体效能与电力使用的其他各
种参数。
当描述固件148储存在快闪存储器142时,本领域技术人员当可理解固
件148也可以储存在其他的存储器元件,例如为存储器115或是只读存储器
120。然而,为了解释的目的,在此描述固件148是被储存在快闪存储器142
中以作为一个非限制性的例子。
图1B绘示了包含芯片组架构的示范性计算机系统150,其可用来执行
上述的方法或操作,并且产生与显示图形化接口(graphical user interface,
GUI)。计算机系统150可包括可用来实施上述技术的计算机硬件、软件与固
件。系统150可包括处理器155,代表任意数目且不同的物理和/或逻辑资源,
其能够执行用来实施上述计算的软件、固件与硬件。处理器155可与芯片组
160进行通讯,芯片组160可控制处理器155的输入与输出。在此例子中,
芯片组160输出资讯给输出装置165(例如为显示器),并且可以从储存装置
170中读取或写入资讯,储存装置170可例如包括磁性媒体或者是固态媒体。
芯片组160可从随机存取存储器175中读取数据或是写入数据。桥
(bridge)180可作为芯片组160和各种用户接口元件185之间的接口。这些用
户接口元件185可包括键盘、麦克风、触控检测和处理电路、指向装置(例
如鼠标)等。一般来说,系统150的输入可以来自于各种来源,这些来源可
以是机器产生的和/或人所产生的。
芯片组160也可以接合至一个或多个通讯接口190,其可具有不同的物
理接口。这些通讯接口可以是用于有线或是无线的区域网络、宽频无线网络
或个人区域网络的接口。用于产生、显示并使用图形化用户接口的方法的一
些应用可以包括由处理器155接收有序的数据集,这些数据集可以是在物理
接口上接收的,或者是由机器本身产生的,处理器155会分析在储存装置
170或随机存取存储器175中的数据。另外,机器可以通过用户接口元件185
接收用户的输入并且执行适当的功能,例如是使用处理器155来解译这些输
入而达到浏览的功能。
此外,芯片组160也可以与固件195通讯,此固件195可以在开机时由
计算机系统150来执行。固件195可以基于一组固件设定来辨认、初始化并
且测试计算机系统150中的硬件。固件可以在系统150上执行自我测试,例
如为电力开启自我测试(POST)。此自我测试会测试各种硬件元件(符号
155~190)的功能。固件195可以在随机存取存储器175中定址并配置一个区
域来储存操作系统。固件195可以载入启动载入器和/或操作系统,并且将
系统150的控制交给操作系统。在某些例子中,固件195可与硬件元件
155-190通讯。在此,固件可通过芯片组160和/或通过一或多个其他的元件
来与硬件元件155-190通讯。在一些例子中,固件195可以直接与硬件元件
155-190通讯。
可理解的是,示范性的系统100与150可包含多于一个处理器110或者
也可以是由网络连接的一群或一丛集计算机装置中的一部分以提供更大的
处理能力。
为了清楚的解释,在一些例子中本技术可以表示为包括个别的功能方
块,其中一些功能方块可包括装置、装置元件、由软件实施的方法中的步骤
或程序、或者是硬件与软件的结合。
在一些实施例中,这些计算机可读取储存装置、媒体与存储器可包括缆
线或无线信号,其中具有位串。然而,在此提到的非暂态计算机可读取储存
媒体明确地排除了例如为能量、载波、电磁波以及信号本身的媒体。
上述例子的方法可以利用计算机可执行指令来实施,这些指令可以储存
在计算机可读取媒体或者可以从计算机可读取媒体中取得。例如,这些指令
可包括指令与数据,其造成或设定通用目的的计算机、特殊目的的计算机或
特殊目的的处理装置来执行特定的功能或功能组。所使用的计算机资源的一
部分也可以通过网络来存取。例如,这些计算机可执行指令可以是数字档、
例如为组合语言的中间(intermediate)格式指令、固件、或原始码。计算机可
读取媒体的例子包括磁盘、光盘、快闪存储器、与非易失性存储器一起提供
的通用串列总线(Universal Serial Bus,USB)装置、连接至网络的储存装置等,
而计算机可读取媒体可用来储存指令、使用的资讯和/或在上述例子的方法
中所产生的资讯。
根据上述发明用来实施方法的装置可包括硬件、固件和/或软件,并且
可以采用各种形状因子(form factor)。这些形状因子的一般性例子包括笔记型
计算机、智能型手机、具有小形状因子的个人计算机、个人数字化助理、机
架式设备或是独立设备等等。在此所描述的功能可以实施为周边装置或是外
接卡。在更进一步的例子中,这些功能也可以伴随着不同的芯片而实施在电
路板上,或者是实施在单一装置中的不同处理器上。
这些指令、用来传送指令的媒体、用来执行指令的计算资源、以及其他
用来支持这些计算资源的结构都是用来提供所述功能的手段。
图2绘示了用来通过网络202更新计算机固件的示范性环境方块图200。
系统210可以通过网络202来增加、更新和/或替换远端装置204~208上的
固件模块(例如固件档案)。例如,为了远端装置204~208上的计算机固件,
系统210可以传送一个或多个固件模块和/或指令至远端装置204~208以增
加、更新和/或替换固件模块。远端装置204~208可包含客户端装置,例如
为笔记型计算机、桌上型计算机、平板计算机、智能型手机等;伺服器;网
络装置,例如为交换器(switch)或路由器(router);或任意其他的计算机装置。
在一些例子中,系统210可传送固件模块(可伴随安装指令或不伴随安装指
令)至一个或多个远端装置204~208,并且驱动已经接收到固件模块的远端装
置204~208来增加或安装固件模块至特定远装装置上的计算机固件。
在其他例子中,系统210可以传送固件修改指令至一个或多个远端装置
204~208来驱动此一个或多个远端装置204~208来增加、更新或替换在特定
远端装置上的计算机固件中的固件模块。例如,系统210可以传送一指令,
此指令指定某个的第一固件模块应该被安装在远端装置204上。远端装置
204可接收此指令,并且对应地在远端装置204上启动第一固件模块的安装。
在此,如果远端装置已经具有第一固件模块的复本(copy),它可以简单地根
据从系统210接收的指令来执行安装程序。另一方面,如果远端装置204并
没有第一固件模块的复本,则它可以向系统210和/或任意其他的装置要求
和/或取得第一固件模块。在一些例子中,来自系统210的指令可以指定远
端装置204可找到并取得第一固件模块的位置以完成安装程序。在一些其他
的例子中,远端装置204具有用来指定一个或多个位置的设定,让远端装置
204可以从这些位置要求或下载第一固件装置和/或任意其他的固件模块以
完成安装程序。
从系统210而来的指令可以包括一个触发器,用以启动固件的更新、安
装和/或修改。从系统210而来的指令也可以指出要被接收到此指令的远端
装置加入、更新和/或替换的一个或多个固件模块。此外,从系统210而来
的指令可以包括指示如何加入、更新和/或替换一个特定的固件模块的指令。
如果从系统210而来的指令并没有伴随着要被接收到指令的装置来安装的
固件模块,则此指令可包括一个或多个位址,其会指出装置可以从哪里下载
或要求此特定的固件模块,而此特定的固件模块会被安装在接收到指令的装
置上。此外,此指令也可以概述接收到指令的装置要如何将此计算机固件与
新的、被加入的或被替换的固件模块组合。
此指令可以概述接收到指令的装置要如何处理新的固件模块集合,由此
更新或替换在装置上现存的固件模块。例如,如果现存的固件模块与新的固
件模块是属于相同的类型(例如,如果现存的固件模块与新的固件模块有配
对的识别符、功能或特定),则此指令可指示应该执行版本的检查,并且当
新的固件模块比现存的固件模块具有更高或更新的版本,或者当新的固件模
块解决了现存固件模块中的问题时,则此指令可以指示现存的固件模块应替
换为新的固件模块。
从系统210而来的指令也可以包括安全资讯,例如为签章(signature)、
加密/解密金钥、验证规则和/或安全指令。除此之外,从系统210而来的指
令可包括其他的参数,例如为安装参数、档案种类参数、档案名称参数、超
数据(metadata)、规则、固件设定等等。
如先前所述,系统210可以传输固件模块和/或指令至远端装置204~208
以通过网络202加入、替换和/或更新一个或多个固件模块。网络202可包
括一个或多个物理和/或逻辑网络。而且,网络202可包括例如为区域网络
(local area network,LAN)或是无线区域网络(wireless LAN)的私有网络;例
如为互联网或是广域网络(wide area network,WAN)的公开网络;和/或例如
为虚拟私有网络(virtual private network,VPN)的混和网络。更进一步来说,
远端装置204~208可属于一个或多个网络和/或数据中心。例如,远端装置
204~206可属于某个特定的虚拟区域网络(virtual LAN,VLAN),并且远端装
置208可以属于相同或是不相同的网络段(network segment),例如为不同的
VLAN、LAN或者数据中心。在一些例子中,系统210可以和远端装置
204~208属于相同的物理或逻辑网络或网络片段。然而,在其他例子中,系
统210可以和远端装置204~208属于不同的物理或逻辑网络或网络片段。
系统210与远端装置204~208可以是任意具有网络连线能力的计算机装
置,例如为笔记型计算机、伺服器、平板计算机、智能型手机等等。例如,
系统210与远端装置208可以为分开的伺服器,其中远端装置204~206可以
为客户端装置。在一些实施例中,系统210可以是能远端修改远端装置
204~208上的计算机固件的伺服器或是交换器。在其他的实施例中,系统210
可以是客户端装置,用户可以使用此客户端装置来修改远端装置204~208上
的计算机固件。在一些例子中,系统210可以在远端装置204~208上监控计
算机固件的版本与更新,并且触发计算机固件的任何修改。
此外,系统210可以在每一个远端装置204~208上监控不同种类或是版
本的计算机固件,和/或触发每一个远端装置204~208上计算机固件任意的
更新、安装或替换。例如,系统210可以在远端装置208上触发一个伺服器
固件模块的安装,此远端装置208可以是一个特定类型的伺服器和/或伺服
器硬件,系统210可以在远端装置204上触发客户端固件模块的安装,此远
端装置204可以是一个特定类型的客户端计算机和/或计算机硬件。在另一
个例子中,系统210可以触发远端装置206上的计算机固件更新至一个特定
的版本,并且触发远端装置208上的计算机固件更新至不同的版本。
图3绘示了用以整合固件档案至计算机固件容量302的示范性流程图的
示意图300。计算机固件容量(computer firmware volume)302可包括在系
统100上被系统100所使用的档案系统或储存手段,用以让系统100储存计
算机固件148。计算机固件容量302可包含在系统100中一个存储器装置上
的方法、数据结构、分割和/或磁盘,此存储器装置例如为快闪存储器148,
用以储存或维护计算机固件148。在一些实施例中,计算机固件容量302可
把计算机固件148储存为一个映像档和/或属于计算机固件148的特定模块、
片段、部分、功能、档案和/或固件。
系统100可在计算机固件容量302中建立用户固件容量304,用以储存
固件的内容,例如为被用户或系统100加入、更新、替换或安装的固件档案
或模块。用户固件容量304可以是计算机固件容量302的一部分、一片段或
一部分。并且,用户固件容量304可以和计算机固件容量302储存在相同的
磁盘、分割、或者是存储器装置。然而,在一些实施例中,用户固件容量
304可以和计算机固件容量302储存在不相同的磁盘、分割、或者是存储器
装置。并且,在一些例子中,用户固件容量304可以跨越地储存在多个分割、
磁盘、档案系统或存储器装置。在此,用户固件容量304可以和计算机档案
系统容量储存在相同的分割、磁盘、档案系统或存储器装置,但也可以跨越
地储存在一个或多个不同的分割、磁盘、档案系统或存储器装置。
在步骤306,系统100检查是否有固件档案(例如,固件模块)要被整合
至计算机固件148。如果有固件档案要被整合至计算机固件148,在步骤308
中系统100会将固件档案310(即须要被整合至计算机固件148的固件档案)
整合至用户固件容量304。如此一来,固件档案310可以被整合至计算机固
件容量302中的用户固件容量304,其中计算机固件容量302会持续地更新
或修改系统100上的计算机固件148。在一些例子中,固件档案310可以是
要被加入至计算机固件148的新固件模块。然而,在其他例子中,固件档案
310可以替换计算机固件148中现存的固件模块。在此,在替换现存的固件
模块之前,系统100可在固件档案310与现存固件模块之间执行档案的检查
或比较。例如,系统可比较固件档案310与现存模块的总体唯一识别符
(globally unique identifier,GUID)以判断这两个总体唯一识别符是否是对应
于相同的固件模块,并且判断哪一个固件模块是较新且应该被保留成计算机
固件148的一部分的模块。
图4绘示了用以配置系统100上的计算机固件的示范性机制的流程图
400。在步骤402,产生要被整合至计算机固件的固件映像档。此固件映像
档可包括固件档案和/或固件模块。并且,固件映像档可以包括例如为用户
固件容量的逻辑容量,用户固件容量可以被整合至具有现存计算机固件的计
算机固件容量。如此一来,固件影像档可以包括固件模块以及要被整合至计
算机固件和/或计算机固件容量的档案系统或逻辑结构。
在步骤404,可基于安全的理由来签章固件映像档。在一些例子中,可
对固件映像档执行杂凑函数(hash function,例如:MD5或SHA)以取得信息
摘要。在一些例子中,为了更进一步的安全,此信息摘要可通过一加密金钥
来加密以形成加密后的信息摘要。
在步骤408,验证签章后的固件映像档。在一些例子中,此验证的程序
可包括从签章后的固件映像档撷取出内容,对此撷取出的部分执行相同的杂
凑函数,并且比较上述的信息摘要与杂凑函数的结果。在此,如果比较结果
显示两者是配对,则表示签章后的固件映像档被验证成功,否则表示签章后
的固件映像档没有被验证成功而会被视为未授权。
如果签章后的固件映像档没有被验证成功,在步骤422可拒绝更新。另
一方面,如果签章后的固件映像档被验证成功,在步骤410中,固件映像档
会被整合至计算机固件。例如,可从签章后的固件映像档中撷取出固件映像
档,并且将此固件映像档整合至用来存放计算机固件的计算机固件容量中所
建立的用户固件容量。在一些例子中,固件映像档可包括计算机固件容量中
用户固件容量的对应版本,因此固件映像档可以被整合至计算机固件中的用
户固件容量。当将固件映像档整合至计算机固件时,在计算机固件中的用户
固件容量可被擦除,由此将固件档案和/或模块整合至计算机固件中的固件
映像档。
在步骤412,固件映像档可从计算机固件中被载入。此固件映像档可在
系统的启动程序期间或被视为启动程序的一部分而被载入。在步骤414,比
较此固件映像档与计算机固件中的固件档案和/或模块,由此判断是否固件
映像档具有对应的识别符,其是配对到计算机固件中任意其他的固件档案和
/或模块的识别符。换句话说,可检查固件映像档的识别符和在计算机固件
中其他固件档案或模块的识别符,由此判断此固件映像档是否为其余固件档
案或模块中任何一个的复本。配对的识别符表示固件映像档是新的固件档案
或模块,或者是对应于计算机固件中的现存固件档案或模块。
这些识别符可以指向任意的属性、档案、特性、金钥、名称、超数据或
资讯,其可以提供对应固件档案、模块和/或映像档的身分。例如在一些例
子中,这些识别符可以是固件档案或是模块的总体唯一识别符。如此一来,
固件映像档的总体唯一识别符可以与计算机固件中现存的固件内容的总体
唯一识别符做比较,由此判断固件映像档是否已经存在于计算机固件中。
在步骤416,如果固件映像档的识别符并没有配对于计算机固件中任意
一个固件档案模块的识别符,将固件映像档依照一个适当的执行顺序放置在
计算机固件中。换句话说,计算机固件的元件、档案、模块和/或驱动程序
会具有正确的执行顺序,由此阐释计算机固件中不同元件、档案、模块和/
或驱动程序的相依性。在一些例子中,这些顺序或组织可以由一或多个模块
或驱动程序配置器,例如为预可扩展固件接口(pre-EFI,PEI)/驱动程序执行
环境(driver execution environment,DXE)来执行。
另一方面,如果固件映像档的识别符配对于计算机固件中一个现存固件
档案或模块对应的识别符,在步骤418中会执行版本的检查,由此判断固件
映像档是否为现存固件档案或模块较新的版本。此版本的检查可以通过以下
手段来执行:比较固件档案或模块、比较档案或模块的识别符、比较版本的
识别符、比较超数据、比较时间戳记、比较属性、比较固件内容、比较档名、
或比较关联于固件映像档与现存固件档案的或模块的任意其他相关资讯。
在执行版本检查以后,如果判断固件映像档是现存固件档案或模块的新
版本,在步骤420中,固件映像档可替换计算机固件中的现存固件档案或模
块。或者,在步骤422可结束更新。
在一些例子中,系统100可以在执行计算机固件期间和/或在启动程序
期间执行任意数目的步骤402~422。例如,系统100可以在系统100的启动
程序期间执行一个或多个步骤402~422,并且在流程图400的机制完成以后
回到启动程序和/或固件的电力开启自我测试。如此一来,系统100可以在
启动程序期间动态地将新模块整合至计算机固件和/或替换计算机固件中现
存的模块。在一些例子中,系统100在开机时动态地载入且执行从固件映像
档取得的模块。实际上,系统100可以在将系统100的控制从计算机固件交
付至操作系统或启动载入器之前执行任意数目的步骤402~422。
图5绘示了在计算机固件容量302与系统管理者502之间互动的流程的
示意图500。系统管理者502可以是管理模块或是固件接口。例如,管理模
块可以是用于存取系统管理功能的管理接口或环境,例如为控制台等。然而,
在一些实施例中,系统管理者502可以是在远端装置(例如为远端伺服器)上
的管理模块或应用程序。
系统管理者502可以将模块加入至用户固件容量304(步骤504)。固件
模块可以为新的模块或者是计算机固件容量302中现存模块的替换/更新。
如先前解释的,用户固件容量304可以包括档案系统、档案、容量和/或建
立用来将固件模块和/或档案整合至计算机固件容量302的印象档,其中计
算机固件容量302包含有计算机固件。
计算机固件容量302中的计算机固件接下来可以配置在固件模块304中
的模块(步骤506)。在一些例子中,基本输入输出系统(BIOS)或是统一可扩
展固件接口(UEFI)元件可以配置在用户固件容量304中的模块。例如,这些
在用户固件容量304中的模块可以由预可扩展固件接口(PEI)初始化和/或关
联于统一可扩展固件接口(UEFI)平台初始化(platform initialization,PI)规格的
驱动程序执行环境(DXE)配置器来配置。
接下来,系统100可以动态地载入并执行模块(步骤508)。例如,模块
可以在系统100的启动程序期间,或者是被当作为启动程序的一部份而被载
入并启动。在载入并执行模块以后,系统100可以回到启动程序(步骤510)。
在此,控制可以交还给计算机固件,已完成启动程序和/或电力开启自我测
试,或者是将控制交给操作系统或启动载入器。
图6绘示了逻辑固件装置600的范例。逻辑固件装置600可包括固件容
量604~608以储存关联于某一给定装置的计算机固件的固件内容。每个固件
容量604~608可表示为储存库,其是根据统一可扩展固件接口(UEFI)平台
初始化(PI)规格来储存数据和/或程序码。然而,在其他的实施例中,每个固
件容量604~608可以是根据其他的固件平台或是规格(包括了未来的固件平
台或规格),例如为基本输入输出系统或任意其他的固件平台或规格。
每个固件容量604~608可以组织在一个档案系统当中。如此一来,每一
个固件容量604~608的储存单位为可以是一个档案。
用户固件容量604可包括一个固件容量,其是建立来让用户或装置可以
配置固件档案和/或模块、替换或更新现存固件档案和/或模块等。因此用户
固件容量604可以让固件档案和/或模块被整合至逻辑固件容量602中的计
算机固件,而不需要擦除在逻辑固件容量602中全部的计算机固件。
驱动程序执行环境(DXE)固件容量606可包括一固件容量,其是用来储
存驱动程序执行环境元件、模块、档案和/或统一可扩展固件接口(UEFI)的各
阶段。例如,驱动程序执行环境固件容量606可包括在以统一可扩展固件接
口为基础的计算机固件中任意的DXE驱动程序、配置器和/或模块。
预可扩展固件接口(PEI)固件容量608可包括一固件容量,用来储存预可
扩展固件接口元件、模块、档案和/或统一可扩展固件接口(UEFI)的各阶段。
例如,预可扩展固件接口固件容量608可包括在以统一可扩展固件接口为基
础的计算机固件中任意的PEI驱动程序、配置器和/或模块。
图7绘示了用来更新计算机固件的示范性程序700的示意图。在系统上
的计算机固件模块702可比较用户固件容量604与逻辑固件容量606~608。
计算机固件模块702指的可以是给定系统上的计算机固件,或者是在给定系
统中一个或多个特定的模块、功能、档案或单元。例如,在一些实施例中,
计算机固件模块702可以是在统一可扩展固件接口平台或环境中的可扩展
固件接口和/或驱动程序执行环境配置器。在其他的实施例中,计算机固件
模块702可以是给定系统的基本输入输出系统。
在用户固件容量604与逻辑固件容量606~608的比较中,计算机固件模
块702可比较用户固件容量604中任意的内容(例如为模块或是档案)与逻辑
固件容量606~608中任意的内容。计算机固件模块702可以比较用户固件容
量604与逻辑固件容量606~608,由此判断用户固件容量604和/或其中任意
的内容是否配对至逻辑固件容量606~608和/或其中任意的内容。
为了判断用户固件容量604是否配对至逻辑固件容量606~608,在步骤
704中,计算机固件模块702可检查用户固件容量604与逻辑固件容量
606~608是否拥有配对或重复的识别符。这些识别符可以是标签(tag)、标记
(label)、属性或资讯,其可以识别出对应的固件容量604~608和/或在每一个
固件容量604~608任意的模块或档案。例如,这些识别符可以是关联于在固
件容量604~608中每一个模块或档案的总体唯一识别符。在此,计算机固件
模块702可以比较用户固件容量604中任意特定模块或档案的总体唯一识别
符,以和逻辑固件容量604~608中模块或档案的总体唯一识别符。通过检查
这些识别符,计算机固件模块702可判断用户固件容量604或其中任意的内
容是否配对于(及相同或等同于)逻辑固件容量604~608或其中任意的容量。
在步骤706,如果用户固件容量604没有配对至逻辑固件容量606~608
或其他任意的内容,计算机固件模块702可以将用户固件容量604加入或整
合至逻辑固件容量606~608或是其他关连于给定系统的计算机固件的其他
逻辑容量。在一些例子中,在步骤706中,计算机固件模块702可以将用户
固件容量604加入或整合至计算机固件(例如,加入或整合至任意的逻辑固
件容量606~608)而不擦除关联于逻辑固件容量606~608的计算机固件。
在步骤708,如果用户固件容量604没有配对至任意的逻辑固件容量
606~608,计算机固件模块702在步骤708中会检查用户固件容量604是否
为任意一个逻辑固件容量606~608的新版本。例如,计算机固件模块702可
以判断用户固件容量604是否为逻辑固件容量606~608的新版本或者用户固
件容量604是否包括一个或多个模块,其是逻辑固件容量606~608中一个或
多个模块的新版本。
如果用户固件容量604并不是任意一个逻辑固件容量606~608的新版
本,在步骤710中,计算机固件模块702可略过将用户固件容量604整合至
逻辑固件容量606~608的步骤,或者结束程序700。
另一方面,如果用户固件容量604是任意一个逻辑固件容量606~608的
新版本,在步骤714中,计算机固件模块702可以将逻辑固件容量606~608
中现存版本的用户固件容量替换为新模块(即用户固件容量604)。在一些例
子中,在步骤712中计算机固件模块702可以替换现存的版本而不擦除关联
于逻辑固件容量606~608的计算机固件。
在以上对于程序700关于用户固件容量604与逻辑固件容量606~608的
描述中,本领域具有通常知识者当可理解程序700中任意的步骤或概念可以
执行于任意特定的固件模块或档案而不是容量,或者是执行于任意特定的固
件模块或档案再加上容量。例如,步骤704、708可以被实施为检查用户固
件容量604与逻辑固件容量606~608中一个或多个模块是否有重复的识别符
或比较这些模块的版本。并且,步骤706、712可以被实施加入、整合或替
换给定系统中计算机固件特定的模块或档案。换言之,步骤702~712可以执
行于所有的固件容量604~608或是固件容量604~608中特定的模块或档案。
在教示了基本的系统元件与概念以后,现在开始教示图8与图9中示范
性的方法实施例。为了清楚起见,图8中的方法是以系统100(如图1所示)
来描述,其中系统100是用来实践此方法。图9的方法是以系统210与远端
装置(以下称伺服器)208(如图2所示)来描述,其中系统210与伺服器208是
用来实践此方法。在此概述的步骤是示范性的,并且在实施这些步骤时可以
对某些步骤进行排除、增加、修改或其组合等动作。
图8绘示了用于更新计算机固件148的示范性方法800。在此,系统100
可更新(例如增加、安装、替换、移除或整合固件内容)计算机固件148,而
不擦除整个计算机固件148。在一些实施例中,系统100可以在计算机固件
容量中产生用户固件容量,其中计算机固件容量包含计算机装置在启动程序
期间所使用的计算机固件(步骤802)。此用户固件容量可包括例如档案系统、
逻辑容量、档案、模块、映像档、软件包(package)或任意其他的内容或储存
单元。并且系统100所使用的计算机固件可包括在启动程序期间或之前装置
所使用的任意类型的固件。例如,计算机固件可包括基本输入输出系统、统
一可扩展固件接口固件、若任意其他类型的固件和/或固件接口。启动程序
可包括用来测试、侦测和/或启动硬件元件的程序;载入系统100的设置设
定,例如为效能和硬件的设置设定;载入驱动程序,例如为预可扩展固件接
口和/或驱动程序执行环境驱动程序;将系统100的控制交给操作系统或启
动载入器;以及其他步骤。
系统100可以取得固件档案,此固件档案是用以更新计算机装置在启动
程序期间所使用的计算机固件(步骤804)。例如,此固件档案可包括一个或
多个模块、档案、容量(例如用户固件、只读存储器或逻辑容量)、档案系统、
映像档、软件包等。并且,固件档案可以由系统100来产生、编译或建立。
然而,在一些例子中,为了检查固件档案和/或将固件档案整合至系统100
的计算机固件中,固件档案可以由不同的系统(例如为伺服器)来产生、编译
或建立,并且接下来被系统100所接收。
接下来,系统100可以比较固件档案与计算机固件容量的内容(步骤
806)。例如,系统可以比较上述的固件档案与计算机固件容量中任意固件档
案(包括任意的模块或容量)的属性、识别符(例如总体唯一识别符)、标记、
超数据或内容,由此判断上述的固件档案是否已经安装或整合至计算机固
件。在一些例子中,在上述比较后如果系统100判断固件档案已经存在或整
合至计算机固件,则系统100可执行版本检查以判断上述的固件档案是否为
计算机固件中现存对应的固件档案的新版本。在此,系统100可以识别固件
档案与计算机固件中任何一个现存固件档案的版本,由此判断哪一个固件档
案的版本较新。如果系统100判断上述的固件档案是计算机固件中对应的现
存固件档案的新版本,则系统100可执行如以下解释的步骤808。
另一方面,如果系统100判断上述的固件档案是计算机固件中对应的现
存固件档案的新版本或旧版本,则系统100可略过步骤808。然而,在一些
例子中,在判断上述的固件档案是计算机固件中对应的现存固件档案的新版
本或旧版本后,系统100仍然可以继续执行步骤808。例如,系统100可以
想要替换计算机固件中损坏的固件档案,因此即使计算机固件中一个或多个
固件档案是相同于(即相同档案或相同版本)上述的固件档案,系统100也可
以继续执行步骤808。在另一个例子中,系统100可能想要将计算机固件中
一个或多个固件档案还原成较旧的版本(例如,如果固件档案的更新与计算
机固件造成了问题或错误),因此即使计算机固件中一个或多个固件档案具
有较新的版本,也可以继续步骤808。
根据上面的比较结果,系统100会将固件档案储存在计算机固件容量中
的用户固件容量,而不擦除计算机装置在启动程序期间所使用的计算机固件
的整体部分(步骤808)。系统100将固件档案加入、安装或载入以成为计算
机固件的新模块、档案或元件,或者是将计算机固件中现存的模块、档案或
元件替换为固件档案,并且这些步骤都不会擦除整个计算机固件。此外,系
统100可以在系统100启动时,在启动程序期间,动态地载入、执行或储存
固件档案。更进一步来说,固件档案可以永久的被储存,使得在系统100关
机和/或重开机以后固件档案依然是计算机固件的一部分。然而,在一些实
施例中,固件档案可以暂时地储存在计算机固件容量中,使得固件档案在启
动程序期间被载入(或固件档案为启动程序的一部分),但在系统100关机和/
或重开机以后固件档案不会维持在计算机固件中。
系统100可以用内频带(in band)或外频带(out-of-band)的方式来储存固
件档案。当以外频带的方式来储存固件档案时,系统100可以使用专属的通
道、装置、控制器或环境(例如基板管理控制器)来储存固件档案。例如,基
板管理控制器可以基于从远端伺服器接收的指令来将固件档案储存在系统
100中。在一些例子中,即使系统100并没有开机或者系统100中的操作系
统并没有被安装、执行或不具有功能,固件档案依然可以用外频带的方式来
储存。另一方面,当以内频带的方式储存固件档案,系统100可以在操作系
统被启动以后再储存固件档案。例如,在系统100已经启动以后,可根据系
统100从远端装置接收到的指令来将固件档案储存在系统100中。
在一些实施例中,系统100可以在启动程序期间执行上述方法800中的
一个或多个步骤。
当在步骤808中将固件档案储存在用户固件容量时,固件档案也可以储
存在关联于计算机固件的其他容量,而不只是将固件档案储存在用户固件容
量,或者是用来代替将固件档案储存在用户固件容量的步骤。例如,在一些
实施例中,固件档案可以储存在关联于计算机固件的不同固件容量,例如为
图6所示的逻辑容量606~608,其中固件档案也可以是也可以不是储存在用
户固件容量中。
为了安全的目的,系统100可以实施加密、签章和/或验证或授权机制
以保护固件档案和/或计算机固件。例如,在将固件档案加入或储存至计算
机固件容量之前,或是在将现存固件档案替换或更新为固件档案之前,系统
100可以签章和/或加密固件档案,并且对此签章或加密后的固件档案执行验
证获授权的步骤。在一些例子中,系统100可以先通过对固件档案执行杂凑
函数(例如MD5或SHA)来产生信息摘要。此外,系统100可以选择性地以
加密金钥来加密此信息摘要,此金钥例如为非对称加密的私钥或者是对称加
密的金钥。接下来,系统100可将签章后和/或加密后的信息摘要整合至固
件档案中以产生签章后的固件档案。
为了验证或授权签章后的固件档案,系统100可以从签章后的固件档案
撷取出固件档案与信息摘要。如果此信息摘要是先前加密的那一个,则系统
100可以解密金钥(例如对称式加密所使用的金钥,或者是非对称加密中的公
开金钥)来解密信息摘要。接下来,用来签章固件档案的杂凑函数,可用来
执行在从签章后的固件档案中撷取的固件档案,并且签章后的结果可以和信
息摘要(从签章后的固件档案撷取并选择性地解密)作比较。如果比较结果显
示为配对,则表示固件档案被验证或授权成功。如此一来,系统100接下来
可以使用固件档案来更新或修改计算机固件。另一方面,如果比较结果显示
两者不配对,则表示固件档案没有被验证或授权成功,因此并不会系统100
用来更新或修改计算机固件。通过判断出两个固件档案不配对的比较结果,
系统100可以辨认出潜在的妥协或者是骇客的尝试,并且可以避免实施了未
被授权的固件档案。
以上描述了被相同系统(即系统100)执行的步骤(包括步骤802~808),但
在一些实施例中,一些步骤802~808也可以被不同或远端的装置(例如伺服
器)来执行。实际上,本领域技术人员当可理解,在此描述的一个或多个步
骤可以被一或多个不同的装置来执行。例如,在一些例子中,固件档案可以
被某一个装置(例如伺服器)来签章,而被另一个装置(例如系统100)来验证或
授权。事实上,为了清楚与解释起见,在此描述的步骤是由相同的系统来执
行,其是一个非限制性的例子。再次申明的是,这里也可以考虑使用步骤与
装置的其他组合。
图9绘示了用于保护固件档案的示范性方法900。在此,伺服器208可
先签章固件档案以产生信息摘要(message digest)(步骤902)。伺服器208可以
对固件档案执行一个函数,例如为杂凑函数(例如MD5、SHA等)以产生信
息摘要。
伺服器208可以加密信息摘要(步骤904)。伺服器208可以使用任意的
加密机制来加密信息摘要。例如,伺服器208可以以一金钥,基于对称式或
非对称式的加密机制来加密信息摘要。在一些实施例中,伺服器208可以以
私钥来加密信息摘要。接下来,伺服器208可以将加密后的信息摘要整合至
包含固件档案的用户固件容量(步骤906)。
接下来,系统210可以从用户固件容量中撷取加密后的信息摘要以及固
件档案(步骤908)。例如,系统210从伺服器208(或任意其他的装置)接收用
户固件容量,并且撷取其中的内容。在一些例子中,系统210可以通过网络
202从伺服器208接收用户固件容量。接下来系统210可以解密从用户固件
容量中撷取的信息摘要(步骤910),并且签章从用户固件容量撷取的固件档
案以产生第二信息摘要(步骤912)。系统210可以使用杂凑函数来签章所撷
取的固件档案,此杂凑函数是相同于在步骤902用来签章固件档案的杂凑函
数。此步骤会产生第二信息摘要(即签章后的固件档案),其可与步骤902所
产生的信息摘要作比较,由此判断固件档案的真实性或者是侦测固件档案的
操控或修改。
接下来,系统210可授权此固件档案(步骤914)。系统210可以通过比
较步骤902所产生的信息摘要和第二信息摘要来授权固件档案。如果步骤
902所产生的信息摘要和第二信息摘要配对,则系统210可生效或授权固件
档案。或者,如果步骤902所产生的信息摘要和第二信息摘要不配对,则系
统可使固件档案失效或将之视为没有授权。在此,系统210可以忽略或丢弃
没有生效或授权的固件档案。
在以上配合图9对于各个步骤(包括步骤902~914)的描述中,是由不同
的系统(即伺服器208与系统210)来执行这些步骤,但在一些实施例中,一
些步骤也可以由相同的装置(例如系统210)来执行。并且,在其他实施例中,
一些步骤也可以被其他额外的装置来执行,例如为另一个伺服器或集中式的
系统。同样地,为了清楚与解释的目的,步骤902~914是与系统210与伺服
器208一起解释。
为了清楚的解释,在一些例子中本技术可以表示为包括个别的功能方
块,其中一些功能方块可包括装置、装置元件、由软件实施的方法中的步骤
或程序、或者是硬件与软件的结合。
在一些实施例中,这些计算机可读取储存装置、媒体与存储器可包括缆
线或无线信号,其中具有位元串。然而,在此提到的非暂态计算机可读取储
存媒体明确地排除了例如为能量、载波、电磁波以及信号本身的媒体。
上述例子的方法可以利用计算机可执行指令来实施,这些指令可以储存
在计算机可读取媒体或者可以从计算机可读取媒体中取得。例如,这些指令
可包括指令与数据,其造成或设定通用目的的计算机、特殊目的的计算机或
特殊目的的处理装置来执行特定的功能或功能组。所使用的计算机资源的一
部分也可以通过网络来存取。例如,这些计算机可执行指令可以是数字档、
例如为组合语言的中间(intermediate)格式指令、固件、或原始码。计算机可
读取媒体的例子包括磁盘、光盘、快闪存储器、与非易失性存储器一起提供
的通用串列总线装置、连接至网络的储存装置等,而计算机可读取媒体可用
来储存指令、使用的资讯和/或在上述例子的方法中所产生的资讯。
根据上述发明用来实施方法的装置可包括硬件、固件和/或软件,并且
可以采用各种形状因子。这些形状因子的一般性例子包括笔记型计算机、智
能型手机、具有小形状因子的个人计算机、个人数字化助理、机架式设备或
是独立设备等等。在此所描述的功能可以实施为周边装置或是外接卡。在更
进一步的例子中,这些功能也可以伴随着不同的芯片而实施在电路板上,或
者是实施在单一装置中的不同处理器上。
这些指令、用来传送指令的媒体、用来执行指令的计算资源、以及其他
用来支持这些计算资源的结构都是用来提供所述功能的手段。
虽然各种例子与其他资讯已被用来解释专利申请范围中的观点,但本领
域技术人员当使用这些例子来完成各式各样的实施,在这些例子中特定的特
征或安排都不应用来限制权利要求。更进一步来说,虽然一些标的已经用特
定的语言来解释为特定的结构性特征和/或方法步骤,但可理解的是权利要
求中定义的标的并不限于所描述的特征或动作。例如,这些功能可以分散在
不同的元件或由不同的元件来执行,这些元件可以不同于上述的元件。相反
的是,这些特征与步骤是被解释为权利要求中系统与方法的元件的例子。权
利项语言“一集合中的至少其中之一”指的是此集合中满足权利要求的一个
或多个成员。有形的计算机可读取储存媒体、计算机可读取储存装置,或计
算机可读取存储器装置明确地排除了例如为暂态波形、能量、载波、电磁波
以及信号本身的媒体。