VxWorks介绍及编程
- 格式:doc
- 大小:81.50 KB
- 文档页数:11
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
1 VxWork介绍及编程
一.嵌入式操作系统VxWorks简介
VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的 F-16、FA-18 战斗机、B-2 隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。
WindRiver公司网址
实时操作系统和分时操作系统的区别
从操作系统能否满足实时性要求来区分,可把操作系统分成分时操作系统和实时操作系统。
分时操作系统按照相等的时间片调度进程轮流运行,分时操作系统由调度程序自动计算进程的优先级,而不是由用户控制进程的优先级。这样的系统无法实时响应外部异步事件。
实时操作系统能够在限定的时间内执行完所规定的功能,并能在限定的时间内对外部的异步事件作出响应。 分时系统主要应用于科学计算和一般实时性要求不高的场合。实时性系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。
VxWorks的特点
• 可靠性
操作系统的用户希望在一个工作稳定,可以信赖的环境中工作,所以操作系统的可靠性是用户首先要考虑的问题。而稳定、可靠一直是VxWorks的一个突出优点。自从对中国的销售解禁以来,VxWorks以其良好的可靠性在中国赢得了越来越多的用户。
• 实时性
实时性是指能够在限定时间内执行完规定的功能并对外部的异步事件作出响应的能力。实时性的强弱是以完成规定功能和作出响应时间的长短来衡量的。
VxWorks 的实时性做得非常好,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,它们造成的延迟很短。VxWorks 提供的多任务机制中对任务的控制采用了优先级抢占(Preemptive
Priority Scheduling)和轮转调度(Round-Robin Scheduling)机制,也充分保证了可靠的实时性,使同样的硬件配置能满足更强的实时性要求,为应用的开发留下更大的余地。
• 可裁减性 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
2 用户在使用操作系统时,并不是操作系统中的每一个部件都要用到。例如图形显示、文件系统以及一些设备驱动在某些嵌入系统中往往并不使用。
VxWorks 由一个体积很小的内核及一些可以根据需要进行定制的系统模块组成。VxWorks 内核最小为 8kB,即便加上其它必要模块,所占用的空间也很小,且不失其实时、多任务的系统特征。由于它的高度灵活性,用户可以很容易地对这一操作系统进行定制或作适当开发,来满足自己的实际应用需要。
对一个实时内核的要求
一个实时操作系统内核需满足许多特定的实时环境所提出的基本要求,这些包括:
多任务:由于真实世界的事件的异步性,能够运行许多并发进程或任务是很重要的。多任务提供了一个较好的对真实世界的匹配,因为它允许对应于许多外部事件的多线程执行。系统内核分配CPU给这些任务来获得并发性。
抢占调度:真实世界的事件具有继承的优先级,在分配CPU的时候要注意到这些优先级。基于优先级的抢占调度,任务都被指定了优先级,在能够执行的任务(没有被挂起或正在等待资源)中,优先级最高的任务被分配CPU资源。换句话说,当一个高优先级的任务变为可执行态,它会立即抢占当前正在运行的较低优先级的任务。
任务间的通讯与同步:在一个实时系统中,可能有许多任务作为一个应用的一部分执行。系统必须提供这些任务间的快速且功能强大的通信机制。内核也要提供为了有效地共享不可抢占的资源或临界区所需的同步机制。
任务与中断之间的通信:尽管真实世界的事件通常作为中断方式到来,但为了提供有效的排队、优先化和减少中断延时,我们通常希望在任务级处理相应的工作。所以需要杂任务级和中断级之间存在通信。
二.基本概念
关于BSP
BSP: Provides VxWorks with primary interface to
hardware environment.
作用:
• 在通电后,初始化硬件.
• 支持VxWorks和硬件驱动通信.
• 使hardware-dependent 和
hardware-independent在VxWorks系统中很好的结合. 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
3 • BSP用"make"来编译连接生成(Created),而不是用Tornado的工具.
• BSP和应用程序都可以在"make"或"tornade"上开发(developed)
• BSP被设置包括以下驱动:
中断控制interrupt controller,计时器timer(sys/aux),串口UART(serial),显示屏LCD,键盘Keyboard(opt),触摸屏touch-screen(opt).
前面三个是BSP的主要部分.
• BSP默认的download VxWorks RAM image方式是从ethernet.
• 串口电缆需要用来和开发板(COM1)通信,通过协议WDB.
VxWorks Image的种类:
• Loadable images.
• ROM-based
images---compressed/uncompressed.
• ROM-Resident images.
• VxWorks boot images---A VxWorks image designed to load another
VxWorks images containing application code (often refer to as
"boot code")
• "Burned" into ROM or loaded into Flash.
• Maybe execute in ROM/Flash (ROM-resident).
• Maybe execute out of RAM.
• VxWorks images---A VxWorks image containing "end-user"
code,Sub-types:
• Loadable VxWorks image--VxWorks images loaded
by VxWorks boot image.
• VxWorks ROM image--VxWorks image "burned" into
ROM or loaded into Flash.May execute in Flash.
VxWorks images consist of:
• Textsegment---executable instruction.
• Data segment---Initilized global and static
varibles.
• BSS.
启动顺序的一些概念
• The sequence of events which occur as power-up are a function
of type VxWorks image with will run.
• 处理器"跳"到再ROM或Flash中Boot-strap 程序的起点. 这个程序文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
4 主要有以下作用:
• 关闭中断(来自处理器)
• 初始化目标内存(target memory)
• 装载要运行的VxWorks image segments
• Jumps to code to place target in quiet state
• 启动顺序 Boot Sequence--Loadable VxWorks image
• Bootstrap code executes and loads text and data
segments of boot code(from ROM or Flash) into
RAM.具体执行如下:
• Boot code
compressed-Decompression during
copy
• Boot code uncompressed-copy
• Boot code is ROM-resident-copy
data segment only
• Boot program executes and loads VxWorks image
into RAM.Jumps to VxWorks load point.
• System initialization code statically linked
into loaded VxWorks image executes and
completes initialization.
• Startup Sequence--VxWorks 初始化
做以下工作:
• Place hardware environment in a quiet state.
• Initalize and start the wind kernel
• Spawn a tast to complete system initialization
• System initialization task will initialize support for end-user
specified facilities,and start the end-user's application
三.系统启动顺序
• ROM中运行的VxWorks Image
VxWorks在ROM中运行,即写入ROM中的VxWorks Image是非压缩的,不需要解压,系统直接跳到ROM的首地址,运行VxWorks
文件romInit.s中的romInit()---->文件bootInit.c中的romStart()---->文件bootConfig.c中的usrInit()----->sysHwInit()----->usrKernelInit()----->KernelInit(usrRoot,...)
• RAM中运行的VxWorks Image