笔者应该可以算作国内第一批玩Linux的IT人,最早在Linux上做开发的时候,电脑市场的高端配置还是486。随着项目经验的增加,我深深的感到,在国内,对Linux还有很多误解,尤其是嵌入式开发上面,目前我现在还有很多项目进行在Linux平台上面,但是我认为,对于嵌入式设备,Linux在大多数情况下并不是首选, 在很多时候甚至是下策。

除了Linux,你还有很多选择:

现在流行的操作系统五花八门,下面我来分们别类的说说:

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

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

目前,以Linux为首的开源嵌入式系统发展势头强劲,比较有代表的有Linux(包括uClinux,RtLinux等),RTEMS,eCos,uCOSII等。国内的用户大多使用Linux和uCOSII。但是我认为各种系统有自己存在的理由,我从事的大多数项目中,向客户推荐的不是Linux和uCOSII,而是RTEMS和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. “上层应用丰富,而且也开放源码”嵌入式系统大多是用于专业用途的,很多上层应用比如GNOME/KDE,在嵌入式领域,并没有太大用途
5. “低层接口统一。TCP/IP自带” 一方面,Linux底层十分复杂,其接口也非常复杂,这导致给Linux制作驱动需要大量的时间(当然,也有不少驱动是现成的),同时复杂的层次结构导致驱动的效率底下。
6. “TCP/IP等协议自带”几乎所有的嵌入式系统都提供TCP/IP,这个不是Linux的专利。
此外,uCosII也存在不少问题,他很简单,他不是想大多数人想的那样是免费的,他的免费只表现在他的教育版本。如果你用uCOSII作出了东西要出口到欧盟,很可能被kaka。而且uCOSII免费的地方也很少,需要TCP/IP?掏钱,需要文件支持?掏钱......这导致uCOSII的免费版本只能算作一个玩具。
真正好的嵌入式系统应该满足1-6,此外还应有下面几点,注意,这些一直都是Linux的贽垢
1 实时性支持(不要认为RTLinux的实时性就很好,他只不过有些改善罢了)
2 资源占用小
3 支持低功耗
……
此外使用Linux在降低软件成本的同时,会大大提高硬件成本,就好像如果有些程序用386+DOS就能跑,现在非要换成了586+windows2000成本的提高不说,速度只会变慢。现在市场竞争激烈,很多硬件设备利润就只有几块钱。如果用了Linux, 很有可能成本控制不了。

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

嵌入式系统开发,不用Linux的理由 !相关推荐

  1. LINUX嵌入式系统开发平台选择

    1 嵌入式系统与Linux 按照电气工程师协会的一个定义:嵌入式系统是用来控制或监视机器.装置或工厂等的大规模系统的设备.具体说来,它是电脑软件和硬件的综合体:是以应用为中心,以计算机技术为基础,软硬 ...

  2. 嵌入式系统开发学习步骤(Linux高级编程学习顺序)

    2019独角兽企业重金招聘Python工程师标准>>> 嵌入式系统开发学习步骤(Linux高级编程学习顺序) 1.Linux 基础 安装Linux操作系统 Linux文件系统 Lin ...

  3. 嵌入式系统开发笔记2:Linux的主流发行版本

    本系列文章将向大家介绍嵌入式系统开发的各方面知识. 本文将向大家介绍Linux的主流发行版本. 本文为转载文章,原文网址:Linux各个发行版本对比与简介 首先我们要能够清晰的区分Linux系统内核与 ...

  4. 嵌入式系统开发怎样快速度入门

    http://wenda.tianya.cn/wenda/thread?tid=392a249d9d6856c5 实践当然是最锻炼人的方式,但是我想在校生很少有这样的机会,别说本科生,硕士生也未必有条 ...

  5. 嵌入式系统开发学习如何起步、如何深入?(转)

    学习有捷径吗?俺认为是有的,正确的道路就是捷径. 就好象是爬山,如果有导游图,那就能找到一条最正确的路线:如果没有导游图,自己瞎琢磨,东问西问,也未必能找到最佳的路线. 有时候回首前尘,会谓叹,要是当 ...

  6. 《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——02-04项目范围(Scope)管理...

    本节书摘来异步社区<嵌入式系统开发之道--菜鸟成长日志与项目经理的私房菜>一书中的第2章,第2.4节,作者:邱毅凌,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  7. 《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——第1章 系统•嵌入•硬件 01-01 Welcome on board!...

    本节书摘来自异步社区<嵌入式系统开发之道--菜鸟成长日志与项目经理的私房菜>一书中的第1章,第01-01节,作者 邱毅凌,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  8. labview嵌入c代码_LabVIEW与myRIO嵌入式系统开发入门

    一.概述 NI myRIO是NI公司推出的一款嵌入式系统开发平台,内嵌Xilinx Zynq芯片,可以利用双核ARM Cortex-A9的实时性能以及Xilinx FPGA可定制化I/O进行嵌入式系统 ...

  9. 嵌入式系统开发笔记0_0:目录

    本系列文章将向大家介绍嵌入式系统开发的各方面知识. 本系列文章所介绍的知识和内容,除电路图设计外,其它均采用开源系统,所以你不会在这个系列文章中看到Keil.IAR等软件. 本系列文章涉及C.C++. ...

  10. 嵌入式系统开发笔记25:win10防火墙打开特定端口

    本系列文章将向大家介绍嵌入式系统开发的各方面知识. 本文将向大家介绍dakaiwin10防火墙特定端口的方法. 1.引言 win10上位机编写程序,启动TCP服务器应用程序,并绑定1000端口:lin ...

最新文章

  1. iOS中判断程序是不是第一次运行(新手引导界面用)
  2. 计算机科学与技术python方向是什么意思-第一模块·开发基础-第1章 Python基础语法...
  3. Android中AutoCompleteTextView的特殊使用方法
  4. 收藏功能_微软Edge获得了新的收藏夹菜单、PDF功能等
  5. 谷歌json插件_没用过这7款浏览器插件,你一定是假的程序员
  6. 本地HTML打不开 总打开360页面,彻底解决IE浏览器打不开网页时自动跳转到hao.360.cn导航页的问题-网络教程与技术 -亦是美网络...
  7. AR/VR---沉浸式体验
  8. 2015年360校招笔试题
  9. 微信Markdown-here的CSS样式——不断调整
  10. 英语如此简单(转贴)
  11. 说话人识别(speaker Recognition/Verification)简介
  12. 查准率/查全率/F1指标
  13. 多通道声源定位方法之GCC-PHAT:原理及matlab实现
  14. 软件测试常用的工具都在这里了
  15. 王杰律师出席“2009软件开发2.0技术大会”
  16. Visual C++ 2013 and Visual C++ Redistributable
  17. 撷半盏时光,叙岁月无恙。
  18. 【程序员在法国】一、辞别家乡千万里,组团空降法兰西
  19. vmware workstation 各个版本官网下载链接
  20. 精灵商场项目(五)--虚拟机Linux使用+Nginx反向代理

热门文章

  1. 计算机多媒体对语文教学的提高,语文教学中多媒体教学运用心得
  2. NAND驱动分析--(二)
  3. 简单的职工信息管理系统(运用了存储过程,和datagridview,dataset的设置)
  4. 史上最简单的Elasticsearch教程:SpringBoot集成Elasticsearch 实时流量监测平台
  5. warning: NUL character seen; rest of line ignored *** missing separator. Stop.
  6. 关于自定义标签当中的unable to find setter method for attribute:xxx错误 小记
  7. 【8.8】代码源 - 【不降子数组游戏】【最长上升子序列计数(Bonus)】【子串(数据加强版)】
  8. 2021年建5G基站60万个;中兴遭减持;三大运营商2020年成绩单;电信发布新手机...
  9. 第14章 Linux终端设备驱动之终端设备
  10. redis slow log采集