VxWorks操作系统RTP介绍和使用方法

合集下载

VxWorks使用说明书

VxWorks使用说明书

VxWorks使用说明书1、概述VxWorks操作系统的集成环境叫Tornado。

T ornado集成环境提供了高效明晰的图形化的实时应用开发平台,它包括一套完整的面向嵌入式系统的开发和调测工具。

Tornado环境采用主机-目标机交叉开发模型,应用程序在主机的Windows环境下编译链接生成可执行文件,下载到目标机,通过主机上的目标服务器(T arget Server)与目标机上的目标代理(Target Agent)的通信完成对应用程序的调试、分析。

它主要由以下几部分组成:VxWorks高性能的实时操作系统;* 应用编译工具;* 交互开发工具;下面对T ornado集成环境的各组件功能分别介绍:* Tornado开发环境Tornado是集成了编辑器、编译器、调试器于一体的高度集成的窗口环境,同样也可以从Shell窗口下发命令和浏览。

* WindConfig:T ornado系统配置通过WindConfig可选择需要的组件组成VxWorks实时环境,并生成板级支持包BSP的配置。

通过修改config.h可以实现WindConfig的所有功能,并且,可以实现WindConfig不能实现的功能。

* WindSh:Tornado外壳WindSh是一个驻留在主机内的C语言解释器,通过它可运行下载到目标机上的所有函数,包括VxWorks和应用函数。

Tornado外壳还能解释常规的工具命令语言TCL。

WindSh不仅可以解释几乎所有的C语言表达式,而且可以实现所有的调试功能。

它主要有以下调试功能:下载软件模块;删除软件模块;产生任务;删除任务;设置断点;删除断点;运行、单步、继续执行程序;查看内存、寄存器、变量;修改内存、寄存器、变量;查看任务列表、内存使用情况、CPU利用率;查看特定的对象(任务、信号量、消息队列、内存分区、类);复位目标机。

* 浏览器Tornado浏览器可查看内存分配情况、任务列表、CPU利用率、系统目标(如任务、消息队列、信号量等)。

VxWorks APPLICATION PROGRAMMER'S GUIDEApplication Programmer's Guide

VxWorks  APPLICATION PROGRAMMER'S GUIDEApplication Programmer's Guide

2 实时进程2.1 介绍VxWorks实时进程(RTPs)在很多方面和其它操作系统的进程类似——如UNIX和Linux ——包括扩展POSIX兼容。

创建、执行和终止应用程序的方法对于理解UNIX进程模型的开发者比较熟悉。

然而VxWorks进程模型设计用于实时嵌入式操作系统。

这个模型支持的功能包括系统范围内任务调度(进程本身没有调度),和用户模型一样的内核模式下的进程抢占,两步创建进程来分离加载实例和从入口加载应用程序。

VxWorks实时进程提供在用户模式下执行应用程序的方法。

每个进程有自己的地址空间,包含可执行程序,程序的数据,每个任务的栈,堆,进程本身管理相关的资源(如内存分配跟踪)。

可能内存中同时存在多个进程,每个进程包含多个任务(其它操作系统成为线程)。

VxWorks进程可以使用两种不同的虚拟内存模型:平面(默认)和重叠(可选)。

若使用平面虚拟内存模型,每个VxWorks进程有自身的通过一个唯一一个地址范围描述的虚拟内存。

这个模型在一个支持或不支持MMU的编程模型中和调试应用中在执行速度方面比较有优势。

若使用重叠虚拟内存模型,每个VxWorks进程使用相同的虚拟地址范围来存放驻留代码(文本,数据,bss段)。

这个模型对虚拟内存地址提供更精准的控制,具备更快速的应用加载时间。

关于RTP应用程序开发相关信息,参考3. RTP Applications。

2.2 关于实时进程一个进程的通用定义是执行的一个程序,VxWorks进程也一样。

事实上,VxWorks实时进程的生命周期和POSIX进程保存高度一致(参考2.2.9 RTPs and POSIX)。

然而,VxWorks进程更准确的称为实时进程(RTPs),因为此进程设计用于实时性要求比较高的系统。

以如下方式操作:●保留VxWorks任务调度模型。

进程不会调度——任务在系统全局范围内调度。

●进程在内核模式下和在用户模式下一样可能会被抢占。

每个任务有一个用户模型和一个内核模型栈。

VxWorks系统的RTP中任务参数的动态配置方法及其装置[发明专利]

VxWorks系统的RTP中任务参数的动态配置方法及其装置[发明专利]

专利名称:VxWorks系统的RTP中任务参数的动态配置方法及其装置
专利类型:发明专利
发明人:易荣武,唐军,蒋国涛,黄强,李志远,谢锋,方博伦
申请号:CN201910514132.9
申请日:20190614
公开号:CN112083998A
公开日:
20201215
专利内容由知识产权出版社提供
摘要:本发明提供一种VxWorks系统的RTP中任务参数的动态配置方法及其装置,所述方法包括以下步骤:构建配置文件,所述配置文件包括文件头、原始存储路径、RTP程序名称和所述任务参数,所述文件头表征RTP可执行程序的调用函数的入口,所述原始存储路径表征RTP可执行程序的原始存储位置;对所述配置文件进行解析,获取所述RTP程序名称和所述任务参数;基于所述RTP程序名称和所述任务参数生成任务名称;通过所述调用函数启动RTP程序,将所述任务名称传入所述RTP 可执行程序中;通过所述RTP可执行程序的入口函数对所述任务名称进行解析,当解析成功时,将所述任务参数配置到相应的RTP任务中。

申请人:中车株洲电力机车研究所有限公司
地址:412001 湖南省株洲市时代路169号
国籍:CN
代理机构:北京聿宏知识产权代理有限公司
更多信息请下载全文后查看。

以ARM为例的Vxworks开发工具的使用操作流程

以ARM为例的Vxworks开发工具的使用操作流程

以ARM为例的Vxworks开发工具的使用操作流程一.认识Tornado II和VxworksVxWorks是一种嵌入式的实时操作系统,所谓嵌入式系统就是用户自己开发设计板子,板子上通常有一颗CPU,VxWorks支持32位的CPU,包括Intel公司的x86、Motorola公司的68k和PowerPC、MIPS、ARM、Intel公司的i960、Hitachi公司的SH。

我们设计的板子通常没有软件的自开发能力,所以我们需要一台通用机来辅助开发,这台通用机可以是PC 或工作站,我们称辅助我们软件开发的通用机为宿主机(Host),用户自己开发的板子为目标机(Target)。

宿主机上要有一个集成开发环境(IDE)来辅助我们的软件开发,这套集成开发环境可以运行在Windows95/NT或 UNIX下,包括交叉编译器(Cross Compiler)和交叉调试器(Cross Debugger),所谓交叉编译器就是在宿主机上编译生成可以在目标机上运行的代码IMAGE,交叉调试器就是通过宿主机和目标机之间的某种耦合方式实现前后台调试。

我们称宿主机上的这套集成开发环境为Tornado,编译生成的目标机上的可执行代码IMAGE为VxWorks。

在系统安装的时候,集成调试环境和VxWorks的原材料(一些obj文件)都安装到宿主机上,编译生成的在目标机上运行的IMAGE内包含操作系统。

二.Tornado II IDE的主要组成Tornado II IDE的主要组成部分有:1.集成的源代码编辑器(可惜不支持汉字输入)。

2.工程管理工具。

3.集成的C和C++编译器和make工具。

4.浏览器,用于收集可视化的资源,监视目标系统。

5.CrossWind,图形化的增强型调试器。

6.WindSh,C语言命令外壳,用于控制目标机。

7.VxSim,集成的vxworks目标机仿真器。

8.WindView,集成的软件逻辑分析仪。

9.可配置的各种选项,可以改变归Tornado GUI的外观等。

VxWorks操作系统简介

VxWorks操作系统简介

VxWorks操作系统简介VxWorks操作系统简介VxWorks操作系统是一种广泛应用于嵌入式系统开发的实时操作系统。

本文将详细介绍VxWorks操作系统的架构、特性、应用领域以及相关的法律名词注释。

一、VxWorks操作系统架构VxWorks操作系统采用分层架构,包括内核层、中间层以及外围应用层。

具体架构如下:⒈内核层:提供底层的操作系统服务,包括任务管理、内存管理、中断处理、设备驱动等。

内核层使用高度模块化的设计,可以根据需求选择性地加载不同的内核服务。

⒉中间层:提供更高层次的功能,如文件系统、网络协议栈、图形用户界面等。

中间层通过对内核接口的封装,提供更便捷的应用开发接口。

⒊外围应用层:包括用户应用程序和系统管理工具。

用户应用程序可以基于VxWorks操作系统的开发环境进行开发,并且通过内核和中间层提供的接口与系统进行交互。

二、VxWorks操作系统特性VxWorks操作系统有以下特点:⒈实时性:VxWorks操作系统被广泛应用于实时系统开发,具有快速响应、低延迟和可预测性等特性。

它使用了优化的调度算法和中断处理机制,确保系统对实时任务的及时响应。

⒉可靠性:VxWorks操作系统采用了可靠性设计和故障恢复机制,例如内存保护、任务隔离和异常处理等。

这些机制可最大限度地减少系统崩溃和错误的影响。

⒊可扩展性:VxWorks操作系统具有高度可扩展性,可以根据应用的需要进行灵活配置。

开发人员可以根据系统需求选择性地加载所需的内核服务和中间层模块,以达到最佳性能和资源利用。

⒋安全性:VxWorks操作系统提供了多层次的安全机制,包括权限控制、数据加密和访问控制等。

这些机制可以在网络和物理环境中保护系统不受未经授权的访问和攻击。

三、VxWorks操作系统的应用领域VxWorks操作系统在各行各业都有广泛的应用,特别适用于对实时性和可靠性要求较高的领域。

以下是一些典型的应用领域:⒈工业自动化:VxWorks操作系统被广泛用于控制系统和工业领域,如汽车制造、航空航天和机械制造等。

vxworks系统及函数详解

vxworks系统及函数详解

VxWork介绍及编程VxWork介绍及编程一.嵌入式操作系统VxWorks简介VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。

良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。

它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。

在美国的F-16、FA-18 战斗机、B-2 隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。

实时操作系统和分时操作系统的区别从操作系统能否满足实时性要求来区分,可把操作系统分成分时操作系统和实时操作系统。

分时操作系统按照相等的时间片调度进程轮流运行,分时操作系统由调度程序自动计算进程的优先级,而不是由用户控制进程的优先级。

这样的系统无法实时响应外部异步事件。

实时操作系统能够在限定的时间内执行完所规定的功能,并能在限定的时间内对外部的异步事件作出响应。

分时系统主要应用于科学计算和一般实时性要求不高的场合。

实时性系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。

VxWorks的特点•可靠性操作系统的用户希望在一个工作稳定,可以信赖的环境中工作,所以操作系统的可靠性是用户首先要考虑的问题。

而稳定、可靠一直是VxWorks的一个突出优点。

自从对中国的销售解禁以来,VxWorks以其良好的可靠性在中国赢得了越来越多的用户。

•实时性实时性是指能够在限定时间内执行完规定的功能并对外部的异步事件作出响应的能力。

实时性的强弱是以完成规定功能和作出响应时间的长短来衡量的。

VxWorks 的实时性做得非常好,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,它们造成的延迟很短。

RTP系统指南

RTP系统指南
1
1 系统简介
主要特点
多处理器结构 可配置的冗余特性 冗余处理器可以布置在不同机架中 冗余 I/O 卡件可以布置在不同机架中 安全完整性等级:SIL-3 全面的系统自诊断功能 12ms 的系统响应时间 5ms 的系统扫描速度 1ms 分布式处理器响应时间 1ms SOE
特殊用途的 I/O 卡件会测试 I/O 模块和输入/输出设备间的接线完整性。在一些情况下,额外的测试可 通过设备自身完成。以热偶(thermocoupless)卡为例,开路检测可以根据用户的选择在热偶或卡件 上进行。
在每一扫描时间内,测试所有的输入/输出卡件,以保证在需要的时候,卡件能够改变状态。 三冗余 I/O 网络中包含额外的嵌入式的错误检查功能以保证所有 I/O 信息的完整性。在正常的 I/O 扫
1.1 强大的运算能力
独特的多处理器(multi-processor)结构在很多方面为用户提供高效的服务。它可以缩短系统的扫描 时间,快速识别过程异常并对异常作出快速处理。在安全应用领域,响应速度的重要性是不言而喻的,对生 产过程中故障的快速识别和响应能力是避免生产中断,设备损害,人员伤亡的关键。在关键控制应用中,TSx 系统能够在单个 5ms 的扫描周期内完成 300 个 PID 的运算,系统 I/O 扫描,逻辑运算,报警处理,RTP 系统 间点对点的通信(peer to peer communication)和其 系统开发软件...........................................................................................................................................................42 4.1 NetArrays .....................................................................................................................................................42 4.2 标记名字数据库管理器(PTDBM) ...............................................................................................................45 4.3 报警和数据记录(RTPADA)..........................................................................................................................45 4.4 HMI开发软件(RTPView)............................................................................................................................46 4.5 趋势记录(RTPTrend).....................................................................................................................................46 4.6 对象数据记录器(RTPFIFO) .........................................................................................................................46 4.7 报表生成工具(RTPReport) ...........................................................................................................................47

VxWorks6创建RTP例程

VxWorks6创建RTP例程

. VxWorks6.6动态创建RTP例程VxWorks6.6中的RTP程序与WINDOWS的exe程序类似,我们可以使用操作系统的进程创建函数API,在程序中动态创建和调用。

下面主要通过Download Kernel moudle来测试该API使用,整个调试过程与Tornado2.2基本相似,具体操作流程如下面描述。

1、创建Downloadable Kernel module工程2、新建main.cpp文件3、main.cpp代码如下[cpp]view plaincopyprint?1. #include <vxWorks.h>2. #include <stdio.h>3. #include <rtpLibCommon.h>4. #include <errnoLib.h>5. #include <usrLib.h>6.7. i nt main (void)8. {9. int nRtp;10. // 注意这里的文件路径使用虚拟路径,否则将出现nRtp=-1不成功的状态!11. const char *argv[] = {"/C/openSUSE3000/fep/bin/testdemo.vxe", NULL};12. const char *envp[] = {"HEAP_INITIAL_SIZE=0x20000", "HEAP_MAX_SIZE=0x100000", NULL};13. nRtp = (int)rtpSpawn(argv[0], argv, envp, 100, 0x10000, 0, 0);14. if (nRtp == -1)15. {16. printErrno(errnoGet());17. printf ("The RTP task not spawned!\n");18. }19. else20. {21. printf ("This is a task spawned by testvxe program!\n");22. }23. return 0;24. }4、编译工程Build Started in Project 'testvxe': 2011-09-23 17:05:40Generation of makefiles started.Generation of makefiles finished (Elapsed Time: 00:00).Platform: Wind River VxWorks 6.6Command: make --no-print-directory BUILD_SPEC=SIMNTdiab DEBUG_MODE=1 TRACE=1Working Directory: C:/openSUSE3000/fep/code/test_sys/testvxe/SIMNTdiabif [ ! -d "`dirname "testvxe_partialImage/Debug/Objects/testvxe/main.o"`" ]; then mkdir -p "`dirname "testvxe_partialImage/Debug/Objects/testvxe/main.o"`"; fi;echo "building testvxe_partialImage/Debug/Objects/testvxe/main.o"; dcc -g -tX86LH:vxworks66-W:c:,-Xclib-optim-off -Xansi-Xlocal-data-area-static-only -Xforce-declarations -Xmake-dependency=0xd -IC:/Win dRiver3.6/vxworks-6.6/target/h-IC:/WindRiver3.6/vxworks-6.6/target/h/wrn/coreip -DCPU=SIMNT-DTOOL_FAMILY=diab -DTOOL=diab -D_WRS_KERNEL -o"testvxe_partialImage/Debug/Objects/testvxe/main.o" -c"C:/openSUSE3000/fep/code/test_sys/testvxe/main.cpp"building testvxe_partialImage/Debug/Objects/testvxe/main.oif [ ! -d "`dirname "testvxe_partialImage/Debug/testvxe_partialImage.o"`" ]; then mkdir -p "`dirname "testvxe_partialImage/Debug/testvxe_partialImage.o"`"; fi;echo "building testvxe_partialImage/Debug/testvxe_partialImage.o"; dld -tX86LH:vxworks66 -X -r5 -f0x90,1,1 -o "testvxe_partialImage/Debug/testvxe_partialImage.o"testvxe_partialImage/Debug/Objects/testvxe/main.o && if [ "0" = "1" ]; then plink "testvxe_partialImage/Debug/testvxe_partialImage.o";fibuilding testvxe_partialImage/Debug/testvxe_partialImage.oif [ ! -d "`dirname "testvxe/Debug/testvxe.out"`" ]; then mkdir -p "`dirname"testvxe/Debug/testvxe.out"`"; fi;echo "building testvxe/Debug/testvxe.out";rm -f "testvxe/Debug/testvxe.out";ddump -Ngtestvxe_partialImage/Debug/testvxe_partialImage.o | tclshC:/WindRiver3.6/vxworks-6.6/host/resource/hutils/tcl/munch.tcl -c pentium >testvxe/Debug/ctdt.c; dcc -g -tX86LH:vxworks66 -Xdollar-in-ident-Xforce-declarations -IC:/WindRiver3.6/vxworks-6.6/target/h-IC:/WindRiver3.6/vxworks-6.6/target/h/wrn/coreip -DCPU=SIMNT-DTOOL_FAMILY=diab -DTOOL=diab -D_WRS_KERNEL -o testvxe/Debug/ctdt.o -c testvxe/Debug/ctdt.c; dld -tX86LH:vxworks66 -X -r5 -f 0x90,1,1 -r4 -o"testvxe/Debug/testvxe.out" testvxe/Debug/ctdt.otestvxe_partialImage/Debug/testvxe_partialImage.o && if [ "0" = "1" ]; then plink "testvxe/Debug/testvxe.out";fibuilding testvxe/Debug/testvxe.outmake: built targets of C:/openSUSE3000/fep/code/test_sys/testvxe/SIMNTdiabBuild Finished in Project 'testvxe': 2011-09-23 17:05:44 (Elapsed Time: 00:04)5、启动仿真器6、下载二进制文件从左边工程树目录中的testvxe->Binaries找到testvxe.out文件,鼠标右键时从弹出的菜单中选择下载“Download”即可。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VxWorks 操作系统RTP 介绍和使用方法
从VxWorks 6.x开始引入RTP(VxWorks real time process projec模t) 式编程,这种模式的优点是应用程序相互独立,互不影响,而且增加了内核的稳定性,缺点是由于“内核态”与“用户态”的内存拷贝,其执行效率有所降低,随着CPU 速度越来越快,这点效率的牺牲已经越来越不重要。

相比较于传统的DKM (downloadable kernel module project ),RTP适合多个团队独立运作,然后汇总
联试,这种模式除了全局函数不能再shell 里直接调用外,其对应用程序几乎不
做任何约束,原有的DKM 工程代码稍作修改即可正常运行。

内核变化较大,需
要添加较多的组件,内存需要较好的划分,为保持应用程序直接调用函数调试的
习惯,需要封装接口供用户使用。

现简单的介绍RTP使用方法,并给出demo 代码供参考。

1. 新建并编译工程:
(1) File->new-> VxWorks real time process projec如t, 图【1】
图【1】
(2) 一路next 后,选择如图【2】所示的编译器
图【2】
(3) 选择Finish 后,工程新建完毕。

(4) 导入源文件:这里的源文件名称是fooRtpApp.c ,一种较快捷的方式是选
中新建的工程,按下F5,源文件会出现在工程中.
(5) 右键选择编译,出现如图【3】,选择Continue 继续。

图【3】
编译完成后,会生成vxe 格式的可执行文件,此处为usrAppA.vxe 。

2. 下载可执行性文件
待板子启动后,使用ftp 将vxe 文件下载到板子中。

步骤如下:
(1)运行->cmd,打开对话窗口,如图【4】所示:
图【4】
依次执行如下命令:
(a) ftp 192.168.0.2 (该ip 可在vxWorks启动后,输入命令ifconfig 查看)
(b) bi
(c) cd /tffs0
(d) put filename (完整的文件路径)
(e) by
执行完上述命令后,即可把可执行程序下载到目标板上,如下图【5】:
图【5】
在串口终端中,输入ifconfig 命令查看ip 地址;依次输入如下命令查看刚下载到目标板的文件:
(a) cd “/tffs0 ”
(b) ls
上述操作结果如下图【6】所示:
图【6】
3. 运行可执行文件
下载完成后,可以断电重启或者在调试串口中输入命令ctrl+x 软重启电路板,待系统启动后应用程序自动运行。

4. 调试方法
(1 )原有的DKM 工程,.out 文件被加载后其全局函数可以在shell 里直接调
用,对调试方便的很,但是RTP的实现机制决定了其中的函数不能被调
用,所以需要找到一种方法来实现,以达到安全、团队合作,而又方便
调试。

函数原型:
n “file_name ”, ”fun_name a”rg2,a,a rg rg13, , arg4, arg5, arg6
假如usrAppA.vxe里有如下两全局函数:
void process_hello(int a,int b,int c);
void processB(void;)
执行方法如下:
n "usrAppA.vxe","process_hello",1,2,3
n "usrAppA.vxe","processB"
这种方式在UP(单核)、多核(SMP)模式下都是安全可用的。

(2))如果应用程序存在BUG而导致RTP程序被杀掉,如何能快速定位是哪出了
问题?请注意,RTP模式优势来了,此时vxWorks 还是活着的,可以输入命令edrShow 查看所有的异常,能快速定位是哪一个任务出了问题。

(3))内核启动后,输入命令:aff_lrtp ,即可手动执行应用程序。

这种方式可以
把RTP及其任务亲和到某一个核上,当然只是多核跑在SMP时有效,单核模式无所谓,因为只有一个核。

(4))查看任务
输入命令ri “filename可”查看该应用程序中任务状态,比如:
ri “usrAppA.vxe”
这种方式只查看针对本RTP的任务状态。

(5))杀掉RTP进程
delk “filename ”
***************************Demo*************************************** (6))D emo 代码如下:
#include <vxWorks.h>
#include <stdio.h>
/*#include <barLib.h>*/
/*user function*/
void process_hello(int a,int b,int c)
{
int t1=a,t2=b,t3=c;
while(1)
{
printf ("hello world,^^^^0x%x,0x%x,0x%x\n",t1,t2,t3);
taskDelay(30);
}
}
void processB(void)
{
printf ("hello world\n");
}
int main
(
)
int argc, /* number of arguments */
char * argv[], /* array of arguments */
char * envp[], /* array of environment strings */
void * auxp /* implementation-specific auxiliary vector */
{
taskSpawn ( "hello" ,150,0,0x60000,process_hello,0,1,2,3,4,5,6,7,8,9);
taskSuspend (0); /* stop again to keep RTP alive */
return 0;
}
************************end*******************************。

相关文档
最新文档