CN110442338B - 一种结构分析与设计语言aadl模型的仿真方法 - Google Patents
一种结构分析与设计语言aadl模型的仿真方法 Download PDFInfo
- Publication number
- CN110442338B CN110442338B CN201910774041.9A CN201910774041A CN110442338B CN 110442338 B CN110442338 B CN 110442338B CN 201910774041 A CN201910774041 A CN 201910774041A CN 110442338 B CN110442338 B CN 110442338B
- Authority
- CN
- China
- Prior art keywords
- model
- state
- thread
- component
- scheduling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
Abstract
本发明实施例提供的体系分析与设计语言AADL模型的仿真方法,涉及模型仿真技术领域,根据AADL模型建立对应的Simulink模型,能够有效的对AADL模型的实时性进行仿真分析,进而保证嵌入式实时系统系统的可靠性与实时性,提高了嵌入式应用软件的开发效率。
Description
技术领域
本发明涉及模型仿真技术领域,具体涉及一种体系分析与设计语言AADL模型的仿真方法。
背景技术
结构分析与设计语言(Architecture Analysis and Design Language,AADL)模型作为一种设计和分析软硬件结构的嵌入式实时系统建模语言,把嵌入式应用软件的开发从代码层次提升到模型层次,通过定义构件及构件间的交互对系统结构进行建模。由于AADL模型对系统非功能属性(包括时间属性、能耗、可靠性、安全性等)描述的支持,使其在关键任务嵌入式操作系统领域有着良好的应用前景。
AADL模型是一种嵌入式实时系统的建模语言,就其本身的工具链而言,其相关工具仅能对使用AADL设计的模型进行有效验证,特别是在仿真与实时性分析方面,不能较好地满足设计人员的要求。
发明内容
为解决现有技术的不足,本发明实施例提供了一种体系分析与设计语言AADL模型的仿真方法,该方法包括以下步骤:
S1、对AADL模型的端口进行转换
将AADL模型的数据构件转换成可视化仿真工具Simulink模型支持的数据类型;
将AADL模型的事件端口上的传入事件转换成Simulink-Stateflow模块中的输入事件类型对象,将所述事件端口上的传出事件转换成Simulink-Stateflow模块中的输出事件类型对象;
将所述传入事件及所述传出事件作为Simulink-Stateflow模块状态转移中的触发条件;
将所述事件端口之间的链接关系转换成Simulink-Stateflow模块对应端口之间的链接关系;
S2、对AADL模型的各个构件进行转换
对AADL模型的子程序构件进行转换;
对AADL模型的进程构件进行转换;
对AADL模型的系统构件进行转换;
对AADL模型的硬件构件进行转换;
S3、对AADL模型的行为模块进行转换,生成可仿真AADL模型的Simulink模型
设置周期线程的调度方式,包括:
在线程构件对应的子系统结构下,创建相应的目录结构,用于仿真线程的调度;
在所述目录结构下添加两个状态,分别对应于线程的等待调度状态以及正在调度状态;
在所述目录结构中创建时钟输入端口并将多少时钟输入端口链接到外部时钟输入端口;
在等待调度状态和正在调度状态之间创建相互转换的链接;
在等待调度状态到正在调度状态的转换上添加相应的转换条件,其中,所述转换条件为当前时间与开始等待调度的时间的差不小于设定的阈值;
设置非周期线程的调度方式,包括:
在线程构件对应的子系统结构下,创建相应的目录结构,用于仿真线程的调度;
在所述目录结构下添加两个状态,分别对应于线程的等待调度状态以及正在调度状态;
在所述目录结构中创建事件输入端口并将所述事件输入端口链接到外部事件输入端口;
在等待调度状态和正在调度状态上创建相互转换的链接;
在等待调度状态到正在调度状态的转换上添加相应的转换条件,其中,所述转换条件为事件输入端口上接收到事件;
设置混合线程的调度方式,包括:
在线程构件对应的子系统结构下,创建相应的目录结构,用于仿真线程的调度;
在所述目录结构下添加两个状态,分别对应于线程的等待调度状态以及正在调度状态;
在所述目录结构中创建时钟输入端口并将所述时钟输入端口链接到外部时钟输入端口;
在所述目录结构中创建事件输入端口并将所述时钟输入端口链接到外部事件输入端口;
在等待调度状态和正在调度状态上创建相互转换的链接;
在等待调度状态到正在调度状态的转换上添加相应的转换条件,其中,所述转换条件为当前时间与开始等待调度的时间的差不小于设定的阈值且事件输入端口上接收到事件;
设置定时线程的调度方式,包括:
在线程构件对应的子系统结构下,创建相应的目录结构,用于仿真线程的调度;
在所述目录结构下添加两个状态,分别对应于线程的等待调度状态以及正在调度状态;
在所述目录结构中创建时钟输入端口并将所述时钟输入端口链接到外部时钟输入端口;
在等待调度状态和正在调度状态之间创建相互转换的链接;
在等待调度状态到正在调度状态的转换上添加相应的转换条件,其中,所述转换条件为当前时间与时钟输入端口上次接收到数据的时间的差不小于设定的阈值;
对各个线程的状态进行转换,包括:
解析线程的行为模型,提取出行为模型中定义的状态以及状态转换关系;
在线程构件对应的子系统构件下创建对应的目录结构;
根据行为模型中定义的状态,在所述目录结构中创建对应的状态;
根据行为模型中定义的状态转换关系,在所述目录结构中创建相应的状态转换关系并根据行为模型中的状态转换条件为chart结构中的状态转换赋予相应的转换条件;
对线程的端口通信方式进行转换,包括:
对数据端口的通信方式进行转换;
对事件端口的通信方式进行转换;
对线程的子程序访问进行转换,包括:
解析AADL模型,分析函数调度的对应关系;
链接由调度模块到被调函数的链接线,所述链接线由一对相反方向的连线构成,用于表示调用函数时的操作;
链接由被调函数到调度模块的链接线,所述链接线由一对相反方向的连线构成,用于表示函数返回时进行的操作;
S4、对所述Simulink模型进行验证,包括:
对线程调度进行仿真验证,包括:
分别为所述Simulink模型各个线程构件添加三个输出端口,分别为当前线程被调度的总次数输出端口、线程开始调度的时间输出端口、线程开始调度的时间输出端口;
分别为各个线程构件添加一个用于记录数据的功能模块,其中,所述三个输出端口为所述功能模块的输入;
为所述功能模块创建相应的.m文件;
对流延时进行仿真验证,包括:
解析AADL模型,获取所述AADL模型中的输出端口;
分别为各个输出端口创建一个用于记录输出时间的功能模块并将所述功能模块与输出端口相连;
为所述功能模块创建相应的.m文件。
优选地,对AADL模型的子程序构件进行转换包括:
根据所述子程序构件对应的源代码,获取所述子程序构件的名称、端口及行为模型,得到第一子系统模块;
将所述第一子系统模块添加至所述Simulink模型中并将所述子程序构件的名称作为所述第一子系统模块的名称;
将所述子程序构件的端口添加至所述第一子系统模块;
若所述子程序构件包含内存构件,在所述第一子系统模块中创建对应的内存构件;
在所述Simulink模型中添加目录结构,以表示子程序的动态行为;
解析所述行为模型的状态,根据所述状态,在所述目录结构中创建对应的状态;
解析所述行为模型的状态转换路径,在所述目录结构中建立相应的状态转换路径。
优选地,对AADL模型的进程构件进行转换包括:
根据所述AADL模型的进程构件对应的源代码,获取所述进程构件的名称、端口及包含的线程,得到第二子系统模块;
将所述第二子系统模块添加至所述Simulink模型中并将所述进程构件的名称作为所述第二子系统模块的名称;
将所述进程构件的端口添加至所述第二子系统模块;
若所述进程构件包含内存构件,在所述第二子系统模块中创建对应的内存构件;
若所述进程构件包含行为模型,在所述第二子系统模块中创建对应的目录结构;
解析所述行为模型的状态,根据所述状态,在所述目录结构中创建对应的状态;
解析所述行为模型的状态转换路径,在所述目录结构中建立相应的状态转换路径。
优选地,对AADL模型的系统构件进行转换包括:
根据所述AADL模型的系统构件对应的源代码,获取所述系统构件的名称、端口及包含的线程,得到第三子系统模块;
将所述第三子系统模块添加至所述Simulink模型中并将所述子程序构件的名称作为所述第三子系统模块的名称;
将所述系统构件的端口添加至所述第三子系统模块;
若所述系统构件包含内存构件,在所述第三子系统模块中创建对应的内存构件;
若所述系统构件包含行为模型,在所述第三子系统模块中创建对应的目录结构;
解析所述行为模型的状态,根据所述状态,在所述目录结构中创建对应的状态;
解析所述行为模型的状态转换路径,在所述目录结构中建立相应的状态转换路径。
优选地,对AADL模型的硬件构件进行转换包括:
根据处理器构件的执行时间及周期,设定最小时间间隔并根据处理器的优先级范围、调度协议,限制线程的优先级以及调度方式;
根据总线构件的传输时间、支持消息的大小、允许链接的类型,设定各个组件之间的状态转换过程所需要等待的时间;
根据内存构件的内存协议,检查所构建的Simulink模型是否符合相应的访问原则并根据内存的大小,设定在内存构件读写过程中需要等待的时间。
优选地,对数据端口的通信方式进行转换包括:
解析所述AADL模型各个端口间的链接关系;
根据所述链接关系,在所述AADL模型的各个端口之间插入内存构件,并将所述内存构件的值设为0。
优选地,对事件端口的通信方式进行转换包括:
解析所述AADL模型各个端口间的链接关系;
根据所述链接关系,在Simulink模型中,将相应的事件输入端连上一个用于仿真方波激励的目录构件;
将激励方波模块的输出端连到用于线程调度的调度模块。
本发明实施例提供的体系分析与设计语言AADL模型的仿真方法具有以下有益效果:
根据AADL模型建立对应的Simulink模型,能够有效的对AADL模型的实时性进行仿真分析,进而保证嵌入式实时系统系统的可靠性与实时性,提高了嵌入式应用软件的开发效率。
附图说明
图1是本发明实施例提供的体系分析与设计语言AADL模型的仿真方法的流程示意图;
图2是本发明实施例提供的进程构件的仿真流程示意图;
图3是周期线程对应的Simulink模型示意图;
图4表示的是采用simulink模型中的stateflow仿真的线程的状态自动机示意图;
图5表示的是采用本发明实施例提供的体系分析与设计语言AADL模型的仿真方法的线程调度仿真验证示意图;
图6表示的是采用本发明实施例提供的体系分析与设计语言AADL模型的仿真方法的对流延时进行仿真的流程示意图;
图7表示的是用于流延时分析的Simulink模型的全局结构示意图。
具体实施方式
以下结合附图和具体实施例对本发明作具体的介绍。
参照图1,本发明实施例提供的体系分析与设计语言AADL模型的仿真方法包括以下步骤:
S1、对AADL模型的端口进行转换
将AADL模型的数据构件转换成可视化仿真工具Simulink模型支持的数据类型。
其中,输入数据与输出数据只是表示数据在构件端口上的位置,与数据构件的联系很小,所以只针对AADL模型的数据构件进行转换即可。
将AADL模型的事件端口上的传入事件转换成Simulink-Stateflow模块中的输入事件类型对象,将所述事件端口上的传出事件转换成Simulink-Stateflow模块中的输出事件类型对象。
作为一个具体的实施例,将AADL模型的数据构件转换为Simulink模型中Simulink-Stateflow模块的信号总线,该信号总线分为线程运行时产生结果的时间、线程运行时产生的结果、正在运行的线程的优先级及线程运行时产生结果的字节大小四个部分。
将所述传入事件及所述传出事件作为Simulink-Stateflow模块状态转移中的触发条件。
将所述事件端口之间的链接关系转换成Simulink-Stateflow模块对应端口之间的链接关系。
S2、对AADL模型的各个构件进行转换
对AADL模型的子程序构件进行转换。
对AADL模型的进程构件进行转换。
对AADL模型的系统构件进行转换。
对AADL模型的硬件构件进行转换。
S3、对AADL模型的行为模块进行转换,生成可仿真AADL模型的Simulink模型
设置周期线程的调度方式,包括:
在线程构件对应的子系统结构下,创建相应的目录结构,用于仿真线程的调度。
在所述目录结构下添加两个状态,分别对应于线程的等待调度状态以及正在调度状态。
在所述目录结构中创建时钟输入端口并将多少时钟输入端口链接到外部时钟输入端口。
在等待调度状态和正在调度状态之间创建相互转换的链接。
在等待调度状态到正在调度状态的转换上添加相应的转换条件,其中,所述转换条件为当前时间与开始等待调度的时间的差不小于设定的阈值。
作为一个具体的实施例,如图3所示,在该Simulink模型中,最左边为一个时钟组件,用于发送当前时间time,线程的调度结构接受到信息后与开始等待时的时间tt进行比对,若大于周期,则将返回值置为1,并在状态转换时令tt=time。
作为一个具体的实施例,周期线程调度协议的代码为:
设置非周期线程的调度方式,包括:
在线程构件对应的子系统结构下,创建相应的目录结构,用于仿真线程的调度。
在所述目录结构下添加两个状态,分别对应于线程的等待调度状态以及正在调度状态。
在所述目录结构中创建事件输入端口并将所述事件输入端口链接到外部事件输入端口。
在等待调度状态和正在调度状态上创建相互转换的链接。
在等待调度状态到正在调度状态的转换上添加相应的转换条件,其中,所述转换条件为事件输入端口上接收到事件。
其中,当线程的调度协议被设置为非周期时,线程的调度请求由外来的事件、事件数据或远程的子程序调用产生。在线程调度中,这三种请求分别对应于事件端口,事件数据端口以及子程序调用提供接口,每当这三种端口接受到对应的请求事件后,线程若处于等待调度的状态,则其将立即被调度。
作为一个具体的实施例,非周期线程调度协议的代码为:
设置混合线程的调度方式,包括:
在线程构件对应的子系统结构下,创建相应的目录结构,用于仿真线程的调度。
在所述目录结构下添加两个状态,分别对应于线程的等待调度状态以及正在调度状态。
在所述目录结构中创建时钟输入端口并将所述时钟输入端口链接到外部时钟输入端口。
在所述目录结构中创建事件输入端口并将所述时钟输入端口链接到外部事件输入端口。
在等待调度状态和正在调度状态上创建相互转换的链接。
在等待调度状态到正在调度状态的转换上添加相应的转换条件,其中,所述转换条件为当前时间与开始等待调度的时间的差不小于设定的阈值且事件输入端口上接收到事件。
其中,当线程的调度协议为混合时,线程的调度行为等同于其调度协议同时为Aperiodic协议和Periodic协议。即线程会周期的进行调度,同时可以由外来的事件、事件数据以及远程的子程序调用来触发线程调度。当然,每次由外来数据触发调度时,同样会使得周期调度中的等待时间清零。
作为一个具体的实施例,混合线程调度协议的代码为:
设置定时线程的调度方式,包括:
在线程构件对应的子系统结构下,创建相应的目录结构,用于仿真线程的调度。
在所述目录结构下添加两个状态,分别对应于线程的等待调度状态以及正在调度状态。
在所述目录结构中创建时钟输入端口并将所述时钟输入端口链接到外部时钟输入端口。
在等待调度状态和正在调度状态之间创建相互转换的链接。
在等待调度状态到正在调度状态的转换上添加相应的转换条件,其中,所述转换条件为当前时间与时钟输入端口上次接收到数据的时间的差不小于设定的阈值。
其中,当线程的调度协议为定时时,线程调度情况同样由外来事件、事件数据以及远程的子程序调用决定。但不同的是,处于该调度协议下的线程仅在两次数据输入的时间间隔大于某一特定值Period时,才会对线程进行调度。换句话说,该线程调度方式类似于超时调度。当t大于Period时,触发调度。
作为一个具体的实施例,定时线程调度协议的代码为:
对各个线程的状态进行转换,包括:
解析线程的行为模型,提取出行为模型中定义的状态以及状态转换关系。
在线程构件对应的子系统构件下创建对应的目录结构。
根据行为模型中定义的状态,在所述目录结构中创建对应的状态。
根据行为模型中定义的状态转换关系,在所述目录结构中创建相应的状态转换关系并根据行为模型中的状态转换条件为chart结构中的状态转换赋予相应的转换条件。
作为一个具体的实施例,各个线程的状态进行转换的代码为:
其中,在该行为模型中,定义了st、sf、s1、s24种状态。其中,每个状态都有着各自的状态类型。
如图4所示,四个不同的方框用于表示在线程的状态转换中的四种不同的状态。各个箭头的指向表示的是状态间的转换关系,有原状态指向目标状态。箭头上的表达式代表着的是转换的条件。比如有s1状态指向st状态的箭头上写着“[a==0]”,这表示着当a等于0时,该状态自动机由s1状态转换为st状态。这条状态转换对应着上述代码“transitions”属性下的第三条状态转换。
对线程的端口通信方式进行转换,包括:
对数据端口的通信方式进行转换。
对事件端口的通信方式进行转换。
对线程的子程序访问进行转换,包括:
解析AADL模型,分析函数调度的对应关系。
链接由调度模块到被调函数的链接线,所述链接线由一对相反方向的连线构成,用于表示调用函数时的操作。
链接由被调函数到调度模块的链接线,所述链接线由一对相反方向的连线构成,用于表示函数返回时进行的操作。
S4、对所述Simulink模型进行验证,包括:
对线程调度进行仿真验证,包括:
分别为所述Simulink模型各个线程构件添加三个输出端口,分别为当前线程被调度的总次数输出端口、线程开始调度的时间输出端口、线程开始调度的时间输出端口。
分别为各个线程构件添加一个用于记录数据的功能模块,其中,所述三个输出端口为所述功能模块的输入。
为所述功能模块创建相应的.m文件。
其中,线程调度的仿真验证,主要是为了确定各个线程运行的开始时间、执行时长、总执行次数这三个参数。根据需求,本发明实施例设计了如图5所示的工作界面。通过修改仿真时间内部的参数,可以自己设定仿真的时间。
对流延时进行仿真验证,包括:
解析AADL模型,获取所述AADL模型中的输出端口。
分别为各个输出端口创建一个用于记录输出时间的功能模块并将所述功能模块与输出端口相连。
为所述功能模块创建相应的.m文件。
其中,流延时分析主要是为了获取系统中某一条数据流上,流经各个端口、连接时的时间。通过流延时分析,可以初步的得出系统在执行某特定任务时,在各个组件上的延时,进而确定系统是否满足设计需求。如图6所示,该图中的sy_pre_out模块就是为了获取端口间的流延时信息。sy_pre_out模块使用的是s-function模块进行编写。当有数据输入时,即数据流流入该连接时,sy_pre_out会收集当前时间,并保存到全局变量中。
同时,在流延时分析过程中,每一条路径明确的路径,即有一条明确的开始和结束的端口。在仿真的过程中,需要通过定义一个全局变量来控制是否继续收集信息。图6中的sy_begin模块用于将设定用于控制的全局变量。对于该图要表示的系统来说,pre_out端口为流延时的起始端口。当pre_out输出有效数据时,sy_begin不会对数据进行任何修改,仅会将用于控制的全局变量置为1,即使得系统中用于检测流延时的功能模块全部启动。同样的,在流的结束端口也需要一个功能模块用于将全局变量置为0,使得记录延时的模块全部停止,以免重复记录。
如图7所示,在本次次流延时分析中,数据流向为pre_out->dispatch_long_in->long_out->pre_in->post_out->dispatch_short_in->short_out->post_in。其中,在pre_out、long_out、post_out、short_out这四个端口上有着用于记录延时的s-function模块。
可选地,对AADL模型的子程序构件进行转换包括:
根据所述子程序构件对应的源代码,获取所述子程序构件的名称、端口及行为模型,得到第一子系统模块。
将所述第一子系统模块添加至所述Simulink模型中并将所述子程序构件的名称作为所述第一子系统模块的名称。
将所述子程序构件的端口添加至所述第一子系统模块。
若所述子程序构件包含内存构件,在所述第一子系统模块中创建对应的内存构件。
在所述Simulink模型中添加目录结构,以表示子程序的动态行为。
解析所述行为模型的状态,根据所述状态,在所述目录结构中创建对应的状态。
解析所述行为模型的状态转换路径,在所述目录结构中建立相应的状态转换路径。
作为一个具体的实施例,下述代码:
该段代码为一子程序的实现,其中包含了其行为模型的定义,在该行为模型的”transitions”属性中,定义了该子程序的运行过程。对于子程序构件的仿真,通过将其转换为Simulink模型中的stateflow结构实现。
可选地,对AADL模型的进程构件进行转换包括:
根据所述AADL模型的进程构件对应的源代码,获取所述进程构件的名称、端口及包含的线程,得到第二子系统模块。
将所述第二子系统模块添加至所述Simulink模型中并将所述进程构件的名称作为所述第二子系统模块的名称。
将所述进程构件的端口添加至所述第二子系统模块。
若所述进程构件包含内存构件,在所述第二子系统模块中创建对应的内存构件。
若所述进程构件包含行为模型,在所述第二子系统模块中创建对应的目录结构。
解析所述行为模型的状态,根据所述状态,在所述目录结构中创建对应的状态。
解析所述行为模型的状态转换路径,在所述目录结构中建立相应的状态转换路径。
其中,如图2所示,在Simulink模型中,对进程的处理是作为模块来操作的。AADL系统中子构件包括子系统、数据构件及进程。对模块进行的操作主要是声明端口(输入端口、输出端口及输入输出双向端口)、声明用于子模块间通信的信号、声明数据变量,成员模块的例化、构造函数、链接子模块。
可选地,对AADL模型的系统构件进行转换包括:
根据所述AADL模型的系统构件对应的源代码,获取所述系统构件的名称、端口及包含的线程,得到第三子系统模块。
将所述第三子系统模块添加至所述Simulink模型中并将所述子程序构件的名称作为所述第三子系统模块的名称。
将所述系统构件的端口添加至所述第三子系统模块。
若所述系统构件包含内存构件,在所述第三子系统模块中创建对应的内存构件。
若所述系统构件包含行为模型,在所述第三子系统模块中创建对应的目录结构;
解析所述行为模型的状态,根据所述状态,在所述目录结构中创建对应的状态;
解析所述行为模型的状态转换路径,在所述目录结构中建立相应的状态转换路径。
其中,系统构件的主要作用就是将组件按层级化的组织起来,进而更能反映出系统的层次结构。进程构件的结构与系统构件类似。对进程构件的仿真中,同样可将其看作一个系统进行仿真。当然,两者在逻辑包含关系中也有着一定的区别。比如,线程仅能被包含在进程中而不能被包含在系统中。进程不能相互嵌套,其子组件仅可以为数据、子程序以及线程。
可选地,对AADL模型的硬件构件进行转换包括:
根据处理器构件的执行时间及周期,设定最小时间间隔并根据处理器的优先级范围、调度协议,限制线程的优先级以及调度方式;
根据总线构件的传输时间、支持传输报文的大小、总线允许的链接协议,设定各个组件之间的状态转换过程所需要等待的时间;
根据内存构件的内存协议,检查所构建的Simulink模型是否符合相应的访问原则并根据内存的大小,设定在内存构件读写过程中需要等待的时间。
可选地,对数据端口的通信方式进行转换包括:
解析所述AADL模型各个端口间的链接关系;
根据所述链接关系,在所述AADL模型的各个端口之间插入内存构件,并将所述内存构件的值设为0。
其中,端口是两个组件之间的逻辑连接点,可以用于传输线程与线程、线程与处理器、线程与设备之间的控制或数据信息。端口可以传输数据、事件或同时可传输事件和数据。对于数据端口来说,其可以通过使用数据变量来使用数据端口上传来的数据。对于事件端口来说,事件端口上的传入事件可以触发线程的调度或者触发模式的转换。而事件数据端口表示的是一种可以获取内容的消息队列。
将AADL中的端口连接转换为Simulink模型时,也可以采用直接连接组件的方式,实现其数据、事件的传输。但某些情况下会产生错误,于是需要在其基础上添加一些其他实现以使得其能够正常传输。
在某些时候,两个线程会环形连接,即一个线程的输出是另一个线程输入。因为每个线程的状态转换都是使用stateflow进行表示,直接相连会形成环形相连的目录结构,这是Simulink模型不允许的。因为Simulink模型中,目录仿真是通过输入来计算其输出,但环形目录结构没有确定的初始输入值。
可选地,对事件端口的通信方式进行转换包括:
解析所述AADL模型各个端口间的链接关系;
根据所述链接关系,在Simulink模型中,将相应的事件输入端连上一个用于仿真方波激励的目录构件;
将激励方波模块的输出端连到用于线程调度的调度模块。
作为一个具体的实施例,用于记录流延时的功能模块的核心代码为:
在该代码中,kx_flag标记是用于控制全局流延时记录的变量。当该变量被置为1时,功能模块才会向用于记录数据的全局变量kx中保存数据。
本发明实施例提供的体系分析与设计语言AADL模型的仿真方法,根据AADL模型建立对应的Simulink模型,能够有效的对AADL模型的实时性进行仿真分析,进而保证嵌入式实时系统系统的可靠性与实时性,提高了嵌入式应用软件的开发效率。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (7)
1.一种结构分析与设计语言AADL模型的仿真方法,其特征在于,包括:
S1、对AADL模型的端口进行转换
将AADL模型的数据构件转换成可视化仿真工具Simulink模型支持的数据类型;
将AADL模型的事件端口上的传入事件转换成Simulink-Stateflow模块中的输入事件类型对象,将所述事件端口上的传出事件转换成Simulink-Stateflow模块中的输出事件类型对象;
将所述传入事件及所述传出事件作为Simulink-Stateflow模块状态转移中的触发条件;
将所述事件端口之间的链接关系转换成Simulink-Stateflow模块对应端口之间的链接关系;
S2、对AADL模型的各个构件进行转换
对AADL模型的子程序构件进行转换;
对AADL模型的进程构件进行转换;
对AADL模型的系统构件进行转换;
对AADL模型的硬件构件进行转换;
S3、对AADL模型的行为模块进行转换,生成可仿真AADL模型的Simulink模型
设置周期线程的调度方式,包括:
在线程构件对应的子系统结构下,创建相应的目录结构,用于仿真线程的调度;
在所述目录结构下添加两个状态,分别对应于线程的等待调度状态以及正在调度状态;
在所述目录结构中创建时钟输入端口并将所述时钟输入端口链接到外部时钟输入端口;
在等待调度状态和正在调度状态之间创建相互转换的链接;
在等待调度状态到正在调度状态的转换上添加相应的转换条件,其中,所述转换条件为当前时间与开始等待调度的时间的差不小于设定的阈值;
设置非周期线程的调度方式,包括:
在线程构件对应的子系统结构下,创建相应的目录结构,用于仿真线程的调度;
在所述目录结构下添加两个状态,分别对应于线程的等待调度状态以及正在调度状态;
在所述目录结构中创建事件输入端口并将所述事件输入端口链接到外部事件输入端口;
在等待调度状态和正在调度状态上创建相互转换的链接;
在等待调度状态到正在调度状态的转换上添加相应的转换条件,其中,所述转换条件为事件输入端口上接收到事件;
设置混合线程的调度方式,包括:
在线程构件对应的子系统结构下,创建相应的目录结构,用于仿真线程的调度;
在所述目录结构下添加两个状态,分别对应于线程的等待调度状态以及正在调度状态;
在所述目录结构中创建时钟输入端口并将所述时钟输入端口链接到外部时钟输入端口;
在所述目录结构中创建事件输入端口并将所述事件输入端口链接到外部事件输入端口;
在等待调度状态和正在调度状态上创建相互转换的链接;
在等待调度状态到正在调度状态的转换上添加相应的转换条件,其中,所述转换条件为当前时间与开始等待调度的时间的差不小于设定的阈值且事件输入端口上接收到事件;
设置定时线程的调度方式,包括:
在线程构件对应的子系统结构下,创建相应的目录结构,用于仿真线程的调度;
在所述目录结构下添加两个状态,分别对应于线程的等待调度状态以及正在调度状态;
在所述目录结构中创建时钟输入端口并将所述时钟输入端口链接到外部时钟输入端口;
在等待调度状态和正在调度状态之间创建相互转换的链接;
在等待调度状态到正在调度状态的转换上添加相应的转换条件,其中,所述转换条件为当前时间与时钟输入端口上次接收到数据的时间的差不小于设定的阈值;
对各个线程的状态进行转换,包括:
解析线程的行为模型,提取出行为模型中定义的状态以及状态转换关系;
在线程构件对应的子系统构件下创建对应的目录结构;
根据行为模型中定义的状态,在所述目录结构中创建对应的状态;
根据行为模型中定义的状态转换关系,在所述目录结构中创建相应的状态转换关系并根据行为模型中的状态转换条件为chart结构中的状态转换赋予相应的转换条件;
对线程的端口通信方式进行转换,包括:
对数据端口的通信方式进行转换;
对事件端口的通信方式进行转换;
对线程的子程序访问进行转换,包括:
解析AADL模型,分析函数调度的对应关系;
链接由调度模块到被调函数的链接线,所述链接线由一对相反方向的连线构成,用于表示调用函数时的操作;
链接由被调函数到调度模块的链接线,所述链接线由一对相反方向的连线构成,用于表示函数返回时进行的操作;
S4、对所述Simulink模型进行验证,包括:
对线程调度进行仿真验证,包括:
分别为所述Simulink模型各个线程构件添加三个输出端口,分别为当前线程被调度的总次数输出端口、线程开始调度的时间输出端口、线程结束调度的时间输出端口;
分别为各个线程构件添加一个用于记录数据的功能模块,其中,所述三个输出端口为所述功能模块的输入;
为所述功能模块创建相应的.m文件;
对流延时进行仿真验证,包括:
解析AADL模型,获取所述AADL模型中的输出端口;
分别为各个输出端口创建一个用于记录输出时间的功能模块并将所述功能模块与输出端口相连;
为所述功能模块创建相应的.m文件。
2.根据权利要求1所述的结构分析与设计语言AADL模型的仿真方法,其特征在于,对AADL模型的子程序构件进行转换包括:
根据所述子程序构件对应的源代码,获取所述子程序构件的名称、端口及行为模型,得到第一子系统模块;
将所述第一子系统模块添加至所述Simulink模型中并将所述子程序构件的名称作为所述第一子系统模块的名称;
将所述子程序构件的端口添加至所述第一子系统模块;
若所述子程序构件包含内存构件,在所述第一子系统模块中创建对应的内存构件;
在所述Simulink模型中添加目录结构,以表示子程序的动态行为;
解析所述行为模型的状态,根据所述状态,在所述目录结构中创建对应的状态;
解析所述行为模型的状态转换路径,在所述目录结构中建立相应的状态转换路径。
3.根据权利要求1所述的结构分析与设计语言AADL模型的仿真方法,其特征在于,对AADL模型的进程构件进行转换包括:
根据所述AADL模型的进程构件对应的源代码,获取所述进程构件的名称、端口及包含的线程,得到第二子系统模块;
将所述第二子系统模块添加至所述Simulink模型中并将所述进程构件的名称作为所述第二子系统模块的名称;
将所述进程构件的端口添加至所述第二子系统模块;
若所述进程构件包含内存构件,在所述第二子系统模块中创建对应的内存构件;
若所述进程构件包含行为模型,在所述第二子系统模块中创建对应的目录结构;
解析所述行为模型的状态,根据所述状态,在所述目录结构中创建对应的状态;
解析所述行为模型的状态转换路径,在所述目录结构中建立相应的状态转换路径。
4.根据权利要求1所述的结构分析与设计语言AADL模型的仿真方法,其特征在于,对AADL模型的系统构件进行转换包括:
根据所述AADL模型的系统构件对应的源代码,获取所述系统构件的名称、端口及包含的线程,得到第三子系统模块;
将所述第三子系统模块添加至所述Simulink模型中并将所述子程序构件的名称作为所述第三子系统模块的名称;
将所述系统构件的端口添加至所述第三子系统模块;
若所述系统构件包含内存构件,在所述第三子系统模块中创建对应的内存构件;
若所述系统构件包含行为模型,在所述第三子系统模块中创建对应的目录结构;
解析所述行为模型的状态,根据所述状态,在所述目录结构中创建对应的状态;
解析所述行为模型的状态转换路径,在所述目录结构中建立相应的状态转换路径。
5.根据权利要求1所述的结构分析与设计语言AADL模型的仿真方法,其特征在于,对AADL模型的硬件构件进行转换包括:
根据处理器构件的执行时间及周期,设定最小时间间隔并根据处理器的优先级范围、调度协议,限制线程的优先级以及调度方式;
根据总线构件的传输时间、支持消息的大小、允许链接的类型,设定各个组件之间的状态转换过程所需要等待的时间;
根据内存构件的内存协议,检查所构建的Simulink模型是否符合相应的访问原则并根据内存的大小,设定在内存构件读写过程中需要等待的时间。
6.根据权利要求1所述的结构分析与设计语言AADL模型的仿真方法,其特征在于,对数据端口的通信方式进行转换包括:
解析所述AADL模型各个端口间的链接关系;
根据所述链接关系,在所述AADL模型的各个端口之间插入内存构件,并将所述内存构件的值设为0。
7.根据权利要求1所述的结构分析与设计语言AADL模型的仿真方法,其特征在于,对事件端口的通信方式进行转换包括:
解析所述AADL模型各个端口间的链接关系;
根据所述链接关系,在Simulink模型中,将相应的事件输入端连上一个用于仿真方波激励的目录构件;
将激励方波模块的输出端连到用于线程调度的调度模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910774041.9A CN110442338B (zh) | 2019-08-21 | 2019-08-21 | 一种结构分析与设计语言aadl模型的仿真方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910774041.9A CN110442338B (zh) | 2019-08-21 | 2019-08-21 | 一种结构分析与设计语言aadl模型的仿真方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110442338A CN110442338A (zh) | 2019-11-12 |
CN110442338B true CN110442338B (zh) | 2023-09-19 |
Family
ID=68436893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910774041.9A Active CN110442338B (zh) | 2019-08-21 | 2019-08-21 | 一种结构分析与设计语言aadl模型的仿真方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110442338B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955423B (zh) * | 2019-11-28 | 2023-05-26 | 北京旋极信息技术股份有限公司 | 一种模型设计方法、系统、存储介质和终端 |
CN111176658B (zh) * | 2019-12-17 | 2022-09-20 | 西北工业大学 | 基于元对象机制的AADL到Simulink模型自动转换方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102520925A (zh) * | 2011-11-18 | 2012-06-27 | 北京航空航天大学 | Aadl2tasm模型转换方法 |
CN103049602A (zh) * | 2012-12-13 | 2013-04-17 | 南京大学 | 基于模型驱动工程的将aadl组件转换到接口自动机模型方法 |
CN104932905A (zh) * | 2015-07-14 | 2015-09-23 | 北京神舟航天软件技术有限公司 | 一种aadl到c语言的代码自动生成方法 |
CN107291435A (zh) * | 2016-04-12 | 2017-10-24 | 华东师范大学 | 一种不确定性环境下混成aadl模型量化分析方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019903B (zh) * | 2013-01-18 | 2014-11-26 | 哈尔滨工业大学 | 嵌入式设备能耗仿真评测系统 |
-
2019
- 2019-08-21 CN CN201910774041.9A patent/CN110442338B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102520925A (zh) * | 2011-11-18 | 2012-06-27 | 北京航空航天大学 | Aadl2tasm模型转换方法 |
CN103049602A (zh) * | 2012-12-13 | 2013-04-17 | 南京大学 | 基于模型驱动工程的将aadl组件转换到接口自动机模型方法 |
CN104932905A (zh) * | 2015-07-14 | 2015-09-23 | 北京神舟航天软件技术有限公司 | 一种aadl到c语言的代码自动生成方法 |
CN107291435A (zh) * | 2016-04-12 | 2017-10-24 | 华东师范大学 | 一种不确定性环境下混成aadl模型量化分析方法 |
Non-Patent Citations (2)
Title |
---|
Generating Simulink Models from AADL system descriptions;Lukas Armborst;《Semantic Scholar》;20151231;全文 * |
面向嵌入式软件开发的UML到Simulink模型转换方法;郭鹏 等;《计算机科学》;20160215(第02期);第192-198页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110442338A (zh) | 2019-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8443336B2 (en) | System and method for applying model-based testing to train control systems | |
Urunuela et al. | Storm a simulation tool for real-time multiprocessor scheduling evaluation | |
Cengic et al. | Formal modeling of function block applications running in IEC 61499 execution runtime | |
CN102033543A (zh) | 用于分布式嵌入系统的自动测试用例生成的方法及系统 | |
CN110442338B (zh) | 一种结构分析与设计语言aadl模型的仿真方法 | |
Feng et al. | Verifying system behaviors in EAST-ADL2 with the SPIN model checker | |
Mubeen et al. | End-to-end timing analysis of black-box models in legacy vehicular distributed embedded systems | |
Renault et al. | Adapting models to model checkers, a case study: Analysing aadl using time or colored petri nets | |
El-Khoury et al. | Towards a toolset for architectural design of distributed real-time control systems | |
Del Bianco et al. | Model checking UML specifications of real time software | |
Beringer et al. | Verification of AUTOSAR software architectures with timed automata | |
US20060198501A1 (en) | Method and device for constructing a voice dialog | |
Larsen et al. | Uppaal | |
CN111338761B (zh) | 一种51单片机虚拟中断控制器及实现方法 | |
Anssi et al. | AUTOSAR vs. MARTE for enabling timing analysis of automotive applications | |
Andersson et al. | Extracting simulation models from complex embedded real-time systems | |
Parri et al. | FaultFlow: A tool supporting an MDE approach for Timed Failure Logic Analysis | |
Morelli et al. | A system-level framework for the evaluation of the performance cost of scheduling and communication delays in control systems | |
Li et al. | Hardware-in-the-loop real-time simulation interface software design | |
Di Natale et al. | Matching execution architecture models with functional models to analyze the time performance of CPS systems | |
Shi et al. | Modeling and verification of transmission protocols: A case study on CSMA/CD protocol | |
Sahraoui et al. | Methodology for fast prototyping of distributed real-time systems | |
CN112733323B (zh) | 一种面向RoboSim模型实时系统的模型检测方法 | |
Kučera et al. | Implementation of timed automata in a real-time operating system | |
Ding et al. | SysML Flow Model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |