首页> 中国专利> 分析程序错误的方法及其判读数据的制作方法

分析程序错误的方法及其判读数据的制作方法

摘要

本发明公开了一种分析程序错误的方法,用于分析一BIOS程序代码中的一USB程序,此USB程序中具有分别代表不同处理程序的多个子程序,且各子程序由多个USB原始码所组成,其方法在USB程序的子程序中设置有多个输出指令;并于执行此USB程序后,此USB程序在执行其中之子程序时,依据执行子程序中的输出指令的顺序,依序地产生一辨识值;再依据这些辨识值,而提供一可供辨识处理程序实际被执行的顺序及其USB原始码是否错误的判读数据,以便操作人员判定,其中判读数据的制作方法也公开于本发明中。

著录项

  • 公开/公告号CN101533367A

    专利类型发明专利

  • 公开/公告日2009-09-16

    原文格式PDF

  • 申请/专利权人 英业达股份有限公司;

    申请/专利号CN200810085426.6

  • 发明设计人 邱焕文;颜琦璋;

    申请日2008-03-14

  • 分类号G06F11/28(20060101);G06F11/36(20060101);

  • 代理机构11006 北京律诚同业知识产权代理有限公司;

  • 代理人梁挥;祁建国

  • 地址 台湾省台北市士林区后港街六十六号

  • 入库时间 2023-12-17 22:36:00

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-03-08

    未缴年费专利权终止 IPC(主分类):G06F11/28 授权公告日:20110824 终止日期:20180314 申请日:20080314

    专利权的终止

  • 2017-09-01

    专利权的转移 IPC(主分类):G06F11/28 登记生效日:20170811 变更前: 变更后: 申请日:20080314

    专利申请权、专利权的转移

  • 2011-08-24

    授权

    授权

  • 2009-11-11

    实质审查的生效

    实质审查的生效

  • 2009-09-16

    公开

    公开

说明书

技术领域

本发明涉及一种分析程序错误的方法,尤其涉及一种分析USB程序错误,并分析出USB程序中各处理程序实际被执行顺序的方法。

背景技术

目前公知用来测试通用序列汇排流(Universal Serial Bus,以下均称USB)原始码的除错工具能够分析由USB端口所传送及接收的USB封包,但无法得知USB的原始码是如何被执行的,例如测试人员在USB装置上观察到不正常现象后,首先读取USB封包并分析此USB封包是否正常,如果此USB封包正常,则仅能针对USB装置上所观察到的不正常现象来猜测USB原始码的错误点;如果此USB封包不正常,则对于USB装置上所观察到的不正常现象及USB封包来猜测USB原始码的错误点,并使用硬件仿真器(In Circuit Emulator,ICE)找寻及验证USB原始码的错误点。

由于USB程序的USB原始码在执行时具有时序性(temporality),使得停止CPU后USB原始码仍然继续动作,而触发产生USB程序相关计时程序(Timeout)的事件,无法得知USB原始码执行的前后相关顺序,难以修正错误的USB程序,只能以猜测的方式去推论错误的原因。如此一来,测试人员便得花费许多找寻及验证的时间于猜测USB原始码的错误点上,而且即便碰巧找到USB原始码的错误点,仍无法得知USB程序与时间之间的相依性。

发明内容

本发明的目的在于提供一种分析程序错误的方法,以便于一USB程序中得知其各USB程序于执行时的前后相关顺序,并由此前后相关顺序中提供查出不正确程序代码的数据。

为了实现上述目的,本发明提供了一种分析程序错误的方法,用于分析一BIOS程序代码中的一USB程序,此USB程序中具有多个子程序,而各子程序分别代表一处理程序,且由多个USB原始码所组成,其方法于USB程序的子程序中设置有多个输出指令;此USB程序在执行其中的子程序时,依据执行子程序中的输出指令的顺序,依序地产生一辨识值;依据这些辨识值,而提供一判读数据,以供使用者辨识该处理程序实际上被执行的先后顺序,及分析该子程序的该USB原始码是否错误。

本发明的另一态样是提供一种判读数据的制作方法,应用于一种分析程序错误的方法所依序产生的多个辨识值中,并搭配一对照表,对照表至少包括多个处理程序名称、对应其处理程序名称的代表符号、对应其处理程序的位阶值及对应其处理程序的确认符号,此方法包括依据此些辨识值的先后顺序,读取一笔辨识值;对比辨识值及对照表得此些代表符号,判断是否符合其中一代表符号;当辨识值符合其中一代表符号时,则读取下一笔辨识值;并于对比下一笔辨识值及该对照表的该确认符号,而判断下一笔辨识值符合其中一确认符号后,依据对照表所对应的位阶值,输出一子判读数据,子判读数据具有处理程序的名称、位阶值及辨识值序号,再次进行依据此些辨识值的先后顺序读取一笔辨识值的后续步骤,直到此些辨识值被读取完毕为止。

如此,测试者便可由判读数据上得知处理程序的名称,并依据每一处理程序的位阶值,辨识此些处理程序实际上被执行的先后顺序是否正确,若不正确,测试者便可针对此些有误的处理程序,对子程序的USB原始码进行分析其错误的部份,所以,便可缩小检测USB原始码错误的范围,并对错误的部份进行修改。

以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。

附图说明

图1为一种计算机装置的电子方块图;

图2为本发明分析程序错误的方法的实施例流程图;

图3为本发明的实施例的对照表的示意图;

图4A为本发明的实施例的一种检查点及输出指令的位置设置示意图;

图4B为本发明的实施例的另一种检查点及输出指令的设置示意图;

图5为本发明的实施例的该辨识值的排列示意图;

图6为本发明实施例中制作执行顺序阶层表的细部流程图;

图7为本发明中的判读数据的示意图。

其中,附图标记:

1 计算机装置                      17 第五检查点

2 中央处理单元                    20 对照表

3 USB控制器                       21 处理程序字段

4 外接USB装置                     211 处理程序

5 BIOS程序代码                    22 代表符号字段

6 USB程序                         221 代表符号

10 子程序                         23 处理位阶字段

103 第一输出指令                   231位阶值

104 第二输出指令                  24 确认字段

105 第三输出指令                  241确认符号

106 第四输出指令                  25 辨识值

107 第五输出指令                  30 判读数据

12 USB原始码                      31 子判读数据

13 第一检查点                      311 辨识值序号

14 第二检查点                     步骤:101-106

15 第三检查点                     步骤:1061-1064

16 第四检查点

具体实施方式

请参考图1,任何可接受外接USB装置4的一计算机装置1中,均具有一USB控制器3(USB controller host),以作为计算机装置的中央处理单元2(CPU)与外接USB装置4的对话窗口,而计算机装置1中的基本输入/输出系统(Basic Input/Output System,BIOS)程序代码5中的一USB程序6(通常为ASM汇编语言)具有多组子程序10,分别代表不同的处理程序,各组子程序10由多个USB原始码12所组成。由于每一处理程序具有时序性(temporality),使得代表每一处理程序的子程序10于执行时会搭配时间的变化,而进行不同阶段的处理程序,不会因为中途被中断时,而呈现出各相关处理程序之间的流程顺序及时间的相依性,反而在中央处理单元2停止执行子程序10后,其USB原始码12仍然继续被USB控制器3所执行,而破坏其中设计好的相关计时程序(Timeout)事件,因此,当测试人员在外接USB装置4上观察到不正常现象时,在传统方式上是不易查出这些子程序10中的USB原始码12错误的原因。

因此,本发明公开一种分析程序错误的方法及其判读数据的制作方法,此些方法为相关连地,其中判读数据的制作方法由说明分析程序错误的方法中所产生判读数据的方法。

首先,此分析程序错误的方法用于分析一BIOS程序代码5中的一USB程序6,借助USB程序6中代表不同处理程序的USB原始码12于执行时,依序输出另外设计的辨识值,来提供制作一判读数据30,借助此判读数据30中得知此USB程序中实际处理程序的执行顺序及情形,而使得测试人员判定相关处理程序的错误流程后,而缩小检测USB原始码12发生错误的范围。而本发明在一实施例中依据图2的步骤执行,图2为本发明分析程序错误的方法的实施例流程图:

步骤(101)提供一USB程序6:

首先取得待测试的一USB程序6,此USB程序6中所述的不同处理程序分别用以执行有关此计算机装置1、USB控制器3与外接USB装置4间的数据交换处理的动作,例如:检查外接USB装置4是否存在、寻找数据相关地址、计算参数值等等,均需子程序10中不同USB原始码12所代表的指令来达成,而各子程序10的USB原始码12可区分有算术式指令(ArithmeticInstruct ions)、逻辑式指令(Logic Instructions)、数据转移式指令(DataTransfer Instructions)、布尔表达式指令(Boolean and ComparisonInstructions)及程序跳跃式指令(Jump Instructions)等种类,这些子程序10分别具有数个检查点(check point),各检查点用以放置一输出指令。

步骤(102)在这些子程序10的这些USB原始码12中设置多个输出指令:

这些子程序10多半在其进入点及返回点的位置定义检查点,以供放置输出指令。

本实施例中,如图3所示,为本发明的实施例的一对照表的示意图,可依据此对照表20中来进行输出指令的设置,对照表20至少具一处理程序字段21、代表符号字段22、一处理位阶字段23及一确认符号字段24,其中处理程序字段21可供放置代表其处理程序名称221,例如:“检查外接USB装置”、“寻找数据相关地址”或“计算参数值”等等;代表符号字段22可供放置代表其处理程序的代表符号221,例如:“8e 01”、“c4 01”等;而处理位阶字段23可供放置代表其处理程序所具有的位阶值231(level,第1-6阶等),代表处理程序被执行的位阶;而确认符号字段24可供放置用以检查处理程序的确认符号241,例如:“ff 00”等,以供确认所对应的处理程序以确实执行完毕。

因此,请参考图4A所示,为本发明的实施例的一种检查点及输出指令的位置设置示意图。此实施例中,可依据对照表20于这些子程序10中设置输出指令,若这些子程序10中的众USB原始码12仅为算术式指令、数据转移式指令或程序跳跃式指令时,可在子程序10的首位USB原始码12前定义有一第一检查点13,并于此第一检查点13设置一第一输出指令103,第一输出指令103要求输出对应其处理程序的一代表符号221;以及在子程序10的末位USB原始码12后定义有一第二检查点14,并于此第二检查点14设置一第二输出指令104,第二输出指令104要求输出对应其处理程序的一确认符号241。

另外,请参考图4B所示,图4B为本发明的实施例的另一种检查点及输出指令的设置示意图,这些子程序10的众USB原始码12若具有逻辑式指令或布尔表达式指令时,可在子程序10中开始进行一条件判断动作的一USB原始码12前定义一第三检查点15,并在此第三检查点15上设置一第三输出指令105、在此子程序10完成此条件判断动作后,且代表条件成立(flag=.T.)的首位USB原始码12后分别定义一第四检查点16,并在此第四检查点16上设置一第四输出指令106,以及在此子程序10完成此条件判断动作后,且代表条件不成立(flag=.F.)的首位USB原始码12后分别定义一第五检查点17,并于此第五检查点17上设置一第五输出指令107。其中第三输出指令105要求输出对应其处理程序的一代表符号221,第四、五输出指令106、107分别要求输出对应其处理程序的一确认符号241。

另外,值得一提的是,步骤(102)的达成并不限定人工或以软件的方式。

步骤(103)存入一计算机装置1的BIOS程序代码5中:

将具有输出指令的USB程序6进行组译,并更新至BIOS程序代码5中;

步骤(104)开始执行BIOS程序代码5:

此步骤中,为执行BIOS程序代码5,必须重新启动计算机装置1时,计算机装置1将在开机自我测试(power on self test,POST)后,便开始执行BIOS程序代码5,当检查到USB控制器3与外接的USB装置4无误后,便开始执行USB程序6的各子程序10。此时,为了减少过多冗余数据加入USB程序6的执行,在USB程序6中要测试的子程序10被执行前,可使USB程序6归零。

步骤(105)依据输出指令被执行的顺序,依序产生一对应的辨识值25至一特定位置:

见图5,为该辨识值25的排列示意图,当USB程序6被执行时,依据此USB程序6中的该子程序10及其中输出指令被执行的顺序,分别写入一辨识值25至一特定位置(如:存储器)中,辨识值25依据上述不同检查点的位置,在上述实施例中可为一代表符号221或确认符号241。例如上述实施例中,该第一及三输出指令103、105所输出的辨识值25,便为一代表符号221,代表“开始执行此子程序10”,而该第二、四及五输出指令104、106、107所输出的辨识值25,便为一确认符号241,分别代表“结束执行此子程序10”。

步骤(106)依据此特定位置的辨识值25,提供一判读数据30:

上述特定位置在此实施例中可为一存储器,如:随机存储器(RAM)、硬式磁盘驱动器(Hard Disk)或高速缓存(flash memory),而判读数据30如一执行顺序阶层表(见图7)及一执行顺序的细部原始码(未图标),执行顺序阶层表由依照执行顺序的多个子判读数据31所组成,每一子判读数据31均具有一辨识值序号311、一位阶值231及一处理程序211,而该执行顺序的细部原始码为记录该子程序10实际被中央处理单元2执行过USB原始码12的组合,以供辨识这些处理程序实际上被执行的先后顺序及其USB原始码12是否错误。

见图6、图7所示,图6为本发明中图1的步骤(106)的细部流程图,图7为判读数据的示意图。其中执行顺序阶层表的制作可细分成下列次步骤:

步骤(1061)将存储器的该辨识值25记录成一文字文件(.txt);

步骤(1062)读取文字文件,并依据文字文件中所有辨识值25的先后顺序,取得文字文件中的一笔辨识值25,并依据此辨识值25对比上述的对照表20,判断是否符合代表符号字段22中的其中一代表符号221,若是,进行步骤(1063),否则,结束此制作方法;

步骤(1063)取得下一笔辨识值25,对比此笔辨识值25及对照表20的确认符号字段24,判断是否符合代表确认符号字段24中的其中一确认符号241,若是,进行步骤(1064),否则,结束此制作方法,并发出一错误信息;

步骤(1064)依据对照表20所对应该处理位阶字段23的一位阶值231,搭配此处理程序名称211、位阶值231及辨识值序号311,输出一笔子判读数据31,回步骤(1061),直到此些辨识值被读取完毕为止,以完成一执行顺序阶层表。

如此,测试者便可由判读数据30上得知处理程序的名称,并依据每一处理程序的位阶值,辨识该处理程序实际上被执行的先后顺序是否正确,若不正确,测试者便可针对该有误的处理程序,对子程序10的该USB原始码12进行分析其错误的部份,如此,便可缩小检测USB原始码12错误的范围。

如此测试者便可搭配上述执行顺序阶层表及执行顺序的细部原始码的信息,辨识该处理程序实际上被执行的先后顺序是否正确,以便对USB程序6进行修改,可节省以人工判定各处理程序且对判定结果予以记录所需的时间,快速分析USB程序6中各子程序10所组成的架构。

当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号