CN1889051A - 一种利用智能设备的固件实现部件检测的方法 - Google Patents

一种利用智能设备的固件实现部件检测的方法 Download PDF

Info

Publication number
CN1889051A
CN1889051A CN 200510079788 CN200510079788A CN1889051A CN 1889051 A CN1889051 A CN 1889051A CN 200510079788 CN200510079788 CN 200510079788 CN 200510079788 A CN200510079788 A CN 200510079788A CN 1889051 A CN1889051 A CN 1889051A
Authority
CN
China
Prior art keywords
test procedure
test
procedure module
calling interface
trigger condition
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
CN 200510079788
Other languages
English (en)
Other versions
CN100367226C (zh
Inventor
王晓文
刘涛
龚仲涛
樊小军
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.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing Ltd
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 Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CNB2005100797880A priority Critical patent/CN100367226C/zh
Publication of CN1889051A publication Critical patent/CN1889051A/zh
Application granted granted Critical
Publication of CN100367226C publication Critical patent/CN100367226C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明公开了一种利用智能设备的固件实现部件检测的方法,该方法在智能设备中预先设置测试程序模块,在固件上电自检POST过程中的指定位置设置所述测试程序模块对应的调用接口,该方法进一步包括:智能设备开机启动后运行POST过程,当运行到所述调用接口的位置时,暂时中断POST过程,启动该调用接口,利用该调用接口调用对应的测试程序模块对所述设备的部件进行测试,输出测试结果;该测试程序模块进行的测试结束后,再继续运行所中断的POST过程。本发明可以实现在智能设备的POST过程中,即可对部件进行较POST自检更深、更广的故障检测。

Description

一种利用智能设备的固件实现部件检测的方法
技术领域
本发明涉及智能设备的故障检测或监控技术,尤其涉及一种利用智能设备的固件实现部件检测的方法。
背景技术
当前,智能设备诸如个人电子计算机、掌上电脑、智能计算设备的应用越来越广泛,其中以个人电子计算机的应用尤为突出。但是,这些智能设备中的部件都有失效的概率,因此给智能设备的生产、使用和维护带来极大的负面影响。
为了检测智能设备中的部件是否正常工作,现有的技术方案主要有两种:
现有技术一、智能设备的上电自检(POST)方案。
当前的智能设备通过POST的过程对自身系统进行初始化,初始化的过程中包括对部件的简单检测,POST通过后再启动操作系统,进入正常的工作模式。实现POST过程的模块装载智能设备的固件(FIRMWARE)中,该固件也称为“韧体”,是一种固化在智能设备中的程序,用于控制智能设备的硬件系统,是智能设备软、硬件之间的接口。该固件一般存储在非易失性存储器中,如只读存储器(ROM)中,即使在智能设备没有外部电源供应的情况下其数据也不会丢失。在微型电子计算机中,所述固件为基本输入/输出系统(BIOS,BasicInput/Output System)。
由于各种智能设备的现有POST过程基本都类似,所以此处以计算机BIOS为例对现有的POST方案进行简单说明。图1为现有技术中计算机BIOS的POST流程图;如图1所示,对计算机中的每一个设备都给出一个检测代码,称为开机自我检测代码(POST CODE),在对计算机的某个部件进行检测时,首先将其对应的POST CODE写入80H地址的诊断端口,当该部件正常,则检测通过,输出正常信息,接着送另一个部件的POST CODE,对此部件进行测试。如果对某个部件的测试没有通过,则此POST CODE会在所述80H地址处保留下来,检测过程也会中止,并根据预定的、与POSTCODE对应的警报声进行报警,工程师可根据报警声分辨出哪个部件故障。
在此基础上,现有技术中还出现了一种计算机诊断卡,该诊断卡利用其自身的硬件电路读取BIOS中80H地址内的POST CODE,并经译码器译码,最后由数码LED指示灯将POST CODE对应显示出来,其原理与上述POST方案是一致的。这样就可以通过诊断卡上显示的16进制代码判断计算机的工作状态,而不用仅依靠计算机主板上单调的报警声来粗略判断部件故障。
但是,上述现有技术一存在以下缺点:
1、由于现有POST过程中的自检功能较简单,只能检测出设备中的某一部件是否故障,但是不能更深一步地检测该故障的类型和范围,因此在检测的深度、广度上都不够,输出的故障信息不完备,不足以使工程师判断出现详细的故障类型。
2、所述的诊断卡只是根据POST过程的内容在不同输出设备上的输出体现,即在诊断卡上以数码LED指示灯输出检测内容,而不是通过主板报警输出检测内容,因此仍然受POST自检诊断能力的限制,在检测的深度和广度上不够;而且在检测时必须打开计算机的机箱才能插入诊断卡,操作上不方便。
3、POST过程所输出的提示信息不仅包括正常信息、故障信息,而且还有更多出于其它目的的信息,例如:工程师临时加入的路标信息等等,这些信息混合在一起输出,非常杂乱,无法方便地判断出故障信息。
现有技术二、在智能设备的操作系统中运行专用的检测程序来检测智能设备的部件。但这种技术的缺点为:需要智能设备首先进入操作系统,然而大部分情况下,当智能设备的某些部件不正常时,智能设备无法进入操作系统,因此多数的部件故障情况下,这种方案根本无法应用实施。
发明内容
有鉴于此,本发明的主要目的是提供一种利用智能设备的固件实现部件检测的方法,实现在智能设备的POST过程中,即可对部件进行较POST自检更深、更广的故障检测。
为了实现上述目的,本发明的技术方案主要包括:
一种利用智能设备的固件实现部件检测的方法,该方法包括:
在智能设备中预先设置测试程序模块,在固件上电自检POST过程中的指定位置设置所述测试程序模块对应的调用接口,该方法进一步包括:
智能设备开机启动后运行POST过程,当运行到所述调用接口的位置时,暂时中断POST过程,启动该调用接口,利用该调用接口调用对应的测试程序模块对所述设备的部件进行测试,输出测试结果;该测试程序模块进行的测试结束后,再继续运行所中断的POST过程。
优选地,所述测试程序模块内嵌设置在所述固件中,或者设置在所述固件外的存储设备中。
优选地,所述的在POST过程中的指定位置设置所述测试程序模块对应的调用接口,是:在所述测试程序模块进行测试所必需的POST阶段之后的指定位置设置该测试程序模块的调用接口。
优选地,在测试程序模块进行测试的过程中,所述调用接口保持所述固件与测试程序模块的通信,根据测试需要从固件中获取测试所需要的原始参数并传送给测试程序模块,或者将测试程序模块的测试结果传送给固件,并由固件输出。
优选地,所述调用接口中设置有用于调用对应测试程序模块的触发条件;该方法进一步包括:
当启动所述调用接口后,该调用接口首先判定自身设置的触发条件是否有效,如果有效,则再调用该调用接口对应的测试程序模块进行测试;如果触发条件无效,则继续运行所中断的POST过程。
在所述调用接口中设置触发条件的具体方法为:在调用接口中设置通用接口GPI,用该GPI的两种不同电平状态分别表示触发条件有效和触发条件无效,通过外部开关设置该GPI的两种不同电平状态。
另外,在所述调用接口中设置触发条件的具体方法还可以为:在调用接口中设置与指定输入按键对应的诊断标识,该诊断标识与测试程序模块的触发条件对应;利用该诊断标识的两种不同状态分别表示触发条件有效或触发条件无效,并通过判断指定输入按键是否被激活来改变该诊断标识的状态。
优选地,所述的调用接口调用对应的测试程序模块是:通过钩HOOK方式调用测试程序模块的。
优选地,在所述POST过程中,如果在所述智能设备的标准输出设备模块没有成功初始化之前调用了测试程序模块,则以智能设备的蜂鸣器或喇叭发声输出检测结果;如果在所述标准输出设备模块成功初始化之后调用了测试程序模块,以标准输出设备的标准输出方式输出检测结果。
所述的智能设备为计算机,所述的固件为计算机的输入输出系统。
由于本发明所述的方法在BIOS执行POST的过程中就调用测试程序对智能设备的部件进行检测,不依附于操作系统,因此在操作系统没有启动前,对部件进行故障检测。同时,利用本发明开发的测试程序与计算机本身紧密结合,即使计算机有部分部件损坏,此测试程序仍然可以使用。这比之在操作系统下执行的测试软件有明显的优势:因为很多时候,计算机由于部件故障而根本无法运行进入操作系统的环境,所以这种情况下在操作系统中执行测试程序的方法无法实施。
由于本发明的测试程序独立与BIOS中的POST程序之外,用户可以根据实际的需要灵活开发具有更深、更广测试功能的测试程序,输出更加完善的故障信息,使工程师判断出现详细的故障类型,因此可以弥补现有POST过程检测功能过于简单、肤浅的弊端。
由于本发明的测试结果采用标准化的声音或屏幕显示的方式输出,使工程师很容易辨别出故障信息,方便用户使用。
使用本发明提供的方法开发的测试程序,操作简单,不易丢失,不依赖其它外部的软、硬件环境、获得的测试结果表达简单而且无信息传递畸变之忧。
本发明可采用简单的用户界面和标准化的测试结果报告,普通用户即可操作并给出专业性的报告,可以使得专业人员不必在场,通过通讯工具就可以准确判断故障所在或大致范围,从而指导用户排除故障,或得到有效的信息,使得在临场维修之前有所准备,比如:准备需要更换的部件。
本发明可以灵活设置测试程序触发条件的状态,对于某些情况下不需要执行的测试程序不进行调用,可提高设备的工作效率。
附图说明
图1为本发明所述方法的流程图;
图2为本发明实施例所述电子计算机BIOS程序模块与测试程序模块的关系示意图;
图3A为本发明实施例所述调用接口在POST流程中的位置示意图;
图3B为本发明实施例所述的在POST过程中调用测试程序的具体流程图;
图4为本发明实施例所述的在POST过程中调用多个测试程序的具体流程图;
图5为测试程序内部工作的流程图;
图6为所述的第一应用实例的流程图;
图7为所述的第二应用实例的GPI输入控制图。
具体实施方式
下面参照附图和具体实施例对本发明作详细说明。
图1为本发明所述方法的流程图。参见图1,本发明的方法主要包括:
步骤101、在智能设备中预先设置测试程序模块,在固件上电自检POST过程中的指定位置设置所述测试程序模块对应的调用接口。所述测试程序模块可内嵌在所述固件中,或者设置在所述固件外的存储设备中。
步骤102、智能设备开机启动后运行POST过程,当运行到所述调用接口的位置时,暂时中断POST过程,启动该调用接口,利用该调用接口调用对应的测试程序模块对所述设备的部件进行测试,输出测试结果。
在具体的调用方式上,可采用在POST程序中加入钩(HOOK)函数,将测试程序模块的位置信息设置在该HOOK函数中,利用该HOOK函数到对应的位置调用测试程序模块。
步骤103、该测试程序模块进行的测试结束后,再继续运行所中断的POST过程。
以下实施例以在电子计算机的BIOS中实现故障检测为例对本发明进行说明。
预先在电子计算机中设置用于测试计算机部件的测试程序模块,该测试程序模块的具体内容依赖于用户对测试功能点的需求,用户可针对不同的对象和场合需求利用现有的程序语言自由设计。
图2为本实施例所述电子计算机BIOS程序模块与测试程序模块的关系示意图。如图2所示,本实施例在BIOS中预先加入一个调用接口模块22,并在该接口模块22中设置测试程序模块的触发条件,该调用接口模块22用于在原BIOS程序模块21执行POST过程中的指定位置被启动运行,根据所述的触发条件是否有效来决定是否调用测试程序模块23,并且在测试程序模块23被调用运行时,调用接口模块22在BIOS程序模块21和测试程序模块23之间传递信息,根据测试需要从BIOS程序模块21中获取测试所需要的原始参数并传送给测试程序模块23,或者将测试程序模块23的测试结果传送给BIOS程序模块21,并由BIOS程序模块21输出。当然,对于测试结果也可以由测试程序模块23直接输出。
下面以在计算机中设置一个测试程序模块为例说明所述调用接口在POST过程中的位置。图3A为本实施例所述调用接口在POST流程中的位置示意图。参见图3A,POST过程本身可以分为多个阶段,每个阶段完成一定的初始化或自检功能,当所有的阶段都完成后,启动操作系统,由操作系统控制计算机系统。在调用测试程序模块之前,需完成运行该测试程序模块所必需的POST阶段,例如:测试程序模块为对硬盘功能进行测试的程序,其执行必须在POST完成检测和初始化硬盘控制器之后,此时系统具有了访问硬盘的功能后才可以执行对硬盘的测试过程;再例如:测试内存(RAM)的程序一定要在存储器控制器(Memory Controller)检测和初始化完成后进行(内存控制器的初始化中包括侦测是否有内存存在及其大小),否则,CPU根本不可能对内存访问,也就谈不上测试了。
因此该测试程序模块对应的调用接口需设置在运行该测试程序模块所必需的POST阶段之后,在测试结束后再执行后续的POST阶段。如果所述测试程序模块没有必需的POST阶段,则其对应的调用接口可以设置在POST过程中的任意位置。
图3B为本实施例所述在POST过程中调用测试程序的具体流程图。如图3B所示,该流程包括:
步骤301、计算机上电开机后,运行测试程序模块所必需的POST阶段。
步骤302、在指定位置启动调用接口,判断其中的测试程序模块的触发条件是否有效,如果有效,则执行步骤303;否则,执行步骤304。
步骤303、调用对应的测试程序模块进行测试,测试结束后执行步骤304。
步骤304、执行后续的POST阶段,在POST所有阶段完成后启动操作系统。
所述测试程序模块可以有多个,在调用接口模块中对于每一个测试程序模块都有对应的调用接口,该调用接口可根据测试程序的需要设置在BIOS的POST过程中的指定位置。
如果在计算机中设置了多个测试程序模块,假设数目为n,n为大于1的整数。每个测试程序模块分别都有其对应的调用接口和对应的触发条件。根据运行测试程序所必需的POST阶段,将该测试程序模块对应的调用接口设置在POST过程中的指定位置,该指定位置在运行测试程序所必需的POST阶段之后。
图4本实施例所述的在POST过程中调用多个测试程序的具体流程图。参见图4,在执行POST的过程中依次启动调用接口,判断其中触发条件的状态,即:在POST阶段1完成之后启动调用接口1,判断测试程序1的触发条件,如果有效,则调用测试程序1进行测试,并在测试完毕后运行POST阶段2,否则直接运行POST阶段2;在POST阶段2之后启动调用接口2,判断测试程序2的触发条件,有效则调用测试程序2,测试结束后运行POST阶段3,无效则直接运行POST阶段3;依此类推,在整个POST过程结束后,启动操作系统。
图5为测试程序内部工作的流程图。参见图5,在测试程序内部,包括:
步骤501、首先执行测试程序的主流程对计算机的部件进行测试。
步骤502、判断测试结果是否出现错误,如果是,则执行步骤503,否则,结束流程。
步骤503、以标准化的格式报警错误,并输出标准化的错误代码。步骤503中,可以由测试程序模块自身通知计算机的输出设备,例如喇叭和蜂鸣器,进行报警并通知显示设备,例如显示器,输出标准化的错误代码;也可以将报警信息和标准化的错误代码通过调用接口模块返回给BIOS程序模块,由BIOS程序模块通知计算机的对应输出设备进行报警和输出错误代码。如果没有测试出错误,也可将正确的测试结果通过计算机输出设备输出。
所述测试结果以声音或屏幕显示的形式输出。在计算机POST过程的前期,其标准输出设备模块(一般是显示卡和显示器)因没有初始化而不能工作的时段里,以蜂鸣器或喇叭发声的方式报告测试结果。当计算机标准输出设备初始化完毕进入正常工作状态的计算机POST后期时段内,则选择标准输出设备以字符显示的方式输出测试结果。
本发明的测试结果都以标准化的形式输出。除了自然语言方式的报告外,同时必须报告测试结果代码,此代码唯一地表示一种测试结果,避免了信息传递中的畸变。标准化形式包括声音信号的标准化和字符输出的标准化。
以下为本发明所述方法的两个具体的应用实例:
第一应用实例:
由于很多时候计算机用户会遇到计算机“开机无显”的故障,即按下计算机机箱上的电源按钮,正常情况下,计算机应该执行BIOS的POST过程,在显示屏幕上显示厂商LOGO或者自检信息,但有时会出现开机后,显示器没有显示的故障。通常情况下,除了上述信息,计算机使用者提供不来更多的有价值的信息了。
利用本发明的方法,可以在BIOS中加入一个测试程序模块,此测试程序模块的功能只是使主板上的蜂呜器或喇叭发出一个短促的高频短声。由于该测试程序没有必需的POST准备阶段,因此该测试程序模块的调用接口设置在计算机上电CPU开始执行指令处,且将该测试程序的触发条件的状态默认设置为有效。
图6为该应用实例的流程图。参见图6,包括:步骤601、计算机开机上电后,CPU开始执行指令时马上调用这个测试程序以驱动蜂鸣器发声;步骤602、调用测试程序结束后执行BIOS的POST过程;步骤603、POST过程结束后启动操作系统。
对于计算机使用者来说,如果开机后马上听到这个提示音,则表示CPU已经开始工作,计算机主机中的电源和主板上主要的芯片如CPU、北桥芯片、南桥芯片,甚至SUPER IO芯片都是基本正常的。此时,已经排除了计算机中电源、主板、CPU这几个部件存在故障的可能。可以进一步检查如显示卡和显示器等其它部件。
如果开机没有听到这个提示音,则表示CPU没有工作,此时故障的可能性有:电源故障、保存BIOS程序和数据的FLASH ROM芯片故障、南桥芯片损坏、北桥芯片损坏、蜂呜器或喇叭本身出现故障、CPU损坏。以上的故障看起来很多,但实际涉及的计算机部件只有三件:电源、主板和CPU。根据实际统计的结果看,实际上后五种故障出现的概率非常小,尤其后四种故障出现的概率更小,因此大多数问题都集中在“电源故障”。
这样,计算机维护人员只要请用户执行打开计算机的操作,就可以由“是否有短促的蜂鸣声”在所有部件中排除几大可能的故障部件,缩小存在故障的范围。
第二应用实例:
本实例中在BIOS中嵌入内存测试程序模块、CMOS测试程序模块、以及硬盘测试程序模块。本实例的流程可以参见图4,假设图4中的n为3,其中内存测试程序模块、CMOS测试程序模块、以及硬盘测试程序模块分别对应图4中的第一、第二、和第三个测试程序模块。计算机上电开机,执行POST阶段1后,暂停POST过程,启动内存测试程序模块对应的调用接口1,判断其中的触发条件1的状态值,如果该触发条件1有效,则调用执行内存测试程序,并将测试结果信息通过计算机的输出设备以标准化的形式输出,输出设备可以为蜂呜器、喇叭、显示器等;例如蜂呜器的测试结果如表1所示:
Figure A20051007978800131
表1
表1中,第一条的蜂呜声不重复;第二条蜂呜声重复发出,且间隔时间为4s;第三条蜂呜声也重复发出,且间隔时间为4s。所述蜂呜声为通过计算机系统的扬声器发出。
在执行完内存测试程序之后,返回POST流程,在执行完POST阶段2后,启动CMOS测试程序模块对应的调用接口2,读取其中的触发条件2的状态,如果触发条件2的状态为有效值,则调用并执行COMS测试程序,CMOS测试程序将测试结果通过计算机的输出设备以标准化的形式输出,例如可以通过显示器输出,其输出信息包括标准化的编码和提示信息,例如其输出信息参见表2:
  编码   提示信息(英文)   提示信息(中文)   描述
4152 CMOS Battery Low   CMOS电池电量不足,请更换CMOS电池。   CMOS电池电量不足,意味着需要更新CMOS电池。当用户故意给CMOS放电时也会提示该信息。
4253   CMOS  ChecksumBad   CMOS Checksum错误!   CMOS Checksum错误。可以通过在SETUP中load default方式解决。
表2
在CMOS检测程序执行后,返回到POST流程,在执行完POST阶段3后,启动硬盘测试程序对应的调用接口3,判断其中的触发条件3的状态,如果触发条件3有效,则调用执行该硬盘测试程序3,该硬盘检测程序用于对计算机的硬盘进行检测,并将测试结果通过计算机的输出设备以标准化的形式输出,例如也可以通过显示器输出,其输出信息包括标准化的编码和提示信息,例如其输出信息参见表3:
  编码   提示信息(英文)   提示信息(中文)   描述
2111 Hard Disk Error   不能正常检测到硬盘;   BIOS在POST过程中不能正常检测和配置IDE/ATAPI设备。
2112   S.M.A.R.TTesting Failed.   硬盘S.M.A.R.T检测失败,请备份数据并更换硬盘。   当ATAPI设备出现S.M.A.R.T测试错误时提示该信息。一般出现该错误需要重新调换硬盘。
2113   Read Hard DiskError 读取硬盘失败   BIOS在读取硬盘引导扇区数据时出错,即INT 13h调用出错。
表3
当执行完硬盘测试程序3后,又返回到POST主流程,在执行完所有的POST流程后,BIOS启动操作系统,将计算机的控制权交给操作系统。
以下对所述触发条件的设置方式进行说明:
本发明所述方法可以预先将所述所有调用接口中的触发条件状态默认设置为有效状态,在POST过程中自动全部调用执行所述所有的测试程序;由于计算机中一些部件出现故障并不影响整个系统的运作,所以用户也可以自主设定,不执行部分或全部测试项目,即将所述触发条件预先设为无效状态,通过计算机输入设备的输入信号改变其状态,使用户可以通过输入设备控制BIOS是否执行某个测试程序。
这样,通过在智能设备中嵌入的测试程序模块,计算机的操作者可以根据需要对计算机的所有部件或者有选择地对部分部件进行所有可能实现的测试。当计算机出现故障时,可以准确方便地发现问题所在,从而为顺利排除故障打下良好的基础。
当计算机正常运作时,这部分程序中的大部分可以都不被调用,只有在需要的时候,由计算机使用者主动操作使计算机进入诊断模式,调用测试程序实现故障诊断。实现此模式切换的方式有很多种方式,比如通过键盘控制、通过通用接口(GPI)控制,等等。
例如,当计算机开机后,在POST过程中按下键盘的热键,则系统切入诊断模式,与该热键对应的触发条件变为有效,执行对应的测试程序,除原先的BIOS在POST过程中的输出外,输出测试程序的测试结果报告。
再例如,设置安装在机箱上的开关,该开关通过GPI对应控制某个触发条件的状态,因此可选择全部或部分测试项目,然后开机,计算机在POST过程中运行触发条件有效的测试程序,同时输出测试结果。
对于键盘控制方式,需要在POST中对于键盘的初始化过程结束后才能使用,其具体的实施过程可以为:在BIOS中程序中设立一个诊断模式标志(FLAG),该FLAG与一个键盘热键对应、以及与所有的测试程序的触发条件对应,如果该FLAG为“真”,则对应的触发条件有效。在默认情况下,FLAG为“非真”状态,如果在计算机POST过程中按下所述键盘热键,则BIOS程序则将这个FLAG标志设为“真”,此时启动诊断模式,在后续的POST流程中,调用执行相应的测试程序模块进行测试。
对于GPI控制方式,其具体的实施过程可以为:在硬件上,可以采用微动开关设置在计算机的机箱上,每个微动开关对应一个GPI的输入。GPI是当代计算机中普遍使用的一种由计算机硬件工程师自由选用的输入管脚,可以由计算机软件查询芯片组中对应的寄存器获取GPI外部输入电平的状态。此处采用Intel公司的产品ICH4中提供的GPI为例,使用了其中的GPI0~GPI4五个GPI。
图7为本应用实例的GPI输入控制图。如图7所示,此处设计了5个GPI输入,用于控制计算机是否运行测试程序0~4。此处设定当GPI输入为高电平时,对应测试程序的触发条件为有效,反之,对应测试程序的触发条件为无效,在计算机POST过程中会跳过对应测试程序不予执行。软件实现方面,可通过分别读取GPI输入电平来判定触发条件是否有效,以此决定是否运行对应的测试程序。
参考Intel公司ICH4的产品手册,可以看出,在PCI Configuration Space中的寄存器BUS0:DEV1F:FUNC0:REG58中记录着一个基地址,通过访问以这个地址为偏移的一组I/O地址,可以读取GPI的状态。假定这个寄存器的值为00001181H,则基地址为1180h。读取I/O端口1180h+0Ch=118Ch中的一个字节的数值,即可得知GPI0~GPI7的电平输入状态。Bit0对应GPI0,Bit1对应GPI1,...依此类推。
以K0控制测试程序0为例,假设芯片组中的寄存器判断框中的程序伪代码如下:
读取I/O端口118Ch中的一个字节,将值赋给整数i;
i<-i.AND.01h;
ifi>0
   调用测试程序0;
else
   不调用测试程序继续执行;
endif
这样就实现了用机箱上的微开关选择执行测试程序的目的。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

Claims (10)

1、一种利用智能设备的固件实现部件检测的方法,其特征在于,
在智能设备中预先设置测试程序模块,在固件上电自检POST过程中的指定位置设置所述测试程序模块对应的调用接口,该方法进一步包括:
智能设备开机启动后运行POST过程,当运行到所述调用接口的位置时,暂时中断POST过程,启动该调用接口,利用该调用接口调用对应的测试程序模块对所述设备的部件进行测试,输出测试结果;该测试程序模块进行的测试结束后,再继续运行所中断的POST过程。
2、根据权利要求1所述的方法,其特征在于,所述测试程序模块内嵌设置在所述固件中,或者设置在所述固件外的存储设备中。
3、根据权利要求1所述的方法,其特征在于,所述的在POST过程中的指定位置设置所述测试程序模块对应的调用接口,是:在所述测试程序模块进行测试所必需的POST阶段之后的指定位置设置该测试程序模块的调用接口。
4、根据权利要求1所述的方法,其特征在于,在测试程序模块进行测试的过程中,所述调用接口保持所述固件与测试程序模块的通信,根据测试需要从固件中获取测试所需要的原始参数并传送给测试程序模块,或者将测试程序模块的测试结果传送给固件,并由固件输出。
5、根据权利要求1所述的方法,其特征在于,所述调用接口中设置有用于调用对应测试程序模块的触发条件;该方法进一步包括:
当启动所述调用接口后,该调用接口首先判定自身设置的触发条件是否有效,如果有效,则再调用该调用接口对应的测试程序模块进行测试;如果触发条件无效,则继续运行所中断的POST过程。
6、根据权利要求5所述的方法,其特征在于,在所述调用接口中设置触发条件的具体方法为:在调用接口中设置通用接口GPI,用该GPI的两种不同电平状态分别表示触发条件有效和触发条件无效,通过外部开关设置该GPI的两种不同电平状态。
7、根据权利要求5所述的方法,其特征在于,在所述调用接口中设置触发条件的具体方法为:在调用接口中设置与指定输入按键对应的诊断标识,该诊断标识与测试程序模块的触发条件对应;利用该诊断标识的两种不同状态分别表示触发条件有效或触发条件无效,并通过判断指定输入按键是否被激活来改变该诊断标识的状态。
8、根据权利要求1所述的方法,其特征在于,所述的调用接口调用对应的测试程序模块是:通过钩HOOK方式调用测试程序模块的。
9、根据权利要求1所述的方法,其特征在于,在所述POST过程中,如果在所述智能设备的标准输出设备模块没有成功初始化之前调用了测试程序模块,则以智能设备的蜂鸣器或喇叭发声输出检测结果;如果在所述标准输出设备模块成功初始化之后调用了测试程序模块,以标准输出设备的标准输出方式输出检测结果。
10、根据权利要求1至9任一项所述的方法,其特征在于,所述的智能设备为计算机,所述的固件为计算机的输入输出系统。
CNB2005100797880A 2005-06-28 2005-06-28 一种利用智能设备的固件实现部件检测的方法 Active CN100367226C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005100797880A CN100367226C (zh) 2005-06-28 2005-06-28 一种利用智能设备的固件实现部件检测的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005100797880A CN100367226C (zh) 2005-06-28 2005-06-28 一种利用智能设备的固件实现部件检测的方法

Publications (2)

Publication Number Publication Date
CN1889051A true CN1889051A (zh) 2007-01-03
CN100367226C CN100367226C (zh) 2008-02-06

Family

ID=37578330

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100797880A Active CN100367226C (zh) 2005-06-28 2005-06-28 一种利用智能设备的固件实现部件检测的方法

Country Status (1)

Country Link
CN (1) CN100367226C (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101826046B (zh) * 2009-03-06 2011-12-14 纬创资通股份有限公司 计算机开机除错方法
US8122293B2 (en) 2008-06-05 2012-02-21 Winstron Corporation Method for automatically simulating manual testing of a computer, and testing system for performing the method
CN101604279B (zh) * 2008-06-11 2013-06-19 纬创资通股份有限公司 电脑开机后自动模拟人工检测的方法、检测系统及外接式储存装置
CN103176872A (zh) * 2011-12-21 2013-06-26 英业达科技有限公司 计算机系统及其检测报警方法
CN104615512A (zh) * 2013-11-05 2015-05-13 英业达科技有限公司 以中断执行上电自检所执行的目标程序的系统及方法
CN103176872B (zh) * 2011-12-21 2016-11-30 英业达科技有限公司 计算机系统及其检测报警方法
CN107193703A (zh) * 2017-06-30 2017-09-22 山东超越数控电子有限公司 一种判断bios post过程设备功能的方法及装置
CN110795364A (zh) * 2019-10-31 2020-02-14 四川效率源信息安全技术股份有限公司 一种ide模式下访问硬盘的方法
CN116779126A (zh) * 2022-03-11 2023-09-19 广州星际悦动股份有限公司 个人护理设备的检测方法、个人护理设备、终端及介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020169997A1 (en) * 2001-02-01 2002-11-14 Song-Bor Chen BIOS debug method
CN1427338A (zh) * 2001-12-17 2003-07-02 英业达股份有限公司 系统开机自我检查装置以及方法
CN100472460C (zh) * 2002-12-11 2009-03-25 联想(北京)有限公司 检测和显示计算机自检信息的方法及装置
US20040267708A1 (en) * 2003-06-18 2004-12-30 Rothman Michael A Device information collection and error detection in a pre-boot environment of a computer system

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8122293B2 (en) 2008-06-05 2012-02-21 Winstron Corporation Method for automatically simulating manual testing of a computer, and testing system for performing the method
CN101604279B (zh) * 2008-06-11 2013-06-19 纬创资通股份有限公司 电脑开机后自动模拟人工检测的方法、检测系统及外接式储存装置
CN101826046B (zh) * 2009-03-06 2011-12-14 纬创资通股份有限公司 计算机开机除错方法
CN103176872A (zh) * 2011-12-21 2013-06-26 英业达科技有限公司 计算机系统及其检测报警方法
CN103176872B (zh) * 2011-12-21 2016-11-30 英业达科技有限公司 计算机系统及其检测报警方法
CN104615512A (zh) * 2013-11-05 2015-05-13 英业达科技有限公司 以中断执行上电自检所执行的目标程序的系统及方法
CN107193703A (zh) * 2017-06-30 2017-09-22 山东超越数控电子有限公司 一种判断bios post过程设备功能的方法及装置
CN110795364A (zh) * 2019-10-31 2020-02-14 四川效率源信息安全技术股份有限公司 一种ide模式下访问硬盘的方法
CN116779126A (zh) * 2022-03-11 2023-09-19 广州星际悦动股份有限公司 个人护理设备的检测方法、个人护理设备、终端及介质

Also Published As

Publication number Publication date
CN100367226C (zh) 2008-02-06

Similar Documents

Publication Publication Date Title
CN1889051A (zh) 一种利用智能设备的固件实现部件检测的方法
CN100458692C (zh) 开机自我测试除错系统及方法
CN1506821A (zh) 检测和显示计算机自检信息的方法及装置
CN1752942A (zh) 一种电脑主板故障的监测诊断装置
US20110296072A1 (en) System and method for controlling pci-e slots of computer
CN116298801A (zh) 芯片测试装置、方法、电子设备及存储介质
TW201933091A (zh) 資料儲存裝置之測試系統與資料儲存裝置之測試方法
US7213159B2 (en) Method for testing and verifying power management features of computer system
CN1737767A (zh) 芯片电子硬件上具有中止执行能力的除错支援单元及方法
US7856622B2 (en) Computer program runtime bottleneck diagnostic method and system
CN1317616C (zh) 多重操作系统的多键引导系统及方法
CN101923503B (zh) 调整内存内部参数的方法及使用其的电脑系统
CN111077401B (zh) 一种键盘测试方法、装置和存储介质
CN1770106A (zh) 通信设备复位信息保存方法
CN101826046B (zh) 计算机开机除错方法
CN1155889C (zh) 嵌合于连接端口上的系统状态显示信号灯装置
CN1324464C (zh) 可针对电脑装置的错误状况即时提出解决方案的方法
CN1713142A (zh) 嵌入式计算机系统的启动信息输出方法
CN1904851A (zh) 一种单步执行在片调试功能的方法及装置
CN101639796A (zh) 计算机系统的检测方法
CN1667545A (zh) 具检测基本输入输出系统状态的工作时钟设定方法及装置
CN100401263C (zh) 开机查错系统及方法
CN116361195B (zh) 一种调试Linux内核的方法
CN105786658A (zh) 可检测电脑内部状态的电脑系统与方法
TW201624294A (zh) 可檢測電腦內部狀態之電腦系統與方法

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