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

文档序号:6583464阅读:208来源:国知局
专利名称:一种基于嵌入式模拟器的测试桩获取方法
技术领域
本发明属于嵌入式系统测试技术领域,具体涉及一种基于嵌入式模拟器的测试桩
获取方法的设计与实现。将此方法应用到基于宿主机的嵌入式软件测试中,能使嵌入式系 统开发过程中的软硬件开发同步,以縮短整个系统的开发时间。
背景技术
在嵌入式系统的开发中,嵌入式软件只能运行于特定的目标系统上,无法直接在 宿主机平台上进行开发与测试,因此一般在原型板调试时才开始进行底层嵌入式软件的调 试工作。为了加快项目的开发进度,确保嵌入式软件的质量,应该在硬件原型板制板之前开 始嵌入式软件模块调试,即在没有硬件原型板时先尽可能地调试并解决嵌入式软件编程方 面的错误。嵌入式系统的一般开发流程如图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平台高级语言程序,在嵌入 式软件测试中没有优势;本发明侧重于嵌入式软件测试,能支持ARM指令集、Thumb指令集 和ANSY C,能有效的进行嵌入式软件测试; 3.本发明内部加载了嵌入式模拟器ARMulator,它是ADS公司提供的商业级软件, 稳定性、可靠性、指令运行速度均有良好保证;


图1嵌入式系统一般开发流程图2基于宿主机上嵌入式模拟器的嵌入式系统开发流程图3嵌入式软件开发中嵌入式软件,硬件平台,宿主机三者关系4采用模拟器进行嵌入式软件开发中嵌入式软件,模拟器,宿主机三者关系5ARMulator结构6基于嵌入式模拟器ARMulator的桩获取方法图7基于模拟器的嵌入式测试平台构架图8基于stub, dll的桩获取结构9基于stub, dll的桩获取流程10运行插完桩的被测程序,桩获取器收到的桩数据
具体实施方式
1.采用PC机或笔记本作为宿主机;系统要求1)安装windows XP操作系统;2)安装ARM公司的软件ARM开发套件ARM Developer Suite vl.2,安装过程中
遵循以下几点(l)选择完全安装(2)注册激活该软件(3)将lpc2131工程模板拷贝到安
装目录\ARM\ADSvl_2\Stationery中; 2.编制stub端口模拟器插件和桩获取器;
5
3.加载stub端口模拟器插件,该插件模拟了 ARM芯片的UART接口的部分功能,能 实现桩数据的获取和发送;找到ADS的安装目录VVRMVVDSvl—2XBin,具体加载步骤如下
1)peripherals, ami为外设配置文件,在其中添加语句
{Default_stub = stub} default, ami为当前默认加载外设配置文件,在其中添加语句
{stub = Default_stub} 2)将stub设备描述文件stub, dsc拷贝到Bin目录下; 3)将stub设备定义动态链接库文件stub, dll拷贝到Bin目录下。 4.使用ADS打开源文件,并针对被测源文件进行插桩,桩程序需满足以下两点 1)由ARM平台或ARMulator可识别的指令集编写,在程序运行出现分支,循环或函
数调用时进行插桩; 2)桩程序访问ARMulator所模拟的芯片内存空间中的stub端口地址。将桩数据 写入该地址,使得该桩数据能被发送到模拟器进程之外。 5.打开桩获取器,在插桩完毕后利用ADS进行编译链接,生成目标映像文件 *. axf ;并将其运行于ARMulator模拟器之上。在映像文件运行过程中,桩程序即时的将桩 数据发送到stub端口,并由桩获取器获取分析; 6.桩获取器对收到的桩进行即时分析,动态显示已接收到的桩数据,和桩数据分
析结果,如覆盖率等。图io为运行插完桩的被测程序,桩获取器收到的桩数据。
权利要求
一种基于嵌入式模拟器的测试桩获取方法,其特征在于包括以下步骤(1)编制stub端口模拟器,加载到嵌入式模拟器上;(2)编制桩获取器;(3)将被测软件进行插桩,生成目标程序运行于模拟器之上;(4)模拟器进程在执行过程中实时将桩发送给stub端口模拟器;(5)桩获取器即时获得桩数据并分析,即时得出程序运行过程中的语句覆盖率和分支情况。
2. 根据权利要求1所述的基于嵌入式模拟器的测试桩获取方法,其特征在于该方法是基于嵌入式开发平台ARM Developer Suite中所提供的ARM内核模拟器ARMulator提 出的桩获取方法,当stub端口模拟器编制完成后,需加载到该模拟器之上;ARM内核模拟器 ARMulator. dll为ARM公司的商业级产品,成熟度高,稳定性和鲁棒性好,错误率低。
3. 根据权利要求1所述的基于嵌入式模拟器的测试桩获取方法,其特征在于stub端 口模拟器的工作机制为(1) 将被测软件进行插桩,插桩程序由嵌入式平台所支持的指令集编写,能被嵌入式模 拟器识别;(2) 当被测程序运行在模拟器上时,插桩程序访问预定义的内存单元,并将桩数据写入 该内存单元;(3) 当该内存空间被访问时,发送windows消息通知桩获取器模块;(4) 当桩获取器收到消息时,从该内存单元取到桩数据,并进行分析,能即时得到被测 程序运行过程中的覆盖率和分支情况。
4. 根据权利要求1所述的基于嵌入式模拟器的测试桩获取方法,其特征在于支持 ANSY C指令集,嵌入式汇编ARM指令集,嵌入式Thumb指令集所编写程序的桩获取。
5. 根据权利要求1所述的基于嵌入式模拟器的测试桩获取方法,其特征在于在嵌入 式系统开发的过程中,在硬件平台没有设计与开发好之前,能基于宿主机对嵌入式软件进 行测试,节约整个嵌入式系统的开发时间。
6. 根据权利要求1所述的基于嵌入式模拟器的测试桩获取方法,其特征在于宿主机 可以为PC机或笔记本,需首先安装ARM公司提供的ARM Developer Suite vl. 2。
全文摘要
本发明提出一种基于嵌入式模拟器的测试桩获取方法,旨在提供一种嵌入式软件的测试方法,能在嵌入式硬件平台还没有搭建起来的时候,基于宿主机平台实现嵌入式软件的测试,以此实现嵌入式系统软硬件同步开发。它包括以下步骤(1)编制stub端口模拟器,加载到嵌入式模拟器上;(2)编制桩获取器;(3)将被测软件进行插桩,生成目标程序运行于模拟器之上;(4)模拟器进程在执行过程中实时将桩发送给stub端口模拟器;(5)桩获取器即时获得桩数据并分析,即时得出程序运行过程中的语句覆盖率和分支情况。基于该方法能即时进行桩数据的发送、接收和分析,为进行白盒测试提供了必要的条件。
文档编号G06F11/36GK101706750SQ20091021898
公开日2010年5月12日 申请日期2009年11月16日 优先权日2009年11月16日
发明者曹小鹏, 梁琛, 王忠民, 王文浪, 范琳 申请人:西安邮电学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1