过去,由于认识上的局限性和实践经验的不足,对如何选用合适的操作系统我们走过很多弯路。为了满足客户的需求,我们大批量地使用了正版μC/OSII、WinCE、VxWorks、MontaVista Realtime Linux以及开源的嵌入式Linux操作系统。在基于成本核算的项目管理过程中,我们领略了各种操作系统的优劣。
对于初学者来说,到底学习哪一种操作系统比较好呢?这要看你的条件和兴趣了,因此不能一概而论。本文从技术经济的角度出发,将我们的经验奉献给大家。本文仅一家之言,不一定适合所有的行业,希望读者寻求各方面专家的帮助。
1 能满足大多数项目需求的μC/OSII
μC/OSII最大的应用价值就是简洁与实用。当一个系统选用μC/OSII时,最多只需要2 MB的NOR Flash,2 MB的SDRAM或最多8 MB的SDRAM,因此整个系统的硬件成本是最低的。但很多人却看不起这个小玩意儿,片面地认为它没有什么价值,而事实上μC/OSII能满足很多项目的需求。最近它又推出了新的版本,命名为μC/OSIII,其新的一些特性是:抢占式多任务,在同一优先级支持任务的轮询调度,没有任务数的限制,内核提供丰富的服务(信号量、互斥信号灯、优先级继承、事件标志、消息队列、定时器、固定大小的内存块管理,以及内置性能测量)。
如果将它移植到ARM9,会发现它的启动速度是最快的,甚至只需要1 s。当开发基于GUI的产品时,最终的效果可以与其他的操作系统媲美。虽然市场也有免费移植μC/OSII到ARM9的范例,但普遍都不完整,因此显示不出μC/OSII的威力,其实只要支持MMU即可。但也有很多人根本没有尝试过,或者根本没有这种意愿,就主观臆断下结论,一棍子将μC/OSII打死。一些开发人员常常只选自己会的而不选对的,而且思想非常顽固。我们在过去的开发生涯中,也犯过各种类似的错误。
是不是只要选择μC/OSII就一劳永逸了呢?当然不是。虽然它能够满足很多产品对CF卡、SD卡、TCP/IP以太网、CANbus/CANopen/DeviceNet/J1939现场总线、GUI图形用户界面、RS232、RS485等多方面的需求,但它还是有一定的局限性。如果需要支持WiFi等更多的协议软件时,那就非常麻烦了。但还是有一些人要反驳我们:μC/OSII要收费不划算。事实上只要粗略地计算一下开发成本,其结论自然也就一目了然了。很多人常常不将开发人员的工资和上市时间计算在开发成本之内。
2 资源丰富、具有完美继承性的WinCE
如果一次购买超过3 000个授权,价格还是很便宜的,是很多用户都能够承受的。由于WinCE与Windows一脉相承,且使用同样的开发工具,那么对于熟练掌握Windows编程的软件开发人员来说也就非常方便了,所以很多客户还是选择WinCE。如果项目中还需要用到GUI或具有更加复杂的功能,那么WinCE可以说是最佳的选择,这是WinCE最明显的优势之一。
如果无论开发什么产品都选择WinCE的话,肯定是不划算的。比如选用μC/OSII就可以实现的项目,如果因为开发人员的喜好而选用WinCE,至少需要2片32 MB的SDRAM,1片2 MB的NOR Flash,以及128 MB的NAND Flash(存储容量小的工业级NAND Flash越来越难购买),可想而知其硬件成本还是非常高的。而很多工程师在开发用于工业级场合使用的产品中,选用商业级存储器以求降低成本,势必影响产品的质量和企业长远的品牌利益。
3 高贵、实时、稳定的VxWorks
VxWorks最大的应用价值是实时性和稳定性。由于VxWorks先天性的口碑传播和用于航空航天的成功案例,如果系统使用了VxWorks,用户对产品的信任度立即凸显。根据我们的经验,如果一次性购买的授权数量适当大一些,其价格是很多企业完全能够接受的。最终用户一定会惊讶得不可思议,在计算成本时甚至可以忽略不计。
虽然原厂需要收至少47 250美元的年费,但可以得到所有丰富的源代码,并使用于任何CPU微处理器。如果只选用某一系列处理器或不需要升级源代码,那么以后每年的费用则是可以节省的,只要支付每个产品的授权费用即可。如果不需要源代码,那么所要支付的年费将会更加便宜。
4 开源、自由的嵌入式Linux
嵌入式Linux最大的应用价值是开源。如果需要支持WiFi的话,那么嵌入式Linux是很好的选择之一,搭配QT开发GUI人机界面也是非常不错的。但很多人选择嵌入式Linux的出发点是免费,这是绝对错误的。很多企业长期采取放羊式的产品开发方法,即便一些企业实施了项目管理,但对于成本核算还是缺乏参照物,几乎没有购买商业化操作系统开发产品的经验,从而忽略了开发人员的高工资开支。
从我们使用的情况来看,嵌入式Linux的内核是比较稳定的,而相对VxWorks、WinCE来说却是最贵的。但为什么我们还是要推荐选用嵌入式Linux呢?首先Linux是支持新微处理器、新驱动软件和新协议软件最多、速度最快的平台,比如最近发布的USB 3.0驱动软件。由于其最大的好处就是开源,所以我们可以根据需要而任意裁剪。即便某些驱动不稳定,但有源代码有能力的用户也可以任意修改。所以,嵌入式Linux最大的应用价值不是免费。随着Linux技术与时俱进式的发展,嵌入式Linux技术将会越来越完善。因为嵌入式Linux存在的价值,将时刻提醒垄断性商业软件回归大众化的价格,市场势必呈现按需配置的多元化用户自由选择的新时代。
事实上,我们听到的、感受到的和所接触到的很多嵌入式Linux开发工程师都是非常优秀的人才,他们的成功案例激发了人们投入使用开源嵌入式Linux的决心。但在学习和应用嵌入式Linux的过程中,目前大多数人还是停留在了解内核原理,会写会修改驱动程序的层面,而对如何开发出一个稳定的基于嵌入式Linux的产品,还是缺乏必要的能力。往往开发出来的软件不是“一劳永逸”,而是“一逸永劳”,无论是软件架构还是模块化都不尽人意。因此,要想成为优秀的嵌入式Linux开发人员,一定要继承基于Windows平台软件的优秀技术成果,最好有一些通用软件的开发经验作为基础。因为在嵌入式Linux软件的技术发展和积累过程中,有关基于嵌入式Linux软件架构、测试用例等软件工程技术相应的参考资料还是比较缺乏的,所以兼容并蓄地吸收基于Windows软件平台的开发方法还是非常有必要的。但很多人却缺乏这种意识,所以在开发产品的过程中,常常会出现“跑起来很兴奋,但要稳定却需费很大的劲”。
随着开发工具的发展和创新,嵌入式Linux的开发难度将会极度地降低,我们将推出基于Windows环境嵌入式Linux的TKStudio集成开发平台,能够非常方便地实现嵌入式Linux内核、驱动程序与应用层软件的调试。
5 闲谈GUI的开发经验
我们不仅使用过WinCE、μC/GUI,而且还使用过QT,总体来说感觉都是非常不错的。要想产品卖得好,GUI图形用户界面是至关重要的,并且要求承担设计的美工必须对用户心理学、色彩心理学、人机工程学必须有深入的研究,最好具有工业设计经验。因为这不是技术活而是艺术,所以一定要有天赋和灵气。
GUI中用到的图片,其实是非常讲究的。一般公司开发的软件中所使用的图片都是软件工程师自己画的,稍微大一些的软件公司虽然配备了专业的美工,但其图片质量确实也不敢恭维。为什么会出现这样糟糕的情况呢?首先,我们传统的产品开发思路,无论做什么都不注重细节,自己做得不好还非常有理,因为别人也是这样的。其次,我们的习惯性思维是喜欢从头到尾自己掌控,只要给别人付费就不愿意,连非常有价值的商业化操作系统都不愿意支付权利金,所以也就更加不愿意花钱购买国外的专业图库了。
而我们的做法是向世界级的第一流企业购买成熟的知识产权,然后投入人力资源开发买不到的技术,全力以赴支持技术创新,最终转化为有竞争力产品。过去我们也开发过很多似乎领先的技术,但最后却付出了比购买技术还要大得多的代价。很多时候购买一项技术从谈判到消化只需要2个月,并且与世界先进技术水平同步;而自己开发却需要一年以上,后期的维护费用不少,而且技术水平一般。有时等自己开发出来时又落后一大截了,这样的自主创新事实上毫无价值。
6 技术的价值体现
事实上技术的壁垒不在于基础技术本身,每个人实际的竞争在于行业经验的积累,所以不要迷信学什么最容易赚钱,最容易就业之类骗人的鬼话。即便当前容易,那也是暂时的。在80C51单片机开始流行的初级阶段,如果会用C51语言开发产品,看起来比使用汇编语言显得水平要高一些;前几年如果会用ARM开发产品,看起来似乎又上了一个台阶;再后来如果掌握了嵌入式Linux,看起来好象更上一层楼了。
而现实的情况是很多工程师至今仍然还在使用变种的80C51单片机开发产品,产品的市场占有率和开发人员的价值依然坚挺。对于这种现象我们熟视无睹,所以即便有了很好的基础技术,未必就能够创造令人满意的价值。我们自创业以来,开发了稳定性高的CANbus现场总线系列工控产品,一直以来口碑非常好。但当客户加上与行业有关的软件之后,其售价立即上升10倍,这才是真正的价值体现。
6年前我们推出了第一台LA1032逻辑分析仪时,只能卖2 800元。2009年推出LAB6000系列高性能逻辑分析仪时,售价则为16 800~29 800元。原因何在?新一代逻辑分析仪是面向终端用户的高附加值仪器,其购买对象为开发高技术含量产品、注重技术发展的有潜力的高端用户,能够实实在在地帮助客户解决实际的难题并创造价值。