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