实时仿真与嵌入式系统
1、前言对于程序开发和许多交互式应用来说,UNIX和Windows可以算是优秀的操作系统。然而,它们都不适于实时应用。Tornado是美国WindRiver公司为用户提供的嵌入式开发平台,VxWorks是Tornado的运行期组件,也是嵌入式行业应用最为广泛的实时操作系统。VxWorks的实时性做的非常好,其系统本身的开销很小,任务调度、任务间通信和中断处理等系统公用程序精炼而高效,他们造成的延迟很短。VxWorks提供的多任务机制对任务的控制采用了优先级抢占调度和轮转调度机制,也充分保证了可靠的实时性,使同样的硬件配置能够满足更强的实时性要求,为应用的开发留下更大的余地。
RTW(Real-Time Workshop)是Matlab图形建模和仿真环境Simulink的一个重要的补充功能模块,它是一个基于Simulink的代码自动生出环境,它能直接从Simulink的模型中产生优化的、可移植的和个性化的代码,并根据目标配置自动生成多种环境下的程序。
RTW提供了几个快速原型化的目标,其中包括提供了从Simulink模型到VxWorks应用代码的自动转换接口Tornado Real-Time Target,可以让用户的模型在VxWorks上执行。
2、Tornado(VxWorks)实时目标运行时结构
开发VxWorks实时应用系统的典型配置,如图1所示:
图1 VxWorks实时应用开发的经典配置
实时代码在主机上,用Tornado提供的交叉编译器编译。通过RTW的Tornado实时目标生成目标文件(vxmodel.lo),可通过Tornado集成开发环境的WindSh下载到VxWorks目标机。实时程序在VxWorks目标机上执行,通过IO设备和外部硬件交换数据,并保持和主机之间的相互通信。
实时程序运行在VxWorks目标机上,而Simulink运行在主机上。Simulink需要VxWorks目标机上运行的任务来处理通信过程。Tornado(VxWorks)Real-Time Tartget生成如下VxWorks任务:一个用于和Simulink通信,其他用于完成模型功能。
3、Tornado(VxWorks)实时目标的实现过程
3.1 实验环境
我的实验环境如下表:
表1 实验环境
3.2 实时目标的具体实现步骤
为了通过Real-Time Workshop实现和运行一个基于VxWorks的实时程序,用户可按如下的步骤进行:
(1) 在Matlab/Simulink下建立一个模型,这里以一个经典的PID模型为例:
图2 实验所采用的经典PID模型
模型采用外部工作模式(External Mode),并设置Simulink Parameters对话框中的参数:
图3 仿真参数Solver设置
图4 仿真参数Real-Time Workshop设置
图5 仿真参数code generation options设置
(2) 配置模板联编连文件tornado.tmf,该文件位于%matlabroot%/rtw/c/tornado目录下,要对这个文件作如下修改:
#------------ Macros read by make_rtw -------------
MAKECMD = C:Tornado2.2hostx86-win32 inmake
HOST = PC
#-------------Tool Locations-----------------------------
WIND_BASE= C:Tornado2.2
WIND_REGISTRY=$(COMPUTERNAME)
WIND_HOST_TYPE=x86-win32
#------------Vxworks Configuration------------------
VX_TARGET_TYPE = pentium
CPU_TYPE = PENTIUM2
#-------------Macros for Downloading to Target-----
TARGET=target
TGTSVR_HOST=host
VX_CORE_LOC = $(WIND_BASE)/target/config/ pcPentium3/vxWorks
(3) 程序的生成、编译、连接
设置完参数,保存后,开始创建程序,单击上图中的Build按钮,开始编译程序,成功后可在当前的目录中产生了一个vxmodel_tornado_rtw的文件夹和一个目标文件vxmodel.lo。
(4) 手动下载和运行可执行文件
现在可以将实时程序下载到目标机中,具体的方法是在Tornado集成开发环境中启动WindSh,在WindSh窗口执行如下命令:
ld
页:
[1]