概述

VxWorks 6.9包括VxWorks操作系统、Wind River Workbench3.3开发环境、Wind River Diab编译器、Wind River GNU编译器,并集成了一些中间件和主机工具。

该平台有助于开发人员开发多样化的项目和应用,如VxWorks基于内核的应用(DKM)、VxWorks实时任务应用(RTP)、板级支持包、驱动等。开发人员可以通过Workbench IDE或者vxprj工具开发项目和应用,可以使用Workbench Debugger进行调试。

本文旨在介绍如何利用Wind River Workbench3.3开发工具提供的命令行支持,进行工程创建、工程配置、代码编译等基本操作。

概述

本文主要是记录《VxWorks BSP Developer's Guide 6.9》和《VxBus Device Driver Developer's Guide 6.9》的部分章节内容,重点关注VxWorks 6.9的BSP移植和驱动开发。

BSP概述

本章主要介绍VxWorks启动过程中调用的BSP相关函数,BSP移植的主要工作就是实现这些函数。

本文首先从实时内核的定义出发,对实时操作系统进行了介绍,并对实时操作系统的特点进行了说明,接着从内核的功能和结构角度介绍了整体式内核,层次式内核,以及微内核。最后对具有微内核特性的VxWorks Wind内核进行了介绍。

1.1 实时内核概述

“实时”表示控制系统能够及时处理系统中发生的要求控制的外部事件。从事件发生到系统产生响应的反应时间称为延迟(Latency)。对于实时系统,一个最重要的条件就是延迟有确定的上界(这样的系统属于确定性系统)。满足这个条件后,根据这个上界大小再区分不同实时系统的性能。这里的“系统”是从系统论的观点讲的一个功能完整的设计,能够独立和外部世界交互、实现预期功能。这包括实时硬件系统设计、实时操作系统设计、实时多任务设计3部分。后两者可以概括为实时软件系统设计。实现实时系统是这3部分有机结合的结果。

在这篇博文中,我将解释如何使用 VxWorks 7 内核控制台(shell)读写硬件设备中的寄存器。对于任何一个开发设备驱动程序或其他直接与内存映射设备进行交付的代码的人来说,这是一个非常有用的功能。

VxWorks 6.9内核Shell控制台

如果您使用过 VxWorks 6.9,你可能常常使用内核 shell 访问目标硬件中的内存映射寄存器。 例如,你可以使用 d 命令(实际上是一个函数)转储映射到内存中已知基地址的一组寄存器:

本文讨论Wind内核的设计思想,正如前文所述,VxWorks的Wind内核采用可裁剪的微内核设计,具有多任务并发执行、可抢占的优先级调度、可选的时间片调度、任务间通信和同步机制、快速的上下文切换,低中断时延、快速的中断响应、支持中断嵌套、支持256个优先级、支持优先级继承、以及任务删除保护机制,Wind内核运行在特权模式,不使用陷阱指令和跳转表,所有的系统调用均采用函数调用的形式实现。

Wind内核是一种强实时操作系统内核,但和当前其它成熟的操作系统一样,并不是“硬实时”的操作系统。所谓“硬实时”是指当某种事件发生时,系统必须在预定时间之内,或者说在限期之前做出反应,否则就会造成灾难性的后果。具有这一特征的操作系统要做到对于所提交的每一项作业及其时间要求,或者做出承诺,或者立即拒绝(以使提交者可以考虑采取其他措施),对于做出的承诺则保证其实现。提交给硬实时系统的作业也可以是不带时间要求的,但是对这些作业的承诺当然也就不包含时间的因素,那将当作后台作业来对待。