Vxworks
操作系统(概要)
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
一
嵌入式操作系统概述(
5 Min
)
1.
嵌入式操作系统的形成
l
无操作系统的嵌入程序阶段
这一阶段的嵌入式系统是以可编程控制器的形式、以单芯片为核心的系统,同时具有与一些监测、伺服、指示设备相配合的功能。这种系统大部分应用于一些专业性极强的工业控制系统中,一般没有明显的被称为操作系统(
RTOS
)的支持,而是通过汇编语言编程对系统进行直接控制,运行结束后清除内存。这一阶段系统的主要特点是系统结构和功能都相对单一,针对性强,但无操作系统支持,几乎没有用户接口。
l
简单监控式的专用操作系统阶段
这一阶段的嵌入式系统主要以嵌入式处理器为基础、以简单监控式操作系统为核心。系统的特点是处理器种类繁多,通用性比较弱;系统开销小,效率高;系统一般配备系统仿真器,具有一定的兼容性和扩展性;操作系统的用户界面不够友好,其主要用来控制系统负载以及监控应用程序运行。
l
通用的嵌入式操作系统阶段
以通用型嵌入式实时操作系统(
RTOS
)为标志的嵌入式系统。如
VxWorks
、
pSOS
、
OS-9
、
Windows CE
就是这一阶段的典型代表。这一阶段系统的特点是能运行在各种不同类型强大的微处理器上;具有强大的通用型操作系统的功能,如具备了文件和目录管理、多任务、设备支持、网络支持、图形窗口以及用户界面等功能;具有大量的丰富的应用程序接口(
API
)和嵌入式应用软件丰富。
2.
嵌入式操作系统特点概述
l
可移植性
l
可裁减性
l
可靠性
l
实时性
l
体积小、占用资源少
3.
现有的嵌入式操作系统简介
l
对几种主流操作系统进行简要介绍
²
Windows Embedded
族
u
Windows Embedded
操作系统产品家族由
2
种操作系统组成:
WinCE
、
WinXP Embedded
u
总体来看,
Windows CE .NET
是一个可定制的实时操作系统,能够用来快速构建下一代的智能、小巧的互联设备。
Windows CE .NET
可以运行在多种中央处理器(
CPU
)上,适用于各种设备类型:移动手持设备、瘦客户机、
IP
电话以及自动化工业控制设备。
200k
u
Windows XP Embedded
是一个能够以组件化形式为快速开发可靠和先进的嵌入式设备提供
Windows
能量的操作系统和开发平台。包括
4.8MB
的超小型基本系统、
14MB
的基本
Win32
系统。
u
对于任何一种
Windows
嵌入式操作系统,带有开发许可证的开发工具的销售价格均为
995
美元。运行时许可证的价格取决于设备的具体销售数量。
²
QNX
u
QNX
软件系统有限公司
u
QNX
和
WinCE
都似乎更注重于
GUI
图形界面方面的东西。
u
QNX
机器自身之间通信使用的协议,将多台
QNX
物理机联成一体,在各物理机之间共享各种资源,使各物理机联结成为一台逻辑机。对于需要分布式并行计算的应用系统而言,
QNX
系统的这种特点无疑提供了极大的方便。
u
QNX
还有一些优点使他更为完善。
QNX
是少数支持图形用户界面的实时操作系统之一。
²
VxWorks
²
pSOS
²
Palm OS
u
应用于
PDA
领域,具有良好的
API
和较全面的开发文档
²
Nucleus
u
Nucleus
是美国著名厂商
ATI
公司的
RTOS
产品。它提供实时内核(
Nucleus PLUS
),
u
Nucleus
最大的特点是全部提供源代码,免去用户购买
License
和付
Royalties
。
²
各种嵌入式
linux
²
uC
-
OS
u
教学性操作系统,实时
二
Vxworks
操作系统概述(
15 Min
)
1.
vxworks
系统介绍与应用范例
l
Vxworks
系统背景介绍
VxWorks
是美国
Wind River System
公司推出的一个实时操作系统。
WRS
公司组建于
1981
年,是一个专门从事实时操作系统开发与生产的软件公司,该公司在实时操作系统领域被世界公认为是最具有领导作用的公司。
1984
年
WRS
公司推出它的第一个版本
--VxWorks 1.0.1
,在
1997
年推出了它的最新版本
VxWorks 5.3.1
。
从
1995
年以后,
WRS
公司推出了一套实时操作系统开发环境
-- Tornado
。
Tornado
集成环境提供了高效明晰的图形化的实时应用开发平台,它包括一套完整的面向嵌入式系统的开发和调测工具。
以前国内研究所一直用的
VRTX
。因为
VRTX
是最早商业化的
RTOS
,
60
年代就开始卖了,所以全是汇编,难以更改和使用,还有就是对
TCP/IP
的支持一直不好,
vxWorks
是从
VRTX
公司出来的人做的,号称
make VrtX Works!
,所以就有了
vxWorks
的名字。
l
Vxworks
系统应用举例
²
航空航天
²
电信网络
²
工业控制
²
仪器仪表
2.
vxworks
操作系统体系结构(图)
l
bsp
²
bsp
的作用
BSP
是系统用来管理外设的部分,由两部分组成:初始化、驱动程序。
所谓初始化是指从系统上电复位开始直到
wind kernel
和
usrRoot
根任务启动的这段时间,系统的执行过程。
初始化包括:
CPU Init
、
Board Init
、
System Init
。
CPU Init
初始化
CPU
的内部寄存器。
Board Init
初始化智能
I/O
的寄存器,将
device
打通。
System Init
为系统的运行准备数据结构,进行数据初始化。
驱动程序就是一些包含
I/O
操作的子函数。驱动程序的特点是不能自动执行,只能被动调用。调用可以有三种方式:任务直接调用、任务调用
System Call
、任务调用服务。
l
kernel
²
内核是与硬件相关的,因为它要对
CPU
进行操作
l
函数库与应用程序
①
画出整体结构图并详细讲解(分层,逐步显示图形)
②
对
vxworks
系统的模块化进行讲解(应用程序模块化、操作系统内核模块化
…
)
3.
vxworks
系统内核性能讲解(详细)
l
微内核
²
VxWorks
的核心,被称作
wind
,包括多任务调度(采用优先级抢占方式),任务间的同步和进程间通信机制以及中断处理,看门狗和内存管理机制。
²
微内核体系结构,这使得核心小巧而可靠,易于
ROM
固化,并可模块化扩展。微内核结构系统中,
OS
服务模块在独立的地址空间运行,所以,不同模块的内存错误便被隔离开来。但它也有弱点,进程间通信和上下文切换的开销大大增加。相对于大型集成化内核系统来说,它必须更多的依靠进行系统调用来完成相同的任务。
²
内核对于用户而言是不可见的,系统中不会显示
“
内核进程
”
或
“
内核任务
”
,只能通过系统调用
l
进程调度
²
进程、任务
I.
Vxworks
中更为强调的是任务而不是进程
II.
画图,举例
III.
一个多任务环境允许实时应用程序以一套独立任务的方式构筑,每个任务拥有独立的执行线程和它自己的一套系统资源。进程间通信机制使得这些任务的行为同步、协调。
IV.
task
的组成
²
vxworks
的优先级
I.
系统程序和普通应用程序的界限是非常含糊的,一切依靠优先级来进行调度
II.
Wind
内核划分优先级为
256
级(
0~255
)。优先级
0
为最高优先级,优先级
255
为最低。越高越小。
Linux
中当任务被创建时,系统根据给定值分配任务优先级。
III.
然而,优先级也可以是动态的,它们能在系统运行时被用户使用系统调用
taskPrioritySet()
来加以改变,但不能在运行时被操作系统所改变。
²
vxworks
中的任务调度(切换)机制,要和
linux
进行一下对比。画出图。
I.
任务状态图
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
a)
任务产生后进入
suspend
状态,没有分配资源
b)
pend
态是因为缺乏某种资源
c)
delay
态用于占有资源但由于优先级低而等待
d)
ready
态即运行态,占有
CPU
II.
任务调度过程
a)
基于优先级抢占
(priority-based preemptive scheduling.) taskPrioritySet( )
b)
分时(
round-robin
)。
kernelTimeSlice( ),
c)
任务调度过程中的优先级反转
i.
据报道,在
1997
年
7
月实施的“火星登陆”任务中,飞行器经历了多次系统重启,并导致数据丢失。据称,当采用优先级调度的
VxWorks
实时系统内核中的固有优先级机制关闭时,“优先级倒置”就将引发上述问题。报道指出,如果在火星登陆任务中采用运行前调度器,就能避免这些问题。
d)
优先级反转的解决方案
III.
linux
中的进程调度
a)
task_struct
、
counter
、
nice
、
policy
、
rt_priority
b)
普通进程:动态优先级的基于优先级抢占
i.
task_struct
中的
counter
记录剩余的时间片,动态优先级,为
0
时被挂起。
ii.
nice
进程的静态优先级,保持不变,用户可改变。
iii.
linux
综合考虑动、静态优先级,用函数
goodness()
来衡量一个处于可运行状态的进程值得运行的程度。该函数综合了动、静态优先级,给每个处于可运行状态的进程赋予一个权值
(weight)
,调度程序以这个权值作为选择进程的唯一依据。
c)
实时进程:
FIFO
或
RR
i.
根据
policy
从整体上区分实时进程和普通进程。从硬件设备上发来的中断一般都是
实时进程。
SCHED_FIFO
;
SCHED_RR
;
SCHED_OTHER
ii.
实时进程的优先级高于普通进程
l
存储管理
²
内存管理与实时性的关系
²
嵌入式系统中对实时性的保证,要求内存分配过程要尽可能地快。因此在嵌入式系统中,不可能采用通用操作系统中复杂而完善的内存分配策略,一般都采用简单、快速的内存分配方案。当然,对实性要求的程序不同,分配方案也有所不同。如果是系统对于实时性和可靠性的要求极高,不能容忍一点延时或者一次分配失败,当然需要采用静态分配方案,也就是在程序编译时所需要的内存都已经分配好了。
²
静态分配方案必须导致很大的浪费,因为内存分配必须按照最坏情况进行最大的配置,而实际上在运行中可能使用的只是其中的一小部分;而且在硬件平台不变的情况下,不可能灵活地为系统添加功能,从而使得系统的升级变得困难。
²
VxWorks
对内存的使用不是段页式的管理(页式管理要有程序-内存的映射,这会严重影响实时性),而采用的是分区管理
Flat Mode
:静态分配的
IMAGE
占用空间(
.code
、
.data
、
.bss
)、系统的动态空间(
wind kernel
创建的
REGION#0
)、用户的动态空间。例如,
VxWorks
采用简单的最先匹配如立即聚合方法
²
²
vxworks
中的程序执行过程与
linux
不同,先通过
ld
将程序
load
到用户内存区中,而后再通过输入任务名执行。
²
VxWorks
没有清除碎片的功能,因为嵌入式实时系统找不到一个合适的时间把正在运行的程序暂停下来清理内存,例如
Windows NT
在夜间有时会自己响个不停,就是在清理碎片,所以在实时系统的设计中我们只能是来避免碎片。
²
VxVMI
为带有
MMU
的目标板提供了虚拟内存机制。
²
与
linux
的比较
l
文件系统
²
VxWorks
提供的快速文件系统适合于实时系统应用。它包括几种支持使用块设备(如磁盘)的本地文件系统。这些设备都使用一个标准的接口从而使得文件系统能够被灵活地在设备驱动程序上移植。
VxWorks
也支持
SCSI
磁带设备的本地文件系统。
VxWorks I/O
体系结构甚至还支持在一个单独的
VxWorks
系统上同时并存几个不同的文件系统。
²
VxWorks
支持几种文件系统:
I.
dosFs
II.
rt11Fs
III.
rawFs
IV.
tapeFs
。
V.
nfs
VI.
cdromfs
²
另一方面,普通数据文件,外部设备都统一作为文件处理。它们在用户面前有相同的语法定义,使用相同的保护机制。这样既简化了系统设计又便于用户使用。
²
tffs
4.
vxworks
的开发体系构架
l
target server
与
target agent
²
Target server
与上层进行通信时采用的是
WTX
(
Wind River Tool eXchange
)协议,与目标板中的
target agent
通信则采用
WDB (Wind DeBug)
协议,
WTX
协议一般只应用于主机内部,而
WDB
协议则要通过具体的物理线路进行传输。
²
讲一下
Serial
(
SLIP
)、
RPC
、
pipe
、
netrom
。
²
讲一下通过
ftp
、串口时的过程
l
全面的编程接口
²
bsp API
²
vxworks
系统
API
²
posix
接口
²
标
c\c++ API
l
模块化配置,可裁减性好
l
完善的网络功能
²
picture
l
图形界面
三
Vxworks
与嵌入式
Linux
操作系统分析与比较(
15 Min
)
1.
系统性能的分析与比较
l
实时性与非实时性
l
速度、效率。
l
系统大小以及对硬件资源如内存
…
的要求
2.
开发方式比较
l
入门难度
l
内核结构
l
开发工具
l
编程结构
l
调试方式以及工具(
wind view…
)
I.
wind view
的图
3.
网络资源
4.
价格
转载于:https://blog.51cto.com/qingfengjd/95769