RoseRT 建模学习
目录:
一、RoseRT理论知识
二、一个完整模型的建立
三、TD-SCDMA(UE侧)RRC层建模的学习
四、LTE的RRC层建模(1.自主完成‘2.也可以是L2)
五、参考文献
一、RoseRT理论知识
一
个model中包括4个部分:
1.Use Case 视图
在该部分包括:包,Actor,Use case、对象、消息和关系。
2.逻辑视图Logic
在该部分包括,包,View RTC Class(类)、状态和关系。
3、组件视图(Component View)
在该部分内包括包,组件和依附关系。
4、Deployment View 拓扑视图
节点和关系
详细学习:
1.Use Case View
它主要是用来描述一个系统(或者子系统,类和接口)做了什么,但是并不具体描述系统内部如何执行。该View中还含有Use case 图和相互作用图。
Use case图中包括包、actors(外部系统)、use case和关系;也就是说,描述了存在的外部系统,该系统应该做什么(use case),以及他们的关系。它可以描述全部的或者部分的系统的use case。
相互作用图,主要有两种:序列图和协同图,里面包括对象和消息。
相互作用图也被称为交互图,它可以代表系统中对象的结构。序列图是按时间顺序排列对象交互操作;协同图是围绕对象及其间的链接关系组陈对象的交互操作。
2.Logical View
它主要是描述整个model的建模流程,从分析,到整个设计,最后到具体实施。
主要包括类图和状态图。类图主要是包和类,以及他们之间的关系,主要是讲静态;状态图主要是状态、事件和转换关系,主要是指动态。
3.组件视图Component View
它是对系统具体的描述。组件包含激活和数据的类(active ,data),并且为build一个可执行模型提供组件。
直白得说,组件视图描述了在系统物理设计中组件中类和对象的分配情况。
4.拓扑视图 Deployment View
该部分主要显示了该系统是如何分布的,它定义了进程处理的分配情况,并且包含系统中节点的图标。简单说,就是描述了节点和连接。
基本的理论知识差不多也就这些,如下就是指导(是我自己学习的过程中,写的,主要是可能遇到的问题,大多数是我遇到的或者我想到的问题。
二、一个简单完整模型的创建
步骤:
1.新建一个model,选择RTC++
说明:Rose RT通常有七个框架(framework),Empty, RTC, RTC++, RTJava, StartupC, StartupCPP, StartupJ。
它们分别针对不同的编程语言。Empty可以用来创建use case,但不能用来开发实时系统。例子中选择C++代码(爱立信的RRC和L2都用Rose RT开发,语言选择C++)。
2.创建逻辑视图Logical View
1.创建一个容器,capsule。
很重要的一个步骤,在RoseRT中很重要。一个model至少创建一个顶层(top-level)的capsule。因为代码的执行operation需要被激发,不能自动激活,所以需要把代码放到capsule中,这样代码就可以被RoseRT中的main函数执行。main函数在你模型中创建了capsule,启动状态机。你自己可以描述capsule,并定义状态机。他们会自动被创建,然后服务库会执行它们(services library)。
2.把一个状态加入到所创建的容器中。
对于capsule classees,一个状态表会生成完整的代码实现。该状态图为容器提供了异步消息的处理能力。
在刚创建的名字为hello的capsule上,右击选择open state diagram,会弹出一个对话框,随后添加一个state。
状态图包含一个初始圆点,还有一个初始状态(就是刚才你命名的state)。一个初始状态是用来表示状态机开始的特殊点,你需要连接该点和开始状态。一个状态图中只能有一个初始状态,是所有transition的开始。从初始点输出的也只能有一个transition,就是到初始状态的。
可以有多个输入transition到初始状态。初始状态就像一个连接点,可以强制行为返回。
3.画出初始transition
首先,画出初始transition。利用state transition按钮,然后画出。
将特殊点连接到的状态就是初始状态,也就是它是第一个接受具体的event。
4.把一个端口加入到容器中(当使用的是C语言时,不用该步骤)
端口其实很像我们通常所说的计算机之间通信的端口,随着容器实例的创建而创建,随着实例的消失而消失。
默认的新端口是公共的,就是随便用,你可以创建保护性端口,该类端口可以阻止外部的容器的连接。
在End Port中选择添加新port,然后选择一个新protocol。最后切换到structure tab,该图被激活。
5.保存model
6.把代码添加到一个状态机中。
点击初始点和初始状态的连接线,然后在RoseRT右下角的code tab中,你想添加的代码。
3.创建组件视图 Component View。
组件视图描述了如何编译model的不同部分。组件视图的初始元素需要自己创建,该组件描述需要编辑的容器和类,如何编译哪些元素,并把包含文件和数据库整合到build中。
必须要为顶层容器创建一个组件,以便能够build并执行你的model。当可能会有很多有关联的组件或者组件的包,可以画组件图。
在component View中选择新建,然后出现新组件,双击新建组件,将逻辑视图中的capsule拖入,单击select,选择,并点击ok,就将其设定为顶层capsule。
单击C++ compilation,选择编译器。组成形式:<operating system>.<processor and compiler>
build组件
为了build一个可执行的model,要创建一个组件,它用来管理build配置参数,你需要build或者编译该组件。
步骤:首先将创建的component设定为active(选定set Active)
单击 build component按钮
4.创建拓扑视图
1.创建一个组件实例
2.run 组件实例 (我的之前的build就失败了,所以这个就不能run,可能之前我的配置有问题)
如果成功,会跳出runtime 视图以及控制台窗口。
观察产生的代码:在你存储你的model的文件夹中,打开在component(你自己创建的)的src文件中,有源代码。
三、
四、
五、参考文献
【1】Rose RT软件附带的tutorial,主要是QuickStart Tutorial部分。
【2】Rose RT培训培训ppt
【3】Ericsson TD-SCDMA Source Code
【4】3GPP协议TS25.331 TS26.331
【5】C++ Primer
RoseRT 建模学习的更多相关文章
- UML建模学习1:UML统一建模语言简单介绍
一什么是UML? Unified Modeling Language(UML又称为统一建模语言或标准建模语言)是国际对象管理组织OMG制定的一个通 用的.可视化建模语言标准.能够用来描写叙述(spec ...
- 建筑建模学习笔记2——3DMax房屋框架建模
以下这幅图是用3DMax做出的大体的框架 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I ...
- 数学建模学习笔记 | matlab基本命令及用法
前言 数学建模对matlab水平的要求 了解matlab的基本用法,如常用命令.脚本结构.矩阵的基本操作.绘图等: 熟悉matlab的程序结构,能创建和引用函数: 熟悉常见模型的求解算法和套路: 自主 ...
- UML建模学习3:UML基本构造块之关系
今天我们来看UML基本构造块的还有一个要素--关系. UML中有表示基本图示符号之间的关系,它们是:依赖(dependency).泛化(generalization,也有的称继承).实 现(reali ...
- 学习笔记之Python全栈开发/人工智能公开课_腾讯课堂
Python全栈开发/人工智能公开课_腾讯课堂 https://ke.qq.com/course/190378 https://github.com/haoran119/ke.qq.com.pytho ...
- 「3D建模」ZBrush如何雕刻头部
加载项目开始 1. 如果未显示灯箱,请按逗号(,)或灯箱按钮. 2. 单击项目选项卡,然后双击DefaultSphere项目.它将被加载到ZBrush中. 3. 在工具>几何子选项板中,将SDi ...
- 为什么要学3D建模呢?你看中的肯定是这几点
游戏行业的大环境 互联网的形态一直以来都是2D模式的,但是随着3D技术的不断进步,在未来的5年时间里,将会有越来越多的互联网应用以3D的方式呈现给用户,包括网络视讯.电子阅读.虚拟社区.网络游戏.电子 ...
- Python数学建模-01.新手必读
Python 完全可以满足数学建模的需要. Python 是数学建模的最佳选择之一,而且在其它工作中也无所不能. 『Python 数学建模 @ Youcans』带你从数模小白成为国赛达人. 1. 数学 ...
- Python小白的数学建模课-04.整数规划
整数规划与线性规划的差别只是变量的整数约束. 问题区别一点点,难度相差千万里. 选择简单通用的编程方案,让求解器去处理吧. 『Python小白的数学建模课 @ Youcans』带你从数模小白成为国赛达 ...
随机推荐
- Fragment的隐藏与显示
package com.bwie.helpdemo; import com.bwie.fragment.BillFrag; import com.bwie.fragment.IndexFrag; im ...
- tp-link便携式路由器固件升级方式
系统: win-7 32bit 关闭杀毒软件,关闭防火墙(保险起见) 各位从tp-link的官网下载自己对应的固件 http://www.tp-link.com.cn/product/list_por ...
- 【转】Struts1.x系列教程(5):HTML标签库
转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/0 ...
- zigbee学习之路(三):按键的控制
一.前言 通过前一次的实验,相信大家都已经对cc2530程序的编写有了一定的认识,这次我们来操作和实验的是cc2530上的按键模块. 二.原理分析 我们先来看一下按键的原理图: 根据原理图我们可以得出 ...
- # TypeScript 中如何确保 this 的正确性
问题 在 TS 里面 this 关键字一开始让我这个写 C# 的十分惊讶,比如下面的一段代码,注意 initBinding 方法 class Company { id:number; /** * 在点 ...
- Android handle 多线程练习
Android handle <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&quo ...
- [转载]win32 计时器使用
在工业生产控制系统中,有许多需要定时完成的操作,如定时显示当前时间,定时刷新屏幕上的进度条,上位机定时向下位机发送命令和传送数据等.特别是在对控制性能要求较高的实时控制系统和数据采集系统中,就更需要精 ...
- GZFramwork数据库层《二》单据表增删改查(自动生成单据号码)
运行效果: 使用代码生成器(GZCodeGenerate)生成tb_EmpLeave的Model 生成器源代码下载地址: https://github.com/GarsonZhang/GZCodeGe ...
- loadrunner常用术语
1.场景 在loadrunner中主要表现为controller中设计与执行测试用例中的用户场景.主要工作有,在controller中选择虚拟用户脚本.设置虚拟用户数量.配置虚拟用户运行时的行为.选择 ...
- HDU-4529 郑厂长系列故事——N骑士问题 状态压缩DP
题意:给定一个合法的八皇后棋盘,现在给定1-10个骑士,问这些骑士不能够相互攻击的拜访方式有多少种. 分析:一开始想着搜索写,发现该题和八皇后不同,八皇后每一行只能够摆放一个棋子,因此搜索收敛的很快, ...