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

文档序号:6461600阅读:171来源:国知局
专利名称:分析程序错误的方法及其判读数据的制作方法
技术领域
本发明涉及一种分析程序错误的方法,尤其涉及一种分析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计算机装置
2中央处理单元
3 USB控制器 4外接USB装置
5 BIOS程序代码
6 USB程序 10子程序 103第一输出指令 104第二输出指令 105第三输出指令 106第四输出指令 107第五输出指令 12 USB原始码 13第一检査点 14第二检査点 15第三检查点 16第四检查点
具体实施例方式
请参考图1,任何可接受外接USB装置4的一计算机装置1中,均具有一 USB控制器3 (USB controller host),以作为计算机装置的中央处理单元2 (CPU)与外接USB装置4的对话窗口,而计算机装置1中的基本输入/输出系 统(Basic 1叩ut/0utput System, BIOS)程序代码5中的一 USB程序6 (通常 为ASM汇编语言)具有多组子程序10,分别代表不同的处理程序,各组子程 序10由多个USB原始码12所组成。由于每一处理程序具有时序性 (temporality),使得代表每一处理程序的子程序10于执行时会搭配时间的变 化,而进行不同阶段的处理程序,不会因为中途被中断时,而呈现出各相关处
17第五检査点 20对照表 21处理程序字段 211处理程序 22代表符号字段 221代表符号 23处理位阶字段 231位阶值 24确认字段 241确认符号 25辨识值 30判读数据 31子判读数据 311辨识值序号 步骤101-106 步骤1061-1064理程序之间的流程顺序及时间的相依性,反而在中央处理单元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可区分有算术式指令(Arithmetic Instructions)、逻辑式指令(Logic Instructions)、数据转移式指令(Data Transfer Instructions)、 布尔表达式指令 (Boolean and Comparison Instructions)及程序跳跃式指令(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,第卜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、 在此子程序IO完成此条件判断动作后,且代表条件成立(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)开始执行BI0S程序代码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: 上述i^寺定位置在此实施例中可为一存储器,如随机存储器(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所组成的架构。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情 况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但 这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1、一种分析程序错误的方法,用于分析一BIOS程序代码中的USB程序,其特征在于,该方法包括(a)提供一USB程序,该USB程序具有数个子程序,每一该子程序分别代表一处理程序,且由数个USB原始码所组成;(b)设置数个输出指令于该子程序中;(c)当该USB程序其中的该子程序被执行时,依据该子程序中每一该输出指令被执行的顺序,而依序产生一辨识值至一特定位置;以及(d)依据该特定位置的该辨识值,提供一可供辨识处理程序实际被执行的顺序及其USB原始码是否错误的判读数据。
2、 根据权利要求1所述的方法,其特征在于,步骤(a)中,每一该子程 序分别具有数个检査点,而每一该检査点均用以放置其中一输出指令。
3、 根据权利要求2所述的方法,其特征在于,步骤(b)中,依据一对照 表中的数个代表符号及数个确认符号,设置该输出指令,其中该对照表至少包 括一处理程序字段,可供放置对应的处理程序名称; 一代表符号字段,可供放 置对应处理程序名称的代表符号; 一处理位阶字段,可供放置对应处理程序名 称的位阶值,该位阶值代表该处理程序执行顺序的位阶;以及一确认字段,可 供放置用以检査该处理程序的确认符号,该确认符号可供确认该处理程序以确 实执行完毕。
4、 根据权利要求3所述的方法,其特征在于,该子程序在每一该子程序 的首位USB原始码前定义有一第一检查点,并于该第一检査点设置一第一输出 指令,该第一输出指令要求输出对应其处理程序的一代表符号;以及在每一该子程序的末位USB原始码后定义有一第二检查点,并于该第二检 查点设置一第二输出指令,该第二输出指令要求输出对应其处理程序的一确认 符号。
5、 根据权利要求4所述的方法,其特征在于,该子程序在每一该子程序 开始进行一条件判断动作的一 USB原始码前定义一第三检査点,并在该第三检 查点上设置一第三输出指令,该第三输出指令要求输出对应其处理程序的一代 表符号;在每一该子程序完成该条件判断动作后,且代表条件成立的首位USB原始 码后分别定义一第四检查点,并于该第四检査点上设置一第四输出指令,该第四输出指令分别要求输出对应其处理程序的一确认符号;以及在每一该子程序完成该条件判断动作后,且代表条件不成立的首位USB 原始码后分别定义一第五检查点,并于该第五检査点上设置一第五输出指令, 该第五输出指令分别要求输出对应其处理程序的一确认符号。
6、 根据权利要求5所述的方法,其特征在于,该步骤(c)中,每一该辨 识值为依据该第一或三输出指令要求输出的该代表符号。
7、 根据权利要求5所述的方法,其特征在于,该步骤(c)中,每一该辨 识值为依据该第二、四或五输出指令要求输出的该确认符号。
8、 根据权利要求7所述的方法,其特征在于,该步骤(d)中还包括将该特定位置的该辨识值记录成一文字文件;依据该文字文件中该辨识值的先后顺序,依序取得该文字文件中的一笔辨 识值;对比该辨识值及该对照表的符号字段,判断是否符合代表符号字段中的各 代表符号当该辨识值符合代表符号字段中的一代表符号,则取得下一笔辨识值,并 依据该下一笔辨识值,而对比该下一笔辨识值及该对照表的该确认字段,判断 是否符合代表确认字段中的一确认符号;以及当该下一笔辨识值符合代表认字段中的一确认符号,则依据该对照表所对 应该处理位阶字段的一位阶值,输出一子判读数据,该子判读数据具有该处理 程序的名称、位阶值及辨识值序号,直到完成比对该辨识值完毕后,以完成一 执行顺序阶层表。
9、 一种判读数据的制作方法,针对权利要求1中所依序产生的数个辨识 值,并搭配一对照表,该对照表至少包括数个处理程序名称、对应其处理程序 名称的代表符号、对应其处理程序的位阶值及对应其处理程序的确认符号,其 特征在于,该方法包括依据该辨识值的先后顺序,读取一笔辨识值;对比该辨识值及该对照表的该代表符号,判断是否符合其中一代表符号; 当该辨识值符合该其中 一代表符号,则读取下一笔辨识值;对比该下一笔辨识值及该对照表的该确认符号,判断是否符合该其中一确 认符号;当该下一笔辨识值符合该其中一确认符号,则依据该对照表所对应的位阶 值,输出一子判读数据,该子判读数据具有该处理程序的名称、位阶值及辨识 值序号;以及再次进行依据该辨识值的先后顺序,读取一笔辨识值的后续步骤,直到该 辨识值被读取完毕为止。
10、根据权利要求9所述的方法,其特征在于,该对照表至少包括 一处理程序字段,可供放置对应的处理程序名称; 一代表符号字段,可供放置对应处理程序名称的代表符号; 一处理位阶字段,可供放置对应处理程序名称的位阶值,该位阶值代表该处理程序执行顺序的位阶;以及一确认字段,可供放置用以检査该处理程序的确认符号,该确认符号可供确认该处理程序以确实执行完毕。
全文摘要
本发明公开了一种分析程序错误的方法,用于分析一BIOS程序代码中的一USB程序,此USB程序中具有分别代表不同处理程序的多个子程序,且各子程序由多个USB原始码所组成,其方法在USB程序的子程序中设置有多个输出指令;并于执行此USB程序后,此USB程序在执行其中之子程序时,依据执行子程序中的输出指令的顺序,依序地产生一辨识值;再依据这些辨识值,而提供一可供辨识处理程序实际被执行的顺序及其USB原始码是否错误的判读数据,以便操作人员判定,其中判读数据的制作方法也公开于本发明中。
文档编号G06F11/36GK101533367SQ20081008542
公开日2009年9月16日 申请日期2008年3月14日 优先权日2008年3月14日
发明者邱焕文, 颜琦璋 申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1