首页> 中国专利> 一种基于设备建模语言的嵌入式仿真串口及建模方法

一种基于设备建模语言的嵌入式仿真串口及建模方法

摘要

一种基于设备建模语言的嵌入式仿真串口及建模方法,功能逻辑将数据送至外部或者将外部数据送至用户交互控制逻辑或者数据处理控制逻辑,用户交互控制逻辑获取外部数据送至数据处理控制逻辑、时序控制逻辑或者功能逻辑,接收功能逻辑或者数据处理控制逻辑发送的数据后显示,综合处理逻辑及接口适配逻辑实现各个逻辑数据交互,数据处理控制逻辑对数据进行格式转换后送至时序控制逻辑、用户交互控制逻辑或者功能逻辑,时序控制逻辑接收数据按照控制时序送至功能逻辑。本发明通过对嵌入式硬件串口进行逻辑建模及功能分解,解决了现有技术中在逻辑层面缺少对嵌入式硬件串口仿真建模方法描述的问题。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-04-09

    授权

    授权

  • 2016-10-19

    实质审查的生效 IPC(主分类):G06F17/50 申请日:20160429

    实质审查的生效

  • 2016-09-21

    公开

    公开

说明书

技术领域

本发明涉及一种嵌入式仿真技术,特别是一种基于设备建模语言的嵌入式仿真串口及建模方法。

背景技术

嵌入式软件是指运行在特殊嵌入式硬件设备(如手机、各种航天器等)上的软件。这些软件的前期开发与测试通常借助于虚拟硬件平台(或称模拟器,二者在本文中意思相同)。以全数字仿真测试环境为例,它是一种使用软件来模拟真实硬件的虚拟硬件平台,嵌入式软件开发与测试人员可以使用此平台来运行和测试嵌入式软件,此种虚拟硬件平台的使用,使嵌入式软件的开发与测试摆脱了对真实硬件的依赖。

嵌入式仿真串口主要应用于虚拟硬件平台中,用于仿真真实的串口功能,具体包括数据收发、时序控制、逻辑状态管理等功能。此仿真串口主要应用于嵌入式应用程序开发及测试验证中,可以提供与真实硬件功能一致的仿真特性;且此种仿真串口简单易用,操作简单,因此极大降低了应用程序开发及测试人员对上层应用程序进行调试的难度。

事务型仿真设备建模是虚拟硬件平台中对外设部件进行软件模拟的一种方式。它将设备间的每次交互(如读写设备的接口寄存器等)当成是一个原子操作:设备接收到一个请求,计算回复值并将其返回,此种同步方式高效且简单,并可以满足硬件模拟在精度、效率及易用性三个方面的需求。

在现有的虚拟硬件平台仿真串口的实现中,大多集中在功能接口的描述,或者专用于当前平台的串口仿真模型的实现,缺少对串口部件统一建模方法的描述,且实现的仿真串口通用性低,无法实现在多个不同虚拟硬件平台间的移植,也没有提供针对此种移植的方法。另一方面,现有的虚拟硬件平台中对仿 真串口的实现功能不同,大多需要进行二次开发之后才能供上层用户使用,即现有实现形式在功能实现方法无法全面适应上层用户人员的需求。

发明内容

本发明解决的技术问题是:克服现有技术的不足,提供了一种通过对嵌入式硬件串口进行逻辑建模及功能分解,解决了现有技术中在逻辑层面缺少对嵌入式硬件串口仿真建模方法描述的问题的基于设备建模语言的嵌入式仿真串口及建模方法。

本发明的技术解决方案是:一种基于设备建模语言的嵌入式仿真串口,包括功能逻辑、用户交互控制逻辑、综合处理逻辑及接口适配逻辑、数据处理控制逻辑、时序控制逻辑,其中

功能逻辑,接收传输数据后送至外部;接收控制数据送至外部;接收外部发送的传输数据送至用户交互控制逻辑或者数据处理控制逻辑;

用户交互控制逻辑,从外部获取传输数据后送至数据处理控制逻辑,从外部获取控制数据后送至时序控制逻辑或者功能逻辑;接收功能逻辑或者数据处理控制逻辑发送的传输数据后进行显示;所述的控制数据为嵌入式软件中控制数据传输的数据指令;

综合处理逻辑及接口适配逻辑,连接功能逻辑、用户交互控制逻辑、数据处理控制逻辑、时序控制逻辑,实现功能逻辑、用户交互控制逻辑、数据处理控制逻辑、时序控制逻辑之间的数据交互;将功能逻辑、用户交互控制逻辑、数据处理控制逻辑、时序控制逻辑及其数据交互关系嵌入到多种嵌入式硬件仿真平台或者生成单独使用的仿真功能模块;

数据处理控制逻辑,对用户交互控制逻辑发送的传输数据进行格式转换后送至时序控制逻辑或者功能逻辑;接收功能逻辑发送的传输数据后进行格式转换后送至用户交互控制逻辑;

时序控制逻辑,接收控制数据生成控制时序,接收传输数据按照控制时序送至功能逻辑;所述的功能逻辑、用户交互控制逻辑、综合处理逻辑及接口适 配逻辑、数据处理控制逻辑、时序控制逻辑中的数据、指令、时序均采用设备建模语言描述,其中,设备建模语言为基于事务型仿真的、能够被多种嵌入式硬件仿真平台直接编译或解释的语言。

一种基于设备建模语言的嵌入式仿真串口建模方法,包括如下步骤:

(1)将嵌入式硬件串口建模抽象为嵌入式仿真串口,然后对嵌入式仿真串口进行分解得到功能逻辑、用户交互控制逻辑、综合处理逻辑及接口适配逻辑、数据处理控制逻辑、时序控制逻辑;所述的功能逻辑为嵌入式硬件串口的控制功能单元、状态功能单元、数据功能单元;所述的时序控制逻辑通过接收外部的控制时序对功能逻辑进行时序控制;所述的用户交互控制逻辑通过外部用户指令控制嵌入式硬件串口;所述的数据处理控制逻辑控制嵌入式硬件串口中的数据输入、数据输出进行格式转换;所述的综合处理逻辑及接口适配逻辑实现嵌入式硬件串口中功能逻辑、用户交互控制逻辑、数据处理控制逻辑、时序控制逻辑的信息交互;所述的功能逻辑、用户交互控制逻辑、综合处理逻辑及接口适配逻辑、数据处理控制逻辑、时序控制逻辑中的数据、指令、时序均采用设备建模语言描述,其中,设备建模语言为基于事务型仿真的、能够被多种嵌入式硬件仿真平台直接编译或解释的语言;

(2)将功能逻辑划分为数据单元、控制单元、状态单元,其中,数据单元对用户交互控制逻辑、数据处理控制逻辑或者时序控制逻辑传输的数据进行缓存或者发送至外部,接收外部发送的数据送至用户交互控制逻辑或者数据处理控制逻辑;控制单元控制数据单元接收、发送或者缓存数据;状态单元表示嵌入式硬件串口内部状态;所述的嵌入式硬件串口内部状态包括嵌入式硬件串口中数据单元存储、发送或者接收数据;所述的数据为控制数据或者传输数据;

(3)将时序控制逻辑划分为延迟时序控制单元、循环时序控制单元,其中,延迟时序控制单元接收控制数据生成控制时序,接收传输数据按照控制时序延迟送至功能逻辑;循环时序控制单元接收控制数据生成控制时序,接收传输数据按照控制时序循环送至功能逻辑;

(4)将数据处理控制逻辑划分为输入数据处理单元、输出数据处理单元,其中,输入数据处理单元接收传输数据后进行格式转换后送至用户交互控制逻辑,输出数据处理单元对传输数据进行格式转换后送至时序控制逻辑或者功能逻辑;

(5)使用户交互控制逻辑从外部获取传输数据后送至数据处理控制逻辑、从外部获取控制数据后送至时序控制逻辑或者功能逻辑;使用户交互控制逻辑接收功能逻辑或者数据处理控制逻辑发送的传输数据后进行显示;所述的控制数据为嵌入式软件中控制数据传输的数据指令;

(6)将综合处理逻辑及接口适配逻辑划分为接口适配单元、目标生成单元,其中,适配接口生成与功能逻辑、用户交互控制逻辑、数据处理控制逻辑、时序控制逻辑进行通信的接口;目标生成单元将功能逻辑、用户交互控制逻辑、数据处理控制逻辑、时序控制逻辑生成能够嵌入到多种嵌入式硬件仿真平台的特定功能模块或者单独使用的仿真功能模块。

所述的设备建模语言基于C++语言。

所述的设备建模语言的运算符包括算术运算符、逻辑运算符、位运算符。

所述的设备建模语言包括代表定义、数据类型、操作处理过程或者触发条件的关键字。

本发明与现有技术相比的优点在于:

(1)本发明通过对嵌入式硬件串口进行逻辑建模及功能分解,解决了现有技术中在逻辑层面缺少对嵌入式硬件串口仿真建模方法描述的问题,且本发明中提出的方法直接应用于现有的虚拟硬件平台中,具有通用性的效果;

(2)本发明中通过使用设备建模语言,实现了对嵌入式硬件仿真串口的统一搭建,解决了现有的技术中无法针对仿真串口实现多平台统一建模的问题,具有统一且可移植的效果;

(3)本发明中通过针对串口进行时序控制逻辑、用户交互逻辑、数据处理逻辑及接口适配逻辑四个模块的功能划分过程,扩展了仿真串口的功能,解决 了现有的仿真串口模型中扩展串口功能不足的问题,具有增强仿真串口功能的效果。

附图说明

图1为本发明一种基于设备建模语言的嵌入式仿真串口建模方法流程图;

图2为本发明一种基于设备建模语言的嵌入式仿真串口及建模方法中数据处理逻辑图;

图3为本发明一种基于设备建模语言的嵌入式仿真串口及建模方法中设备建模语言编译平台框架;

图4为本发明一种基于设备建模语言的嵌入式仿真串口结构原理图,其中,实线箭头为发送数据流程,虚线箭头为接收数据流程。

具体实施方式

本发明针对现有技术的不足,基于嵌入式串口硬件仿真的需求,提出一种基于设备建模语言的嵌入式仿真串口及建模方法,采用一种新型面向事务型仿真的设备建模语言,对嵌入式硬件系统仿真中出现的各种不同类型的串口硬件进行功能仿真,其主要解决的问题可归纳为如下两个方面:

(1)嵌入式串口硬件功能仿真

对嵌入式串口硬件进行功能仿真,是指采用软件的方式来模拟真实的嵌入式串口硬件。此仿真的串口主要应用于一些完整的嵌入式硬件仿真平台中,用作一些插件,提供配合使用的串口功能仿真;或者单独使用来实现串口功能仿真。在一个完整的嵌入式硬件仿真平台中使用此仿真串口,需要平台提供串口硬件仿真接口。然而,由于各个嵌入式硬件仿真平台实现机制不同,运行原理也存在差异,因此在串口功能仿真模块开发中存在很大困难。

针对此问题,本发明提出基于设备建模语言来实现串口仿真建模,设备建模语言基于事务型仿真的原理,采用关键字技术,提供了对硬件串口功能仿真的统一描述。针对此语言可以设计开发面向多外嵌入式硬件仿真平台的编译或解释器,从而实现了将硬件串口仿真模块开发人员与平台自身隔离,降低了模 型开发的实现难度。

(2)嵌入式仿真系统实时控制

在对串口硬件进行功能仿真过程中,除了硬件自身功能之外,通常还需要对对硬件的时序、数据需求、人机交互接口等进行建模,此部分的建模通常也是嵌入式硬件仿真平台自身所不具备的,同样需要设备开发人员后期开发。

针对此问题,本发明针对串口仿真模块设计了多种语法要素,通过这些语言要素可以实现对硬件仿真串口的时序、人机交互接口等实现完整的控制。在数据需求方面,本发明采用关键字技术,实现了对串口硬件中所需要的数据结构的统一建模,从而减轻了后期仿真模块开发人员的工作量。

本发明中使用的设备建模语言是基于形式化语言的形式,其语法规范与使用方式与通用编程高级语言C++类似,且提供了类似C++语言的运算符,具体如表1所示。在关键字方面,除了通用编程高级语言C++中的关键字之外,设备建模语言还提供了其它关键字,用于设备功能描述及其它辅助功能,具体如图2所示。

表1:设备建模语言运算符

算术运算符+、-、*、/逻辑运算符&&、||、!、<、>、>=、<=、==、!=位运行符&、|、<<、>>其它::、:、;、[、]、{、}、(、)、,、=、:=、.

表2:设备建模语言关键字

本发明首先针对嵌入式仿真串口进行统一建模抽象,得到对应的嵌入式仿真串口逻辑;而后针对得到的嵌入式仿真串口逻辑进行功能分解,得出统一建模流程的各个功能模块。概括而言,嵌入式仿真串口建模方法主要按照如下流程来实现:

(1)嵌入式硬件串口逻辑建模及功能分解;

(2)串口功能模块建模;

(3)串口时序控制逻辑建模;

(4)串口用户交互控制逻辑建模;

(5)串口数据处理控制逻辑建模;

(6)串口综合处理及接口适配功能建模。

如图1所示为本发明一种基于设备建模语言的嵌入式仿真串口及建模方法流程图,以下分六个部分介绍上述各个建模流程:

(1)嵌入式硬件串口逻辑建模及功能分解

此部分为整个建模流程的第一部分,负责完成串口逻辑部分的建模及串口功能分解,其中,串口逻辑包括其功能逻辑、数据处理逻辑、时序控制逻辑、用户交互控制逻辑、综合处理及接口适配逻辑五个部分。首先根据待仿真串口的功能定义串口仿真的框架结构,确定其逻辑功能单元组成部分;而后定义需要仿真的端口、引脚、寄存器等关键部件。此外,本流程中还包括串口芯片的初始化操作。

设备建模语言中使用Chip关键字来对整个仿真环境来进行定义,多个串口芯片可以组成一个Chip。对于单个Chip中的单个串口,设备建模语言使用关键字Device来进行定义。对串口中所采用的端口、引脚等的定义采用PIN、PORT、TPIN、VPORT关键字来表示,各关键字作用如下:

PIN:引脚数据类型,它用于定义当前串口模块的引脚;

PORT:端口数据类型,它用于定义当前串口模块的端口,如IO端口等;

TPIN:时序端口类型,它用于定义当前串口模块的一个时序型端口;

VPIN:虚端口类型,它用于定义当前串口模块的一个虚端口,它可用于多个串口模块之间的互边。

定义完成上述部分后,可以进行串口设备初始化操作的处理,本流程建模完成后的框架如表3所示。

表3:嵌入式串口仿真建模框架

(2)串口功能模块建模

对于一个串口部分,其功能模块可以分为三部分:数据模块、控制模块、状态模块,其中,数据模块主要完成对收发数据的缓存处理;控制模块主要完成对数据收发逻辑的控制;状态模块主要完成对数据收发过程中串口设备内部状态的表示。

本发明中对串口的仿真采用面向事务型仿真的方式,对于串口功能单元的三个部分,设备建模语言以对象变量的形式对其操作的基本单元进行详细定义;并以事务的形式对各个基本单元进行操作。在设备建模语言中,可以使用关键字Object来定义串口功能模块中各个可操作的基本单元,采用关键字Action及PortAction来定义其操作时机及操作对象。单个Action(或PortAction)表示一个完整的操作,此操作以事务的形式存在,环境开发人员在此Action(或 PortAction)中完成对各个基本单元的所有操作。

(3)串口时序控制逻辑建模

嵌入式软件中经常需要对串口设备执行一些时序控制逻辑,如实现对某个中断的循环触发,或者对某个数据端口以固定的周期输入数据等。时序逻辑可以简单化分为两类:延迟时钟逻辑(或称单次时钟逻辑)、循环时钟逻辑。延迟时钟逻辑用于在实现对某个操作的延迟处理;循环时钟操作用于实现对某个操作的循环处理。设备建模语言提供了关键字BeginTimer、EndTimer、TimerAction,来实现上述两类时序控制逻辑。

TimerAction关键字的功能同Action类似,它定义了一个事务型操作,此事务型操作的内容由串口模块开发人员确定。BeginTimer关键字用于一个时钟的触发,通过此关键字可以定义时钟的时钟类型(单次或者循环)、触发延迟、触发周期、触发形式及时序型事务(TimerAction)。EndTimer关键字用于结束一个时序操作。时序控制逻辑经常与测试自定义命令组合使用,其实现框架如表4所示。

表4:时序控制逻辑框架

(4)串口用户交互控制逻辑建模

嵌入式硬件仿真平台通用用于对嵌入式软件的开发及测试过程中。在对串口设备进行仿真建模的过程中,仿真串口模块需要提供完整的用户交互逻辑,以实现嵌入式软件开发或者测试人员对整个软件的自主调试控制:如在特定的 时间以特定的周期向某个特定的端口输入特定的数据、或触发某个中断等。

本发明采用自定义命令的形式来实现对串口用户交互控制逻辑的建模。设备建模语言提供了关键字Command来实现对自定义命令的定义与解析。其实现框架如表5所示:每个Command项可以定义一个命令,串口仿真模块开发人员可以定义此命令的语言格式,并在Commnad项中对此解析进行解析,解析方式完全由开发人员自行确定,此种方式大大增加了测试命令实现的适应性,仿真模块开发人员可以根据测试人员的具体需求,灵活设计实现各种不同测试命令,来实现对程序的严格控制。

表5:人机交互接口框架

(5)串口数据处理控制逻辑建模

数据处理逻辑用于串口设备模块输入输出数据的处理。在嵌入式系统中,数据是各类数据传输芯片传输的基本单元。不同类型的串口芯片,其传输的数据形式也不相同。这些差异主要体现在数据帧头、帧尾、校验和、转义、填充形式等方面。为了实现对这些不同类型的数据的处理,本发明采用关键字DataSource、DataOutput来定义数据处理逻辑。

DataSource用于定义一个串口设备的数据源,通过此关键字可以指定数据帧的格式、数据传输单元大小等信息,并将用户输入的数据解析成串口设备可识别的数据格式形式。DataOutput关键字用于对串口设备的输出数据进行保存,并可以按照指定的格式对输出数据进行解析、封装等操作,即它执行与DataSource相反的操作。

图2为DataSource及DataOutput关键字的处理流程:当前假定串口设备中传输的数据都为16位数据格式,但用户期望输入不同的数据格式,此时使用DataSource关键字便可以将测试人员输入的数据转换成仿真串口可识别的数据;而对于从仿真串口上接收到的数据,使用DataOutput关键字可以将 其转换成用户便于观察的数据形式。

此外,为便于扩展,本发明中的设备建模语言还提供了如下关键字配合使用:

Add:用于向一个数据源DataSource或者数据输出单元DataOutput中添加一个数据处理项,它可以指定单个数据操作中所需要的数据文件、处理方面、校验码、错误信息等;

FlushOut:对一个数据输出单元DataOutput执行一次刷新操作;

GetData:从一个数据源DataSource中获得一组数据;

SetError:设置一个数据源DataSource中的单个数据项错误信息。

(6)串口综合处理及接口适配功能建模

串口综合功能主要完成仿真串口模块向特定嵌入式虚拟系统环境的定向转换。此综合处理建模过程需要两个关键要素:

适配接口:包括待转换虚拟系统环境所定义的与当前串口的通信接口,接口范围可覆盖了上述(2)~(5)建模流程中中的所有模块或者其子集。

设备建模语言编译平台:此编译平台负责根据上述适配接口,将基于设备建模语言的仿真串口模型编译生成最终的可嵌入到特定虚拟仿真环境中的特定功能模块,或者单独使用的仿真功能模块。本发明中采用前-后端方式设计实现此编译平台,编译平台框架如图3所示。

除了上述关键字之外,设备建模语言还提供了如下功能的关键字,此部分的关键字可以灵活运用到了上述串口部分仿真建模过程中,用于完善其仿真功能,此部分关键字可以应用在上述各个逻辑功能模块中。

Trigger:中断触发操作,用于模拟一个外部中断;

TriggerV:模块连接操作,用于多个仿真串口之间的数据通信;

SetWatch:地址监测操作,用于执行对一个串口仿真地址单元的访问监视;

UnSetWatch:取消地址监测操作;

VARI:无固定值的变量,常常用于变量值不确定的情况;

SetMem:内存单元写入操作,向仿真串口中的某个地址写入固定值;

GetMem:内存单元读取操作,读取仿真串口中的某个地址单元外的值。

经过上述建模流程之后,各个模块之间的数据流向及逻辑系统如图4所示。在发送数据的过程中,用户交互控制逻辑负责接收用户指定发送的数据,并将数据发送到功能逻辑模块(直接数据发送,无需额外的数据处理)或者数据处理逻辑模块(需要进行数据格式转换)。数据处理逻辑模块在接收到传输数据后,将数据发送至时序控制逻辑模块(需要时序控制)或者功能逻辑模块(直接数据发送,无需时序控制);时序控制逻辑模块从上层用户控制逻辑模块接收控制数据生成控制时序,并将从数据处理模块中接收到的传输数据按照控制时序送至功能逻辑模块;功能逻辑模块负责仿真嵌入式硬件串口的功能。在接收数据的过程中,功能逻辑模块负责将待接收外部数据并发送至数据处理逻辑(需要数据格式转换)或者用户交互控制逻辑(无需数据格式转换);数据处理逻辑对接收到的数据按照用户指定逻辑进行格式转换,并发送至用户交互控制逻辑模块;用户交互控制逻辑模块负责将接收到的数据显示给最终用户。在上述整个流程中,综合处理及接口适配逻辑负责完成所有模块之间的数据传输。

以下以一个具体的例子,详细说明如何基于设备建模语言各个语言要素,来实现对Intersil 80C52串口芯片进行建模。

在此部分设备建模语言代码中,粗体部件为设备建模语言关键字,斜体部分为注释代码。

在上表中,首先声明了一个芯片模型(Chip),此芯片(Chip)中包括一个仿真串口设备(当前命名为MD82C52_CS1),此串口对传输的数据有固定的格式要求(32位固定格式数据),为此,当前模型中建立了单个数据输入源input和数据输出处理单元output来对此芯片传输的数据进行必要的格式处理及转换操作。此外,为了便于最终用户(嵌入式软件开发及测试人员)使用,当前串口模型还提供了多个芯片处理命令:comIRQWithTimerCmd、endComIRQ,用于触发当前芯片中的一些时序处理操作,这些时序处理操作是通过TimerAction关键字来实现的。

对于上中的设备建模语言建模之后,用户可以采用设备建模语言编译平台将其编译生成特定虚拟仿真环境中的模块,或者单独使用的功能模块,以供后续用户使用。

本发明说明书中未作详细描述的内容属本领域技术人员的公知技术。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号