VxWorks操作系统RTP介绍和使用方法
- 格式:docx
- 大小:230.81 KB
- 文档页数:6
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利用率、系统目标(如任务、消息队列、信号量等)。
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中任务参数的动态配置方法及其装置
专利类型:发明专利
发明人:易荣武,唐军,蒋国涛,黄强,李志远,谢锋,方博伦
申请号:CN201910514132.9
申请日:20190614
公开号:CN112083998A
公开日:
20201215
专利内容由知识产权出版社提供
摘要:本发明提供一种VxWorks系统的RTP中任务参数的动态配置方法及其装置,所述方法包括以下步骤:构建配置文件,所述配置文件包括文件头、原始存储路径、RTP程序名称和所述任务参数,所述文件头表征RTP可执行程序的调用函数的入口,所述原始存储路径表征RTP可执行程序的原始存储位置;对所述配置文件进行解析,获取所述RTP程序名称和所述任务参数;基于所述RTP程序名称和所述任务参数生成任务名称;通过所述调用函数启动RTP程序,将所述任务名称传入所述RTP 可执行程序中;通过所述RTP可执行程序的入口函数对所述任务名称进行解析,当解析成功时,将所述任务参数配置到相应的RTP任务中。
申请人:中车株洲电力机车研究所有限公司
地址:412001 湖南省株洲市时代路169号
国籍:CN
代理机构:北京聿宏知识产权代理有限公司
更多信息请下载全文后查看。
以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操作系统被广泛用于控制系统和工业领域,如汽车制造、航空航天和机械制造等。
VxWork介绍及编程VxWork介绍及编程一.嵌入式操作系统VxWorks简介VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。
良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。
它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。
在美国的F-16、FA-18 战斗机、B-2 隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。
实时操作系统和分时操作系统的区别从操作系统能否满足实时性要求来区分,可把操作系统分成分时操作系统和实时操作系统。
分时操作系统按照相等的时间片调度进程轮流运行,分时操作系统由调度程序自动计算进程的优先级,而不是由用户控制进程的优先级。
这样的系统无法实时响应外部异步事件。
实时操作系统能够在限定的时间内执行完所规定的功能,并能在限定的时间内对外部的异步事件作出响应。
分时系统主要应用于科学计算和一般实时性要求不高的场合。
实时性系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。
VxWorks的特点•可靠性操作系统的用户希望在一个工作稳定,可以信赖的环境中工作,所以操作系统的可靠性是用户首先要考虑的问题。
而稳定、可靠一直是VxWorks的一个突出优点。
自从对中国的销售解禁以来,VxWorks以其良好的可靠性在中国赢得了越来越多的用户。
•实时性实时性是指能够在限定时间内执行完规定的功能并对外部的异步事件作出响应的能力。
实时性的强弱是以完成规定功能和作出响应时间的长短来衡量的。
VxWorks 的实时性做得非常好,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,它们造成的延迟很短。
. 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”即可。
VxWorks操作系统RTP介绍和使用方法从VxWorks 6.x开始引入RTP(VxWorks real time process project)模式编程,这种模式的优点是应用程序相互独立,互不影响,而且增加了内核的稳定性,缺点是由于“内核态”与“用户态”的内存拷贝,其执行效率有所降低,随着CPU 速度越来越快,这点效率的牺牲已经越来越不重要。
相比较于传统的DKM (downloadable kernel module project),RTP适合多个团队独立运作,然后汇总联试,这种模式除了全局函数不能再shell里直接调用外,其对应用程序几乎不做任何约束,原有的DKM工程代码稍作修改即可正常运行。
内核变化较大,需要添加较多的组件,内存需要较好的划分,为保持应用程序直接调用函数调试的习惯,需要封装接口供用户使用。
现简单的介绍RTP使用方法,并给出demo代码供参考。
1.新建并编译工程:(1)File->new-> VxWorks real time process project,如图【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软重启电路板,待系统启动后应用程序自动运行。
流媒体指的是在网络中使用流技术传输的连续时基媒体,其特点是在播放前不需要下载整个文件,而是采用边下载边播放的方式,它是视频会议、IP电话等应用场合的技术基础。
RTP是进行实时流媒体传输的标准协议和关键技术,本文介绍如何在Linux下利用JRTPLIB进行实时流媒体编程。
一、流媒体简介随着Internet的日益普及,在网络上传输的数据已经不再局限于文字和图形,而是逐渐向声音和视频等多媒体格式过渡。
目前在网络上传输音频/视频(Audio/Video,简称A/V)等多媒体文件时,基本上只有下载和流式传输两种选择。
通常说来,A/V文件占据的存储空间都比较大,在带宽受限的网络环境中下载可能要耗费数分钟甚至数小时,所以这种处理方法的延迟很大。
如果换用流式传输的话,声音、影像、动画等多媒体文件将由专门的流媒体服务器负责向用户连续、实时地发送,这样用户可以不必等到整个文件全部下载完毕,而只需要经过几秒钟的启动延时就可以了,当这些多媒体数据在客户机上播放时,文件的剩余部分将继续从流媒体服务器下载。
流(Streaming)是近年在Internet上出现的新概念,其定义非常广泛,主要是指通过网络传输多媒体数据的技术总称。
流媒体包含广义和狭义两种内涵:广义上的流媒体指的是使音频和视频形成稳定和连续的传输流和回放流的一系列技术、方法和协议的总称,即流媒体技术;狭义上的流媒体是相对于传统的下载-回放方式而言的,指的是一种从Internet上获取音频和视频等多媒体数据的新方法,它能够支持多媒体数据流的实时传输和实时播放。
通过运用流媒体技术,服务器能够向客户机发送稳定和连续的多媒体数据流,客户机在接收数据的同时以一个稳定的速率回放,而不用等数据全部下载完之后再进行回放。
由于受网络带宽、计算机处理能力和协议规范等方面的限制,要想从Internet上下载大量的音频和视频数据,无论从下载时间和存储空间上来讲都是不太现实的,而流媒体技术的出现则很好地解决了这一难题。
VxWorks操作指南项目\子项目名称:3G BTS平台分系统拟制部门:科技发展部拟制日期:2000.2.28目录1. 实时嵌入式操作系统V X W ORKS (3)2.V X W ORKS和T ORNADO (4)3.T ORNADO的配置 (5)3.1 主机的设置:Tornado Register (5)3.2 目标的设置 (6)4.T ORNADO开发工具的使用介绍 (7)4.1 Editor (7)4.2 Projects(Tornado 2.0版本特有) (7)4.3 Shell (8)4.4 Debugger (9)4.5 Browser (10)4.6 GNU工具 (10)4.7 Target Server (11)5.V X W ORKS的启动过程及相关例程 (12)5.1 VxWorks启动的一般原理 (12)5.2 MSDOS的启动过程 (13)6.V X W ORKS的多任务管理 (14)6.1多任务 (14)6.2任务状态转换 (14)6.3 wind任务的排序(scheduling)机制 (14)6.4 任务控制 (15)6.5 任务的删除和删除安全 (15)6.6 任务异常处理 (16)6.7 VxWorks系统任务 (16)7任务间通信(原语消息的传递) (16)7.1 概述 (16)7.2 互斥 (17)7.3 同步 (18)7.4 删除安全 (19)7.5 中断和任务间的通信 (19)8应用程序的加载 (19)1.实时嵌入式操作系统VxWorksVxWorks操作系统是一种应用广泛的嵌入式实时多任务操作系统。
其内核WIND具有强占式优先级排序的多任务处理能力,提供了任务间同步和通信的机制,支持中断处理、看门狗定时器和内存管理功能。
VxWorks的开发环境是Tornado,应用程序的开发语言是ANSI C和C++。
VxWorks的开发体系是代理-服务器(Agent-Server)结构体系,即驻留在主机(Host)的开发工具Tornado通过目标服务器(Target Server)指示目标上的目标代理(Target Agent)进行目标板上的操作并将结果返回给主机。
VxWorks操作系统简介VxWorks操作系统简介1.VxWorks操作系统概述VxWorks是一种实时操作系统(RTOS),由美国风险通信公司(Wind River Systems)开发和销售。
它广泛应用于嵌入式系统、网络设备和航空航天等领域,以其高度可靠性、实时性和可定制性而闻名。
2.VxWorks操作系统的特点与优势2.1 实时性能:VxWorks具有优秀的实时性能,能够以微秒级的精确度响应任务,并能够满足各种实时应用的需求。
2.2 可定制性:VxWorks提供了丰富的可定制选项,开发人员可以根据具体需求选择合适的开发环境、编程语言和硬件平台。
2.3 可靠性:VxWorks采用可靠性架构,能够有效地处理系统错误和异常,提供稳定性能与高可靠性。
2.4 安全性:VxWorks支持多层次的安全机制,包括访问控制、数据加密和安全认证等,保护系统免受恶意攻击。
3.VxWorks操作系统的体系结构3.1 内核:VxWorks内核提供了操作系统的核心功能,包括任务调度、内存管理、中断处理等。
它是操作系统与硬件之间的核心接口。
3.2 文件系统:VxWorks支持多种文件系统,包括RAM文件系统、ROM文件系统和网络文件系统等。
这些文件系统可用于数据存储、配置文件管理和软件更新等方面。
3.3 设备驱动程序:VxWorks提供了丰富的设备驱动程序,用于管理和控制外设设备,如串口通信、网络接口和硬盘等。
3.4 网络协议栈:VxWorks内置了多种网络协议栈,包括TCP/IP协议栈和UDP协议栈等,以实现设备间的网络通信。
4.VxWorks操作系统的开发工具4.1 Tornado集成开发环境:Tornado是VxWorks的主要开发工具,提供了图形化界面和一系列的编译、调试和部署工具,简化了开发过程。
4.2 GNU工具链:VxWorks还支持GNU工具链,包括GCC编译器、GDB调试器和Make构建工具等,为开发人员提供更灵活的开发环境。
VxWorks操作系统指南目录1. VxWorks操作系统概述 41.1.VxWorks 操作系统简介 41.2.VxWorks操作系统内核 51.3.任务管理 61.3.1. 任务结构1.3.2. 任务状态和状态迁移1.3.3. 任务调度策略1.3.4. 抢占禁止1.3.5. 异常处理1.3.6. 任务管理1.4.通信、同步和互斥机制91.4.1. 共享存储区1.4.2. 互斥1.4.3. 信号量1.4.4. 消息队列1.4.5. 管道1.4.6. 系统实现1.5.网络通信111.5.1. 套接口(Sockets)1.6.中断服务程序141.7.时间管理器142.VxWorks应用指导162.1.系统启动172.1.1. 启动盘的制作2.1.1. 主机Tornado环境配置2.2.应用系统配置192.2.1. 板级支持包BSP2.2.2. 虚拟内存2.2.3. 串行设备2.2.4. 初始化模块2.2.5. 配置VxWorks2.3.板级支持包BSP212.4.VxWorks系统任务232.5.应用软件开发指导232.6.应用示例分析252关键词:实时操作系统任务消息VxWorks Tornado摘要:本文档对实时操作系统作了简要介绍,并针对VxWorks系统的特点进行了具体的说明和分析,从VxWorks系统的任务管理、通信机制、系统配置、系统接口几个方面展开。
1. VxWorks操作系统概述1.1.VxWorks 操作系统简介实时多任务操作系统是能在确定的时间内执行其功能,并对外部的异步事件作出响应的计算机系统。
多任务环境允许一个实时应用作为一系列独立任务来运行,各任务有各自的线程和系统资源。
VxWorks系统提供多处理器间和任务间高效的信号灯、消息队列、管道、网络透明的套接字。
实时系统的另一关键特性是硬件中断处理。
为了获得最快速可靠的中断响应,VxWorks系统的中断服务程序ISR有自己的上下文。
目 录632.7.应用示例分析 (61)2.5.应用软件开发指导 (61)2.4.VxWorks 系统任务 (60)2.3.板级支持包BSP (57)2.2.应用系统配置 (55)2.1.系统启动 (54)2.VxWorks 应用指导 (51)1.9.网络通信 (51)1.8.POSIX Memory-locking 接口 (50)1.7. POSIX 时钟和定时器 (49)1.6.看门狗定时器(Watchdog Timers) (46)1.5.中断服务代码 (18)1.4.任务间通信 (5)1.3.任务 (5)1.2.VxWorks 操作系统内核 (4)1.1.VxWorks 操作系统简介 (4)1.VxWorks 操作系统介绍...............................................................关键词:RTOS POSIX VxWorks Tornado摘 要:本文档对实时操作系统作了简要介绍,并详细描述了Vxworks 内核和运行环境的基本原理,并概述了系统配置、系统接口等方面的内容。
1.VxWorks 操作系统介绍1.1.VxWorks 操作系统简介现代的实时操作系统主要增加了支持多任务和任务间通信的概念。
多任务环境允许一个实时应用作为一个独立的任务创建。
在VxWorks 里,任务间通信机制依靠信号量,消息队列,管道及socket(实现网络透明传输)实现。
实时操作系统的另外一个主要功能就是硬中断处理。
为使中断得到尽快响应,VxWorks 的中断服务程序(ISRs)有自己单独的context ,它与其他任务的context 不在一起。
本文主要讨论了多任务内核,任务机制(facilities),任务间通信及中断处理机制,这些都是VxWorks 运行环境的核心内容。
VxWorks 操作系统的基本构成模块包括以下部分:Ÿ高效的实时内核WindVxWOrks 实时内核(Wind )主要包括基于优先级的任务调度、任务同步和通信、中断处理、定时器和内存管理。
VxWorks操作系统概述(1) 无忧电子开发网VxWorks操作系统概述(1)1. VxWorks操作系统概述1.1. VxWorks 操作系统简介实时多任务操作系统是能在确定的时间内执行其功能,并对外部的异步事件作出响应的计算机系统。
多任务环境允许一个实时应用作为一系列独立任务来运行,各任务有各自的线程和系统资源。
VxWorks系统提供多处理器间和任务间高效的信号灯、消息队列、管道、网络透明的套接字。
实时系统的另一关键特性是硬件中断处理。
为了获得最快速可靠的中断响应,VxWorks系统的中断服务程序ISR有自己的上下文。
VxWorks实时操作系统由400多个相对独立的、短小精炼的目标模块组成,用户可根据需要选择适当模块来裁剪和配置系统,这有效地保证了系统的安全性和可靠性。
系统的链接器可按应用的需要自动链接一些目标模块。
这样,通过目标模块之间的按需组合,可得到许多满足功能需求的应用。
VxWorks操作系统的基本构成模块包括以下部分:·高效的实时内核WindVxWOrks实时内核(Wind)主要包括基于优先级的任务调度、任务同步和通信、中断处理、定时器和内存管理。
·兼容实时系统标准POSIXVxWOrks提供接口来支持实时系统标准P.1003.1b.·I/O系统VxWOrks提供快速灵活的与ANSI-C相兼容的I/O系统,包括UNIX的缓冲I/O和实时系统标准POSIX的异步I/O。
VxWOrks包括以下驱动:网络 --- 网络设备(以太网、共享内存)管道 --- 任务间通信RAM --- 驻留内存文件SCSI --- SCSI硬盘,磁碟,磁带键盘 --- PC x86键盘(BSP仅支持x86)显示器 --- PC x86显示器(BSP仅支持x86)磁碟 --- IDE和软盘(BSP仅支持x86)并口 --- PC格式的目标硬件·本机文件系统·I/O系统VxWorks的文件系统与MS-DOS、RT-11、RAM、SCSI等相兼容。
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*******************************。