0 引 言
由于目标机与宿主机处理器体系结构不同,嵌入式软件无法在宿主机上直接运行与测试,因此嵌入式软件的开发过程常常比硬件开发过程还要漫长,导致整个系统开发周期长,软件功能调试和性能测试不能及时完成,软件质量无法保证。嵌入式模拟器能良好地解决这一问题。
将模拟器应用到嵌入式软件的开发与测试中,其优点有如下几个方面:
(1)采用模拟器进行嵌入式开发与测试能让软件和硬件开发同步进行,缩短开发周期;
(2)能提供比真正硬件环境下更丰富的测试环境,拓宽测试范围;能进行长时间的测试,甚至能在真实硬件不能承受的“危险”条件下测试。
(3)能提供调试,测试,变量查看,性能分析,实验数据存储等多种额外功能,便于开发与测试人员进行分析。
1 国内外模拟器相关研究
国内外已有若干较成熟的嵌入式系统模拟器,如ARM公司的ARMmulator,同济大学开发的Proemulatot中针对ARM芯片的指令模拟器,清华大学Sky Eye项目中的指令模拟器,Linux上的开源软件GDB ARMulator。
Proemulator是一个源码开放的通用模拟器架构,能在宿主机上以纯软件方式模拟各种硬件设备(包括CPU、输入/输出设备等),也可以模拟由这些设备组成的单片机或嵌入式系统。它基于插件机制,主程序提供整个构架,包括运行环境的建立、代码的装载和运行时内存、寄存器、端口的查看界面等,而插件负责模拟不同硬件设备的行为和特性,并抽象成一个统一的接口提供给主程序调用。通过这个机制,模拟新的设备变得更为容易。Proemutator提供多种CPU插件与若干种片内与片外外设,结构图如图1所示。
2 基于嵌入式模拟器的插桩构架
嵌入式测试平台建立在嵌入式模拟器之上,测试过程中首先对被测程序进行插桩,桩节点在程序运行过程中能同步的,即时地向桩信息分析器输出预设的桩信息。分析器能实时接收装数据,并进行分析,从而得出整个被测程序运行过程中的覆盖率和分支情况。基于嵌入式模拟器的插桩构架如图2所示。
3 基于Proemulator的插桩构架实现
嵌入式模拟器和桩信息分析器为两个独立进程,在两者之间实现桩数据的传递,需采用进程间通信机制。常见的进程间通信方法有以下几种:
(1)Socket通信是常见的进程间通信方法,它能良好地支持网络通信协议TCP/IP,在进行通信时,需要设置端口,并通过几次握手建立TCP连接,因此适合网络间的大量数据传输,而对于单机上的少量多次数据传输并不合适。
(2)共享内存的方法较为常见,对于每个进程来说,获得共享内存后,就能实现内存的读写操作。但是如果不进行同步,则一个进程在进行读的过程中另一个进程进行写操作,就会造成数据的不一致。因此在采用共享内存的方法时,需要将共享区域设置为临界资源。常用的方法有信号量机制,两个进程访问共享内存时,利用P,V操作进行读写的互斥。当P操作成功时,才能访问临界区,访问完毕后进行V操作,让出使用权,使得别的进程能够访问。共享内存的方法适合多个进程间的大量数据共享,只要处理好操作的互斥性,该方法非常实用。
(3)WM COPYDATA消息是Windows底层消息,使用非常方便,只需获得进行通信的进程的窗口句柄,就能通过SendMessege函数将数据封装在消息中传递给该进程,因为SendMessege函数在接收进程接到消息后才会返回,因此绝对不会发生消息丢失的情况,是可靠的通信。接收方只需要处理WM_COPYDATA消息,便能获得传递来的数据。当然,该方法不能用于网络间的传输,只能用于单机环境下的Windows操作系统。还有管道,剪贴板,文件映射等方法,本文不做详细介绍。下面详细介绍基于嵌入式模拟器获取桩数据的技术难点。
3.1 基于Proemulator的插桩构架
Proemulator源码完全开放,提供了UART插件,对外设的模拟可以简化为对端口寄存器的模拟,当程序访问相应的端口时,触发其对应外设的动作。UART内部包括控制口和数据口。向控制口写入工作方式控制字后,访问数据口数据能触发事件。在被测程序中进行插桩初始化,设定UART工作方式,在需要插桩的位置将桩数据写入UART数据端口,然后在UART插件中将写入数据端口的桩信息使用Windows进程通信机制输出。
Proemulator提供了多种串行数据重定位的方式来将模拟器内部的数据信息发送至外部,包括控制台、磁盘文件、命名管道和串口。其中命名管道是一种较好的方式,只需编写自己的管道接收器,就能实时地接收管道发送出来的桩数据,使用串口也比较方便。还能在Proemulator中加入共享内存,或者发送WMCOPYDATA消息,基于Proemulator的插桩构架如图3所示。
3.2 插桩构架性能分析
本文实现了基于Proemulator的桩数据的发送与获取,并进行了分析,见表1。
4 结 语
本文提出基于嵌入式模拟器的插桩构架,将插桩后的程序经编译生成可执行代码,运行于模拟器上,在运行过程中模拟器能实时地将桩信息发送到桩信息分析器,进行代码的白盒测试。本文基于已有的嵌入式模拟器Proemulator实现了桩数据获取。基于嵌入式模拟器的插桩架均能即时地进行桩数据的发送接收与分析,能有效进行白盒测试。
关键字:嵌入式测试平台 模拟器 插桩
引用地址:基于Proemulator的插桩构架研究
由于目标机与宿主机处理器体系结构不同,嵌入式软件无法在宿主机上直接运行与测试,因此嵌入式软件的开发过程常常比硬件开发过程还要漫长,导致整个系统开发周期长,软件功能调试和性能测试不能及时完成,软件质量无法保证。嵌入式模拟器能良好地解决这一问题。
将模拟器应用到嵌入式软件的开发与测试中,其优点有如下几个方面:
(1)采用模拟器进行嵌入式开发与测试能让软件和硬件开发同步进行,缩短开发周期;
(2)能提供比真正硬件环境下更丰富的测试环境,拓宽测试范围;能进行长时间的测试,甚至能在真实硬件不能承受的“危险”条件下测试。
(3)能提供调试,测试,变量查看,性能分析,实验数据存储等多种额外功能,便于开发与测试人员进行分析。
1 国内外模拟器相关研究
国内外已有若干较成熟的嵌入式系统模拟器,如ARM公司的ARMmulator,同济大学开发的Proemulatot中针对ARM芯片的指令模拟器,清华大学Sky Eye项目中的指令模拟器,Linux上的开源软件GDB ARMulator。
Proemulator是一个源码开放的通用模拟器架构,能在宿主机上以纯软件方式模拟各种硬件设备(包括CPU、输入/输出设备等),也可以模拟由这些设备组成的单片机或嵌入式系统。它基于插件机制,主程序提供整个构架,包括运行环境的建立、代码的装载和运行时内存、寄存器、端口的查看界面等,而插件负责模拟不同硬件设备的行为和特性,并抽象成一个统一的接口提供给主程序调用。通过这个机制,模拟新的设备变得更为容易。Proemutator提供多种CPU插件与若干种片内与片外外设,结构图如图1所示。
2 基于嵌入式模拟器的插桩构架
嵌入式测试平台建立在嵌入式模拟器之上,测试过程中首先对被测程序进行插桩,桩节点在程序运行过程中能同步的,即时地向桩信息分析器输出预设的桩信息。分析器能实时接收装数据,并进行分析,从而得出整个被测程序运行过程中的覆盖率和分支情况。基于嵌入式模拟器的插桩构架如图2所示。
3 基于Proemulator的插桩构架实现
嵌入式模拟器和桩信息分析器为两个独立进程,在两者之间实现桩数据的传递,需采用进程间通信机制。常见的进程间通信方法有以下几种:
(1)Socket通信是常见的进程间通信方法,它能良好地支持网络通信协议TCP/IP,在进行通信时,需要设置端口,并通过几次握手建立TCP连接,因此适合网络间的大量数据传输,而对于单机上的少量多次数据传输并不合适。
(2)共享内存的方法较为常见,对于每个进程来说,获得共享内存后,就能实现内存的读写操作。但是如果不进行同步,则一个进程在进行读的过程中另一个进程进行写操作,就会造成数据的不一致。因此在采用共享内存的方法时,需要将共享区域设置为临界资源。常用的方法有信号量机制,两个进程访问共享内存时,利用P,V操作进行读写的互斥。当P操作成功时,才能访问临界区,访问完毕后进行V操作,让出使用权,使得别的进程能够访问。共享内存的方法适合多个进程间的大量数据共享,只要处理好操作的互斥性,该方法非常实用。
(3)WM COPYDATA消息是Windows底层消息,使用非常方便,只需获得进行通信的进程的窗口句柄,就能通过SendMessege函数将数据封装在消息中传递给该进程,因为SendMessege函数在接收进程接到消息后才会返回,因此绝对不会发生消息丢失的情况,是可靠的通信。接收方只需要处理WM_COPYDATA消息,便能获得传递来的数据。当然,该方法不能用于网络间的传输,只能用于单机环境下的Windows操作系统。还有管道,剪贴板,文件映射等方法,本文不做详细介绍。下面详细介绍基于嵌入式模拟器获取桩数据的技术难点。
3.1 基于Proemulator的插桩构架
Proemulator源码完全开放,提供了UART插件,对外设的模拟可以简化为对端口寄存器的模拟,当程序访问相应的端口时,触发其对应外设的动作。UART内部包括控制口和数据口。向控制口写入工作方式控制字后,访问数据口数据能触发事件。在被测程序中进行插桩初始化,设定UART工作方式,在需要插桩的位置将桩数据写入UART数据端口,然后在UART插件中将写入数据端口的桩信息使用Windows进程通信机制输出。
Proemulator提供了多种串行数据重定位的方式来将模拟器内部的数据信息发送至外部,包括控制台、磁盘文件、命名管道和串口。其中命名管道是一种较好的方式,只需编写自己的管道接收器,就能实时地接收管道发送出来的桩数据,使用串口也比较方便。还能在Proemulator中加入共享内存,或者发送WMCOPYDATA消息,基于Proemulator的插桩构架如图3所示。
3.2 插桩构架性能分析
本文实现了基于Proemulator的桩数据的发送与获取,并进行了分析,见表1。
4 结 语
本文提出基于嵌入式模拟器的插桩构架,将插桩后的程序经编译生成可执行代码,运行于模拟器上,在运行过程中模拟器能实时地将桩信息发送到桩信息分析器,进行代码的白盒测试。本文基于已有的嵌入式模拟器Proemulator实现了桩数据获取。基于嵌入式模拟器的插桩架均能即时地进行桩数据的发送接收与分析,能有效进行白盒测试。
上一篇:补偿和测量高功率LED驱动器的控制回路
下一篇:是德科技携手纽约大学无线研究中心推进5G
推荐阅读最新更新时间:2024-03-30 22:51
太阳模拟器测试非晶硅薄膜的注意事项
太阳电池,也称为光伏电池,是将太阳光辐射能直接转换为电能的器件,而测量太阳能电池的效率是通过用辐射强度计测定入射太阳光的功率和测量电池在最大功率点产生的电功率的办法来实现。使用这种方法存在的困难是被测电池的性能在很大程度上取决于太阳光光谱成分,但是光谱成分的精确程度受到季节变化、地区差异和气候条件等各种因素的影响,加上辐射强度计刻度误差,使测量结果难以精确和稳定。在大多生产厂家,使用模拟太阳光的室内模拟器进行太阳能电池效率的测试,室内模拟器的光强和光谱分布是用经标准太阳光定标的标准片来校准的。 目前一些实验室或者测试机构,经常用晶硅太阳电池作为标准件来测试非晶硅薄膜" title="非晶硅薄膜" 非晶硅薄膜 " titl
[电源管理]
基于CAN总线的A320模拟器硬件仿真方案研究
摘要: 针对飞机模拟器硬件仿真时系统模块多、通信频繁、结构复杂而导致模块间布线繁杂, 以及由此产生的干扰等问题, 提出一种基于CAN 总线的驾驶舱仿真方案。该方案中上位机负责逻辑运算, 下位机负责操作信息采集, 通过CAN 总线将上、下位机组成一个网络, 实现驾驶舱功能仿真。阐述系统的总体结构, 设计了整个驾驶舱的数据传输协议, 结合实际应用, 给出了节点中数据收发模块的硬件设计结构和数据传输软件实现方法。实际测试结果表明, 该设计布线简洁, 数据传输稳定可靠, 达到预期目标。 根据国家建设民航强国的需要, 国内对飞机模拟机的需求不断增大, 但目前国内模拟机研制规模不能满足日益增长的市场需求, 若引进国外模拟机, 则不仅成本
[工业控制]
固特异装配动态驾驶模拟器用于虚拟轮胎开发
Buycar从官方获悉,固特异轮胎宣布,将在卢森堡科尔马尔 - 贝尔格创新技术中心将引进一台DiM250动态驾驶模拟器,由VI-grade公司开发设计,可帮助进一步完善虚拟轮胎的开发流程。 本次设备引进是与VI-grade公司的第二次合作,此前,固特异阿克隆市总部已正式启用采购的首台DiM250动态驾驶模拟器。通过装配DiM250动态驾驶模拟器,固特异将有效强化欧洲区的产品开发能力,并提升欧洲区与阿克隆市总部之间的技术协同合作。 与此同时,固特异还为两大创新技术中心装配了VI-grade公司的COMPACT模拟器,得益于驾驶模拟器的辅助,固特异能够在产品开发的早期阶段,开展轮胎模型的研发、测试及验证工作,进而形成清晰
[汽车电子]
沃尔沃使用全新游戏技术 开发更安全的自动驾驶系统
据外媒报道,沃尔沃汽车将使用基于欧洲供应商技术的混合现实模拟器,开发安全和自动驾驶系统。该模拟器称作“终极驾驶模拟器(the ultimate driving simulator),具有移动驾驶座椅、带有触觉反馈的方向盘,以及虚拟现实(VR)头盔。该模拟器使用芬兰虚拟与混合现实初创公司Varjo和实时3D开发平台Unity的技术,包括在真实道路上驾驶真实的汽车。 (图片来源:沃尔沃汽车) 该模拟器结合了逼真的高清3D图形、增强现实耳机,以及全套Teslasuit,以提供来自虚拟世界的触觉反馈,监测身体反应。沃尔沃表示,软件和硬件相结合,使工程师能够使用真实车辆,在真实的测试轨道上不断地模拟交通场景,并且完全安全。 利
[汽车电子]
利用CompactRIO和LabVIEW控制心脏模拟器
利用NI CompactRIO创建一个独立的硬件在环(HIL)测试环境。该测试环境可以把人工机械心脏与循环血流模型相结合,创造一个包含真实血液动力环境的生动的解决方案。 "CompactRIO提供了一个坚固、可靠、独立的平台,使我们的团队能够进行持续性测试,这在普通的计算机上是不可能实现的。" 由心脏病导致的死亡占发达国家所有死亡人口的将近一半。心脏移植仍然是治疗心脏病最有效的方式,但捐献的器官远远及不上需求。为了解决这种不平衡情况,目前人们正在研究使用。利兹大学正在开发的一种新颖的机械人工心脏辅助装置被命名为智能心室辅助装置(iVAD)。该装置能够作为人造肌肉包覆心脏,通过在心脏心室外表面周围施加与自然节
[工业控制]
基于CPCI接口DSP板的雷达目标模拟器
提出一种基于 CPCI 接口DSP板的C波段 雷达目标模拟器 。探测回波模拟,采用软硬件相结合的方法。由主控计算机根据雷达工作参数预先设定并计算目标数据,然后将数据加载到硬件电路中。硬件电路实时合成雷达回波信号并输出。利用DSP/FPGA的高速计算性能、直接数字合成(DDS)技术和数字射频存储(DRFM)技术,可以实现相位编码、线性调频、非线性调频等多种复杂方式下的目标回波信号的实时模拟,检测雷达的跟踪精度、角精度等指标。 1 功能及系统组成 所设计的多目标雷达模拟器为配合某型宽带雷达系统进行设备调试和功能检查。模拟器将雷达发射波形经延迟、幅度相位调制和多普勒频移等形成模拟目标回波,通过天线发送或直接注入给试验雷达系统
[模拟电子]