2007年底我发表了一篇文章"我与单片机和嵌入式系统20年",后经热心的媒体朋友推荐在几个网站上刊登并受到了许多读者关心和反馈。更多意见是希望我能把从业这20年心得分享给年轻的工程师朋友,仔细考虑一下的确很有道理。20年时间电子技术已经有几代的变化,过去认为的高新科技,今天是萝卜白菜。但是掌握坚实的专业基础,捕捉机遇,树立信心一直都是不变应万变的人生必修课程。我愿意借下面这篇短文和大家分享我的体会,里面即有成功的喜悦,也有失败的挫折、遗憾和惋惜。
硬件是本
1984年大学毕业,我被分配的第一份工作就和计算机硬件密切相关-测试和维修,研究所事业部的解释也是合情合理的——你是男同志,学自动控制的,其他同届分配来的多数是学计算机的,女同志也占多数。我开始还老大不情愿,时不常地往科室里面跑,总想多学习点编程方面的技术。但是很快,同事们都跑过来找我请教了,因为那个时候的计算机可要比现在的PC复杂得多,我们研究所的专业方向是工业控制,那就必须和外设、接口、驱动打交道。如果一点不了解处理器、寄存器、接口电路、外设、程序是没法设计和测试的。因为工作的特点,我首先学习和掌握的就是这些东西,例如,通过编写8255驱动打印机的测试程序,可以完整地把CPU的I/O电路、8255器件和外接口测试好。一段时间以后,我对计算机的陌生、胆怯的心理一扫而光,上学时候更本没有机会看的CPU,存储器,磁盘,电源现在都有机会亲自组装,亲自把操作系统安装上去(那时并不像现在的WinXP这样简单),我们使用的是微型机,光是操作系统的8寸软盘就多达十几张,或者几盘磁带,安装一般需要几小时,而且系统还没有任何中文标志。
这些和硬件打交道的经历加上2000年我的研究生毕业设计课题——一个电网控制系统的项目,另外,下海后参加数字程控交换机、移动电话基站的项目都是实实在在的硬件设计,其中一个设计是基于8086的主板,另一个是设计386的主板,都要求运行实时多任务操作系统。整个系统很复杂,当时的器件集成度低,调试手段也没有现在ARM的JTAG方便,但是掌握了硬件设计,调试和生产的基础对于我的专业素质大有提高,这些经历为我之后投身嵌入式事业奠定了基础。
学习的力量
大家都知道学习的重要性,我想说的是,如果你热爱现在的专业,希望在这个方向上有更深发展,那么尽可能多地积累这个专业的知识是你未来成长的基础。1988年我得到一个考研的机会,当时的不希望我报考研究生,他表示计划安排我到美国参加培训,当时能够去美国的机会并不多,但我考虑再三后,还是决定放弃出国的机会。因为通过几年的工作实践,我深深感到自己计算机专业基础知识不够坚实,因我一九八几年在大学本科学习的是FOTRAN语言和大型机,而后来研究生课程的C语言和软件工程的课程都更适合一九九几年的情况。两年的研究生学习虽然使我在某些方面损失了一些,却为我之后十几年突飞猛进的成长和进步奠定了厚实的基础,也为我之后下海创业平添了一份自信和力量。
学习不仅是进入学校学习,更是一个持续持久的过程。从我初在研究所里接触微型机、单板机和实时操作系统,到嵌入式操作系统、通信协议、嵌入式数据库,再到手机软件,转变相当大,而专业领域却一直以嵌入式系统为核心,这块我投入的精力大,也喜爱:从VRTX,uC/OS-II到Linux和MontavistaLinux,对这些产品从了解、谈判、市场、技术支持到培训、项目开发我参与了几乎所有过程。
技术上,即使同属于嵌入式操作系统,彼此之间也有差异:内核原理、API、BSP、文件、网络、图形模块均不一样,尤其是转到嵌入式Linux后,我发现它和以前的嵌入式操作系统之间存在很大差异,转变就要为之付出相应的汗水、辛劳。
通信产业在20世纪80年代末蓬勃发展,的通信企业纷纷仿效国外对手投入巨资研发先进的通信设备。嵌入式操作系统、网络协议和开发工具等嵌入式软件立刻有了广阔的用武之地。我从1984年开始接触实时操作系统,当转向网络协议,特别是电信协议时,对我一个计算机专业的人,其困难可想而知了,即使只学习个皮毛也不得不下一番苦功夫,那怎么去学呢?我的方法是:一、向厂家学——我和公司的技术人员专门到波士顿附近的Netplane和加州附近的Telenetworks参加培训,虽然花钱又吃力,但是收获不少;二、向用户学——东方通信和上海贝尔(现在的阿尔卡特)是我们的用户,记忆特别深刻的是东方通信,他们朴实热情。如此反复几十次的谈论和培训让我和同事都很快成长起来。手机是90年代后流行的通信和消费电子产品,企业也在此期间进入这个领域。开始是组装生产,后来是自主设计。手机虽小,五脏俱全,除了通信工作外,现在越来越多的手机增加了多媒体、PDA、照相、互联网功能,这些多是典型的嵌入式系统。手机通讯部分一般是由基带芯片公司设计完成,手机厂商主要是完成应用系统设计——嵌入式系统。因为当时与montavista合作,而摩托罗拉又在使用这个软件,于是我们在2004年进入手机这个圈子,机遇是全球兴起了一股智能手机浪潮,Nokia使用Symbian,摩托罗拉使用Linux,还有微软windowsmobile得到了许多台湾公司的支持,摩托罗拉A760系列在市场的巨大成功激励了手机企业加入Linux智能手机开发队伍。
手机设计有相当多的特殊要求,就电源管理而言,因为手机是一个关键应用装置不同与一般的消费电子产品,手机能耗的指标好坏直接影响产品销路,电源管理和应用处理器、OS(比如Linux)、驱动程序、应用软件、手机的硬件(LCD大小等)都至关重要,我和公司技术人员花了大量的时间研究这个问题,特别是基于Linux的电源管理的方式,公司技术人员通过支持我们的montavistalinux手机用户的实践,理解和掌握了具体的方法。近我和他们一起撰写的"嵌入式系统电源管理软件的比较"刚刚在某杂志发表,有兴趣的朋友可以交流。
嵌入式系统技术和知识更新很快,所以学习永远是进步和成功的源泉。
坚持才能成功
这里想要说的是,无论做任何的事情总是有顺利和不顺利的时候,有失败的悲伤,也一定会有成功的喜悦,但是无论如何一定要坚持,坚持才有希望。
90年代初,决定下海本身是一个需要勇气的事情,决定从事软件就显得与众不同,而后来致力嵌入式软件,就更需要有信心和毅力,更要耐得住寂寞、坚持不懈——这是我的心得。
1995年公司成立初期,我在向用户介绍VRTX的时候,多数场合我必须先把嵌入式操作系统的基本知识讲解一遍,然后再把一个多任务的程序演示一下给他们看,简单的可以是五个任务。这种情况是五个任务的优先级相同,如果改变任务的优先级,显示的情况就会发生变化,进而需要演示使用调试工具显示任务状态和程序源代码及断点调试。
整个的销售过程很漫长,有时甚至是煎熬,1~2年是很正常的时长,但我没有放弃,几年的努力终于迎来了一点点收获,开发工具(MRIC/C++编译器和XRAY调试器)在电信设备研究和开发企业得到了认可。当时大多企业正在开发基于68302的数据终端设备,急于寻找一套开发工具。VRTX支持X86的real-mode(实模式)版本也因为软件配置灵活河丰富,使用简单,价格便宜在基于186/386的控制企业开始使用,但是这些只是巨大的嵌入式软件市场的冰山一角,等到真正冰雪开始融化,已经是90年代末了。这中间我也考虑过转向其他的产品和市场,也尝试过硬件仿真器,测试工具等产品,但终我和公司的同事还是坚持下来,到今天,嵌入式操作系统仍然是我公司的主力产品和方向。
uc/os-II这个嵌入式操作系统的推广过程和VRTX是相反的,VRTX是要通过自己学习,向用户宣传演示,让用户接受这个概念,让用户相信使用嵌入式操作系统的好处并能够成功。而uc/os-II则是因为作者JeanLabrosse先生的一本书和他的中文版本在悄然流行起来,也许是因为早期的uc/os是完全免费的软件,而升级后uc/os-II是一个商业软件。这件事情无论是原作者、业内人士一开始都没有特别留意,由于用户的知识产权意识不强,这几年我们的压力相当大,一方面是厂家不理解,他们质疑,既然有这么多人在使用这个软件,为什么购买商业授权的用户却是少而有少。另外一方面,公司每天收到大量的uc/os用户信息,当销售员把电话打过去,真正有意向购买者凤毛麟角,要么就是不知道这是个商业软件,要么就觉得价格太贵。厂家和公司内部的抱怨都压到我这里。我顶住了这些压力,并坚信只要uc/os-II做得好,用户能够用它设计出好产品,用户还是愿意为uc/os-II买单的。况且它的价格只是某些国外同类软件的十分之一,并且没有生成数量的限制。安抚好公司内部,我和公司和同事多次与Jean沟通,后我作了三个方面的安排:一、让Jean写一封关于uc/os-II的版权声明,我们翻译成中文发表在麦克泰公司网站,在主要嵌入式系统媒体发表;二、说服嵌入式硬件,工具和系统厂家通过购买合法uc/os授权成为伙伴;三、重点专注在的外资、上市、面向出口企业、的半导体和大型设计机构。经过近两年的努力终于取得了一点成绩,如北京博创、广州周立功等嵌入式系统公司已成为我们的合作伙伴;珠海矩力、南京南瑞、广州数控、科学院DSP中心等已成为uc/os-II合法授权用户。更加可喜的是通过我们在的辛勤工作,得到了半导体公司和工具厂商如NXP、ST、Xilinx和IAR的认可,他们一致认为uc/os-II是一个应用广泛的嵌入式操作系统。公司内部原本不看好这个产品的人也逐渐改变了看法。
产品之痛
没有哪个企业家不想拥有自己的产品和技术,我也一样。我一直梦想着自己的核心产品。在中地,一定的时间内,硬件和系统产品是企业做强做大的关键。许多成功企业的共同之处就在于他们有自己的核心强势产品,如华为通信产品、联想的PC、长虹的电视、海尔的白色家电。
我和麦克泰在过去十几年中,多次尝试过自主开发、和别人合作开发产品,给我影响深的是这样一个例子:1998年通信蓬勃发展,设备制造企业也大干快上,他们对先进的嵌入式硬件、软件、工具等非常感兴趣,数据通信也是当时的发展热点,摩托罗拉公司的Powerpc860(现在的飞思卡尔)通信处理器尤其引人注目,860集成了一个通用的CPU和通信引擎构成4个高速的10/100M以太网络,这对于当时的数据设备和网络管理设备都是非常适合的芯片。
于是我们借鉴国外的一个硬件参考设计,自己开发了一款860硬件,取名叫NETE860,它的特别之处是除了母板内置的100M以太网外,还可以通过4个扩展接口支持10M,E1接口,这在当时市场上销售的所有860的设计中是独一无二的。初我们移植了VRTXRTOS和internicheTCP/IP(硅谷的一家提供TCP/IP源代码的公司),后来因为Vxwork逐渐在流行了,我们又移植了BSP支持Vxwork,到再以后上海罗顿和交大希望在NETE860上使用开源Linux开发路由器,我们又把hardhatlinux(MontavistaLinux早期的一个开源版本)移植了上去。两年的时间这个产品逐渐成熟起来,有了一些销路,但是由于初期的设计是一个参考设计平台,没能充分考虑OEM的需求,这样销售上就没有长远的数量机会,只能和我们开发工具软件搭配销售。我利用多年在西南市场的关系,找到了一个合作开发基于NETE860路由器的机会,当时甚至合作的公司名都已经注册下来,但由于我和对方过于谨慎,另外,包括我在内的公司管理层一直对需要长期投入的OEM销售和产品抱有一种将信将疑的态度,导致后来其他公司看到这样的机会,很快开发出类似的产品来。他们定位了OEM,加上开源Linux开始大行其道,这种免费软件配合硬件的模式立刻流行全国。860之后我们虽然敏感于ARM时代的到来,开始设计NETCARM,但是不久就被淹没在众多ARM硬件的海洋里悄无声息了。
之后的几年,我和公司继续尝试过合作开发数字监控产品,委托别人开发嵌入式调试工具等,终因时间长,收效漫而告终。久而久之我的信心慢慢消沉下来,公司内部的压力和抵触情绪也越来越大。我和公司的产品之路也这样偃旗息鼓了。
今天回头看看过去的道路和曾经的同行,许多当时名声显赫的公司已悄然无声或不复存在,我庆幸自己和麦克泰还能够生存下来,同时我很仰慕像合肥的华恒,科银京成(成都电子科大为开发团队)的同行们,他们不但能够坚持下来,而且已经有了相当的知名度,想必也经历了一番惊涛骇浪。
结语
20年的时间是人生的一个片段,从20多岁风华正茂的青年到沉稳的中年是一个充满幻想的过程。追逐理想的足迹,我走过了学生、工程师、创业者和管理者的道路。我热爱嵌入式系统、我的工作、我学习和推广过的产品、我的家人、老师、合作伙伴、同事以及许许多多的用户和同行朋友们。如果再让我选择一次,我依然会选择嵌入式软件和嵌入式系统,正如行业老前辈何立民老师所说"嵌入式系统是一个无限大的系统",它充满着新奇、变化和智慧,像一个磁石永远吸引着我。