CN1162780C - 基本输入输出系统的追踪除错方法 - Google Patents
基本输入输出系统的追踪除错方法 Download PDFInfo
- Publication number
- CN1162780C CN1162780C CNB01100052XA CN01100052A CN1162780C CN 1162780 C CN1162780 C CN 1162780C CN B01100052X A CNB01100052X A CN B01100052XA CN 01100052 A CN01100052 A CN 01100052A CN 1162780 C CN1162780 C CN 1162780C
- Authority
- CN
- China
- Prior art keywords
- bios
- order
- hardware
- output order
- mistake
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
一种BIOS的追踪除错方法,其包括有:插入一[错误输出指令]的步骤,是在POST程序的子程序中的任一个硬件测试或初始化步骤之后加入一种[错误输出指令],用以在进行该硬件测试或初始化步骤之后输出某特定值到调试端口;以及使前述[错误输出指令]启动的步骤,是在该[错误输出指令]之前加入一条件判断式,用以在条件成立时启动该[错误输出指令],用以输出某特定值到调试端口。
Description
技术领域
本发明涉及一种基本输入输出系统(BIOS)的追踪除错方法,是一种专为BIOS在开机自测(Power On SelfTest;POST)阶段,正确找出造成测试出错的硬件或原因的除错方法,也就是为BIOS出厂前的测试作业而设计的一种除错方法。
背景技术
开机自测(简称POST)属于基本输入输出系统(Basic Input Output System,简称BIOS)的一部分,电脑电源一开启会先执行POST程序对硬件进行测试或初始化程序,在确认硬件设备都属于正常工作状态后,才会载入作业系统。POST程序是由一连串的子程序(sub-routine)所组成,每个子程序可能包含数个硬件测试或初始化的动作;在POST阶段依序执行每个子程序的同时,会将该子程序的代码输出至一特定输入输出(I/O)位址的调试端口(Debug port),当POST测试因某个动作的执行发生错误而停止时,即要借由读取调试端口的值来得知是哪一个子程序产生错误。
即使技术人员知道在POST测试的过程中,错误是发生在哪一个子程序,但却仍然无法正确的判断是哪一个硬件发生故障,因为在一个子程序之中可能会依特定的分类或某特定的步骤设计,对多个硬件装置做测试及初始化,所以即使知道错误是发生在此一子程序,仍然无法确定是由哪个硬件的错误所导致。
例如现有的技术中,某一电脑系统的POST 01的子程序中,需执行下列四个步骤:
【POST程序例1】
1.Out debug port with POST function number=01h
2.call POST_01h sub-routine:
·Setup HDD controller
·Rest HD drives
·Update CPU micro-code
·Config and enable L2 cache
而上述POST程序的子程序在开始执行前,将会输出一个olh的值,如果系统当在此一子程序中,则无法知道是HD otroller有问题,还是在enablecache时有问题。
所以,技术人员必需再花费时间针对该子程序中的每个硬件进行局部测试,确实浪费许多时间及人力。
发明内容
本发明的主要目的就是要提供一种专为BIOS在POST阶段,可以正确找出造成测试出错的硬件或原因的除错方法。
本发明的另的目的在于提供一种可以正确找出错误原因,又不致影响BIOS在使用时的执行效率的除错方法。
本发明提供了一种基本输入输出系统的追踪除错方法,用以在基本输入输出系统的开机自测阶段,正确找出测试出错的硬件或原因的除错方法,其包括有:插入一错误输出指令的步骤,是在开机自测程序的子程序中的任一个硬件测试或初始化步骤之后加入一种错误输出指令,用以在进行该硬件测试或初始化步骤之后输出一特定值到调试端口;以及使前述错误输出指令启动的步骤,是在该错误输出指令之前加入一条件判断式,用以在条件成立时启动该错误输出指令,用以输出一特定值到调试端口。
也就是说,本发明的方法主要是在测试或初始化的硬件超过一个以上或是测式步骤冗长的子程序中的适当位置,插入一[错误输出指令],用在以任何一个硬件测试或初始化之后输出某一特定值到调试端口,并且在该[错误输出指令]前插入一条件判断式,以便在编译子程序时决定是否要将该[错误输出指令]加入编译。因此、借由对该条件判断式的控制,将可以决定这个BIOS成为出厂前供技术人员对BIOS进行追踪除错的测试版BIOS,或是正式出货的正式版BIOS。
下面结合实施例所示附图,对本发明作进一步详细说明。
附图说明
图1为本发明的完整测试流程图。
具体实施方式
本发明所提供的方法,可以协助技术人员正确地找出在开机自测阶段造成BIOS测试或初始化错误的硬件或原因。此一方法主要可以借由下列两个步骤完成,其包括有:
插入一[错误输出指令]的步骤;以及
使前述[错误输出指令]启动(enable)的步骤。
在插入[错误输出指令]的步骤中,主要是针对POST程序之中那些用以测试或初始化的硬件超过一个以上或是测试步骤冗长的子程序,在这种子程序中的任一个硬件测试或初始化步骤之后加入一种[错误输出指令],而这种[错误输出指令]的功能就是在每一个硬件的测试或初始化步骤之后输出某特定值到调试端口的指令。一旦因为某个硬件造成测试或初始化的错误、失败(failure)或死机,技术人员便可以通过读取调试端口的值,而正确的知道是那个硬件所造成,进而排除故障。
但是在加上前述的[错误输出指令]之后,POST程序在BIOS之中所占的空间势必超过其原先所设计的大小,而且这种应用于BIOS的调试功能对于消费者而言,并不需要,而且过长过大的POST程序也会影响BIOS的执行效率。
因此在本发明的主要步骤中使前述[错误输出指令]启动的步骤,其功能便是用于决定BIOS的版本,也就是通过这个步骤的加入,将可以决定含有POST程序的BIOS是出厂前供技术人员除错测试的[测试版BIOS],也或是正式出厂供消费者使用的[正式版BIOS];为了实现此一功能,本发明是在每一个[错误输出指令]之前加入一个[条件判断式],当此一[条件判断式]成立时,才会在进行BIOS的POST测试作业中,对本发明所加入的[错误输出指令]进行编译,使其正常的执行,用以在子程序中的任一个硬件进行测试或初始化步骤之后,输出某特定值到调试端口。
以前述的[POST程序例1]为例,若依据本发明的方法实施,则其中POST01的子程序将改写如下:
【POST程序例2】
1.Out debug port with POST function number=01h 2.call POST_01h sub-routine: ·Setup HDD controller ·if#debug enable ←插入的[条件判断式] out debug port with E1h ←插入的[错误输出指令] ·Rest HD drives ·if#debug enable ←插入的[条件判断式] out debug port with E2h ←插入的[错误输出指令] ·Update CPU micro-code ·if#debug enable ←插入的[条件判断式] out debug port with E3h ←插入的[错误输出指令] ·Config and enable L2 cache ·if#debug enable ←插入的[条件判断式] out debug port with E4h ←插入的[错误输出指令]
而在上述的[POST程序例2]之中的[E1h]、[E2h]、[E3h]与[E4h],则是各个[错误输出指令]输出至调试端口的特定值,当然这个特定值并非仅限于上述例子中的值。
依据本发明所公开技术手段,位于[错误输出指令]之前的[条件判断式],可以借由读取某一个由程序设计者所指定的特定变数的值来决定此一条件判断式是否成立,也可以是指除了某一特定值之外便视为无效的判断式。而在上述[POST程序例2]之中的“debug”就是一个变数。而这个变数的数据格式我们可以定义为一个逻辑值(fail or ture)。所以、技术人员可以通过下达一个指令(例如:debug=true或debug=fail),或是改变其逻辑值的方式使这个条件判断式成立,进而使得BIOS在进行POST测试作业之前,决定是否要将本发明所加入的[错误输出指令]编译加入POST程序之中。
一旦[条件判断式]的条件成立,本发明所加入的[错误输出指令]就会被编译加入POST程序之中,也就是说[错误输出指令]将被启动,用以在子程序中的任一个硬件进行测度或初始化步骤之后,输出某特定值到调试端口。当然、为了提高BIOS在出厂前的除错测试效率,技术人员可以先依一般的测试方式在[错误输出指令]不启动(disable)的情形下对BIOS进行POST测试,假若发现某一个BIOS发生故障或错误时,再重新通过下达指令的方式使[错误输出指令]启动(此时的BIOS将变成所谓的[测试版BIOS]),以便进一步追踪查出造成BIOS错误的硬件或原因。一旦BIOS通过POST测试出厂,为了不影响BIOS在日后被使用者使用时的执行效果,技术人员将同样可以通过下达指令的方式使[错误输出指令]不启动(disable)(此时的BIOS将变成所谓的[正式版BIOS]),因此、在一般消费者使用BIOS时,本发明在POST程序之中加入的[错误输出指令]就不会被编译加入POST程序,而不影响BIOS的执行效率。
最后请参照图1,其为依据本发明的技术设计完成的POST程序的完整工作流程;首先,技术人员设定启动变数的值(步骤10),以决定在POST测试的过程中是否要在任一个硬件进行测试或初始化步骤之后,输出某特定值到调试端口。接着依序执行POST程序中的第一个子程序(步骤11),直至全部的子程序执行完毕便结束POST的测试(步骤16)。在每一个子程序中同样地将先依序执行每一个硬件测试或初始化步骤(步骤12),接着在启动变数被设定为“启动”时(步骤13),输出某特定值到调试端口(步骤14),反之当启动变数被设定为“不启动”时(步骤13),则继续进行循环直至目前的子程序中的全部硬件进行测试或初始化步骤执行完毕(步骤15),然后进入由(步骤11)与(步骤16)所构成的循环,直至全部的子程序都执行完毕,便结束POST的测试。
本发明具有如下有益效果:
1、可以正确地找出造成测试出错的硬件或原因。
2、节省时间及人力。假设一个BIOS的测试因采用此法,平均可以节省修护时间30分钟,则每1000片总共将可省下极为可观的工时。
3、不影响正式版BIOS的执行效率。由于在编译BIOS的POST程序码时,可以借由下达适当的指令将BIOS编译成供测试用的[测试版BIOS]或正式出货用的[正式版BIOS],两者提供不同的用途,不会互相影响,更不会影响到正式版BIOS的执行效率。
以上所述,仅为本发明的较佳实放例而已,并非用以限定本发明的实施范围,凡按照本发明的权利要求所做的同等变化与修饰,均为本发明的权利要求保护范围所涵盖。
Claims (4)
1、一种基本输入输出系统的追踪除错方法,用以在基本输入输出系统的开机自测阶段,正确找出测试出错的硬件或原因的除错方法,其包括有:
插入一错误输出指令的步骤,是在开机自测程序的子程序中的任一个硬件测试或初始化步骤之后加入一种错误输出指令,用以在进行该硬件测试或初始化步骤之后输出一特定值到调试端口;以及
使前述错误输出指令启动的步骤,是在该错误输出指令之前加入一条件判断式,用以在条件成立时启动该错误输出指令,用以输出一特定值到调试端口。
2、如权利要求1所述的基本输入输出系统的追踪除错方法,其中该条件判断是否成立是由设定一特定变数的值,以及判断该特定变数之值所决定。
3、如权利要求2所述的基本输入输出系统的追踪除错方法,其中还包括有一设定该特定变数值的步骤。
4、如权利要求1所述的基本输入输出系统的追踪除错方法,其中该错误输出指令是在该条件成立时才被编译而且被加入开机自测程序之中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB01100052XA CN1162780C (zh) | 2001-01-05 | 2001-01-05 | 基本输入输出系统的追踪除错方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB01100052XA CN1162780C (zh) | 2001-01-05 | 2001-01-05 | 基本输入输出系统的追踪除错方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1362671A CN1362671A (zh) | 2002-08-07 |
CN1162780C true CN1162780C (zh) | 2004-08-18 |
Family
ID=4651256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB01100052XA Expired - Fee Related CN1162780C (zh) | 2001-01-05 | 2001-01-05 | 基本输入输出系统的追踪除错方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1162780C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100362469C (zh) * | 2004-10-11 | 2008-01-16 | 佛山市顺德区顺达电脑厂有限公司 | 电脑启动自我测试方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI306191B (en) * | 2005-04-13 | 2009-02-11 | Via Tech Inc | A method for debugging a firmware program and a debugging microprocessor |
CN100373335C (zh) * | 2005-04-15 | 2008-03-05 | 环达电脑(上海)有限公司 | 计算机上电自检方法及上电自检装置 |
CN100458692C (zh) * | 2005-12-15 | 2009-02-04 | 英业达股份有限公司 | 开机自我测试除错系统及方法 |
CN101425030B (zh) * | 2007-10-29 | 2011-04-13 | 环旭电子股份有限公司 | 基本输入输出系统的除错方法 |
CN101826046B (zh) * | 2009-03-06 | 2011-12-14 | 纬创资通股份有限公司 | 计算机开机除错方法 |
CN107203460A (zh) * | 2016-03-16 | 2017-09-26 | 佛山市顺德区顺达电脑厂有限公司 | 用于基本输入输出系统之除错讯息输出方法 |
-
2001
- 2001-01-05 CN CNB01100052XA patent/CN1162780C/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100362469C (zh) * | 2004-10-11 | 2008-01-16 | 佛山市顺德区顺达电脑厂有限公司 | 电脑启动自我测试方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1362671A (zh) | 2002-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Onoma et al. | Regression testing in an industrial environment | |
Alkhalifa et al. | Design and evaluation of system-level checks for on-line control flow error detection | |
US7712081B2 (en) | Using code motion and write and read delays to increase the probability of bug detection in concurrent systems | |
US6836884B1 (en) | Method and system for editing software programs | |
KR100704629B1 (ko) | 변경된 위치의 마스터 부트 레코드의 바이러스 감염 여부를판단하고 치료하는 장치 및 방법 | |
EP1085419A2 (en) | Method and system for describing predicates in disjuncts in procedures for test coverage estimation | |
CN107710166B (zh) | 利用符号快速错误检测的硅后验证和调试 | |
JP2002099449A (ja) | ユーザに固有のインスツルメンテーションを支援する方法とシステム | |
US7908596B2 (en) | Automatic inspection of compiled code | |
CN1162780C (zh) | 基本输入输出系统的追踪除错方法 | |
US7539979B1 (en) | Method and system for forcing context-switch during mid-access to non-atomic variables | |
CN1499374A (zh) | 一种单元测试自动化方法 | |
US20020073359A1 (en) | System and method for high priority machine check analysis | |
US6687834B1 (en) | Data processing system, method and program for generating a job within an automated test environment | |
Rotithor | Postsilicon validation methodology for microprocessors | |
US11599342B2 (en) | Pathname independent probing of binaries | |
Angione et al. | An innovative Strategy to Quickly Grade Functional Test Programs | |
US20030217355A1 (en) | System and method of implementing a virtual data modification breakpoint register | |
US8689206B2 (en) | Isolating operating system in-memory modules using error injection | |
US7404110B1 (en) | Method and system for self-assembling instruction opcodes for a custom random functional test of a microprocessor | |
US20020169997A1 (en) | BIOS debug method | |
CN112364600B (zh) | 一种处理器微架构设计验证方法 | |
Post et al. | Towards automatic software model checking of thousands of Linux modules—A case study with Avinux | |
Kim et al. | Unit testing of flash memory device driver through a SAT-based model checker | |
CN113742252A (zh) | 一种检测内存乱序的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20040818 Termination date: 20110105 |