[发明专利]一种实时嵌入式系统的仿真方法有效

专利信息
申请号: 201410122430.0 申请日: 2014-03-28
公开(公告)号: CN103885816B 公开(公告)日: 2017-01-25
发明(设计)人: 王林章;曹婉琼;陈志 申请(专利权)人: 南京大学
主分类号: G06F9/455 分类号: G06F9/455
代理公司: 南京瑞弘专利商标事务所(普通合伙)32249 代理人: 杨晓玲
地址: 210093 江*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明提供一种实时嵌入式系统的仿真方法,首先读取XMI文档并将其元素划分为类图元素集合和序列图元素集合。然后将类图元素集合转换为C++代码。在类图的C++代码的基础上,再将序列图元素集合转换C++代码。使用Simulink Coder将Simulink模型转换为C++代码,并加入时钟中断,使其成为实时代码。再按照类图模型中的设定将它们结合起来,编译生成可执行文件,使其在目标平台上运行,进而实现整个实时嵌入式系统的仿真,并给出测试结果。本发明能够实现基于UML的类图模型、序列图模型以及Simulink模型的自动代码生成,提取其中时间约束信息,通过执行生成代码进行仿真,给出系统内的时间约束是否满足的结果报告。
搜索关键词: 一种 实时 嵌入式 系统 仿真 方法
【主权项】:
一种实时嵌入式系统的仿真方法,其特征在于该方法包含的步骤为:步骤1)从磁盘文件读入基于XMI格式保存的UML模型:所述UML模型包括UML类图模型、UML序列图模型;所述UML类图模型是描述系统中的类以及它们之间的关系的模型;UML类图模型包括以下UML标准组成部分:包元素、类元素、接口元素、数据类型元素、基本数据类型元素、枚举元素、信号元素、注释元素,上述元素是UML类图模型转换为C++代码的最大单位;所述UML序列图模型是通过描述对象之间消息的发送和接收顺序以显示多个对象之间动态协作的模型;UML序列图模型包括以下UML标准组成部分:交互元素,该元素是UML序列图模型转换为C++代码的最大单位;所述XMI是使用XML交换元数据信息的一种面向对象组织OMG标准语言;所述XML是是一种用于标记电子文件使其具有结构性的可扩展标记语言;步骤2)将UML模型中的元素划分到类图元素集合和序列图元素集合中;步骤21)获取UML模型包含的所有元素;步骤22)若是包元素、类元素、接口元素、数据类型元素、基本数据类型元素、枚举元素、信号元素、注释元素,则将其加入类图元素集合;步骤23)若是交互元素,则加入序列图元素集合;步骤3)将待仿真的实时嵌入式系统的UML类图模型转换为C++代码;步骤31)当类图元素集合中还存在未转换的类图元素时,读取一个未转换的类图元素;否则转步骤4);步骤32)若当前类图元素是包元素,则生成一个.h文件,在其中声明一个命名空间,.h文件名和命名空间名均为该元素名称;步骤33)若当前类图元素是类元素,则生成一个.h文件和一个.cpp文件,将该元素转换为C++中的一个类,转步骤310);步骤34)若当前类图元素是接口元素,则生成一个.h文件和一个.cpp文件,将该元素转换为C++中的一个公开方法均是纯虚函数的抽象类,转步骤310);步骤35)若当前类图元素是数据类型元素,则生成一个.h文件和一个.cpp文件,将该元素转换为C++中的一个类,转步骤310);步骤36)若当前类图元素是基本数据类型元素,则不做处理;步骤37)若当前类图元素是信号元素,则生成一个.h文件和一个.cpp文件,将该元素转换为C++中的一个类,转步骤310);步骤38)若当前类图元素是枚举元素,则生成一个.h文件,将该元素转换为C++中的一个枚举,转步骤31);步骤39)若当前类图元素是注释元素,则生成一个C++注释,转步骤31);步骤310)获取当前类图元素所依赖的元素,把依赖的元素的头文件名称包括进当前元素的头文件,并使用其命名空间;步骤311)获取对当前类图元素有依赖的元素,在当前元素的对应类中将依赖元素的对应类设为友元类,把依赖的元素的头文件名称包括进当前元素的头文件;步骤312)获取当前类图元素泛化的所有元素,使当前元素公有继承它们;将这些元素的头文件名称包括进当前头文件,并使用其命名空间;步骤313)获取当前类图元素通过关联、聚合关系、组合关系所关联的元素,根据关联的多重性和可见性适当的加入一个成员变量,变量前加一个“*”;将被关联的元素的头文件名称包括进当前头文件,并使用其命名空间;步骤314)获取当前类图元素内部的嵌套类型元素并加入类图元素集合,转步骤31);步骤4)将待仿真的实时嵌入式系统的UML序列图模型转换为C++代码;步骤41)为时间表达式、时间区间、持续时间区间、时间观测、持续时间观测、时间约束、持续时间约束这些UML元素类型各生成一个类,并在时间约束与持续时间约束的生成类中添加一个布尔函数用于判断时间是否满足约束;步骤42)当序列图元素集合还存在未转换的序列图元素时,读取一个未转换的序列图元素;否则转步骤5);步骤43)将当前序列图元素分解为由时间观测元素、持续时间观测元素、时间约束元素、持续时间约束元素、状态不变量、控制焦点元素以及消息元素组成的交互片段;步骤431)将当前序列图元素的前置条件和后置条件转换为断言,并放在当前序列图元素入口函数的最前位置和最后位置;步骤432)遇到交互使用元素,则将所指定的交互生成类的.h文件包括进当前生成类的.h文件中;创建一个所指定的交互的生成类的对象,将交互使用覆盖的生命线所关联的对象以及需要传入的消息作为入口函数参数;调用对象的入口函数;步骤433)遇到连续类型元素,根据它的名称以及设置,将alt或者seq组合交互连接起来;步骤434)遇到共同区域类型元素,则将其直接包含的事件集合的所有偏序序列从序列图的偏序集合中删除;步骤435)遇到复合片段类型元素,要对其进行分解;步骤4351)若交互操作符是alt,表示在当前复合片段中至多有一个交互操作域会执行;将每个操作元翻译为一个条件语句,将操作元的监护条件转换为条件表达式;步骤4352)若交互操作符是opt,则表示一种可选行为,将交互操作域转换为一个条件语句,将操作域的监护条件转换为条件表达式;步骤4353)若交互操作符是break,则将交互操作域转为条件分支语句,将交互操作域的监护条件转换为条件表达式,该条件分支语句块的最后一句是中断语句;步骤4354)若交互操作符是par,则表示一种并行行为,将每个交互操作域转换为一个线程函数;步骤4355)若交互操作符是seq,不做处理;步骤4356)若交互操作符是loop,则转换为循环语句,将交互操作域的监护条件转换为条件表达式;步骤4357)若交互操作符是critical,则将其转换为临界区;步骤44)对事件集合进行划分;步骤441)若是类型三集合,则划分事件集合,使划分后的每个集合变成类型二集合;然后根据这些事件集合所涉及的生命线将它们划分层次,每一层的事件集合并行执行,而层次之间的集合保持串行关系,即在上层事件集合执行完毕后,下一层的事件集合开始执行;所述类型二集合是指序列图的事件集合呈偏序关系,且对于任意两个消息msg1和msg2,msg1至少有一个事件可以和msg2的事件进行比较;所述类型三集合是指序列图的事件集合至少可以划分成两个集合setA、setB,且对于setA中的任意消息msgA和SetB中的任意消息msgB,msgA的事件和msgB的事件无法比较;步骤442)若是类型二集合,则向现有的偏序集合添加合适的序列关系,使后来在对事件集合进行拓扑排序时,不仅要遵守其已有的发生顺序,还要考虑到事件所在的消息的类型表达的语义;步骤45)将划分后的每个事件集合转为层次图,图中结点即为事件;所述层次图是指根据控制焦点将事件集合划分为不同的层次,即在未出现控制焦点时均为第1层,每遇到一个控制焦点,事件都会增加一层,每层的同一个控制焦点下的事件从左到右按发生先后排序进行排序,每层内的事件可以转换为其父节点所关联的消息的具体实现;步骤46)将所有时间观测、持续时间观测、时间约束、持续时间约束元素放入对应的事件中;步骤47)将状态不变量元素转换为与其在同一条生命线上的下一个事件的断言条件;步骤48)将层次图转换为C++代码:提供一个发送函数和一个接收函数分别用来记录发送事件和接收事件的发生时间,每个异步消息被接收时都会开启一个新的线程来执行该消息,每个事件的转换代码都会写入其父节点事件关联的消息所对应的函数内;步骤49)将第一层事件的转换代码作为该序列图元素的入口函数,在该入口函数内调用所有时间约束以及持续时间约束实例的布尔函数,并打印结果;转步骤42);步骤5)通过Simulink Coder将待仿真的实时嵌入式系统的Simulink模型转换为C++代码;使用多媒体定时器的回调函数,以固定的频率推进其仿真;所述Simulink模型是使用Simulink进行建模所得的模型;所述Simulink是一种用于建模、仿真以及分析多域动态系统的数据流图形化编程语言工具;所述Simulink Coder是一种可以从Simulink模型生成并执行C/C++的工具;步骤6)代码融合:由Simulink Coder转换的C++代码中含有输入参数结构体、输出参数结构体、初始化函数以及终止函数;在应用<<SimCode>>的操作所转换的代码处,将操作的参数对应传入相应的Simulink模型参数中,并依次调用初始化函数和终止函数;所述<<SimCode>>是一种自定义的版型,用于指定实现相应方法的Simulink模块名称;步骤7)编译执行上面步骤转换来的C++代码,把结果提供给用户。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201410122430.0/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top