一种基于嵌入式模拟器的测试桩获取方法技术

技术编号:4220339 阅读:191 留言:0更新日期:2012-04-11 18:40
本发明专利技术提出一种基于嵌入式模拟器的测试桩获取方法,旨在提供一种嵌入式软件的测试方法,能在嵌入式硬件平台还没有搭建起来的时候,基于宿主机平台实现嵌入式软件的测试,以此实现嵌入式系统软硬件同步开发。它包括以下步骤:(1)编制stub端口模拟器,加载到嵌入式模拟器上;(2)编制桩获取器;(3)将被测软件进行插桩,生成目标程序运行于模拟器之上;(4)模拟器进程在执行过程中实时将桩发送给stub端口模拟器;(5)桩获取器即时获得桩数据并分析,即时得出程序运行过程中的语句覆盖率和分支情况。基于该方法能即时进行桩数据的发送、接收和分析,为进行白盒测试提供了必要的条件。

【技术实现步骤摘要】

本专利技术属于嵌入式系统测试
,具体涉及一种基于嵌入式模拟器的测试桩获取方法的设计与实现。将此方法应用到基于宿主机的嵌入式软件测试中,能使嵌入式系 统开发过程中的软硬件开发同步,以縮短整个系统的开发时间。
技术介绍
在嵌入式系统的开发中,嵌入式软件只能运行于特定的目标系统上,无法直接在 宿主机平台上进行开发与测试,因此一般在原型板调试时才开始进行底层嵌入式软件的调 试工作。为了加快项目的开发进度,确保嵌入式软件的质量,应该在硬件原型板制板之前开 始嵌入式软件模块调试,即在没有硬件原型板时先尽可能地调试并解决嵌入式软件编程方 面的错误。嵌入式系统的一般开发流程如图l所示,硬件与软件的开发为串行模式。 将嵌入式模拟器应用于嵌入式软件的开发与测试,能使得软件与硬件并行开发。 嵌入式模拟器模拟了芯片指令集的运行,每取出一条被测程序的指令,模拟器均将其替换 为一段宿主机程序,在执行过程中修改模拟器中相应的寄存器,端口,内存单元的内容,以 此来模拟被测程序的执行过程。采用嵌入式模拟器进行基于宿主机的嵌入式系统开发流程 如图2所示,硬件与软件的开发为并行模式。不采用模拟器进行嵌入式软件开发,嵌入式软 件,硬件平台,宿主机三者的关系如图3所示;采用模拟器进行嵌入式软件开发,嵌入式软 件,模拟器,宿主机三者的关系如图4所示。 白盒测试分为覆盖率测试,分支测试,条件测试等,实现这些测试的最常用方法 是对被测源程序进行插桩,插桩完毕的程序通过编译链接,生成可执行代码,在运行过程 中,即时的将桩数据发送出来,由桩获取器获取桩数据并进行分析,得到动态的覆盖率和程 序执行情况。 国内外已有若干较成熟的嵌入式系统模拟器,如ARM公司的ARMmulator,同济大 学开发的Proemulator中针对ARM芯片的指令模拟器,清华大学Sky Eye项目中的指令模 拟器,Linux上的开源软件GDB ARMulator。鉴于ARM处理器在消费类电子产品中已占据了 绝对优势,因此本专利技术针对ARM模拟器研究桩数据的获取方法。ARM公司提供专门用于ARM 相关应用开发和调试的综合性软件ARM Developer Suite (ADS) , ADS支持嵌入式软件在线 调试与基于宿主平台的调试 1.嵌入式软件在线调试时,ADS通过JTAG标准调试接口连接硬件开发板,将嵌入 式软件中对端口的访问内容传递到硬件开发板上。这种调试是在硬件开发板已经实现的基 础上进行的,并不能縮短嵌入式系统的开发周期; 2.在基于宿主平台调试时,嵌入式软件运行在ADS提供的嵌入式系统模拟器 ARMulator上。ARMulator不仅可以模拟ARM处理器的体系结构和指令集,还可以模拟存 储器,寄存器,例如中断控制器和定时器等,这样就模拟了一个嵌入式开发最小子系统。 ARMulator模拟器结构图如图5所示。 要使得软件和硬件同步开发,可采用基于宿主平台的调试。如何基于ADS中提供的ARMulator模拟器获取测试桩,是本专利技术解决的最主要问题。 目前国内针对嵌入式软件的测试方案几乎才起步,多处于研究阶段;本专利技术提出 了一种基于嵌入式模拟器ARMulator的测试桩获取方法,能有效的进行嵌入式软件测试, 使得基于ARM核的嵌入式软件都能基于该方法进行测试。此方法填补了国内在该领域的空 白,必将对嵌入式软件测试技术的发展、嵌入式产品的开发产生积极的影响。
技术实现思路
本专利技术为了解决嵌入式开发过程中,在嵌入式平台还未搭建起来时,嵌入式软件 无法进行测试的问题,提出了一种基于嵌入式模拟器ARMulator的测试桩获取方法,实现 了桩数据的即时发送和接收,并基于该方法搭建了嵌入式软件测试平台,使得基于ARM核 的嵌入式软件能在宿主机上实现测试。基于嵌入式模拟器ARMulator的测试桩获取方法如 图6所示。 本专利技术在设计与实现过程中,主要解决的技术问题主要包括以下几个方面 1.要实现对被测软件的白盒测试,需对被测软件进行插桩。插桩位置和桩数据的 设计,对软件的测试至关重要; 2.在被测程序中插桩,插桩函数必须是嵌入式设备与模拟器能识别的指令。将插 桩完成的源码进行编译链接,生成目标映像文件。映像文件运行于模拟器上,插桩接口能将 桩数据在被测软件运行过程中实时发送出来,并被桩获取器接收。ARMulator在Windows平 台上实现为动态链接库文件(.dll)即为ADS安装路径\ARM\ADSvl_2\Bin下的ARMulate. dll,不提供源码,因此重点要解决问题是如何实现插桩和收桩;本专利技术中开发了 stub端口 模拟器插件,对外设的模拟可以简化为对端口寄存器的模拟,当程序访问相应的端口时,触 发其对应外设的动作。当stub端口被写入时,将触发windows消息通知桩获取器来取走桩 数据。将生成的模拟插件stub, dll拷贝到相应的目录下,并在配置文件中进行修改,实现 stub插件的加载。在被测程序中进行插桩,插桩程序往stub端口写入桩数据,此时桩获取 器接收到消息并访问stub端口取走桩数据。被测程序和桩获取器之间的桩数据传输可采 用多种进程间通信机制实现; 3.如何使得目标文件运行于ARMulator模拟器之上,并返回控制台中的运行结 果; 4.桩获取器对接收到的桩数据进行实时分析,得出程序运行过程中的语句覆盖 率,条件覆盖率,分支覆盖情况等,并以图表和曲线的方式显示出来。此处需与问题1中的 插桩位置和桩数据结合设计; 5.基于问题1 4设计出整个基于测试平台构架;其构架示意图如图7所示; 技术难点的解决方案如下 基于stub, dll的桩数据获取结构图、流程图见图8、9所示;桩数据获取的工作原 理为 1.当在被测函数中进行插桩时,插桩语句将桩数据写入某内存单元。例如将该内 存地址定义为0x0C000000 ; 2. stub端口模拟器stub, dl 1中实现了访问地址OxOC000000会触发自定义 Windows消息WM_STUB_COME通知桩获取器recvStub进行接收;4 3. recvStub窗口处理WM_STUB_C0ME消息,将发送来的桩数据保存并处理,获得被测程序运行过程中的动态覆盖率和分支情况,并用曲线和图表的形式表示出来; 4.当被测程序运行结束,stub, dll发送WM_STUB_FINISH消息给recvStub窗口 ,通知桩数据接收完毕,桩获取器获得最终的语句覆盖率。 本专利技术具有下述优点 1.现有的嵌入式软件测试多为软硬件结合的方式,将桩数据通过宿主机的端口传 输到外部的芯片,再由外部芯片进行分析,分析完毕由芯片外设显示测试结果或是将测试 结果传回宿主机显示;本专利技术提出的桩获取方法基于宿主机就能实现,将桩数据写入内存, 然后由分析程序取出,不用经过端口和外设芯片,因此有以下优点 a)只需要宿主机,不用添加更多的外设,逻辑上更简单; b)桩数据在宿主平台内部就能获取,速度快,准确率高,如向外设芯片传输,则传 输过程中容易出错; c)测试结果在宿主机显示,能支持图表,曲线等多种显示,且开发起来更为方便, 不用局限于芯片上的较单调外设显示; 2.已有测试平台多为一般软件测试平台,用于测试PC平台高级语言程序,在嵌入 本文档来自技高网
...

【技术保护点】
一种基于嵌入式模拟器的测试桩获取方法,其特征在于:包括以下步骤:    (1)编制stub端口模拟器,加载到嵌入式模拟器上;    (2)编制桩获取器;    (3)将被测软件进行插桩,生成目标程序运行于模拟器之上;    (4)模拟器进程在执行过程中实时将桩发送给stub端口模拟器;    (5)桩获取器即时获得桩数据并分析,即时得出程序运行过程中的语句覆盖率和分支情况。

【技术特征摘要】

【专利技术属性】
技术研发人员:范琳王忠民王文浪梁琛曹小鹏
申请(专利权)人:西安邮电学院
类型:发明
国别省市:87[中国|西安]

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

1