毋庸置疑,使用嵌入式Linux 进行产品开发有一个很大的优势,那就是开发资源丰富,而且成本低廉。但是,技术路线复杂多样,专业人才相对匮乏也是嵌入式Linux 系统开发的另一个主要特征。
在这样的背景下,国内很多行业软硬件集成商在利用 Linux 开发嵌入式产品时遇到了许多困难。许多产品的开发因为这样或者那样的问题导致难产,甚至最终以失败告终。这种现象甚至存在于国内许多专业的嵌入式 Linux 厂商中。
原来对嵌入式 Linux 抱有很大期望的人们,因为迟迟看不到采用 Linux 的消费类产品上市,开始表现出了对基于嵌入式 Linux 的产品开发的否定情绪。存在于许多媒体上的声音,也在不断渲染和夸大一个看法:使用 Linux 开发嵌入式产品时的总体成本比昂贵的专有系统还要大。
笔者从事嵌入式 Linux 的开发,可以从1998 年底算起,笔者在别人的介绍下考虑用RT Linux来开发制造领域使用的计算机数字控制系统,并为解决图形用户界面问题而开始开发MiniGUI。近几年过去了,笔者经历过许多使用Linux 的项目,有的成功,有的失败。所幸的是,大部分由我负责的项目均可算得上是成功,许多使用Linux和 MiniGUI 的产品已经上市,正在发挥着重要的作用。
但不幸的是,我也看到了许多失败的项目或者产品。有人问我,嵌入式Linux的未来是什么?尽管我没有预言未来的能力,但我相信:嵌入式Linux的未来是辉煌的!只要我们在采用嵌入式Linux开发产品之前,做到下面所说的几点,我们就能确保顺利开发出我们想像中的产品。
一、选定优秀的软硬件技术提供商和服务商
当您在脑海中有了自己产品的大致规划之后,您应该首先寻找一家专业的嵌入式Linux技术提供商,向经验丰富的开发工程师咨询,看看您的产品是否适合使用LINUX来开发。负责任的技术提供商会为您提供非常有价值的信息,包括产品是否适合使用LINUX,如果适合,还会为您推荐相关的软硬件设计、开发厂商。
然而,大部分厂商不会这样做。许多产品开发商之所以要在产品中使用Linux,其最主要的原因就是“成本低廉”。许多老板的想法是,反正自己养着工程师,LINUX又是开放源码的,为什么不自己开发呢?自己开发,那成本就可以更低了,而且项目就在自己的掌控之下,这不是更有利吗?在这样的想法驱使下,老板们就把该花的服务费用也给省了。但是,他们没有意识到我们提到的嵌入式Linux开发的第二个重要特点,那就是“技术路线复杂多样,专业人才相对匮乏”。正是这样一个特点,导致老板们根本无法用低廉的工资招收合格的研发工程师,这注定了他们的产品开发充满了极大的风险。
如果这种思想仅仅存在于公司的领导层,那问题倒还不严重,更加严重的是,从事研发的工程师自身也有这样的想法。中国的软硬件工程师总体水平较低,这已成为共识。在这样的现实条件下,因为低水平,会选择错误的产品技术路线,甚至是不切实际的研发计划。在这样一种情况下,产品的研发出问题是几乎肯定的。
笔者所见到的许多失败的项目,大部分是因为上面这种一错再错导致的。根据我们的估计,中国有能力完成嵌入式Linux产品技术方案设计的总人数不足五百人,或者更少,而且分散在不同的企业当中。因此,对一家并不拥有足够研发实力的厂商来说,选定一家值得信赖的技术提供商和服务商就更为重要了。
然而,许多认可技术服务的企业在寻找伙伴时,又会有另外一个问题。他们认为,LINUX不是便宜吗,那围绕LINUX的技术服务也应该很便宜啊!其实,这种看法在逻辑上就是错误的。
Linux的成本优势在于免去了商业授权费用,它的成本优势将在产品营销的后期体现,而并不是在开发初期体现。因为我们上面提到的原因,目前,围绕Linux的技术服务成本将在很长一个时间段内高于其他行业的技术服务成本。当然,随着嵌入式LINUX开发人员的增加,技能的提高,围绕LINUX的技术成本最终将会降低。如果您未来的产品一直沿用 LINUX,那LINUX的成本优势将会为您带来更高的收益。
目前,国内的嵌入式LINUX行业逐步走向了分工、协作的良性发展阶段,您在产品开发的不同阶段:比如硬件选型、操作系统移植和定制、中间件选择和应用开发等等,均可以找到合适的技术提供商和服务商。
对于打算采用嵌入式LINUX开发产品的企业来讲,我们推荐一种符合现阶段客观条件的方式:
倚赖中间件厂商,参考成功案例,确定硬件方案,选定硬件合作伙伴,并在中间件厂商的帮助下,自主开发应用软件。
这里,中间件厂商在整个技术框架中,位于承上启下的重要环节,首先选择中间件厂商有着非常重要的现实意义。另外,如果您对自己的技术实力有怀疑,还可以委托中间件厂商开发自己的第一个应用软件,在此基础上,再尝试自主开发。如此,您的产品开发将为更加顺利。
在寻找合作厂商时,我们要防止走向另外一个极端,那就是花大价钱购买所谓的开发工具。在国外,嵌入式Linux厂商的营销方式是以服务为主,客户支付的费用主要用于培训、技术支持等服务上。就拿MontaVista的嵌入式 Linux 产品来讲,在国外的营销方式是产品免费,但服务价格很高。您要购买产品,首先要购买其一年的服务。在发达国家,消费者花十几万美元买服务,是有相应的技术和法律保障的。然而,如果把这个产品拿到国内来,就算你花了一样的价钱,也很难买到相应的服务。于是,有的代理商就想了一个好招数,那就是用户要花几十万来买产品,然后给你提供一年的免费服务。既然是免费的服务,那质量、内容就无所谓了。但回头来再看产品,你花几十万购买的产品,真的值那么多吗?实际的情况是,这些产品的绝大部分组件来自INTERNET。稍微花点时间,您就可以在互联网上找到这些产品所带的开发工具、内核源代码以及其他几乎所有的内容。
但有的用户仍然认为花这么多钱很值得,因为他们购买到的是在自己的产品中使用嵌入式Linux的合法授权!呵呵,读到这里,你就会发现中国的用户有多冤枉。我在这里教您一招,以后如果有人说要收取您使用Linux的授权,您就先问他要Linux给他的授权。
许多购买了这类开发工具产品的用户,他们仍然要自己开发驱动程序,仍然要花功夫选择GUI等中间件产品,还要自己调试开发应用程序,而且得不到任何有保障的高质量的服务。
其实,许多用户之所以原意花钱买这种开发工具,是因为这样一个心理作怪:老外的东西比国人的好;只买贵的,不买好的。
二、认真细致、客观公正地评价技术方案
采用嵌入式Linux开发产品,需要确定的技术路线有如下几点:
1.硬件方案的选择。硬件的不同,会影响操作系统的选择,低端无mmu的CPU,就要使用uClinux 操作系统,而相对高端的硬件,则可以用普通的嵌入式Linux操作系统。uClinux和普通的Linux有各自的优势和缺点。但一个原则是,只要可能,永远选择使用普通的嵌入式Linux 系统。
现阶段,硬件方案的选择实际非常灵活,在CPU及架构的选择上,一个原则是:只要有可替代的方案,千万不要选择Linux尚不支持的硬件平台。不要选择Linux尚不支持的平台,并不是因为在技术上有多难,而是害怕您为移植Linux花冤枉钱——辛苦找到一个厂家为您做移植,结果没几天,国外的黑客就已经做好了。如果是这种情况,您说冤不冤呢?
2.硬件方案确定之后,操作系统的选择就相对轻松了。之后,我们就需要考虑选择正确的中间件产品了。这里的中间件,是指除操作系统和应用程序之外的其他必要组件,包括 C函数库、GUI系统、数据库系统等等。
在C函数库方面,可选的有glibc、uClibc等。通常如果您的存储空间足够,就可以选择glibc,而如果空间紧张,则选择uClibc。一个原则是,除非必要,始终使用glibc。
在GUI方面,可选的就更多了,比如MiniGUI、Qt/Embedded、MicroWindows等等。这方面的一个原则是,要选择能够获得良好支持的产品,对国内用户,我们推荐MiniGUI。这并不是“王婆卖瓜,自卖自夸”,而是实践证明,MiniGUI 的适用范围很广、性能表现最佳、而且对国内用户的支持和服务最好。目前,MiniGUI 是国内唯一一个为嵌入式Linux发展做出重大贡献的产品和项目,并得到国际认可。
在前两年,有许多采用MicroWindows的产品。许多人也许不知道,MicroWindows中对GB2312字符集及字体的支持,就来自于MiniGUI。采用MicroWindows 时,您自己要做大量的缺陷修正工作,而且性能还很差。更要命的是,MicroWindows的免费版本进展一直很慢,在大约2年的时间里,几乎处于停顿状态;而至今为止,国际上没有任何一家专业对 MicroWindows提供全面技术支持、服务和担保的公司。
而对Qt/Embedded来说,它是肥美型的产品,功能丰富,但能消化它的东西只能是高端产品,32MB内存是运行它的最小要求。因此,如果您开发的产品不是高端的信息终端类产品,就无须考虑Qt/Embedded。当然,还有几个重要因素就是,Qt/Embedded的商业授权门槛还是蛮高的,而且还要付美金!
如前所述,中国嵌入式Linux行业正处于发生重大变革的过程中。分工细化、走向协作是这次变革的一个重要特征。这样的变革,将带来嵌入式 Linux行业大的增长。对行业软硬件集成商来说,应该尽早结束自己大包大揽开发产品的历史,和专业的技术厂商合作,才是走向专业分工、共推市场、协作前进的重要道路。