欢迎来到天天文库
浏览记录
ID:5350533
大小:3.17 MB
页数:7页
时间:2017-12-08
《处理器模拟技术在软件可靠性测试中的作用1》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、处理器模拟技术在软件可靠性测试中的作用中国软件评测中心引言嵌入式处理器模拟技术使用软件构造出嵌入式软件运行所需要的硬件环境——目标机,在此基础上进行各种测试工作。目标硬件环境的模拟是指通过对处理器、内存、外围可编程芯片以及这些器件间连接的模拟,来构造目标机硬件环境。处理器模拟包括对处理器指令集、寄存器、中断处理机制的模拟;内存模拟包括内存寻址、读、写模拟;外围可编程芯片模拟包括对工作模式、命令字的响应、输入/输出特性、功能特性的模拟;器件间连接模拟包括为这些芯片的数据端口、控制端口等设置I/O地址,并决定其间的输入/输出关系。软件可靠性测试是为了达到或验证用户对软
2、件的可靠性要求而对软件进行的测试,通过测试发现并纠正软件中的缺陷,提高其可靠性水平,并验证它是否达到了用户的可靠性要求。针对嵌入式软件的可靠性测试目前多采用仿真测试方法。可靠性仿真测试是指通过使用软件和硬件的方法,模拟被测软件的交联系统和其物理的输入、输出信号,仿真一个被测软件运行的真实环境,并在该环境下进行的可靠性测试。嵌入式软件的可靠性仿真测试需嵌入式处理器模拟技术的支持。本文设计并实现了针对两款嵌入式处理器:PIC12和8051的模拟测试平台。它具有反汇编功能和嵌入式处理器模拟功能,可以极大地方便软件测试人员了解程序执行过程中处理器状态的变化。通过对这两款处
3、理器应用程序的模拟执行,分析了处理器模拟技术在软件测试中的作用。实验过程首先,我们看一下PIC12的模拟过程。PIC单片机(PeripheralInterfaceController)是一种用来开发去控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。与人类相比,大脑就是CPU,PIC共享的部分相当于人的神经系统。PIC单片机是一个小的计算机,它具有有计算功能和记忆内存像CPU并由软件控制运行。1,打开测试文件,可以看到如下界面:界面的右上方是输入的hex文件反汇编的汇编代码。左下方是处理器PIC12的显示面板,它包含PIC12的7个特殊功能寄
4、存器和26个通用功能寄存器。面板右侧是6个控制按钮:step,单步执行按钮;skip,跳过下一条指令按钮;jumptocursor,跳到光标位置;runtocursor,运行到光标位置按钮;run,运行按钮;stop,停止执行按钮。2,单击step按钮,开始进行模拟,出现一些界面:可以看到寄存器PCL(程序计数器)的值变为01,它表示当前执行到第01条指令,这是一个无条件跳转指令,跳到内存088位置,PCL的下一条指令高亮。3,再单击step按钮,程序跳转,执行结果如下:可以看到PCL的值变为88,PCL的下一条指令高亮。就这样,每按一下step按钮,就单步执行一
5、条汇编指令,寄存器面板显示该指令执行后,寄存器内容的变化。如果想跳过即将执行指令,单击skip按钮。执行结果如下:可以看到,PCL变为8A,高亮下移两行,说明89位置的指令被跳过。如果觉得单步执行太慢,可以使用Jumptocursor和runtocursor按钮,一次执行多条指令。在嵌入式应用程序中,往往存在死循环,在处理器模拟中,可以很方便的找到代码中的死循环部分。只需要单击run指令,程序执行一段时间后,单击stop指令,如果程序中有死循环,那么当前指令可能就是死循环中的指令。在我们的测试用例中就存在这样的代码段。先单击run,再单击stop,结果如下:可以看
6、到代码段03,04,05就是死循环部分。对于8051的模拟执行过程与PIC12的并无本质区别,在这里就不再详细介绍了,只是由于寄存器种类和个数不同,它的处理器面板与PIC12的不同,其界面如下:相关技术介绍系统硬件环境模拟为了准确反映程序执行过程中,处理器的行为,需要对整个系统硬件进行软件模拟,包括处理器,RAM,ROM等。指令集模拟技术由于要对每一条种类进行模拟执行,所以需要对待模拟的处理器的每一条种类进行功能模拟,这个可以通过函数实现,当执行到某一条指令时,即调用对应的函数去模拟执行。处理结果刷新寄存器。如MOVLW指令的模拟函数如下:voidF_movlw(
7、unsignedshortcode,Instruccmd){unsignedshortliteral;literal=code&0x00FF;Disassembler->pProc->WriteReg(PIC12_REG_W,literal);QStringstr=dtoc16(literal);parameter.append("MOVLWLit_"+str);}多线程技术处理器模拟功能需要在后台进行,因此,需要创建单独的线程来完成该功能。如PIC12的模拟线程的run()函数如下:voidPIC_Thread::run(){NewAddr.clear();Cu
8、rIns=
此文档下载收益归作者所有