前 言
VxWorks 是美国 Wind River System 公司的产品,在通信、网络、工业、消费电子、军事
等领域都有广泛的应用。本书介绍了嵌入式实时多任务操作系统 VxWorks 及其主机环境
Tornado,并实践性地描述了其上的程序开发过程。
本书主要面向有一定 VxWorks 经验或嵌入式经验的软件开发人员,但是部分章节对初学
者也非常有帮助,如一些基本概念和一般开发过程。希望能帮助 VxWorks 软件开发人员更好
地使用平台,并理解其内部工作机制,扩展平台功能。
本书主要针对 VxWorks 基本平台进行描述。而 Wind River 的其他扩展产品都依赖于该平
台,并和特定应用领域有关,对此,书中只做简单介绍,如 WFC、VxMP、VxFusion 和 VxDCOM
等。另外还有丰富的第三方产品,书中也不做描述。
本书不特别针对某个硬件平台,主要进行硬件无关性描述。如果有硬件平台假设,则为
PC104/486 或 MFC5272。软件平台介绍的是 VxWorks 5.4 版本和 Tornado 2.0 版本。
本书相对其他 VxWorks 书籍和参考资料的优点如下。
1. 最明显的特点就是中文化,关于 VxWorks 的参考资料,很多都是英文的,不利于开
发人员快速阅读,建立基本概念。
2. 本书不是简单的手册翻译,而是作者数年宝贵开发经验的总结,有价值的东西很明显。
虽然手册是主要的参考资源,但对于学习 VxWorks 来说,却太过生硬,和实际的开发过
程不对应。
3. 本书是 VxWorks相关主题的有机综合,避免了同一个主题分散在多本书籍,不便参考。
4. 书中各处都有对 VxWorks相关资源的参考指导,可作为读者查阅各种资料的总索引。
5. 书中的所有内容都融合了作者的经验和理解,对读者的实践过程有很强的指导作用。
6. 常见问题(FAQ)的收集,可以帮助读者及时地解决开发过程中遇到的问题。
本书共包括 10 章,各章节的排列是相对 VxWorks 开发的自然分类,与 VxWorks 的组件
结构对应,部分章节按库条目组织,而且只对常用库函数做描述,注重基本原理的介绍。
第 1 章“WindRiver”,介绍 Wind River 公司及其产品。让读者了解 VxWorks 的背景、应
用领域和成功范例等,以及 VxWorks 在 WindRiver 产品系列中的基础地位和可能配 其应用
的扩展产品。
第 2 章“Tornado”,介绍 VxWorks 的主机开发工! Tornado,让读者"#工作环境的第
一$%。
第 3 章“VxWorks”,介绍 VxWorks 操作系统,描述一些基本组件。
第 4&8 章,’(介绍 VxWorks 各个重要的组件,包括多任务环境、内)*理、IO 系统
+包括,-设./、0件系统和网络通信等。
第 9 章“"#开发环境”,12读者"#基于硬件的嵌入式34开发环境,5述了 BSP
的基本概念和定制67,89了 BootRom 的"#,并列:了;<实例。
第 10 章“程序开发实践”,描述 VxWorks 程序开发实践中=要特别注>的内?,包括
Tornado 扩展、@A实践、B程实践和CD实践等,E领读者进入FG的 VxWorks 程序开发。
”YZ读者可以进一6[\的]^。
”_‘要a或注>。
书中-H和I式89。
1. J章KL一节为常MNO解P,Q FAQ,NO描述用RS,。
2. “[ ]”内为T0或中0的UVW。
3. “+/”中为相关的扩展解X。
4. “
5. “
6. 0中的bc部分用de_‘,DOS fg与 Shell 中的0,用hi_‘。
本书jklm主B,主要的Bn人员有op军+q成第 6 章、第 8 章、第 9.7 节和第 10.4.3
r节的n作/和ks+q成第 1 章和第 5 章的n作/等。在本书的n作过程中,tu了“电
子产品vw”xy+http://bbs.edw.com.cn/网z的{|,任"}、于~、姜海涛、李庆华、
郝刚和k磊等U事的大力支持,以及孙运权老师的教学实践"议,在此一并_‘感谢。在B
n过程中,我们力求精益求精,但难免)在不足之处,恳请读者予以1G。如果在使用本书
时遇u任何NO,可以发 E-mail u amine@263.net,我们将及时Y您回复。或者直接与本书
的责任B辑联系,本书责任B辑的 E-mail 是 tangqian@ptpress.com.cn。
B 者
2004 年 3 月
第 1 章 WindRiver
1.1 风河系统公司简介
8u嵌入式技术,就不能不提及美国风河系统公司+简称风河公司/Wind River System,
及其开发的著名嵌入式实时操作系统 VxWorks。风河系统公司于 1981 创#,总部设在美国
加利}尼亚的 Alameda。它是全球领先的嵌入式软件与服务提供商,也是业w惟一提供面向
行业市场的嵌入式软件平台的厂商。它所提供的嵌入式软件平台包括集成化的实时操作系统、
开发工!和技术。风河公司的产品和专业服务已经在许多市场领域tu认可,主要包括空间
技术、国防、汽车、消费电子、工业制品和网络基础设施领域。vw各地的电子设.制造商
普遍把风河公司的嵌入式软件产品作为行业标准。风河公司的软件能够支持现在市场上Z售
的超过 90%的微处理器,其嵌入系统已被应用在大量的硬件和软件中,包括从激光打$机u
控制战斗机发动机的自动刹车系统等。风河公司的产品可以帮助客户快速、低风险地创"高
可靠性、复杂的实时应用系统。据]^_9,风河系统公司拥有 30%以上的商业化嵌入式软
件市场。
1983 年,风河公司推Z了业w第一个实时操作系统 VxWorks;1995 年,推Z了嵌入式
软件领域的第一个集成开发环境[Integrated Development Environment] Tornado。如今,风河公
司又率先推Z了面向行业市场的集成化嵌入式平台[IEP],Q Wind River Platforms。
1.2 实时操作系统 VxWorks 简介
VxWorks 操作系统是风河公司设计开发的一种嵌入式实时操作系统[RTOS],是嵌入式开
发环境的关键组成部分。良好的持续发展能力、高性能的内核以及z好的用户开发环境,使
VxWorks 在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被
广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通
信、军事演习、弹道制2和飞机2航等。在美国的 F-16 、FA-18 战斗机,B-2 隐形轰炸机和
爱国者2弹上,甚至连 1997 年 4 月在火星_面登陆的火星探测器上也使用u了 VxWorks 操
作系统。
VxWorks 是一个!有可伸缩、可裁剪、高可靠性,U时适用于所有流行目标 CPU 平台
的实时操作系统。所谓可伸缩性1 VxWorks 提供了超过 1800 个应用B程接g[API]供用户自
行选择使用;可裁剪性1用户可以根据自己的应用=求对 VxWorks 进行配置,产生!有各种
不U功能集的操作系统映像;可靠性1能够胜任一些诸如飞行控制这样的关键性任务。
VxWorks 包括一个微内核、强大的网络支持、0件系统、I/O 系统、C++支持的各种模块。与
此U时,VxWorks 还支持超过 320 家的 作伙伴公司的第三方产品。
VxWorks 的主要特a如下。
l 高性能的微内核设计
VxWorks 的微内核!有全部实时特性,包括迅速的多任务@度、中断支持以及U时支持
抢占式@度和时间片轮转@度。与此U时,该微内核还!有系统负担r、对外部事件的响应
时间确定等特a。VxWorks 提供了广泛的任务间通信机制,包括共享内)、消息队列、Sockets、
远程过程@用[RPC]和信H量[Semaphore]等。提供的信H量有 3 种:二进制+也称作二值/
信H量、计数信H量和互斥信H量。
l 可裁剪的运行软件
VxWorks 在设计之初就!有可裁剪特性,使t开发者可以对操作系统的功能、大r进行
增减,从而为自己应用程序保留了更多的系统]源。例如,在深层嵌入式应用中,操作系统
可能只有几十 KB 的)储空间;而对于一些高端的通信应用,几乎所有的操作系统功能都可
能=要。这就要求开发者能够从 100 多个不U的功能选项中生成适用于自己应用的操作系统
配置。这些独#的模块既可以用于产品中,也可省去。利用 Tornado 的工程项目*理工!,
可以十分轻地对 VxWorks 的各种功能选项进行增减。
l 丰富的网络支持
VxWorks 是第一个集成标准 TCP/IP 网络功能的实时操作系统。u目前为止,VxWorks
的 TCP/IP 协议支持K新的 Berkeley 网络协议。
l POSIX1003.1b 兼容
VxWorks 支持 POSIX 1003.1 规范的基本系统@用。包括进程原语、0件目录、I/O 原语、
语言服务和目录*理等。另外,VxWorks 还遵循 POSIX 1003.1b 实时扩展标准,包括异6 I/O、
计数信H量、消息队列、信H、内)*理+页面锁定/和@度控制等。
l BSP 移植
风河公司提供了大量预制的、支持许多商业主板及评估板的 BSP。U时,VxWorks 的开
放式设计以及高度的可CD性使t用户在使用不U的目标板进行开发时,所做的CD工作量
非常r。u目前为止,风河公司提供了超过 200 个的 BSP,当用户在为自己的目标板开发 BSP
时,可以从风河公司的标准 BSP 中选一个K接近的来加以修改。
l 操作系统可选附件
为了扩展 VxWorks 的功能,Wind River 公司还提供了一些可选附件,包括 BSP 开发工!
包、支持 Flash 0件系统的 TrueFFS 组件、用于虚拟)储*理的 VxVMI 组件、用于支持多处
理器的 VxMP 组件和 VxFusion 组件,以及各种图形、网络方面的组件。
l 可靠性
操作系统的用户希望在一个工作稳定、可以信赖的环境中工作,所以操作系统的可靠性
是用户首先要考虑的NO。而稳定、可靠一直是 VxWorks 的一个突Z优a。自从对中国的销
售解禁以来,VxWorks 以其良好的可靠性在中国赢t了越来越多的用户。
l 实时性
实时性是1系统能够在限定时间内,执行q规定的功能并对外部的异6事件作Z响应的
能力。实时性的强弱是以q成规定功能和做Z响应时间的长短来衡量的。
VxWorks 的实时性做t非常好,其系统本身的开销很r,任务@度、任务间通信和中断
处理等系统公用程序精练而高效,它们造成的延迟很短。VxWorks 提供的多任务机制对任务
的 控 制 采 用 了 优 先 级抢 占 @ 度[Preemptive Priority Scheduling] 和 轮 转 @ 度[Round-Robin
Scheduling]机制,也充分保证了可靠的实时性,使U样的硬件配置能满足更强的实时性要求,
为应用的开发留下更大的余地。
l 多任务
j于F实vw事件的异6性,嵌入式系统能够运行许多并发进程或任务是很重要的。
VxWorks 的多任务环境提供了一个较好的对F实vw的匹配,因为它允许对应于许多外部事
件的多任务执行。系统内核通过Y这些任务分配 CPU 时间来获t并发性。
l 抢占调度
F实vw的事件!有继承的优先级,在分配 CPU 的时候要注>u这些优先级。基于优先
级的抢占@度,任务都被1定了优先级,在能够执行的任务+没有被挂起或G在等待]源/
中,优先级K高的任务被分配 CPU ]源。换句话8,当一个高优先级的任务变为可执行态,
它会#Q抢占当前G在运行的较低优先级的任务。
l 任务间的通信与同步机制
在一个实时系统中,可能=要多个任务协Uq成某个功能。系统必须提供这些任务间的
快速且功能强大的通信机制。内核也要提供为了有效地共享不可抢占]源或临w区所=的U
6机制。VxWorks 中提供了信H量、消息队列和事件等机制来实现任务间的通信与U6。
l 任务与中断之间的通信机制
尽*F实vw的事件通常作为中断方式u来,但为了提供有效的排队、优先化和减少中
断延时,通常希望在中断服务程序[ISR]中仅作一些必要的处理,其他的处理工作尽可能3Y
某个特定的上层任务来处理。所以,任务和 ISR 之间=要)在通信机制。信H量和消息队列
U样可以实现该功能。
1.3 Wind River 的产品系列
风河公司提供了嵌入式系统开发的一系列产品,包括操作系统、软件开发@A工!、各
种软件模块、BSP、参考板、硬件开发@A工!等。
l 集成开发环境 Tornado
Tornado 是风河公司推Z的图形化的开发工!,包括@A器 CrossWind、命令行w面 Wind
Shell、]源[看器 Browser、模拟器 Simulator 等工!。使用 Tornado 及其开发@A工!,用
户可以轻地B译生成 BootRom,创"并配置 VxWorks,B辑、B译、下载和@Abc,随
时[看目标机的系统]源,帮助用户缩短34式开发的周期。
l 单独的开发工具
† visionWARE:是一个高级的软件开发工!,主要用于开发硬件控制、操作部分的b
c。使用 visionWARE,用户可以加快并简化对目标机的诊断和初始化部分bc的
Bn。
† diab C/C++B译器:为了实现更好的bc优化和支持更多的 CPU,风河公司提供了
diab B译器,可以使t嵌入式程序更!可靠性和灵活性,提供更快速、紧凑的目标
c。
† TurboJ:TurboJ 是一个先进的 Java B译器,能把 Java 的,节c转换成原c。在
VxWorks 上运行 Java 程序,传统的方式是使用 Java 虚拟机 JVM 进行,节c的解X
执行,而对于使用 TurboJ B译过的程序,其执行速度可以提高约 10 倍。
† SingleStep:SingleStep 是个源c级的@A器。对于一个开发r组,SingleStep 可以帮
助用户进行硬件@A、设.驱动程序和 BSP 的开发、硬件和软件的集成、嵌入式应
用程序的开发@A。
† visionClick:通过与 visionICE 或 visionProbe 等硬件的结 使用,visionClick 可以
方便开发者对目标机硬件环境进行@A,包括 BootRom、VxWorks 和应用程序的@
A, Flash 的擦n等,特别适用于设.驱动程序和 BSP 的开发。visionClick 是一个
在主机上运行的软件,=要特定硬件设.的支持。
† visionProbe:是一个硬件仿F器,它通过并g连接开发主机,通过JTAG 或 BDM 接
g连接目标机,从而实现在主机上对目标机的 BootRom、VxWorks 和应用程序的@
A,Flash 的擦n等。
† visionICE:是一个硬件仿F器,它通过网g连接开发主机,通过 JTAG 或 BDM 接
g连接目标机,从而实现在主机上对目标机的 BootRom、VxWorks 和应用程序的@
A,Flash 的擦n等。比 visionProbe 功能更强大。
† Wind Power IDE:是一个功能强大的开发环境,可用于硬件、固件和应用程序的开
发。通过提供更高程度的可视化和自动化,Wind Power IDE 可以帮助不U的开发人
员快速简单地启动硬件、开发 BSP 和创"独#的应用程序。
† Wind Power ISS :这是一个1令集的模拟工!,通过使用 Wind Power ISS ,开发者
可以在硬件环境还不!.的情况下运行bc,在硬件]源有限的情况下运行和测A
bc。Wind Power ISS 是基于 Wind Power IDE 的。
† Wind Power ICE :这是一个基于 JTAG 接g的硬件仿F器,通过多个 JTAG 设.的
串行连接,可以实现多内核、多会话的硬件@A,适用于从硬件u应用程序整个开
发阶段的@A。
† SNiFF+:对于在 Unix 或 Windows 平台上开发应用程序的软件工程师来8,当bc
量很大+100KB u 5MB 的bc行/,或使用了多种语言+如 C、C++、Java 和 ADA
等/时,SNiFF+是一个理想的集成开发环境,非常适 用于电信、自动化、国防和
航天工业的软件开发。SNiFF+比 Tornado !.更强大的bc开发、@A和*理功能。
此外,Wind River 还提供大量的、适用于各种硬件目标板的 BSP。
l 操作系统
† VxWorks:这是一个在嵌入式行业被广泛采用的实时操作系统,!.实时性、灵活
性、兼?性、可裁减性。
† VxWorks AE:针对国防、航天、测量、控制系统所要求的高可靠性,风河公司推Z
了 VxWorks AE。VxWorks AE是嵌入工业wK先进的实时操作系统,它提供了无与
伦比的可靠性、可用性和可服务性[RAS]。为了高可用性的要求,VxWorks AE提供
了一些专门的特性:高性能的 Wind 微内核、保护域*理、隔离错误的应用、]源
继承和*理、系统溢Z保护、强大的装载工!、q整的网络工!。
† OSEKWorks:是基于 OSEK-VDX 标准、可裁减、高可靠性的实时操作系统,包含
多任务操作系统内核、通信机制和网络*理功能,尤其适用于汽车工业,因此被称
为引擎盖下的操作系统,也可用于工业自动化行业。在使用了较多 8 位或 16 位 CPU
的网络中,OSEKWorks 可以使控制器良好地工作,其集成的通信机制使设.和上一
级控制器能够更好地协@工作。
† pSOSystem:是一个模块化、高性能的实时操作系统,能够提供一个多任务环境。
主要用于数据通信、电信、机顶盒、消费电子、掌上电脑、测A设.和国防有关的
装.。pSOStem 首先j$度 ISI 公司推Z,在国内拥有很多的用户。20 v纪 90 年
b,ISI 被风河公司收购。
† BSD/OS:使用 Wind River 的 BSD/OS 可以构"因特网服务器,提供诸如 HTTP、FTP、
电子邮件和拨H接入等服务。BSD/OS !有了更高的可靠性和性能,它是一个软件
包,包含操作系统、工!和因特网服务提供商[ISP]所=要的网络服务功能。支持 Intel
的S系平台。
† VSPWorks:这也是一个高性能的实时操作系统,尤其适用于多处理器的 DSP 系统。
VSPWorks 通过提供一个虚拟单一处理器[Virtual Single Processor, VSP]结构,使t用
户易于开发分布式应用程序。
l 网络组件
† USB:风河公司提供的 USB 开发包,可以使用户方便地将某些 USB 设.挂接u嵌
入式系统上,包括键盘、鼠标、打$机、扬声器、数c相机、@制解@器和海量)
储设.等。
† WindNet 802.11b :风河公司提供的 WindNet 802.11b 设.驱动程序开发包,支持
Intersil 的 PRISM 系列无线以太网芯片。使用 WindNet 802.11b 可以实现 IEEE802.11b
有关无线局域网的标准。
† WindNet 802.1x :IEEE802.1x 是针对网络安全和接入控制的一种解决方案,风河公
司推Z的 WindNet 802.1x 包含 AUTHENTICATOR和 SUPPLICANT 两部分,实现了
IEEE802.1x 中关于无线客户和接入a的基于端g的接入控制,可用于解决有线或无
线局域网的安全NO。
† Wind Manage CLI :是网络*理模块中命令行接g的开发软件,可以使用户在很短
的时间内BnZ层次化、!.一定语V、适用于嵌入式系统的命令行接g。
† Wind Manage WEB:是网络*理模块中 Web 服务器的开发软件,可以使用户迅速、
方便地开发Z嵌入式系统中基于 Web 的设.*理软件。
† Wind Manage MIBWay:在网络*理模块中,Wind Manage MIBWay通过提供一种接
g,可以使用户在 CLI 或 Web 中轻操作 SNMP *理信息库中的对%。
† Wind Manage SNMP :简单网络*理协议[SNMP]用于*理和配置网络设.,Wind
Manage SNMP 是该协议的一个q整的实现,包括源bc、工!和 MIB,支持 SNMP
v1、v2、v3、AgentX 和 IPv6 等特性。
† WindNet Radius Client:Radius 协议用于解决拨H用户的远程认证。WindNet Radius
Client 实现了该协议的客户端功能,包括q整的认证、计费和安全,可以和 VxWorks
及其他 WindNet 产品良好的结 。
† WindNet NAT:网络地址转换[NAT]协议用于路j器、防火墙、DSL、Cable Modem
和家庭网关中进行网络地址和端gH的转换。WindNet NAT 是 NAT 协议的q整实
现,通过地址映射和转换,可以将只有一个全局 IP 地址的内部网络连接u外部因特
网,!.基本的网络安全性能。
† WindNet IPSec & IKE :是 IETF 关于 IPSec 和 IKE 的实现,通过使用因特网密钥3
换、数据加密、认证和 IP 层网络流量的q整性功能,为嵌入式设.提供了增强的网
络安全性。
† WindNet PPP:实现了a对a协议[PPP],可以为不U的平台提供远程接入方案,并
为高级的应用添加扩展的功能。支持U6和异6的 HDLC 组帧。WindNet PPP 引入
了远程接入i架的概念,在一个i架内可以实现多个 PPP 协议的实例,也可以轻
加入其他远程接入协议组件+如 PPPoE 和 Multilink 等/。
† WindNet PPPoE:PPP Over Ethernet[PPPoE]可以在以太网上"# PPP 会话,广泛应
用于宽E接入服务中。WindNet PPPoE 作为 WindNet PPP 的一个插件,实现了标准
的 PPPoE 协议。
† WindNet Multilink:是 WindNet PPP 远程接入i架中的一个可选插件,为了解决 PPP
连接中E宽的动态*理,WindNet Multilink 可以把多个并行的 PPP 连接聚 成一个
虚拟链路,根据=要分配E宽的应用程序。WindNet Multilink 使用了E宽分配控制
协议[BACP],可以动态地从一个虚拟链路中添加或去掉某些 PPP 连接,从而实现E
宽的动态分配。
† WindNet OSPF :是开放式K短路径优先+OSPF,参M RFC2328/路j协议的源c
级实现,可以读、n并创"遵循 RFC1850 的 SNMP *理信息库,用于路j器设.
上的路j信息*理。
† WindNet ISDN:是综 业务数,网[ISDN]协议的源c级实现,可以广泛应用于软3
换、程控3换机、网关和其他的集成接入设.上。
† WindNet DCOM:风河公司对微软的 DCOM 做了一些裁减,使其适用于嵌入式系统,
这样就形成了 WindNet DCOM。它可以使嵌入式设.无缝地与远程 PC 机进行3互。
† WindNet OPC:是适用于 VxWorks 嵌入式系统下的 OPC 实现,包括 OPC 数据访N
服务器和3互式客户端工!,与 Tornado、VxWorks 和 WindNet DCOM 紧密结 。
† VxWorks 网络协议栈:是 VxWorks 中标准 TCP/IP 协议的实现,基于 BSD4.4 的网
络协议栈,并根据K新的协议标准做了相应的更新,尤其针对嵌入式系统进行了优
化,适用于大量的网络端节a。
† WindNet Router Stack:在 VxWorks 网络协议栈的基础上,针对第三层路j设.做了
更多的优化和增强,WindNet Router Stack提供了一系列额外的特性和能力,可以满
足路j器、接入集中器[Access Concentrator]、网关和无线基站等3换设.的更高性
能要求。
† WindNet IPv6:是高度优化、性能增强的 IPv4/IPv6 的双协议栈,可以替换掉 VxWorks
的网络协议栈,q全- 相关标准,适用于高性能、高E宽要求的网络端a,如数
据中心设.、消费类设.、SOHO 类设.和无线网络端a等。
† Tornado for Intelligent Network Acceleration[TINA]:通过把一个系统中 TCP/IP 协议
栈的处理工作q全3Y一个专用的嵌入式处理器进行处理,TINA 可以加速 TCP/IP
的处理工作,降低 CPU 的利用率,提高 I/O 系统的吞吐量,极大地提高服务器的性
能。
此外,Wind River 还曾经推Z过 WindNet BGP-4、WindNet MPLS、WindNet ATM、WindNet
L2TP 等网络协议,现在j于策略的@整,部分产品已经取消了。
l 图形软件
† Wind Media Library +WindML/:这是一个适用于 VxWorks 下开发图形用户w面的
媒S库,在 2.0 版本之前称作 UGL。WindML 通过提供一系列的图形 API 函数,以