随着集成电路的大规模应用, 嵌入式软件向着网络化、结构化、复杂化方向发展[1-2], 无论是同构还是异构模块, 相互间的交互逻辑和协作执行手段变得更为复杂, 这使得嵌入式硬件的功能验证[3]成为难题。传统的静态分析、人工检测、暴力覆盖等验证方法效率较低[4], 且无法保证验证结果的准确性, 不能满足现代工业的需求。因此, 通过数据激励生成技术验证嵌入式硬件的功能十分必要。
数据激励生成技术模拟真实设备向被测设备发送指令或数据, 通过对被测设备的响应进行分析, 以验证该设备的功能是否正常。目前, 模拟验证中的数据激励生成技术主要包括定向激励和随机激励2种[5]。
定向激励生成技术主要采用手工编写验证激励的方式[6], 该方式适合规模较小、功能较简单的系统。但是, 手工编写验证激励耗时较长, 出错率较高, 在跨平台使用时会产生大量的复杂工作, 通用性较差。随机激励生成技术通过随机的方式生成测试激励, 可大幅减少开发人员构建验证激励的工作量, 但同时会产生大量的重复测试激励, 从而降低仿真的效率, 也无法保证激励数据的准确性。为去除上述无效或重复的测试激励, 受限的随机激励生成技术应运而生[7]。该技术将某些约束限制加入到随机激励中, 对激励施加了较强的定向作用, 进而提高了激励仿真的工作效率[8-9]。但是, 由于约束限制需要开发人员以测试用例的形式给出[10], 这将大幅增加人员工作量。
本文提出一种通用可配置的数据激励器生成技术, 在嵌入式软件的设计与集成一体化验证过程中, 模拟真实设备向被测设备注入激励数据[11]。采用自主数据激励和响应数据激励2种激励产生技术, 以提高数据激励器的通用性、可控性与可配置性。
1 数据激励器总体设计方案本文通用可配置激励数据器整体结构如图 1所示。通过仿真模拟真实设备的执行逻辑, 输入通信报文和接收的数据, 自动生成激励数据, 并由虚拟通信总线[12]传递给被测设备。
![]() |
Download:
|
图 1 通用可配置数据激励器结构 |
数据激励器的主要组成部分为内部逻辑自动机[13-14]。数据激励器通过自动机模拟真实设备的内部处理逻辑, 以数据文件和其他报文为输入, 利用自动机完成响应动作并自动生成激励数据, 然后过滤出符合网络通信要求的数据, 利用虚拟通信总线将数据发送至被测设备[15]。
内部逻辑自动机可以通过解析设备的交互逻辑文件来实现。交互逻辑文件描述了激励数据生成与驱动控制要求, 其规定一个设备所能拥有的全部状态, 列举每种状态下能够接收的事件, 并给出每种事件的处理逻辑。预先定义的交互逻辑文件能够降低跨平台使用时的代价, 保证数据激励器的可配置性。
通用可配置数据激励器接收到总线传输的报文和驱动数据后, 通过自主数据激励和响应数据激励2种激励方式产生激励数据, 然后注入被测设备。在自主数据激励方式中, 数据激励器根据预先定义的动作序列文件主动产生激励数据并驱动被测设备运行模式。动作序列文件由用户预先定义, 其规定了激励器模拟的设备需要完成动作的执行顺序, 使得激励器可以更好地适应外界需求的变化, 降低跨平台跨场景使用时的工作量。响应数据激励是由其他设备发送的驱动数据引起的数据激励模式。在该处理模式中, 响应逻辑文件规定了数据激励器对驱动数据的处理流程。数据激励器接收到报文后获取驱动数据, 内部逻辑自动机根据当前状态决定执行何种动作, 从而产生激励数据。
2 数据激励器的实现过程在实际应用中, 不能以完全随机的方式产生激励数据, 也不能随意向被测试设备注入激励数据。本文通用可配置数据激励器以内部逻辑自动机为核心, 结合自主数据激励和响应数据激励2种激励方式, 灵活适应外界需求的变化, 以提高数据激励器的通用性和可配置性。
2.1 内部逻辑自动机在通用可配置数据激励器中, 内部逻辑自动机实现了真实设备的内部处理逻辑, 模拟了真实设备的运作机制, 包括设备状态变迁、数据接收与发送、响应处理逻辑等功能, 是数据激励器的核心。
交互逻辑文件通常为XML[16]格式, 其定义一个连接设备的执行逻辑和运转流程, 包括能够遍历到的所有状态, 每个状态对应的事件, 各事件中的函数、属性、关系以及状态转换等。在如下所示的自动机交互逻辑文件中, 对处理器C中的状态转换和运行流程进行定义:处理器C在就绪状态下接收到开始工作命令后转换成工作状态, 在工作状态下可以接收到延迟发送事件、设置电平信号事件、接收数据事件以及发送数据事件, 并指定每个事件所对应的执行动作。
<Equipment Name="处理器C">
<StateMachine>
<Head>
<FirstState Name="就绪"/>
</Head>
<State Name="就绪">
<Event Name="开始工作">
<NewState Name="工作"/>
</Event>
</State>
<State Name="工作">
<Event Name="延迟发送" DelayTime="dt" Param="pa" Destination="des" Channel="ch">
<Action Name="延迟发送数据" DelayTime="dt" Param="pa" Destination="des" Channel="ch"/>
</Event>
<Event Name="设置电平信号" Param="高">
<Action Name="设置I/O电平" Param="高"/>
</Event>
<Event Name="接收数据" Param="pa">
<Action Name="存储数据" Param="pa"/>
</Event>
<Event Name="发送数据" DelayTime="dt" Param="pa" Destination="des" Channel="ch">
<Action Name="存储数据" Param="pa" Destination="des" Channel="ch"/>
</Event>
</State>
</StateMachine>
</Equipment>
逻辑自动机通过加载并解析相应的交互逻辑文件, 得到设备的状态迁移、数据响应等信息, 完成自动机的运转。输入通信报文和接收的数据, 自动生成激励数据, 再过滤出符合网络通信要求的数据, 利用虚拟通信总线将上述数据发送至被测设备, 进而驱动被测设备进行集体测试。
2.2 自主数据激励由数据激励器自主发生并驱动其他被测设备运行的激励模式称为自主数据激励。在自主数据激励中, 数据通常由预先定义的自主动作产生, 可以从文件中进行读取。
在本文中, 动作序列文件对仿真中虚拟设备所要完成的动作流程进行了定义, 包括动作起始时间、执行周期和所需处理的数据等。当达到动作的开始时间后, 该动作即被执行, 相应的激励数据会被发送。动作序列中预先定义的动作形成内部逻辑自动机的输入, 并产生自主激励数据。动作序列文件的上述功能能够保证数据激励器的通用性和可配置性。
在自主数据激励中, 首先, 通过对动作序列文件的解析并加载相应的动作执行函数, 形成内部逻辑自动机中的执行动作集合; 然后, 对执行动作集合中的每个动作设置执行周期和执行参数; 接着, 依据动作的执行顺序, 内部逻辑自动机执行相应接口函数并产生激励数据; 最后, 依据报文格式文件, 在确定通信网络类型和传递点后, 将报文封装成该类型网络上传输的数据帧, 并生成自主数据激励。自主数据激励的整体流程如图 2所示。
![]() |
Download:
|
图 2 自主数据激励流程 |
响应数据激励提高了数据激励的受控性, 实现了仿真过程中的数据驱动。响应数据激励有2种工作模式:被动应答模式和主动发送模式。
2.3.1 被动应答模式数据激励器通过虚拟通信总线接收到数据报文后, 根据预先定义的响应逻辑文件产生对应的应答。在响应逻辑文件中, 需要规定数据激励器所需处理的外部消息以及消息所对应的响应事件。在该工作模式下, 由响应逻辑文件预先定义数据激励器对外部数据的处理流程, 以适应多种使用场景的应用需求, 从而省时省力。
当数据激励器接收到由虚拟通信总线传递来的报文时, 首先根据报文格式文件提取出驱动数据, 然后依据响应逻辑文件对驱动数据进行匹配, 得到响应事件的名称和参数, 进而产生响应事件, 接着内部逻辑自动机执行响应事件, 产生对被测设备的激励数据, 最后根据报文格式文件的规定, 按照传输网络类型和目的地进行报文封装, 形成可供被测设备使用的激励数据帧, 并通过虚拟通信总线发送至被测设备。响应数据激励的整体流程如图 3所示。
![]() |
Download:
|
图 3 响应数据激励流程 |
数据激励器在接收到数据包后解析报文, 按照预先规定的动作主动并周期性地发送激励数据给被测设备。在如下所示的XML文件中, 数据激励器接收到周期汇报命令数据包后, 每隔30 ms循环发送状态信息。
<RecvPacket Name="周期汇报命令" ID=′01FFFF00′Class=′状态量′>
<Packet Name="发送状态信息" ID=′06000210′ Class=′状态量′>
<Event Name="正常上电" Param=′0x16′ Interval=′30 ms′/>
</Packet>
</RecvPacket>
3 测试结果与分析 3.1 实验环境如图 4所示, 本文通过数据激励器模拟战车导航设备。雷达探测感兴趣的目标, 将探测目标的速度、方向、距离等状态参数传输给主控系统, 数据激励器从主控系统接收报文, 获取驱动数据, 内部逻辑自动机根据交互逻辑文件驱动其状态迁移, 通过自主激励和响应激励2种方式产生激励数据给评估设备。
![]() |
Download:
|
图 4 模拟战车设备的数据激励器系统 |
本次实验的系统软硬件环境如下:
CPU:Intel(R) Core(TM) i3-2130 3.40 GHz。
内存:4 GB。
操作系统:Windows 7。
开发平台:Visual Studio 2013。
3.2 性能分析将事件响应时间和逻辑自动机形成时间作为评估参数, 对本文数据激励器进行性能测试。数据激励器加载解析交互逻辑文件, 得到模拟战车设备的状态迁移、事件响应等信息, 形成内部逻辑自动机所需的时间即为逻辑自动机形成时间。实验记录1 000次逻辑自动机的形成时间并对其进行统计, 结果如图 5所示, 可得平均形成时间为0.13 ms, 最大形成时间和最小形成时间分别为0.875 ms和0.098 ms。
![]() |
Download:
|
图 5 逻辑自动机形成时间统计结果 |
模拟战车导航设备的数据激励器接收到主控程序发送的事件后, 基于当前状态和接收事件完成状态迁移, 该过程所需的时间即为事件响应时间。实验记录1 000次数据激励器的事件响应时间, 结果如图 6所示, 可得平均响应时间为0.493 ms, 最大响应时间和最小响应时间分别为7.319 ms和0.097 ms。
![]() |
Download:
|
图 6 事件响应时间统计结果 |
从图 5、图 6可以看出, 本文数据激励器形成内部逻辑自动机时效率较高, 能够迅速响应所接收的事件, 即具有良好的数据激励性能。同时, 本文结合自主数据激励和响应数据激励2种激励方式, 使用XML文件定义动作序列文件和交互逻辑文件, 提高了数据激励的通用性和可配置性, 解决了现有激励生成技术跨平台使用时工作量大、通用性差的问题。
4 结束语本文结合自主数据激励和响应数据激励2种激励方式, 提出一种通用可配置的数据激励器设计方案。通过加载、解析外部数据并驱动状态机的状态改变, 同时使用预先定义的动作序列文件进行激励器配置, 以提高数据激励器的灵活性、可控性与可配置性。下一步将优化XML文件的自动化生成程度, 提高该数据激励器的执行效率。
[1] |
苏恩杰.嵌入式系统网络化技术应用研究[D].西安: 西北工业大学, 2004. http://www.wanfangdata.com.cn/details/detail.do?_type=degree&id=Y585418
( ![]() |
[2] |
MCCOMBIE B. Embedded Web servers now and in the future[J]. Real-Time Magazine, 1998(3): 82-83. ( ![]() |
[3] |
FOSTER H D.Trends in functional verification: a 2014 industry study[C]//Proceedings of Design Automation Conference.Washington D.C., USA: IEEE Press, 2015: 1-6. https://ieeexplore.ieee.org/document/7167232/
( ![]() |
[4] |
陈丽蓉, 熊光泽, 罗蕾, 等. 嵌入式软件的覆盖测试[J]. 单片机与嵌入式系统应用, 2002, 2(11): 8-11. ( ![]() |
[5] |
BERGERON J. Writing testbenches:functional verification of HDL models[M]. Berlin, Germany: Springer, 2012.
( ![]() |
[6] |
朱朋.多核处理器功能验证的测试平台优化和激励生成技术[D].杭州: 浙江大学, 2015. http://cdmd.cnki.com.cn/Article/CDMD-10335-1016066078.htm
( ![]() |
[7] |
张欣, 黄凯, 孟建熠, 等. 一种面向微处理器验证的分层随机激励方法[J]. 计算机应用研究, 2010, 27(4): 1284-1288. ( ![]() |
[8] |
WU Bohan, HUANG C Y.A robust constraint solving framework for multiple constraint sets in constrained random verification[C]//Proceedings of Design Automation Conference.Washington D.C., USA: IEEE Press, 2013: 1-7.
( ![]() |
[9] |
NAVEH Y, RIMON M, JAEGER I, et al. Constraint-based random stimuli generation for hardware verification[J]. AI Magazine, 2006, 28(3): 13-30. ( ![]() |
[10] |
HAN Xinyu, TANG Longli, JIAN Yang, et al. Testcase auto-drive technology for embedded software of warship[J]. Computer Measurement and Control, 2015(8): 52-63. ( ![]() |
[11] |
严晓浪, 殷燎, 黄凯, 等.一种用于嵌入式处理器功能验证的动态仿真平台方法: CN101286182[P].2008-10-15.
( ![]() |
[12] |
LIN Y, ROOM E S. Research and implementation soft bus in distributed real-time simulation system[J]. Electronic Science and Technology, 2015(6): 25-36. ( ![]() |
[13] |
MARCHAND H, GAUDIN B.Supervisory control problems of hierarchical finite state machines[C]//Proceedings of IEEE Conference on Decision and Control.Washington D.C., USA: IEEE Press, 2003: 1199-1204. https://ieeexplore.ieee.org/document/1184677
( ![]() |
[14] |
杨启亮, 邢建春, 王平, 等. 设备自动巡检逻辑的层级有限自动机建模与实现[J]. 解放军理工大学学报(自然科学版), 2009, 10(6): 528-535. ( ![]() |
[15] |
高峰, 邓霏, 陈泉根. 基于分层模型的半实物仿真测试平台设计[J]. 计算机工程, 2018, 44(1): 104-109. DOI:10.3969/j.issn.1000-3428.2018.01.017 ( ![]() |
[16] |
DENOYER L, GALLINARI P.A belief networks-based generative model for structured documents: an application to the XML categorization[C]//Proceedings of the 3rd International Conference on Machine Learning and Data Mining in Pattern Recognition.Berlin, Germany: Springer, 2003: 328-342. https://link.springer.com/chapter/10.1007%2F3-540-45065-3_29
( ![]() |