v​xWorks

vxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),被应用于各种嵌入式领域。包括过程控制(化工、食品加工),机器人(制造、自动操作控制),航空电子(飞行管理、GPS、喷气发动机控制),军事(武器管理、密码),数据处理(采集、信号处理),通信(税收机、数字电话),家电(微波炉、洗衣机、空调),计算机外围设备(打印机、Modem)等。  VxWorks是嵌入式系统应用中的软件平台,是包括各种硬件驱动和内核组件的集合,提供了各种适应嵌入式系统和实时应用的特性,以及一些帮助系统开发和调试的辅助机制。VxWorks提供了定制硬件的板级支持包BSP,实现硬件抽象。硬件抽象层可以提高应用代码的一致性,使应用在各种目标板上的移植变得容易进行。VxWorks还提供各种流行的硬件设备的驱动,如网卡、串口和存储器驱动等,使得开发者可以快速建立应用系统。  VxWorks本身和其应用程序都具有极好的可移植性。VxWorks库组件几乎都用C语言编写,可容易移植到不同的CPU上实现。VxWorks的发行版本直接对多种CPU提供支持。VxWorks 5.5有8类CPU版本,包括PowerPC、Pentium、MIPS、SH、Xscal、ARM、68K和ColdFire等。虽然众多版本对特定CPU有优化和定制,但是WIND RIVER公司的主要目的可能是出于商业和安全的考虑。而WIND RIVER内部开发肯定在不遗余力地维持VxWorks内核代码的可移植性。虽然有各种不同CPU版本的VxWorks,但提供的函数接口是一致的,加上BSP硬件抽象层的支持,而且VxWorks支持POSIX、ANSI和BSD Socket等通用标准,使得建立在VxWorks之上的应用代码也有较好的可移植性。另外,VxWorks还提供了高效的内核机制。系统调用采用普通的函数调用形式,而未采用操作系统通用的软件陷入机制,减少了系统调用花销,使得任务上下文切换速度加快,并使切换延迟确定。VxWorks可根据应用需求灵活配置,这主要是因为VxWorks软件平台具备组件式结构。VxWorks包括核心内核功能和依赖内核的外围功能,各种功能按组件形式提供。VxWorks可看作各种功能库的集合。各种功能库的选择加入,就能产生适应定制需求的各种不同功能集合的操作系统映像。

文库下载说明文档
http://wenku.baidu.com/view/ea72d01efc4ffe473368ab1e.html
知乎对Vxworks介绍:
链接:http://www.zhihu.com/question/22102760/answer/20491771
来源:知乎

用VxWorks久的人都会感觉它太小了,但它开发实在是太方便了,有调试器,有完整开发套件。在有开发环境的地方,几分钟就能建立一个工程,编译一个image,甚至可以放到PC机上跑。

不说实时性之类的技术问题,单说入门,就很快的,比重新编译Linux内核之类的容易的多,我自己实验过裁剪Linux内核,真是头大的事情。

VxWorks跨平台做的很好,自带的BSP在发布的时候都经过比较严格的测试,比起Linux来说,各种莫名其妙的硬件错误很难遇到。有人讲到VxWorks像Unix,我觉得不像,至少从我看到的代码上看,几乎没有Unix的东西,只不过是兼容部分POSIX API而已。

在VxWorks上做二次开发就需要了解它的具体技术细节了,相对而言,我觉得跟别的系统的驱动差不多,无非就是信号量、内存、进程这些东西。如果你喜欢,用标准C的库也可以实现大部分功能。

VxWorks的缺点也很多:文档太少,做这个的人不多,授权太贵。网上能找到的盗版都是5.5的,但官方都出到6.9了,说实话我真不喜欢5.5的那一套东西,太过时了,但要真找一套6.9的又有困难,授权费太贵。而且5.5不稳定、功能少(版权问题,我不敢放6.9的截图,但就组件的个数方面就差别太大了)。

对于Linux来说,通常是裁剪很费劲,编译一堆问题,但找相关的文档也容易,如果英文好,去混混社区,总能找到答案,前期入门很难,熟悉以后会容易。而用VxWorks,后期的开发遇到困难就很难找到能帮上的人。

做久了VxWorks的人都说其实Linux更好,当然也有Linux用户说VxWorks更好,这个只能说看情况了。

几乎没有培训,几乎没有参考书,只有用户手册,这是VxWorks的现状,但在国防军工、自动化、航天领域超过一半的占有率也说明它是个好系统。

一个入门简单(VxWorks),一个入门困哪(Linux);一个收费(VxWorks),另一个免费(Linux);一个要想深入了解缺乏资料(VxWorks),另一个资料很多但很杂(Linux)

所以,选择看自己的需求了。如果能先用VxWorks入门,再用Linux就更好,但这样学习成本和开发成本都太高了。


网友点评

*

*

*

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。