您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > VxWorks操作系统指南
目录632.7.应用示例分析.................................................................612.5.应用软件开发指导.............................................................612.4.VxWorks系统任务.............................................................602.3.板级支持包BSP...............................................................572.2.应用系统配置.................................................................552.1.系统启动.....................................................................542.VxWorks应用指导.................................................................511.9.网络通信.....................................................................511.8.POSIXMemory-locking接口.....................................................501.7.POSIX时钟和定时器..........................................................491.6.看门狗定时器(WatchdogTimers)................................................461.5.中断服务代码.................................................................181.4.任务间通信...................................................................51.3.任务..........................................................................51.2.VxWorks操作系统内核...........................................................41.1.VxWorks操作系统简介...........................................................41.VxWorks操作系统介绍...............................................................关键词:RTOSPOSIXVxWorksTornado摘要:本文档对实时操作系统作了简要介绍,并详细描述了Vxworks内核和运行环境的基本原理,并概述了系统配置、系统接口等方面的内容。1.VxWorks操作系统介绍1.1.VxWorks操作系统简介现代的实时操作系统主要增加了支持多任务和任务间通信的概念。多任务环境允许一个实时应用作为一个独立的任务创建。在VxWorks里,任务间通信机制依靠信号量,消息队列,管道及socket(实现网络透明传输)实现。实时操作系统的另外一个主要功能就是硬中断处理。为使中断得到尽快响应,VxWorks的中断服务程序(ISRs)有自己单独的context,它与其他任务的context不在一起。本文主要讨论了多任务内核,任务机制(facilities),任务间通信及中断处理机制,这些都是VxWorks运行环境的核心内容。VxWorks操作系统的基本构成模块包括以下部分:高效的实时内核WindVxWOrks实时内核(Wind)主要包括基于优先级的任务调度、任务同步和通信、中断处理、定时器和内存管理。PDFcreatedwithFinePrintpdfFactoryProtrialversion兼容实时系统标准POSIXVxWOrks提供接口来支持实时系统标准P.1003.1b.I/O系统VxWOrks提供快速灵活的与ANSI-C相兼容的I/O系统,包括UNIX的缓冲I/O和实时系统标准POSIX的异步I/O。VxWOrks包括以下驱动:网络---网络设备(以太网、共享内存)管道---任务间通信RAM---驻留内存文件SCSI---SCSI硬盘,磁碟,磁带键盘---PCx86键盘(BSP仅支持x86)显示器---PCx86显示器(BSP仅支持x86)磁碟---IDE和软盘(BSP仅支持x86)并口---PC格式的目标硬件本机文件系统VxWorks的文件系统与MS-DOS、RT-11、RAM、SCSI等相兼容。网络特性VxWorks网络能与许多运行其它协议的网络进行通信,如TCP/IP、4.3BSD、NFS、UDP、SNMP、FTP等。VxWorks可通过网络允许任务存取文件到其它系统中,并对任务进行远程调用。虚拟内存(可选单元VxVMI)VxVMI主要用于对指定内存区的保护,如内存块只读等,加强了系统的健壮性。共享内存(可选单元VxMP)VxMP主要用于多处理器上运行的任务之间的共享信号量、消息队列、内存块的管理。驻留目标工具Tornado集成环境中,开发工具工作于主机侧。驻留目标外壳、模块加载和卸载、符号表都可进行配置。Wind基类VxWorks系统提供对C++的支持,并构造了系统基类函数。工具库VxWorks系统向用户提供丰富的系统调用,包括中断处理、定时器、消息注册、内存分配、字符串转换、线性和环形缓冲区管理,以及标准ANSI-C程序库。性能优化VxWorks系统通过运行定时器来记录任务对CPU的利用率,从而进行有效地调整,合理安排任务的运行,给定适宜的任务属性。目标代理PDFcreatedwithFinePrintpdfFactoryProtrialversion目标代理可使用户远程调试应用程序。板级支持包板级支持包提供硬件的初始化、中断建立、定时器、内存映象等。VxWorks仿真器(VxSim)可选产品VxWorks仿真器,能模拟VxWorks目标机的运行,用于应用系统的分析。1.2.VxWorks操作系统内核VxWorks内核(wind)的基本功能可以分为如下几大类:u任务u任务间通信u中断服务程序u定时器服务(watchdogtimers)uPOSIX时钟和定时器uPOSIXMemory-Locking接口在以下各节中将对VxWorks内核的各类功能分别进行了比较详细的描述。1.3.任务在VxWorks中,任务共享大多数系统资源,所以必须提供足够的隔离使它们能各自独立运行。任务是代码运行的一个映象,从系统角度看,任务是竞争系统资源的最小运行单元。任务可以使用或等待CPU、I/O设备及内存空间等系统资源,并独立于其它任务,与它们一起并发运行。同时有独立的上下文来控制个别线程的执行。1.3.1.任务结构实际应用中多任务能更好的对客观世界的事件作出反应。VxWorks实时内核—wind,提供了基本的多任务环境。每个任务都有自己的上下文(context),记录了任务运行时的的CPU环境和系统资源状况,context切换时,它被保存在任务控制块中(TCB),以备下次调用时恢复运行环境。context包括:任务号,CPU寄存器和(任选)浮点寄存器,可变栈及函数调用,标准输入输出,延迟时间,时间片大小,内核控制结构,信号处理函数(signalhandlers),调试和性能监测。1.3.2.任务状态和状态迁移实时系统最基本的状态有以下四种:(见Figure2-1状态迁移图)就绪态:(ready)任务只等待系统分配CPU资源阻塞态:(pended)任务需等待某些资源而被阻塞挂起态:(suspended)任务不能运行状态,一般在调试时出现此状态。不影响状态迁移只影响任务运行(延迟态:(delayed)任务被延迟时所处状态PDFcreatedwithFinePrintpdfFactoryProtrialversion资源。在wind中,默认算法是优先级算法,但也可以选择轮转法(round-robin)。下面Table2-2给出了任务分配控制的程序列表:---------------------------------------------------------------------------------------CALLDESCRIPTIONPDFcreatedwithFinePrintpdfFactoryProtrialversion()Controlround-robinschedulingtaskPrioritySet()ChangethepriorityofatasktaskLock()DisabletaskreschedulingtaskUnlock()Enabletaskrescheduling------------------------------------------------------------------------------------------1.3.3.1.优先级抢占方式抢占允许/禁止:如果任务设置了抢占允许位,当此任务处于运行态时,如有一高优先级任务因某个系统调用由阻塞态或挂起态迁移为就绪态,则此高优先级任务会立即抢占当前任务的运行;如设为抢占禁止,则当前任务不可被处于就绪态的高优先级任务所抢占,继续运行到阻塞、挂起或改变了抢占设置为止。wind内核有256个优先等级,从0---255。0的优先级最高,255最低。任务在创建的时候被分配一个优先级。在程序运行中,可以通过taskPrioritySet()来改变任务的优先级。1.3.3.2.轮转方式为防止在同优先级的一组任务中,某任务一直占有CPU而使其他任务无法得到CPU资源,采用了类似于时间片轮转的方式。某个任务在它的时间片用完后如果有其它同等级任务在就绪队列中,该任务必须让出CPU控制权,如果该任务用完它的时间片后没有同优先级任务在就绪队列中,则它可以继续运行。为任务分配时间片用kernelTimeSlice()函数,它有一个参数来决定任务执行多长时间后需要将处理器让给其它同优先级任务,同时该任务被放到同优先级队列的队尾。每个任务有一个定时器来监视任务运行的时间,如果时间片还没有用完的时候有高优先级任务抢占了CPU,则定时器将该任务当前所用的时间记录下来,等高优先级任务执行完后接着让其执行完剩余的时间。1.3.3.3.优先级锁(任务锁定)当某任务调用taskLock()后,禁止任何任务在它运行的时候抢占CPU控制权。如果加锁的任务阻塞或挂起,则调度会选择就绪队列中最高优先级的任务执行,当该加锁任务去阻塞并开始执行后,它又处于不可被抢占地位。注意:给任务加锁是防止其它任务抢占CPU而不是防止中断抢占。taskUnlock()使任务又成为可被抢占方式。1.3.4.任务控制下面给出VxWorks任务程序,
本文标题:VxWorks操作系统指南
链接地址:https://www.777doc.com/doc-6495682 .html