电子装置程序的测试方法制造方法及图纸

技术编号:2851107 阅读:173 留言:0更新日期:2012-04-11 18:40
一种电子装置程序的测试方法。首先,加载电子装置程序于计算机中一程序存储器。接着,执行电子装置程序,若发生一存储器存取错误,则该操作系统执行一错误处理例程。错误处理例程首先撷取导致存储器错误的一指令码的地址,接着,依据程序代码的地址,于程序存储器修改指令码,以防止存储器存取错误。

【技术实现步骤摘要】

本专利技术涉及一种,特别是涉及一种可动态自动修改电子装置程序代码的测试方法。
技术介绍
一般目前开发电子装置可分为两部分,一部份为硬件,另一部份则属于电子装置的软件开发。目前软件开发的过程中,通常是于计算机中撰写程序,并于撰写完后于计算机中的仿真器(Simulator)仿真硬件工作,进行测试及除虫(Debug)的操作。待硬件开发完成后,便可直接将软件移植至硬件上与硬件共同运作。在软件的程序代码中有很多对硬件的存取操作。以移动电话为例,这些存取的操作是通过某个输出入端口(I/O Port)而对其液晶屏幕、背光源或喇叭等外围装置进行控制。然而,在计算机上并没有如移动电话的硬件的输出入端口,因此在模拟过程中,存取输出入端口的程序代码会造成存储器存取错误。一般而言,在计算机上进行仿真仅需测试与硬件的无关部分的程序代码,而跳过或忽略关于硬件程序代码。以C语言开发的软件为例,可以利用前置处理器(preprocessor),在编译(compiling)时决定产生仿真器版本或是硬件版本,在仿真器版本中,关于硬件的程序代码系被忽略而不被编译,因此在计算机上执行时就不会发生存储器错误。例如以下关于硬件的程序代码,其是以前置处理器#ifndef加以定义1.#ifndef FEATURE_SIMULATOR2.*(0x50200014)=0x0F3.#endif其中第2行程序是对地址为0x50200014的输出入端口进行写入,在仿真器版本中,FEATURE_SIMULATOR事先被定义,因此第2行程序代码在编译阶段即会被忽略,在硬件版本中,FEATURE_SIMULATOR不被定义,因此第2行程序代码会被编译,因此可以执行正确的输出入端口的存取操作。利用前置处理器标记的作法,在关于硬件的程序代码较少的时候尚为可行,然而目前电子装置的软件功能越来越多,许多对硬件的存取操作的程序代码也更多,也因此若利用人工将各硬件相关的程序代码加上如上述的前置处理控制相当耗时耗力。
技术实现思路
有鉴于此,本专利技术的目的是提供一种不需要人工重复修改程序代码,在仿真阶段时,程序可自动且实时修改需要做硬件存取操作的程序代码,以防止存储器错误。根据本专利技术的目的,提出一种移动电话程序的测试方法,测试方法包括首先,加载移动电话程序于一程序存储器。接着,执行移动电话程序,若发生一存储器存取错误,则该操作系统执行一错误处理例程。执行一错误处理例程包括首先撷取导致存储器错误的一指令码的地址。接着,依据程序代码的地址,于程序存储器修改指令码,以防止存储器存取错误。为使本专利技术的上述目的、特征、和优点能更明显易懂,下文特举一较佳实施例,并结合附图详细说明如下。附图说明图1A示出了移动电话程序的仿真器版本制作方块图。图1B示出了移动电话程序的硬件版本制作方块图。图2A示出了移动电话程序测试方法流程图。图2B示出了步骤118的流程图。具体实施例方式第一实施例图1A及图1B分别为移动电话程序的仿真器版本及硬件版本的制作方块图。请参照图1A,其示出了移动电话程序的仿真器版本制作方块图。移动电话程序A的原始码(source code)A.C及模拟副函式原始码B.C,可能利用如C语言、C++语言或JAVA程序语言等不同语言所撰写,经由编译/连结器100编译及连结后产生仿真器执行文件(A+B).exe,此文件即可在计算机中执行,以对移动电话程序A进行仿真测试。模拟副函式原始码B.C使移动电话程序A可以于计算机中执行所需的副函式,以做为移动电话程序A与计算机的操作系统的接口,移动电话程序A的原始码相关于至少一移动电话内硬件存取端口。请参照图1B,其示出了移动电话程序的硬件版本制作方块图。移动电话程序A的原始码A.C与硬件副函式原始码B’.C经由编译器103编译及连结后产生硬件执行文件(A+B’).bin,此文件即可加载移动电话的只读存储器中执行。由于移动电话A中具有许多与硬件相关的程序代码,若在计算机中直接执行会造成存储器错误,因此在已知技术中,是在其原始码A.C中以前置处理器将与硬件相关的程序代码标记,使得编码/连结器100忽略这些与硬件相关的程序代码,然而,已知的作法需以人工方式在原始码A.C中加入前置处理器的标记,繁琐且浪费时间。本实施例中不需更动原始码A.C,仅于副函式原始码B.C中加入错误处理例程,使得发生存储器错误时可以实时地更改程序代码,从而避免产生错误。一般操作系统执行程序时,遇到任何无法处理的错误就会产生错误讯息,本实施例则在此错误处理例程内增加实时修改程序代码的程序,使得操作系统发现存储器错误时,即可及时修改程序。请参照图2A,其示出了移动电话程序测试方法流程图。首先,加载移动电话程序A的仿真器版本执行文件(A+B).exe于计算机中的程序存储器,如步骤110所示。接着,于步骤112中,执行此执行文件(A+B).exe。接着,在步骤114中,若执行到与至少一硬件存取端口相关的程序代码时,若产生存储器存取错误,此时操作系统跳到步骤116以执行错误处理例程,否则在步骤112中继续执行(A+B).exe。错误处理例程如步骤116及118所示。在步骤116中,撷取导致存储器存取错误的指令码的地址。最后,在步骤118中,依据程序代码的地址,实时于程序存储器中修改发生错误的指令码,使得错误处理例程结束后返回此指令码地址执行时,此修改后指令码并不会发生存储器存取错误,且继续程序执行。请参照图2B,其示出了步骤118的实时修改指令码的流程图。首先,步骤118a配置一替代存储器。接着,步骤118b判别是否配置替代存储器成功。若配置替代存储器成功,则于程序存储器中修改此指令码使其改为存取此次配置的替代存储器,并返回步骤112继续执行此修改后指令码。若配置替代存储器不成功,则可于程序存储器中变更此指令码为不操作(NOP)或跳跃(JUMP)等指令。例如原先在存储器地址0x17354中的指令码为C7 0100 00 00 00的指令,其是对硬件进行存取的操作,执行此指令码时是发生存储器错误。经过错误处理例程修改后,可修改成不操作(NOP)的程序代码如90 90 90 90 90 90的指令,或是修改成跳跃的程序代码(JUMP)如EB 04 0000 00 00的跳跃指令(Jump)以跳开该行指令码。上述作法中,不一定要配置替代存储器,也可以跳过步骤118a及118b而直接执行步骤118c以更换指令码。在本实施例中,若仍有其它存取存储器错误的情形产生,错误处理例程均可利用上述的方式解决存取存储器错误讯息的问题。同时,更可利用下一次发生存储器错误时,还原上次的存储器错误时,于程序存储器中所修改的指令码。本专利技术上述实施例所披露的,在此是以移动电话为例,在不改变移动电话程序的情况下,利用错误处理例程直接动态且实时的修改发生存取存储器错误的指令码,大大的减少以往仿真器利用人工进行程序修改的时间。当仿真测试无误后,移动电话程序即可直接如图1B所示编译连结成(A+B’).bin,加载于移动电话即可执行,而不需对原始文件A.C进行任何修改,降低了整个软件研发与软硬件整合的时程。综上所述,虽然本专利技术已以一较佳实施例披露如上,然其并非用以限定本专利技术,本领域的技术人员在不脱离本专利技术的精神和范围内可作各本文档来自技高网
...

【技术保护点】
一种程序的测试方法,适用于一计算机系统测试一电子装置程序,该计算机系统运作于一操作系统,该测试方法包括:加载该电子装置程序于该计算机系统内的一程序存储器;执行该电子装置程序,若发生一存储器存取错误,撷取导致该存储器存取错误的一指令码的地址;及依据该指令码的地址,于该程序存储器修改该指令码,以防止该存储器存取错误。

【技术特征摘要】
1.一种程序的测试方法,适用于一计算机系统测试一电子装置程序,该计算机系统运作于一操作系统,该测试方法包括加载该电子装置程序于该计算机系统内的一程序存储器;执行该电子装置程序,若发生一存储器存取错误,撷取导致该存储器存取错误的一指令码的地址;及依据该指令码的地址,于该程序存储器修改该指令码,以防止该存储器存取错误。2.如权利要求1所述的方法,其中修改该指令码步骤包括配置一替代存储器,并于该程序存储器修改该指令码,以使该指令码改为存取该替代存储器。3.如权利要求2所述的方法,其中当配置该替代存储器错误时,是更换该指令码以防止该存储器存取错误。4.如权利要求2所述的方法,其中更换该指令码步骤中,是将该指令码更换为不操作(NOP)或跳跃(JUM...

【专利技术属性】
技术研发人员:郑耀杰
申请(专利权)人:明基电通股份有限公司
类型:发明
国别省市:71[中国|台湾]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1