1.1 嵌入式实时操作系统 VxWorks

Wind River System 公司(中文名称:风河系统,以下称 Wind River 或风河)组建于 1981年,是全球领先的嵌入式软件与服务商,主要为业界提供面向行业市场的嵌入式软件平台。它所提供的嵌入式软件平台包括集成化的实时操作系统、开发工具和技术。Wind River 公司的产品和专业服务已经在许多市场领域得到认可,主要包括空间技术及国防、汽车、消费电子、工业制品和网络基础设施领域。世界各地的电子设备制造商普遍把 Wind River 公司的嵌入式软件产品作为行业标准。包括NASA“勇气号”火星探测器在内的航空航天设备也采用 Wind River 嵌入式软件。

VxWorks 操作系统是美国 Wind River 公司于 1983 年设计开发的一种嵌入式实时操作系统(RTOS),是 Tornado 嵌入式开发环境的关键组成部分。

VxWorks 是一个运行在目标机上的高性能、可裁减的嵌入式实时操作系统。它以其良好的可靠性和卓越的实时性,被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的 F-16、FA-18 战斗机、B-2 隐形轰炸机和爱国者导弹上,1997 年 4 月在火星表面登陆的火星探路者上也使用了 VxWorks。

VxWorks 是一种功能强大而且比较复杂的操作系统,包括了进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等几个部分。VxWorks 只占用了很小的存储空间,并可高度裁减,保证了系统能以较高的效率运行。

VxWorks 为程序员提供了高效的实时多任务调度、中断管理,实时的系统资源以及实时的任务间通信。在各种 CPU 平台上提供了统一的编程接口和一致的运行特性,尽可能的屏蔽了不同 CPU 之间的底层差异。应用程序员可以将尽可能多的精力放在应用程序本身,而不必再去关心系统资源的管理。基于 VxWorks 操作系统的应用程序可以在不同 CPU 平台上轻松移植。

VxWorks 系统适应日益复杂的 32 位嵌入式处理器产品的开发需求,其最重要的特点包括:

  • 可靠性高的实时性能
  • 可下载到最终产品内存的丰富和灵活的功能模块集
  • 与综合全面的主机开发环境的协同工作
1.1.1 VxWorks 系统主要功能

微内核 Wind Kernel:实现任务调度和管理、任务间通信、内存管理、系统时钟和定时器管理、 系统中断管理。

WDB(Wind Debug Agent):支持交叉调试。

ANSI C:支持标准 C 库 API。

TCP/IP 网络协议栈:支持 Host 端 TCP/IP 网络管理。

文件系统:支持外存储介质的访问。

I/O 管理:提供标准的基于文件的 I/O 设备管理。

BSP 开发包:提供 BSP 模板、驱动程序模板和 BSP 测试程序。

POSIX 标准实时扩展:支持 POSIX 1003.1b 的 API。

VxFusion:支持分布式消息队列,开发分布式应用和冗余设计。

TrueFFS:支持电子盘文件系统,管理 FLASH 介质。

VxVMI:支持基于 MMU(内存管理单元)的内存保护。

VxMP:提供基于 VME 总线共享内存方式的信号量、消息队列和共享内存。

这些核心功能可以与 Wind River 系统的其他附件和 Tornado 合作伙伴的产品结合在一起使用。

1.1.2 VxWorks 系统基本结构

VxWorks 操作系统的基本构成部件主要包括五个部分:板级支持包 BSP(Board Support Package)、微内核 wind、网络系统、文件系统、I/O 系统。

vxworks, tornado, arm

图 1-1-1 VxWorks 系统组成结构图

VxWorks 操作系统包括了板级支持包 BSP(Board Support Package)、进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等几个部分。VxWorks 只占用了很小的存储空间、并可高度裁减,保证了系统能以较高的效率运行。

1. 板级支持包 BSP(Board Support Package)

板级支持包对各种板子的硬件功能提供了统一的软件接口,它包括硬件初始化、中断的产生和处理、硬件时钟和计时器管理、局域和总线内存地址映射、内存分配等等。每个板级支持包括一个 ROM 启动(Boot ROM)或其它启动机制。

2. 高性能的实时操作系统核心 wind

  • VxWorks 的核心,被称作 wind,包括多任务调度(采用优先级抢占方式),任务间的同步和进程间通信机制以及中断处理,看门狗和内存管理机制。一个多任务环境允许实时应用程序以一套独立任务的方式构筑,每个任务拥有独立的执行线程和它自己的一套系统资源。进程间通信机制使得这些任务的行为同步、协调。
  • wind 使用中断驱动和优先级的方式。它缩短了上下文转换的时间开销和中断的时延。在 VxWorks 中,任何例程都可以被启动为一个单独的任务,拥有它自己的上下文和堆栈。还有一些其它的任务机制可以使任务挂起、继续、删除、延时或改变优先级。
  • wind 核提供信号量作为任务间同步和互斥的机制。在 wind 核中有几种类型的信号量,它们分别针对不同的应用需求:二进制信号量、计数信号量、互斥信号量和 POSIX 信号量。所有的这些信号量是快速和高效的,它们除了被应用在开发设计过程中外,还被广泛地应用在VxWorks 高层应用系统中。对于进程间通信,wind 核也提供了诸如消息队列、管道、套接字和信号等机制。

3. 网络设施

VxWorks 的网络结构如图所示,它提供了对其它网络和 TCP/IP 网络系统的“透明”访问,包括 与 BSD 套接字兼容的编程接口,远程过程调用(RPC),SNMP(可选项),远程文件访问(包括客户端和服务端的 NFS 机制以及使用 RSH, FTP 或 TFTP 的非 NFS 机制)以及 BOOTP 和 ARP 代理。无论是松耦合的串行线路、标准的以太网连接还是紧耦合的利用共享内存的背板总线,所有的 VxWorks 网络机制都遵循标准 Internet 协议。

4. 文件系统

VxWorks 提供的快速文件系统适合于实时系统应用。它包括几种支持使用块设备(如磁盘)的本地文件系统。这些设备都使用一个标准的接口从而使得文件系统能够被灵活地在设备驱动程序上移植。

VxWorks 也支持 SCSI 磁带设备的本地文件系统。VxWorks I/O 体系结构甚至还支持在一个 单独的 VxWorks 系统上同时并存几个不同的文件系统。

VxWorks 支持四种文件系统:dosFs、rt11Fs、rawFs、tapeFs。

另一方面,普通数据文件,外部设备都统一作为文件处理。它们在用户面前有相同的语法定义,使用相同的保护机制。这样既简化了系统设计又便于用户使用。

5. I/O 系统

VxWorks 提供了一个快速灵活的与 ANSI C 兼容的 I/O 系统,包括 UNIX 标准的缓冲 I/O 和 POSIX 标准的异步 I/O。

1.2 Tornado 开发环境

Tornado 集成开发环境是由 Wind River 公司 20 世纪 80 年代开发的,针对嵌入式实时领域的功能强大的开发调试环境,提供高效明晰的图形化的应用开发平台,包括一整套完善的面向嵌入式系统开发和调试的工具。Tornado 提供 Tornado 开发环境采用主机-目标机交叉开发模型,应用程序在主机编译链接后通过通信服务代理直接下载到目标机上运行,再由主机提供一系列功能强大的调试和分析工具,来辅助完成整个开发过程。这些工具包括 C 和 C++远程源码级调试器、目标和工具管理、目标或系统代码跟踪、内存使用分析等。

Tornado 集成开发环境在二十多年中修改了多个版本,目前 Tornado II 版本用得最多,本书也以 Tornado 2.2 版为主,提供 VxWorks 5.5 系统支持。本书除特别说明外,后面 Tornado 均表示Tornado 2.2,而 VxWorks 表示 VxWorks 5.5。

了解 Tornado 开发环境的功能特点及使用方法,对我们开发目标系统上的软件和调试有重要意义,同时也能链接其内核的许多功能方便共享。

1.2.1 Tornado 特点

Tornado 作为开发 VxWorks 应用系统提供的集成开发环境,包含工程管理软件,可以将用户自己的代码与 VxWorks 的核心有效的组合起来,可以按用户的需要裁剪配置 VxWorks 内核;vxSim原型仿真器可以让程序员不用目标机的情况下,直接开发系统原型,作出系统评估;功能强大的 CrossWind 调试器可以提供任务级和系统级的调试模式,可以进行多目标机的联调;优化分析工具可以帮助程序员从多种方式真正地观察、跟踪系统的运行,排除错误,优化性能。

1. 动态链接与加载

Tornado 允许开发者增量地将目标模块加载到目标系统上去,这种动态的链接和加载功能是 Tornado 系统的核心功能,可以使开发者省去通常的开发步骤:在主机上将应用程序与内核链接起来,然后将整个应用程序下载到目标系统上去。这样,编辑-测试-调试的周期会大为缩短;而且,所有的模块都是可以共享的,主机上的应用程序模块也不需要重新链接,所以,加载目标模块到运行中的 VxWorks 目标系统中以达到调试和重新配置的目的成为可能。

2. 快速的产品设计

-- 安装简单方便;

-- VxSim-Lite 集成仿真器;

-- 集成仿真器的 WindView。

3. 缩短开发周期

-- 自动的操作系统依赖性分析;

-- 提供代码容量计算;

-- Wizards 可以提供开发指导;

-- 应用程序的自动裁剪。

4. 可以迅速找出 bug 的先进的调试环境:

-- 局部变量窗口;

-- 变量观察窗;

-- GUI 数据显示和修改;

-- 经过改良的调试器性能;

-- 任务级和系统级调试;

-- 上下文敏感的菜单;

-- 中心断点控制。

1.2.2 核心工具

通过紧密集成的开发环境可以在应用程序开发的任何阶段轻松地访问所有的工具,而且不必关心目标系统的连接方式或目标系统的内存大小。

  • VxSim 集成仿真器可以迅速开始开发工作
  • VxSim 集成仿真器的 WindView
  • 主机目标机连接配置器 Launcher:简化了目标机和工具的管理
  • C/C++语法制导集成编辑器,高亮度的颜色区分显示;还可以集成其他编辑器,例如:Code Wright,Visual SlickEdit etc.
  • 命令行执行工具 WindSh
  • -- 基于主机上的交互式的 C、C++、TCL 命令解释器
  • 浏览器 Browser
  • -- 提供详细的系统对象检查
  • 功能强大的调试器
  • -- 远程的源代码调试器 -- 局部变量窗口 -- 变量观察窗 -- GUI 数据显示和修改 -- 经过改良的调试器性能 -- 任务级和系统级调试 -- 上下文敏感的菜单 -- 中心断点控制
  • C/C++交叉编译工具(toolkit, iostreams)
  • -- 提供异常事件处理和模板支持的丰富的 C++特征
  • 项目工作环境
  • -- 易于使用的图形化配置 -- 项目组件的共享和重用 -- 自动的操作系统依赖性分析 -- 代码容量计算 -- Wizards 可以提供开发指导 -- 应用程序的自动裁剪

除了核心工具外,Tornado 开发环境还有许多备用工具,具体的使用到时可以查一下相应的数据手册,篇幅有限这里不作具体介绍。