2003-Vxworks基础
- 格式:pdf
- 大小:2.50 MB
- 文档页数:89
1. 概述1.1 TORNADO 组件1.1.1 开发工具1.1.2 实时系统1.1.3 Tornado 文件目录1.2 硬件/软件配置1.3 booting介绍1.4 Tornado开始过程1.5 WDB 代理2 Projects2.1 bootable projects2.2 集成模拟器vxsim2.3 Downloadable projects 2.4 build说明3 WindSh 和Browser3.1 WindSh3.2 Browser4 CrossWind4.1 Debugging简介4.2 任务级Debugging 4.3 系统级DebuggingVxWorks 是美国Wind River System 公司(以下简称风河公司,即WRS 公司)推出的一个实时操作系统。
WRS 公司组建于1981年,是一个专门从事实时操作系统开发与生产的软件公司,该公司在实时操作系统领域被世界公认为是最具有领导作用的公司。
VxWorks 是一个运行在目标机上的高性能、可裁减的嵌入式实时操作系统。
它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。
在美国的F-16、FA-18 战斗机、B-2 隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。
1984年WRS 公司推出它的第一个版本--VxWorks 1.0.1,在1999年推出了它的最新版本VxWorks 5.4。
从1995年以后,WRS 公司推出了一套实时操作系统开发环境-- Tornado。
1.1 Tornado2.0 组件Tornado是嵌入式实时领域里最新一代的开发调试环境。
Tornado给嵌入式系统开发人员提供了一个不受目标机资源限制的超级开发和调试环境。
T ornado包含三个高度集成的部分:. 运行在宿主机和目标机上的强有力的交叉开发工具和实用程序;. 运行在目标机上的高性能、可裁剪的实时操作系统VxWorks;. 连接宿主机和目标机的多种通讯方式,如:以太网,串口线,ICE或ROM仿真器等。
VxWorks基础知识收藏1.多任务:允许一个实时应用作为一系列独立任务来运行,各任务有各自的线程和系统资源。
3.任务切换之前要保存上下文。
4.优先级是动态的0~255,0级最高。
5.Wind内核taskLock()和taskUnlock()禁止和解除抢占,但对中断不起作用。
6.异常处理:VxWorks异常处理包,一般是将引起异常的任务休眠,保存任务在异常出错处的状态值。
内核和其它任务继续执行。
7.为什么要共享存储区:任务间通信的最简单的方法是采用共享存储区,也即相关的各个任务分享属于它们的地址空间的同一内存区域。
8. 为什么要互斥:当某一地址空间用于数据交换时,为了避免冲突,对于内存的锁定是非常重要的。
一般来说,关中断是最有效的解决互斥的方法。
但这对于实时应用来说,它阻止系统对外部事件的响应,无法满足实时性的要求。
同样,中断延迟也是不能接受。
因为它们没有实时性。
所以要用信号量来完成互斥,主要是二进制信号量,并且二进制信号量不仅能完成互斥而且能完成同步!,但是关中断应该用到程序的初始化过程中。
9.信号量:VxWorks信号量提供最快速的任务间通信机制,它主要用于解决任务间的互斥和同步。
针对不同类型的问题,有以下三种信号量:⊙二进制信号量使用最快捷、最广泛,主要用于同步或互斥;⊙互斥信号量主要用于优先级继承、安全删除和回溯;⊙计数器VxWorks还提供POSIX信号量和多处理器上信号量的应用。
10.消息队列,任务之间利用消息队列发送和接收消息。
11.管道:管道是一种灵活的消息传送机制,它比消息队列强在有一个select()12.信号量的创建与删除:semBCreate() 创建(产生并激活)一个二进制信号量semMCreate() 创建(产生并激活)一个互斥信号量semCCreate() 创建(产生并激活)制一个计数信号量semDelete() 中止并自由信号量semTake()获得信号量semGive() 给出信号量semFlush() 解锁所有正等待某一信号量的任务13.消息队列的创建与删除:msgQCreate() 创建(产生并激活)消息队列msgQDelete() 中止并自由信号量msgQSend() 向消息队列发送消息msgQReceive() 从消息队列接收消息14.网络通讯:与其它主机进行通信。
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)进行目标板上的操作并将结果返回给主机。
精心整理1.与任务相关的命令sp function,[arg1],...,[arg9]-启动任务,最多接受9个参数,默认的优先级100、堆栈20000字节period n,function,[arg1],...,[arg8]-创建一个周期调用function的任务,周期为n秒,最多接受8个参数repeat m,function,[arg1],...,[arg8]-创建一个反复调用function的任务,调用次数为m,m=0时永久调用,最多也是8个参数ts tidX -挂起任务tr tidX -恢复挂起的任务td tidX -删除任务i tidX -显示任务基本信息,参数为0时显示全部任务ti tidX -显示任务详细信息,包括寄存器、堆栈等tt tidX -显示任务的函数调用关系checkStack tidX -显示任务堆栈使用的历史统计,参数为0时显示全部任务[其中tidX可以为任务ID 也可以为任务名]2、系统信息lkup ["string"] -在系统符号表中查找并列出含有"string"字符的函数及全局变量,有两个特殊参数:0,给出符号表统计;""(空字符串),列出全部符号lkAddr addr -显示addr地址附近的符号表l addr,[n] -显示addr地址开始的n条指令的反汇编,n省略时默认为10条指令h [n] -n为0时列出最近执行的shell命令,默认20条;n非0时,设定shell记录的历史命令的数目d [addr,[number],[width]]-显示addr地址开始的number个单元的内容,width定制每个单元的宽度,可以是1、2、4、8m addr,[width] -按width宽度修改addr地址的内容,width 可以是1、2、4、8memShow 1 -显示系统分区上空闲和已分配空间的总数等printErrno value -打印系统定义的错误码的宏3、与网络相关的命令ifShow ["ifname"] - show info about network interfacesinetstatShow - show all Internet protocol socketstcpstatShow - show statistics for TCPudpstatShow - show statistics for UDPipstatShow - show statistics for IP icmpstatShow - show statistics for ICMParpShow - show a list of known ARP entriesmbufShow - show network stack data pool statisticsnetStackSysPoolShow - show network stack system pool statisticsrouteShow - display all IP routes (summary information)mRouteShow - display all IP routes (verbose information)routestatShow - display routing statisticsrouteAdd "destaddr","gateaddr" - add route to route table routeDelete "destaddr","gateaddr" - delete route from route table说明:上述大多数命令都可以在help、netHelp中查到。
嵌入式实时操作系统VxWorks入门VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。
在美国的F-16、FA-18 战斗机、B-2隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。
VxWorks原先对中国区禁止销售,自解禁以来,在我们的军事、通信、工业控制等领域得到了非常广泛的应用。
嵌入式系统的调试方法一般为通过PC(宿主机)上的集成开发环境交叉编译针对特定电路板(目标机)的程序,然后将程序通过目标板的JTAG、串口或网口等途径下载到目标板上运行。
如图1。
因此,为了构造一个嵌入式系统的学习环境,拥有一块包含CPU、存储器及I/O电路(构造计算机系统)的目标电路板往往是必要的。
虽然许多集成开发环境附带模拟软件,但仅限于指令集的模拟,均无法模拟物理的目标机硬件平台,因而在其上只能进行应用程序的象征性模拟开发。
但是,并非所有人都能拥有一块物理的电路板。
在这种情况下,我们如何构造一个模拟的开发环境,其学习效果就如同拥有完全真实的电路板一样呢? 本文试图解答此问题,主体内容包括四个方面:1.利用VMware等软件模拟真实的目标机;2.构建VMware虚拟PC上VxWorks BSP,建立Bootrom和OS映像;3.修改Tornado相关设置,连接宿主机与目标机,建立调试通道;4.写一个简单的应用程序并下载到目标系统运行。
图1 嵌入式系统的调试本章工作的最终目标为:(1)VxWorks在VMware启动成功并顺利运行,如图2;图2 在VMware中运行的VxWorks(2)可在Tornado上针对目标板编译程序并进行调试,如图3。
图3 与目标机建立调试通道的Tornado1. 模拟目标机PC也具有目标机的所有特点,实际上,我们可以把PC作为嵌入式系统的目标机,从而构造如图4所示的开发模型:图4 PC作为目标机很遗憾,这种方法实际上非常麻烦,同时开动两台PC进行调试将使你和你的室友饱受折磨,既然他如此地热切于游戏和上网。
VxWorks操作系统基础1 实时操作系统概述31.1 实时操作系统31.2 基本概念32 VxWorks的系统综述42.1 VxWorks 42.2 Tornado 63 VxWorks操作系统基础73.1 VxWorks的任务73.1.1 多任务73.1.2 任务的状态迁移83.1.3 Wind内核的任务调度93.1.4 任务控制93.1.5 任务扩展性123.1.6 任务错误状态:errno 133.1.7 任务异常处理143.1.8 共享代码和代码重入143.1.9 VxWorks的系统任务173.2 任务间通信183.2.1 共享数据结构183.2.2 互斥183.2.3 信号量Semaphores 193.2.3.1 二值信号量203.2.3.2 互斥信号量223.2.3.3 计数信号量233.2.3.4 信号量的特殊参数243.2.4 消息队列243.2.5 管道263.2.6 跨网络的任务间通信263.2.7 信号263.3 中断服务代码273.3.1 应用代码与中断连接273.3.2 中断堆栈283.3.3 ISRs的一些特殊限制283.3.4 中断级别的异常283.3.5 保持高中断级别293.3.6 对高中断级别的ISRs的一些附加限制29 3.3.7 中断与任务间的通信293.4 看门狗计时器Watchdog Timers 294 VxWorks中的函数库:304.1 TaskLib: 304.2 ErrnoLib: 304.3 SigLib: 314.4 LstLib: 314.5 MemLib: 321 实时操作系统概述1.1实时操作系统在计算的早期开发的操作系统的最原始的结构形式是一个统一的实体(monolithic)。
在这样的系统中,提供的不同功能的模块,如处理器管理、内存管理、输入输出等,通常是独立的。
他们在执行过程中并不考虑其他正在使用中的模块,各个模块都以相同的时间粒度运行,即严格按时间片分时方式运行。
TAO-TAO-LE板级功能测试程序暨VxWorks开发简明培训教程朱海涛2003年11月关于本手册本手册读者须具有基本的Windows操作经验,并且已经参加过03年八月份的培训:“Tornado集成开发环境的操作及基于PowerPC/VxWorks的编程实例”。
没有参加过该次培训的读者,请到/report/jicheng.doc下载相关文档学习,本手册第一章也将对之做一简单复习。
此外,读者最好具有在Windows下架设简单FTP服务的经验。
本手册第一章会简单涉及这些内容。
读者应该仔细阅读本手册后再操作,你碰到的问题很可能是由于疏忽了本手册的某些细节而造成的,以避免浪费不必要的时间。
欢迎指正对本手册的纰漏,提出宝贵意见。
mailto:zhuht@几个关键名词:Host(开发主机):即你的PC机,上面装有用于开发的Tornado,并架设了FTP服务器。
Target(目标机):VxWorks运行的PowerPC,我们目前使用MVME5100。
第一章 PowerPC及VxWorks的配置本章是对培训:“Tornado集成开发环境的操作及基于PowerPC/VxWorks的编程实例”的简单复习。
如果你已对其中内容熟悉,可以跳过本章。
以下的操作都是针对MVME5100而言的。
关于MVME5100的安装设置,请参考其Datasheet:MVME5100 Single Board Computer Installation and Use。
Step 1.准备10M(或100M)网线、串口线(注:串口线必须一端为RJ45接口,另一端为RS232- 9pin接口)各一根。
网线一端接到PowerPC的LAN1口,另一端接到HUB或Switch上;串口线的RJ45端接到PowerPC的DEBUG口,另一端接到自己PC上的RS232口。
如图1 -图 1 - 1注:请勿将串口线的RJ45口接到PowerPC的LAN1口,将网线接到了PowerPC的DEBUG口。
VxWorks基本OS介绍这里我就偷点懒,直接复制粘贴文档了。
可能会有一些图片无法显示,可以直接管我索要文档。
每一个被切换的程序实体就是“任务”。
每一个任务都有其自己的上下文——所谓上下文就是指任务在每一次被核心调度时所需要的CPU环境、系统资源。
在上下文的切换过程中,每一个任务的上下文被存在该任务的任务控制块中(TCB)。
◆执行的线程,也就是任务程序计数器;◆ CPU寄存器的内容和浮点寄存器中的内容;◆动态变量和程序调用所使用的堆栈;◆标准输入输出的I/O分配和错误;◆延时计时器;◆时间片计时器;◆核心控制结构;◆信号处理句柄;◆调试和性能监视值。
wind核心中使用了基于优先级抢占式的任务调度策略,但是用户也可以选择优先级轮转调度策略。
1.优先级抢占策略通过使用优先级抢占策略,每一个任务都会拥有一个优先级,这样内核就会确信将CPU资源分给了优先级最高的就绪任务。
这种方法之所以叫做抢占式的,是指任何运行的任务会被一个变成就绪状态而且优先级更高的任务打断,这时系统会保存当前任务的上下文并立即切换到高优先级的任务上下文,并且开始执行这个任务。
在图14.2所示的任务优先级抢占图中给出了优先级抢占的例子,例子中任务t1被优先级较高的任务t2抢占,而更高优先级的任务t3则抢占了t2的执行,当t3执行完后,t2开始继续执行,接下来t1在t2完成之后从被打断处继续执行。
VxWorks的wind内核支持256级优先级,由高到低分别是0到255。
任务创建的同时也就同时被赋予了相应的优先级,但是在任务执行的过程中,同样可以通过系统函数taskPrioritySet()设置某一个任务的优先级。
在VxWorks系统中,所有应用程序任务的优先级应该在100~250之间;至于驱动程序创建的任务的优先级可以位于51~99之间,系统网络任务tNetT ask的优先级默认值为50。
2.时间片轮转的调度策略如果没有时间片轮转任务调度策略,那么当同优先级的一个任务获得了CPU资源之后,它就会一直占用CPU资源直到完成执行,相同优先级的任务就会因为得不到CPU资源而不得不阻塞。
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等相兼容。