Chinaunix首页 | 论坛 | 博客
  • 博客访问: 267397
  • 博文数量: 81
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 961
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-31 21:31
文章存档

2009年(15)

2008年(66)

我的朋友

分类:

2008-07-27 21:52:33

实时操作系统的选择:你还在用Linux吗?

忘记了在哪看过一篇帖子,关于实时操作系统linux的选择与否的问题!

随着IC业的发展,出现了越来越多的价格低廉、结构小巧的 CPU和外设。限制嵌入式系统发展的瓶颈就突出表现在了软件方面。尽管从八十年代末开始,陆续出现了一些嵌入式操作系统,比较著名的有Vxwork、 pSOS(已被收购)、QNX、Neculeus、Windows CE、PALM、SmartPhone等。但这些专用操作系统都是商业化产品,其高昂的价格使许多低端产品的小公司望而却步;而且,源代码封闭性也大大限 制了开发者的积极性。

另一个方面,这些商用的操作系统往往有非常完善的技术支持和丰富的软件包,以WinCE为例,他的PlatForm Bulider安装光盘有7张,容纳了大量的应用框架,用户只需要做很少的改动就能生成一个应用程序。工作强度和普通PC机上开发没有太大的区别。

目前,以Linux为首的开源嵌入式系统发展势头强劲,比较 有代表的有Linux(包括uClinux,RtLinux等),RTEMS,eCos,uCOSII等。国内的用户大多使用Linux和uCOSII。 但是我认为各种系统有自己存在的理由,我从事的大多数项目中,向客户推荐的不是Linux和uCOSII,而是RTEMS和eCos(哈哈看到我们ecos的魅力了)。理由很简单,Linux过为复杂,速度慢,实时性差;而uCOSII又过于简单。

Linux本来就不是为嵌入式系统设计的,现在 Linux2.6的kernel source压缩包大小更是有30多兆。Linux源代码解析那种大部头的书又有多少人从头到尾看过。这导致很多问题无法解决。以前,某客户要求使用 Linux给他们做底端路由器,我们使用了一套比较成熟的ARM+uClinux系统,结果,该系统会不定期的死机,调试了很久也没有结果。过了几个月, 发现是uCLinux的一个bug。期间,该客户由于系统不够稳定,错过了几个大单。此后,另外一个Linux的系统,用于VoIP网关,结果,运行速度 非常慢,资源消耗也很大。几乎没有办法达到设计要求。后来,改用eCos,不但能达到编解码速度要求,而且无论是对内存还是对Flash,占用都大为减 少。这样的项目举不胜举,后来总结出一条经验,Linux用来做Demo版本,商业版本用其他RTOS。

实际上,这样的例子还很多,现在,很多嵌入式系统设计服务提供商动不动就是Linux,好像将Linux和嵌入式系统划上了等号。为什么? 无非是因为下面的原因:

  1. 操作系统源代码开放
  2. 网上资源丰富,很可能可以找到开放源码的整套环境,可以大大缩短开发周期
  3. 编程接口方便,熟悉,跟台上机上开发几乎没有什么区别
  4. 上层应用丰富,而且也开放源码
  5. 低层接口统一
  6. TCP/IP等协议自带

但是我认为这是站不住脚的。我们一个一个来看Linux的所谓优势:
  1. “开放源码”很多嵌入式系统都是开放源码的如:eCos,RTEMS,NetBSD等等。这些系统都比Linux简单易懂。此外值得提出的是。Linux 是GPL协议的,也就是说,你对Linux的任何修改,都必须公开。而NetBSD等系统就不是,他们是遵循更为开放的BSD协议,你对系统的任何修改, 都有权保密。这对于商用系统来说,是非常重要的。
  2. “网上资源丰富” 这个……我只能说其他系统应用资源也很丰富。但是总体上,Linux资源比其他系统丰富,主要体现在桌面系统上,在嵌入式领域的应用软件,Linux并没有明显的优势。
  3. “编程接口方便,熟悉,跟台上机上开发几乎没有什么区别”编程接口上来说eCos,RTEMS和NetBSD都提供POSIX的API,这意味这,在Linux上面的代码,几乎不用做修改就可以移植到上面的系统中。
  4. “上层应用丰富,而且也开放源码”嵌入式系统大多是用于专业用途的,很多上层应用比如GNOM,在嵌入式领域,并没有太大用途
  5. “低层接口统一。TCP/IP自带” 一方面,Linux底层十分复杂,其接口也非常复杂,这导致给Linux制作驱动需要大量的时间(当然,也有不少驱动是现成的),同时复杂的层次结构导致驱动的效率底下。
  6. “TCP/IP等协议自带”几乎所有的嵌入式系统都提供TCP/IP,这个不是Linux的专利。
   不用uCOSII也很简单,他不是想大多数人想的那样是免费的,他的免费只表现在他的教育版本。如果你用uCOSII作出了东西要出口到欧盟,很可能被 kaka。而且uCOSII免费的地方也很少,需要TCP/IP?掏钱,需要文件支持?掏钱......这导致uCOSII的免费版本只能算作一个玩具。
  真正好的嵌入式系统应该满足1-6,此外还应有下面几点,注意,这些一直都是Linux的贽垢
  1 实时性支持
  2 资源占用小
  3 支持低功耗
  ……

  总之,Linux只适合高端嵌入式系统中(如商用路由器等),如果CPU< 100MIPS, 最好还是不用Linux为妙。

阅读(3131) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~