CN1678995B - 用于识别硬件兼容性与启用稳定软件镜像的方法和装置 - Google Patents
用于识别硬件兼容性与启用稳定软件镜像的方法和装置 Download PDFInfo
- Publication number
- CN1678995B CN1678995B CN038199254A CN03819925A CN1678995B CN 1678995 B CN1678995 B CN 1678995B CN 038199254 A CN038199254 A CN 038199254A CN 03819925 A CN03819925 A CN 03819925A CN 1678995 B CN1678995 B CN 1678995B
- Authority
- CN
- China
- Prior art keywords
- register
- nextport
- hardware component
- value
- processor
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/177—Initialisation or configuration control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
- Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
Abstract
一种用于识别硬件兼容性与启用稳定软件镜像的方法,所述方法包括使用安全密钥来获得对选择逻辑的访问权限;使用所述选择逻辑来从步进版本ID寄存器或至少一个兼容版本ID寄存器中之一中选择一个值,所述步进版本ID寄存器用于维护表明第一硬件组件的实际步进版本级别的值,所述至少一个兼容版本ID寄存器用于维护表明第二硬件组件的步进版本级别的值,所述第二硬件组件可与所述第一硬件组件用于同一个软件;以及使得所选择的值在处理器通过版本ID寄存器读取所选择的值时可被该处理器读取。
Description
技术领域
在此公开了一种方法和装置,用于识别硬件和软件版本之间的兼容性,并用于简化不同版本(revision)的硬件和软件的不同组合的使用。
背景技术
为了提高复杂电子设备包括计算机的易用性,近年来越来越多地使用软件可读寄存器来提供用于标识特定硬件组件的信息。这一信息的标识一般包括硬件版本信息,例如制造版本和设计级别,它们通常利用具有某种形式的二进制值来标识,包括用作为标识代码的数字。
同样为了提高易用性,近年来的操作系统以及其他控制这种复杂电子设备的操作的软件越来越多地使用读取寄存器,这些寄存器提供硬件版本信息(例如二进制值)以确保已经安装了支持当前硬件版本所需的软件版本。这一操作经常如下来完成,即检查存在必需的硬件驱动器版本,其中操作系统需要这些驱动器版本以与特定的硬件设备通信并适当地利用该硬件设备的功能。如果这些操作系统发现需要软件(例如设备驱动器)的某种版本,但这种版本又不存在以供使用,那么,这些操作系统就经常被设计为向用户显示一条消息,要求获得必需的软件。
这些用来提高易用性的措施已经获得了一些有益效果。没有这些措施的话,用户(或向用户提供支持的技术人员)就必需亲自采取一些步骤来确保已经提供了支持任何给定电子设备中的特定硬件组件所需的软件。这经常需要用户或技术人员对硬件组件和对应软件了解到相当详细的水平。但是,这些用于提高易用性的措施已经使得用户不需要具有如此详细的知识,在许多情形下,使得许多用户不需要严重地依赖于其他人提供的支持。
然而,这些用于提高易用性的措施对这种硬件组件和软件的也附加了以前不存在的复杂性。随着时间的过去,由于硬件的老化或被使用,各种硬件组件会磨损或需要替换。通常可能需要将旧的硬件组件替换为在设计和功能上的许多方面基本相似的新组件,以使得用新硬件组件替换旧硬件组件时不需要用户或技术人员提供以前不存在的任何软件。然而,随着时间的过去,制造商通常不会继续制造完全相同的硬件组件而不做任何改变。硬件制造商会随着时间过去而对硬件设计做出改进或改变,即使这种改变可能仅仅是为了降低制造成本、降低功耗、减小物理尺寸,或不需要安装新软件以使用新硬件等多种其他可能的改变之一。不幸的是,由于制造商做出了这种改进,经常需要改变包含在软件所读取的寄存器中的一个或多个值,以反映所述硬件代表了一种新的硬件版本,从而反映出已经做出了所述的改进。
尽管需要使软件可读寄存器反映出特定硬件组件代表了比被替换的硬件组件来得要新的硬件版本,但是这经常会导致软件读取这些寄存器,发现版本改变的指示,然后要求用户或技术人员安装较新的软件版本以支持新的硬件版本,而不管是否真的需要新软件以使新硬件组件正确地工作。也就是说,在用户安装了新硬件组件以替换较旧的、已被发现出现故障的硬件组件之后,用户就会碰到操作系统提供的一条消息,表明必须安装新软件,尽管新硬件组件在功能上与它所替换的硬件组件相同。
这已经证明对用户来说很不方便,而对于公司或其他大型机构来说,尽管它们有专门的人员来支持机构内的许多用户,由于有许多用户都碰到了提供不必要的软件的请求,要满足如此多用户的需求,考虑到时间或其他需要花费的资源,代价也非常可观。
发明内容
根据本发明的一个方面,提供了一种用于识别硬件兼容性与启用稳定软件镜像的装置,所述装置包括可由处理器读取的版本ID寄存器;步进版本ID寄存器,用于维护表明第一硬件组件的实际步进版本级别的值;至少一个兼容版本ID寄存器,用于维护表明第二硬件组件的步进版本级别的值,所述第二硬件组件可与所述第一硬件组件用于同一个软件;以及选择逻辑,用于使得能从所述步进版本ID寄存器或所述至少一个兼容版本ID寄存器中之一中选择一个值,所选择的值可由所述处理器读取。
根据本发明的另一个方面,提供了一种计算机系统,所述计算机系统包括处理器;耦合到该处理器的存储器;耦合到该处理器的图形控制器;存储包含初始化软件的指令的存储设备;可由该处理器读取的版本ID寄存器;步进版本ID寄存器,用于维护表明第一硬件组件的实际步进版本级别的值;至少一个兼容版本ID寄存器,用于维护表明第二硬件组件的步进版本级别的值,所述第二硬件组件可与所述第一硬件组件用于同一个软件;以及选择逻辑,用于使得能从所述步进版本ID寄存器或所述至少一个兼容版本ID寄存器中之一中选择一个值,所选择的值可由所述处理器读取。
根据本发明的再一个方面,提供了一种计算机系统,所述计算机系统包括第一处理器;第二处理器;耦合到所述第一和第二处理器的图形控制器;存储包含初始化软件的指令的存储设备;可由所述第一处理器读取的版本ID寄存器;步进版本ID寄存器,用于维护表明第一硬件组件的实际步进版本级别的值;至少一个兼容版本ID寄存器,用于维护表明第二硬件组件的步进版本级别的值,所述第二硬件组件可与所述第一硬件组件用于同一个软件;以及可由所述第二处理器访问的选择逻辑,用于使得能从所述步进版本ID寄存器或所述至少一个兼容版本ID寄存器中之一中选择一个值,并使得该值可由所述第一处理器从所述版本ID寄存器读取。
根据本发明的又一个方面,提供了一种用于识别硬件兼容性与启用稳定软件镜像的方法,所述方法包括使用安全密钥来获得对选择逻辑的访问权限;使用所述选择逻辑来从步进版本ID寄存器或至少一个兼容版本ID寄存器中之一中选择一个值,所述步进版本ID寄存器用于维护表明第一硬件组件的实际步进版本级别的值,所述至少一个兼容版本ID寄存器用于维护表明第二硬件组件的步进版本级别的值,所述第二硬件组件可与所述第一硬件组件用于同一个软件;以及使得所选择的值在处理器通过版本ID寄存器读取所选择的值时可被该处理器读取。
附图说明
对于本领域技术人员来说,阅读了下面的详细描述后,下面将要求保护的本发明的目的、特征和优点将会清楚,其中:
图1a和1b是一个提供硬件版本信息的实施方案的寄存器地址映射和示意图。
图2的方框图示出了与计算机系统交互的硬件组件的实施方案。
图3a和3b的方框图示出了计算机系统的实施方案。
图4的流程图示出了用于选择标识硬件版本的值的方法。
具体实施方式
尽管在下面的描述中给出了大量的具体细节以透彻地理解本发明,但是对于本领域技术人员来说很清楚这些具体细节对于实施下面要求保护的本发明来说并不是必需的。
在此公开了一种方法和装置,用于识别硬件和软件版本之间的兼容性,并用于简化不同版本的硬件和软件的不同组合的使用。具体地说,一个实施方案涉及从多个寄存器中选择一个值,该值将用于标识硬件组件的版本,以提高利用特定软件时该硬件组件的易用性。然而,尽管多个实施方案是参考存储在寄存器中并从寄存器读取的值来描述的,但是下面要求保护的本发明还包括其他方法,所述方法用于存储并读取值或其他形式的标识,所述值或标识用于指定硬件组件的版本。
图1a和1b分别示出了用寄存器提供硬件版本信息的实施方案的地址映射和示意图。地址映射100a示出了少量寄存器的地址位置,这些寄存器将被软件用来标识一个硬件组件,逻辑100b是该硬件组件的一部分。具体地说,本领域技术人员将会认识到,地址映射100a示出了一种硬件组件的地址位置的组织方式,其遵从公知公用的外围部件互连或“PCI”总线的规范。地址00h处的供应商ID寄存器130将由软件读取,以提供一个16位二进制值,标识硬件组件的制造商。地址02h处的设备ID寄存器132用于提供一个16位二进制值,标识出该硬件组件是什么。版本ID寄存器126提供一个8位二进制值,标识该硬件组件的版本级别。当然,这些具体位尺寸只是提供来作为示例以便于讨论,而不是限制性的。
逻辑100b用来选择版本ID的值,所述版本ID的值将由软件从版本ID寄存器126读取,以标识逻辑100b作为其一部分的硬件组件的版本级别。标识逻辑100b作为其一部分的硬件组件的实际版本级别的值由步进版本(stepping revision)ID寄存器122保持。标识出硬件组件具有足够的兼容性以运行类似软件的硬件版本级别的值由兼容版本(compatible revision)ID寄存器124保持。步进版本ID寄存器122和兼容版本ID寄存器124都耦合到多路复用器120的输入端,多路复用器120的输出端耦合到版本ID寄存器126。一次写寄存器110和安全密钥值寄存器112耦合到比较器114的输入端,比较器114的输出端耦合到多路复用器120的选择输入端。
在本实施方案中,可以任意多种的可能方式将一个值写入一次写寄存器110中,比较器114然后将该值与安全密钥值寄存器112所保持的安全密钥进行比较。如果两个值匹配,则比较器114的输出发生改变,以向多路复用器120发出信号,以从提供由步进版本ID寄存器保持的值改变为提供由兼容版本ID寄存器提供的值,其中步进版本ID寄存器提供的值是以后软件能够从版本ID寄存器126读取的值(在本实施方案中是默认的)。如一次写寄存器110的名称所暗示的那样,一次写寄存器110被设计为在逻辑100b作为其一部分的硬件组件的正常操作期间只被写入一次。这一限制是安全规范的一部分,其只提供一次改变软件以后能够从版本ID寄存器126读取的值的机会。如果写入到一次写寄存器110的值与安全密钥值寄存器112保持的值不匹配,则丧失了改变软件以后能够从版本ID寄存器126读取的值的机会。
根据逻辑100b作为其一部分的硬件组件的设计,只要重置该硬件组件以初始化该硬件组件以作正常使用时,都可重置多路复用器120,以将保持在步进版本ID寄存器122中的值提供给读取版本ID寄存器126的软件。也可以如下进行,即重置硬件组件以作正常使用时将会更新一次写寄存器110提供的那一次机会,其中可借这次机会来改变软件将能从版本ID寄存器126读取的值。而且,虽然可有任何多种的方式来向一次写寄存器110写一个值,但在本实施方案的一个变体中,该值向一次写寄存器110的写入发生在软件实际向版本ID寄存器126写一个值时。
本领域技术人员将会容易地理解到,可使用很多种可能的方式来实现安全密钥值寄存器112、步进版本ID寄存器122和兼容版本ID寄存器124,以及向这些寄存器提供各自保持的值。这些方式包括但不局限于硬布线、使用只读存储器件、在逻辑100b作为其一部分的硬件组件的正常使用前的某个时刻由其他软件进行预编程、或通过安装在电路板上的电阻器来选择性地将集成电路的引脚设置为高或低电压,等等。具体地说,兼容版本ID寄存器124可被实现为可由软件进行写的寄存器,或非易失性可重编程存储器件,其可由用户(或技术人员)通过软件工具进行重编程。
而且,本领域技术人员将会理解到,对于选择将提供给读取版本ID寄存器126的软件的值来说,可以有许多种可能的方式用来限制这种选择所需的访问权限,使用安全密钥值以及伴随的安全密钥值寄存器112只是其中之一。具体地说,可以有一个软件,允许其进行所述选择并进行这种选择,而另一个软件只可读取已作出的选择。允许一个软件具有做出选择所需的访问权限,而另一个软件则不具有这一访问权限,这样的方式可以是一种硬件设计,其防止所述另一个软件具有访问权限、OS分配的许可(由此所述的一个软件则运行在比所述另一个软件较高的特权级别上),或者具有其他方式。也可以如下进行,即所述一个软件运行在与所述另一个软件不同的处理器上。具体地说,所述一个软件可以运行在一个独立的微控制器上,该微控制器用于配置计算机系统的硬件组件,这一配置可以是使所述硬件组件就绪于被其他软件所正常使用的操作的一部分。
另外,本领域技术人员将可理解到,对处理器可从版本ID寄存器126读取的值选择的锁存可以任何多种的方式执行。具体地说,上述讨论集中在使用一次性寄存器来同时锁存一个值并提供该值用于和安全密钥值寄存器112保持的安全密钥进行比较。对写入到一次写寄存器110的值的这一锁存意味着一次写寄存器110提供给比较器114的值在被锁存后就保持恒定,使得将比较器114到多路复用器120的输出保持恒定,从而有效地“锁存”了从版本ID寄存器126读取的值选择。然而,也可以将比较器114的输出在到达多路复用器120之前传递通过锁存器(未示出),以使得可锁存比较器114的输出本身。这可能是对锁存写入其中的多位值的一次写寄存器110的一种所希望的替换方案,以降低总体电路复杂程度。
虽然图1a和1b所示的实施方案具体来说遵从于PCI总线需求,但对本领域技术人员来说很清楚要求保护的本发明并不局限于此,可以有一些实施方案用于其他总线标准或完全不同的形式的硬件。
图2示出了一个实施方案的方框图,其示出了计算机系统和其一个硬件组件之间的交互。硬件组件200是计算机系统250的组件,并且可由计算机系统250的用户或支持这一用户的技术人员通过总线连接器288之一连接到计算机系统250的其余部分。硬件组件200包括版本ID寄存器226,其可具有由步进版本ID寄存器222或兼容版本ID寄存器224提供的值。硬件组件200还可包括存储了初始化软件228的固态设备。
在硬件组件200之外,计算机系统250还包括处理器259,其根据计算机系统250的设计目标或预期目标,可耦合到存储器控制器260、I/O控制器270、总线控制器280和图形控制器290中的一个或多个。存储器控制器260还耦合到存储器268,I/O控制器270还耦合到包括键盘278和/或鼠标279在内的一个或多个I/O设备,总线控制器280还耦合到总线连接器288,而图形控制器290还连接到显示器298。而且,计算机系统250还可包括初始化软件258。
初始化软件228和/或258可存储在某种形式的固态设备中,例如ROM(只读存储器)设备、EPROM(可擦除可编程只读存储器)设备或其他可重写存储器设备例如闪存设备或需要电池备份的非易失性存储器设备例如RAM(随机访问存储器)设备。或者,初始化软件228和/或258可以存储在多种可用的盘、磁带或其他形式的机器可访问介质中的任意之一中。
在给定的时刻,例如当给计算机系统250加电时,当重置计算机系统250时,和/或当改变计算机系统250的硬件组件的配置时(可能是由于添加或卸载一个硬件组件例如硬件组件200),执行初始化软件258以检查计算机系统250就绪于正常使用和/或使计算机系统250准备进行正常使用。初始化软件258可使得处理器259查询一个或多个硬件组件的存在或状态,和/或使得处理器259执行一种或多种测试。
在所述实施方案的一种变体中,软件258使得处理器259(或计算机系统250内的可能的某个其他处理器)检测硬件组件200的存在,并且可能已经被编写为与硬件组件200交互。如果真的将初始化软件编写为专门与硬件组件200交互,则可将初始化软件258编写为在步进版本ID寄存器222或兼容版本ID寄存器224之间进行选择,以提供后面将可从版本ID寄存器226读取的值。初始化软件258然后使得处理器259(或另一个处理器)访问控制在硬件组件200内进行这一值选择的逻辑,这时可使用与对图1b的逻辑100b详细描述的那样类似的方法,或使用多种其他可能方法中的任何一种。
在所述实施方案的一种变体中,包含在硬件组件200中的初始化软件228被编写为与硬件组件200交互,并可能已经被编写为在步进版本ID寄存器222和兼容版本ID寄存器224之间进行选择,以提供后面将可从版本ID寄存器226读取的值。如果是的话,则初始化软件228使得处理器259(或另一个处理器)访问控制硬件组件200内进行这一值选择的逻辑,这时可使用与对图1b的逻辑100b详细描述的那样类似的方法,或使用多种其他可能方法中的任何一种。
无论是初始化软件228还是258进行后面将从版本ID寄存器226读取的值的选择,实际的值选择都可能依赖于多种可能因素中的任意一种。在一个实施方案中,对于创建初始化软件228或初始化软件258的人来说,可能已知涉及特定操作系统或其他软件的问题会相当频繁地发生在下述时候,即当从来自步进版本ID寄存器222或兼容版本ID寄存器224的值当中选择一个或另一个值时。因此,创建初始化软件228或初始化软件258的人可能如下安排初始化软件228或258,以使得或者以某种方式限制值的选择,或者完全防止选择已知会引发所述问题的值。这可以如下实现,即或者将优选的选择“硬编码”到初始化软件228或258中,或者至少将优选的选择设置为默认的。
在另一个实施方案中,初始化软件228或初始化软件258可能向计算机系统250的用户(或支持这一用户的技术人员)提供了某种方式,用于根据计算机系统250通常会使用哪种操作系统或其他软件来选择一个值。在这一实施方案中,初始化软件228或258可使得处理器259(或某个其他处理器)提供某种形式可通过图形控制器290或显示器298观看到的屏幕菜单,用户或技术人员可通过这一菜单来进行所述选择。如果有多种可能的操作系统或其他软件,用户或技术人员可能选择来将之安装在计算机250上,则这种方法可能是所期望的。一些操作系统和其他软件可能变得不稳定或出现故障,或者在选择特定的一个可用值时不希望地请求获得新驱动器软件版本,但是,可能可通过选择另一个值来防止这些问题。情况也可能是这样的,即用户或技术人员可能已经用硬件组件200替换了较旧的硬件组件,硬件组件200被设计成可以与较旧的硬件组件相同的方式来使用,并且即使不替换与较旧的硬件组件一起使用的软件的情况下也可使用硬件组件200,只要选择这样的一个值,其使得硬件组件200或者将与较旧的硬件组件提供的值相同的值提供给所述软件,或者至少提供这样的一个值,其可以避免向用户或技术人员请求获得不同版本的软件或避免其他不希望的结果。
在另一个实施方案中,当用户或技术人员的选择被允许时,用户可能已经用硬件组件200替换了较旧的硬件组件,并且硬件组件200提供了与被替换的较旧的硬件组件不同或更广泛的能力。但是,用户或技术人员可能不希望使用这些不同或更广泛的能力,并且可能仅仅希望以与较旧的硬件组件相同的方式来使用硬件组件200,因此,可能希望选择这样的一个值,其使得硬件组件200或者将与较旧的硬件组件提供的值相同的值提供给所述软件,或者至少提供这样的一个值,其可以避免向用户或技术人员请求获得不同版本的软件或避免其他不希望的结果。
例如当硬件组件200是正在被安装以取代较旧的100Mbit/sec网卡的1Gbit/sec网卡时,或者当硬件组件200是正在被安装以取代只有立体声的声卡的环绕声声卡时,可能期望向用户或技术人员提供值选择,其在被操作系统或其他软件查询时将由版本ID寄存器226提供。情况可能是这样,即被替换的较旧的网卡或声卡的制造商只是不再制造较旧的板卡类型,并且这些板卡的较新的变体是目前可获得的唯一类型,但是,计算机系统250的用户(或该用户的技术人员)可能仅仅是想安装较新的硬件组件200以取代较旧的变体,并且仅仅是让计算机继续完全像以前那样运行。因此,如果为版本ID寄存器226选择一个匹配的值,或者在某个方面与由较旧的变体所提供的值等效的值,则可避免向操作系统或其他软件给出这样的提示,其表示现在出现了具有可能较新的能力的较新的硬件。
可能希望向用户或技术人员提供值选择的另一个特定的场合出现在下述情况下,即硬件组件200的制造商实际上在多个地点制造相同类型的软件,但是由于不同地点的制造工艺或其他与功能无关的较为次要的细节中的差别,步进版本ID寄存器222提供的值不同。可能期望可在多个值中进行选择,以使得硬件组件200的所有变体都能够提供相同的值,而无论它们是在何处制造的。
而且,在这些实施方案的任意之一中,或者在其他实施方案中,可能有多于两个的值可以选择。具体地说,可能有多于一个的兼容版本ID寄存器224,其中每个兼容版本ID寄存器224可提供不同的值来用于不同的操作系统或软件。
图3a示出了计算机系统的实施方案的方框图。以基本与图2的计算机系统250对应的方式,计算机系统350包括处理器359,其根据计算机系统350的设计或预期目的,可耦合到存储器控制器360、I/O控制器370、总线控制器380和图形控制器390中的一个或多个。存储器控制器360还耦合到存储器368,I/O控制器370还耦合到包括键盘378和/或鼠标379在内的一个或多个I/O设备,总线控制器380还耦合到总线连接器388,而图形控制器390还连接到显示器398。但是,与计算机系统250不同的是,计算机系统350的处理器359和存储器控制器中的之一或二者可具有带可选择值的版本ID寄存器。具体地说,如图3所示,处理器359可具有版本ID寄存器356以及步进版本ID寄存器352和兼容ID寄存器354,并且类似地,存储器控制器360可具有版本ID寄存器366以及步进版本ID寄存器362和兼容ID寄存器364。计算机系统350还可包括初始化软件358。
与图2的计算机系统250的情形相同,在计算机系统350中,初始化软件358可存储在固态设备中,例如ROM(只读存储器)设备、EPROM(可擦除可编程只读存储器)设备或其他可重写存储器设备例如闪存设备或需要电池备份的非易失性存储器设备例如RAM(随机访问存储器)设备。或者,初始化软件358可以存储在多种可用的盘、磁带或其他基于存储介质的设备的任意之一中。
在给定的时刻,例如当给计算机系统350加电时,当重置计算机系统350时,和/或当改变计算机系统350的硬件组件的配置时(可能是由于添加或卸载一个硬件组件),执行初始化软件358以检查计算机系统350就绪于正常使用和/或使计算机系统350准备进行正常使用。初始化软件358可使得处理器359查询一个或多个硬件组件的存在或状态,和/或使得处理器359执行一种或多种测试。
初始化软件358可使得处理器359(或计算机系统350内的可能的某个其他处理器)检测特定版本的处理器359和/或存储器控制器360的存在。初始化软件358可能已被编写为在处理器359的步进版本ID寄存器352或兼容版本ID寄存器354之间进行选择,以提供后面将可从版本ID寄存器356读取的值,或者在存储器控制器360的步进版本ID寄存器362或兼容版本ID寄存器364之间进行选择,以提供以后将可从版本ID寄存器366读取的值。初始化软件358然后使得处理器359(或另一个处理器)访问控制在这些值间进行选择的逻辑,并适当地作出选择。
与图2的计算机系统250的情形相同,随后将可从版本ID寄存器356和/或366读取的值的实际选择可能依赖于多种可能因素中的任意一种。这些因素可能是与初始化软件358的创建者对选择或不选择特定值时可能出现的问题或故障有关的知识,或者可能是由用户或支持用户的技术人员作出的选择。如前对图2的初始化软件228或258的讨论那样,初始化软件358可使用户或技术人员在多种值中进行选择,并且这一值选择可借助于通过图形控制器390和/或显示器398而显示的菜单来提供,或通过多种其他可能的方式中的任意之一来提供。
如果组件中发生故障,或者甚至只是希望用比以前安装的处理器要快的处理器359来升级计算机系统350,都会产生这样一种情形,其中引入了一个新的硬件组件,其具有的步进版本ID寄存器带有不同于被替换的较旧的硬件组件的值,但是,可能希望操作系统或其他特定软件不知道硬件组件中发生的所述改变。情况可能如下,即安装了一个较快的处理器359,其还提供了指令集的附加部分或其他功能,但是出于各种原因,用户或技术人员不想使用这些附加部分或其他功能,因此,用户或技术人员可决定选择这样一个随后可从版本ID寄存器356读取的值,其类似于较旧的处理器所提供的值。组件中发生故障可能需要安装新的存储器控制器360来替换较旧的那一个,但是由于存储器控制器360的制造商可能已经缩小了管芯尺寸或作出了某种其他的改变,这一改变以某种方式影响了存储器控制器360与它所替换的那一个相比较而言的工作方式,因此,存储器控制器360可能会在版本ID寄存器366中向操作系统或其他软件提供这样一个版本ID值,其使得操作系统或其他软件变得不稳定或不能工作,或者请求获得软件更新或另一个版本的软件,除非选择一个不同的值。
提供从版本ID 356或366之一或二者可读取的值中进行选择的一种特定场合是当计算机系统350是在公司等场合中使用的大量计算机中的一个时。预期在这一地点中使用的计算机(包括计算机系统350)都从同一来源购买,具有相同的配置,但是,至少在步进版本ID寄存器所提供的值在任何情况下都要使用的情况下,随着时间的过去,由于这些计算机中使用一个或多个组件的制造商作出的较小的改进,这些计算机的一个或多个组件的版本ID值可能不完全相同。这样的话,如果想在整个地点中都使用由每个软件的特定版本构成的一组公共软件,则会发生困难。可能需要能够在这些计算机中的至少一些当中,选择来自一个或多个组件的兼容版本ID寄存器的值,以可使用这一组公共软件。
图3b示出了具有计算机系统形式的另一个实施方案的方框图。具体地说,图3b的计算机系统350与图3a的计算机系统350基本相同,除了添加了第二处理器即处理器357之外。处理器357用于辅助于对计算机系统350的功能的配置和/或监控。处理器357可实现为微控制器,其在单个集成电路中包含一定量的存储器,其中包含其自身的初始化代码。处理器357可具有一个或多个通信端口,其用于将计算机系统350的工作状态中继转发到计算机系统350外部的设备,所述设备可能包括集中式的监控计算机系统。
在这一实施方案中,可通过处理器357自身的初始化代码来使得处理器357检测特定版本的处理器359和/或存储器控制器360的存在。处理器357然后可在处理器359的步进版本ID寄存器352或兼容版本ID寄存器354之间进行选择,以提供随后可从版本ID寄存器356读取的值,和/或在存储器控制器360的步进版本ID寄存器362或兼容版本ID寄存器364之间进行选择,以提供随后将可从版本ID寄存器366读取的值。处理器357然后使得所选择的值可由处理器359随后执行的软件通过版本ID寄存器356和/或366来读取。
在这样的实施方案中,另一个处理器例如处理器357可访问为版本ID寄存器356和/或366选择值而所需的逻辑,所述逻辑可被设计或以其他方式配置成不可被处理器359访问。而且,处理器357可直接、或通过处理器359所使用的逻辑间接访问图形控制器390,以向计算机系统350的用户或支持这一用户的技术人员提供一个机会,用于借助于屏幕菜单或其他方式来选择通过版本ID寄存器356和/或366可读的值。
虽然处理器359和存储器控制器360在图3a和3b中被示出为具有版本ID寄存器、步进版本ID寄存器和兼容版本ID寄存器,但是本领域内的技术人员将会容易地认识到这些可选择的方案是被提供来用于讨论的。具体地说,本领域内的技术人员将会容易地认识到,在存在于处理器359和/或存储器控制器360中的这些特征之外(或取代于这些特征),还可向计算机系统350的其他组件提供附加特征。
图4示出了一个初始化软件所采取的初始化方式的实施方案的流程图。在410,给计算机系统加电或重置该计算机系统,且在412,一个初始化软件开始由处理器执行。在420,初始化软件使得处理器定位版本ID寄存器,而在422,使得处理器加载一个指示(或者自身硬编码在初始化软件内,或从其他源加载),该指示表明了与是否应使用保持在步进版本ID寄存器中的值有关的选择。如果在430要使用步进版本ID寄存器中的值,并且如果在440不需要任何动作来使得步进版本ID寄存器中的值可用,则初始化软件不使得处理器采取任何与版本ID的值有关的进一步动作。但是,如果在440需要动作来使得步进版本ID寄存器中的值可用,则初始化软件在442采取附加的动作。如果在430不应使用保持在步进版本ID寄存器中的值,则应使用来自兼容版本ID寄存器中的值,并且在450采取使得兼容版本ID寄存器中的值可用的动作。
在一个实施方案中,情况可能是这样,即在442或450,必须将一个安全密钥值写到寄存器中以使得能选择预期的值,可通过与参考图1描述的方式类似的方式来进行这一操作。或者,可使用其他安全性方式,以确保只有初始化软件才能够实现这样的值的选择,所述的值将可从版本ID寄存器读取。
已结合优选实施方案描述了本发明。很清楚,对于本领域内的技术人员来说,考虑到前面的描述,很明显存在大量可替换方案、修改、变体和使用方式。本领域内的技术人员将会理解到,将要求保护的发明可被实施来支持对包括但不局限于计算机系统的数字电子系统的各种组件的版本的识别,虽然对实施方案的描述涉及寄存器的使用,并将步进版本ID值用作为默认值,但是本领域内的技术人员将会认识到可使用其他形式的硬件来保存、存储和/或提供值或其他形式的版本级别标识,并且可将版本ID值的其他变体来作为将要使用的默认值,除非用户、支持用户的技术人员或某种形式的软件采取了某种相反的动作。另外,虽然对实施方案的描述集中于对用于描述硬件组件的版本级别的值的选择上,但是对这些实施方案而讨论的方法还可应用于硬件组件的标识的其他方面,包括但不局限于设备ID值和/或设备ID寄存器。
Claims (22)
1.一种用于识别硬件兼容性与启用稳定软件镜像的装置,包括:
可由处理器读取的版本ID寄存器;
步进版本ID寄存器,用于维护表明第一硬件组件的实际步进版本级别的值;
至少一个兼容版本ID寄存器,用于维护表明第二硬件组件的步进版本级别的值,所述第二硬件组件可与所述第一硬件组件用于同一个软件;以及
选择逻辑,用于使得能从所述步进版本ID寄存器或所述至少一个兼容版本ID寄存器中之一中选择一个值,所选择的值可由所述处理器读取。
2.如权利要求1所述的装置,还包括存储设备,用于存储包括初始化软件的指令,其中所述选择逻辑对执行所述指令的所述处理器作出响应。
3.如权利要求1所述的装置,其中所述选择逻辑包括集成电路内的多路复用器,并且所述步进版本ID寄存器包括所述集成电路内的至少一个硬布线连接,所述硬布线连接将所述多路复用器的至少一个输入端连接到至少一个电压电平,以提供表明所述第一硬件组件的实际步进版本级别的所述值。
4.如权利要求3所述的装置,其中所述至少一个兼容版本ID寄存器中的一个包括下述封装的至少一个引脚,所述封装包容所述集成电路,所述引脚被连接到至少一个电压电平以提供所述第二硬件组件的步进版本级别。
5.如权利要求1所述的装置,其中所述版本ID寄存器可由所述处理器读取的地址与所述版本ID寄存器被指定来用于PCI总线的地址位置相一致。
6.如权利要求1所述的装置,其中所述步进版本ID寄存器中维护的实际步进版本级别表明所述第一硬件组件提供了由所述第二硬件组件所提供的之外的至少一种附加功能,并且所述至少一种附加功能对于将与所述第二硬件组件一起使用的一个软件用于所述第一硬件组件来说不是必需的。
7.如权利要求1所述的装置,其中所述选择逻辑包括用于维护安全密钥值的安全密钥值寄存器,并包括一次写寄存器,其中必须使得所述处理器通过初始化软件向所述一次写寄存器中写入一个与所述安全密钥值相匹配的值,以使得能由所述处理器控制所述选择逻辑。
8.一种计算机系统,包括:
处理器;
耦合到该处理器的存储器;
耦合到该处理器的图形控制器;
存储包含初始化软件的指令的存储设备;
可由该处理器读取的版本ID寄存器;
步进版本ID寄存器,用于维护表明第一硬件组件的实际步进版本级别的值;
至少一个兼容版本ID寄存器,用于维护表明第二硬件组件的步进版本级别的值,所述第二硬件组件可与所述第一硬件组件用于同一个软件;以及
选择逻辑,用于使得能从所述步进版本ID寄存器或所述至少一个兼容版本ID寄存器中之一中选择一个值,所选择的值可由所述处理器读取。
9.如权利要求8所述的计算机系统,其中所述选择逻辑对执行所述初始化软件的指令的所述处理器作出响应。
10.如权利要求8所述的计算机系统,其中所述选择逻辑包括集成电路内的多路复用器,并且所述步进版本ID寄存器包括所述集成电路内的至少一个硬布线连接,所述硬布线连接将所述多路复用器的至少一个输入端连接到至少一个电压电平,以提供表明所述第一硬件组件的实际步进版本级别的所述值。
11.如权利要求10所述的计算机系统,其中所述至少一个兼容版本ID寄存器中的一个包括下述封装的至少一个引脚,所述封装包容所述集成电路,所述引脚被连接到至少一个电压电平以提供所述第二硬件组件的步进版本级别。
12.如权利要求8所述的计算机系统,其中所述版本ID寄存器可由所述处理器读取的地址与所述版本ID寄存器被指定来用于PCI总线的地址位置相一致。
13.如权利要求8所述的计算机系统,其中所述步进版本ID寄存器中维护的实际步进版本级别表明所述第一硬件组件提供了由所述第二硬件组件所提供的之外的至少一种附加功能,并且所述至少一种附加功能对于将与所述第二硬件组件一起使用的一个软件用于所述第一硬件组件来说不是必需的。
14.如权利要求8所述的计算机系统,其中所述选择逻辑包括用于维护安全密钥值的安全密钥值寄存器,并包括一次写寄存器,其中必须使得所述处理器通过初始化软件向所述一次写寄存器中写入一个与所述安全密钥值相匹配的值,以使得能由所述处理器控制所述选择逻辑。
15.如权利要求8所述的计算机系统,其中所述第一硬件组件结合在所述处理器内。
16.一种计算机系统,包括:
第一处理器;
第二处理器;
耦合到所述第一和第二处理器的图形控制器;
存储包含初始化软件的指令的存储设备;
可由所述第一处理器读取的版本ID寄存器;
步进版本ID寄存器,用于维护表明第一硬件组件的实际步进版本级别的值;
至少一个兼容版本ID寄存器,用于维护表明第二硬件组件的步进版本级别的值,所述第二硬件组件可与所述第一硬件组件用于同一个软件;以及
可由所述第二处理器访问的选择逻辑,用于使得能从所述步进版本ID寄存器或所述至少一个兼容版本ID寄存器中之一中选择一个值,并使得该值可由所述第一处理器从所述版本ID寄存器读取。
17.如权利要求16所述的计算机系统,其中所述选择逻辑由执行所述初始化软件的指令的所述第二处理器控制。
18.如权利要求16所述的计算机系统,其中所述版本ID寄存器可由所述第一处理器读取的地址与所述版本ID寄存器被指定来用于PCI总线的地址位置相一致。
19.如权利要求16所述的计算机系统,其中所述第一硬件组件结合在所述第一处理器内。
20.一种用于识别硬件兼容性与启用稳定软件镜像的方法,包括:
使用安全密钥来获得对选择逻辑的访问权限;
使用所述选择逻辑来从步进版本ID寄存器或至少一个兼容版本ID寄存器中之一中选择一个值,所述步进版本ID寄存器用于维护表明第一硬件组件的实际步进版本级别的值,所述至少一个兼容版本ID寄存器用于维护表明第二硬件组件的步进版本级别的值,所述第二硬件组件可与所述第一硬件组件用于同一个软件;以及
使得所选择的值在处理器通过版本ID寄存器读取所选择的值时可被该处理器读取。
21.如权利要求20所述的方法,其中使用安全密钥和使用所述选择逻辑是由执行存储在机器可访问介质上的初始化软件的指令的所述处理器来实施的。
22.如权利要求20所述的方法,还包括:拒绝可执行一个软件的指令使用选择逻辑去选择值的处理器访问所述选择逻辑。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/187,222 | 2002-06-28 | ||
US10/187,222 US7100032B2 (en) | 2002-06-28 | 2002-06-28 | Method and apparatus for identifying hardware compatibility and enabling stable software images |
PCT/US2003/019543 WO2004003737A2 (en) | 2002-06-28 | 2003-06-20 | Method and apparatus for identifying hardware compatibility and enabling stable software images |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1678995A CN1678995A (zh) | 2005-10-05 |
CN1678995B true CN1678995B (zh) | 2010-05-26 |
Family
ID=29780018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN038199254A Expired - Fee Related CN1678995B (zh) | 2002-06-28 | 2003-06-20 | 用于识别硬件兼容性与启用稳定软件镜像的方法和装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7100032B2 (zh) |
EP (1) | EP1523709A2 (zh) |
JP (1) | JP2005531085A (zh) |
KR (1) | KR100824462B1 (zh) |
CN (1) | CN1678995B (zh) |
AU (1) | AU2003253670A1 (zh) |
TW (1) | TWI229793B (zh) |
WO (1) | WO2004003737A2 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7076643B2 (en) * | 2003-01-28 | 2006-07-11 | Hewlett-Packard Development Company, L.P. | Method and apparatus for providing revision identification numbers |
US20050262337A1 (en) * | 2004-05-24 | 2005-11-24 | Siemens Vdo Automotive Corporation | Method and device for determining flash software compatibility with hardware |
CN100356320C (zh) * | 2004-12-20 | 2007-12-19 | 上海贝尔阿尔卡特股份有限公司 | 用于选择多版本软件的方法和选择设备 |
CN100551088C (zh) * | 2006-02-23 | 2009-10-14 | 华为技术有限公司 | 一种检测升级软件与机顶盒硬件兼容性的方法 |
DE102006062216A1 (de) | 2006-12-22 | 2008-06-26 | Robert Bosch Gmbh | Kraftstoffinjektor |
US8683579B2 (en) * | 2010-12-14 | 2014-03-25 | Microsoft Corporation | Software activation using digital licenses |
SG194245A1 (en) * | 2012-04-17 | 2013-11-29 | ZingMobile Pte Ltd | A method for real-time synchronization between a device and host servers |
CN104156309B (zh) * | 2014-07-29 | 2016-10-05 | 深圳市腾讯计算机系统有限公司 | 终端应用的兼容性检测方法、装置及服务器 |
EP3289684A4 (en) * | 2015-04-29 | 2018-12-19 | Hewlett-Packard Development Company, L.P. | Connector element information detections |
US10659852B2 (en) * | 2017-07-20 | 2020-05-19 | Hewlett-Packard Development Company, L.P. | Connector element information detections |
CN114780154B (zh) * | 2022-04-19 | 2024-01-30 | 北京航天发射技术研究所 | 一种兼容不同生产厂家主控板硬件状态的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1022386C (zh) * | 1990-11-17 | 1993-10-13 | 太原重型机械学院 | 环状工件的液压胀形装置 |
US5577232A (en) * | 1991-06-17 | 1996-11-19 | Sun Microsystems, Inc. | Method and apparatus for allowing computer circuitry to function with updated versions of computer software |
US5802365A (en) * | 1995-05-05 | 1998-09-01 | Apple Computer, Inc. | Dynamic device matching using driver candidate lists |
US5809329A (en) * | 1994-05-27 | 1998-09-15 | Microsoft Corporation | System for managing the configuration of a computer system |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5454078A (en) * | 1992-08-07 | 1995-09-26 | International Business Machines Corporation | System for sharing name among network adapters by, dynamically linking adapters having same logical name and maintaining linked state of remaining adapters |
US5812858A (en) * | 1994-09-16 | 1998-09-22 | Cirrus Logic, Inc. | Method and apparatus for providing register and interrupt compatibility between non-identical integrated circuits |
US6330608B1 (en) * | 1997-03-31 | 2001-12-11 | Stiles Inventions L.L.C. | Method and system of a computer system for establishing communications between a service provider and a central service factory and registry in a computer system |
AU756227B2 (en) | 1998-06-18 | 2003-01-09 | Aristocrat Technologies Australia Pty Limited | Method of linking devices to gaming machines |
US6457069B1 (en) * | 1998-07-23 | 2002-09-24 | Compaq Information Technologies Group, L.P. | Method and apparatus for providing support for dynamic resource assignment and configuration of peripheral devices when enabling or disabling plug-and-play aware operating systems |
-
2002
- 2002-06-28 US US10/187,222 patent/US7100032B2/en not_active Expired - Fee Related
-
2003
- 2003-06-20 EP EP03761969A patent/EP1523709A2/en not_active Withdrawn
- 2003-06-20 KR KR1020047021044A patent/KR100824462B1/ko not_active IP Right Cessation
- 2003-06-20 WO PCT/US2003/019543 patent/WO2004003737A2/en active Search and Examination
- 2003-06-20 JP JP2004517724A patent/JP2005531085A/ja active Pending
- 2003-06-20 AU AU2003253670A patent/AU2003253670A1/en not_active Abandoned
- 2003-06-20 CN CN038199254A patent/CN1678995B/zh not_active Expired - Fee Related
- 2003-06-27 TW TW092117638A patent/TWI229793B/zh not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1022386C (zh) * | 1990-11-17 | 1993-10-13 | 太原重型机械学院 | 环状工件的液压胀形装置 |
US5577232A (en) * | 1991-06-17 | 1996-11-19 | Sun Microsystems, Inc. | Method and apparatus for allowing computer circuitry to function with updated versions of computer software |
US5809329A (en) * | 1994-05-27 | 1998-09-15 | Microsoft Corporation | System for managing the configuration of a computer system |
US5802365A (en) * | 1995-05-05 | 1998-09-01 | Apple Computer, Inc. | Dynamic device matching using driver candidate lists |
Also Published As
Publication number | Publication date |
---|---|
CN1678995A (zh) | 2005-10-05 |
TW200406677A (en) | 2004-05-01 |
WO2004003737A2 (en) | 2004-01-08 |
KR20050006294A (ko) | 2005-01-15 |
WO2004003737A3 (en) | 2005-02-17 |
KR100824462B1 (ko) | 2008-04-22 |
EP1523709A2 (en) | 2005-04-20 |
TWI229793B (en) | 2005-03-21 |
JP2005531085A (ja) | 2005-10-13 |
US7100032B2 (en) | 2006-08-29 |
AU2003253670A1 (en) | 2004-01-19 |
US20040003224A1 (en) | 2004-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103748569B (zh) | Usb设备的无驱动操作的系统和方法 | |
CN1678995B (zh) | 用于识别硬件兼容性与启用稳定软件镜像的方法和装置 | |
CN102200916B (zh) | 电子设备、可配置的部件及该部件的配置信息存储方法 | |
US6658562B1 (en) | Method, system, and program for customizing a basic input/output system (“BIOS”) configuration according to the type of user | |
CN107133033B (zh) | 一种客制化服务器logo的更新方法 | |
CN105867949A (zh) | 一种面向多结点服务器的bios在线刷新方法 | |
CN101964725B (zh) | 业务不中断升级的方法和系统 | |
CN102662697A (zh) | 一种软件升级方法及装置 | |
CN103970601A (zh) | 执行操作指令方法和装置 | |
JP2012123673A (ja) | 給電切替装置、給電切替装置制御方法、及び給電制御プログラム | |
CN110083491A (zh) | 一种bios初始化方法、装置、设备及存储介质 | |
CN100485582C (zh) | 服务器风扇的控制方法 | |
KR101739336B1 (ko) | Usb장치의 접속을 선택적으로 허용하는 usb포트 보안장치 및 이를 이용한 바이오스 접근 제한 방법 | |
CN106909382B (zh) | 输出不同类型系统启动信息的方法及装置 | |
CN1983195A (zh) | 嵌入设备、电子设备、嵌入设备的控制方法、控制程序、记录介质 | |
CN101001167A (zh) | 在智能平台管理接口动态设定管理功能的方法 | |
CN113821265B (zh) | 操作系统控制方法、装置、计算机主板和可读存储介质 | |
CN113254304A (zh) | 一种服务器关机类型的确定方法、服务器及存储介质 | |
CN114564725A (zh) | 命令交互的方法、装置、设备和存储介质 | |
CN110442387B (zh) | 一种车载系统的参数自适应方法、装置及汽车 | |
CN114123457A (zh) | 一种供电方法、装置及设备 | |
CN115729573A (zh) | 固件升级方法、装置、芯片及计算机存储介质 | |
CN111399871A (zh) | 一种hba卡的系统更新方法、装置、设备及介质 | |
US20050097372A1 (en) | System and method for wake on LAN | |
JP7528720B2 (ja) | 記憶装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100526 Termination date: 20150620 |
|
EXPY | Termination of patent right or utility model |