做了这么多年的嵌入式软硬件开发,用过的平台很多,细数了一下,自己都吓了一跳,51单片机、AVR Mega128、EMC单片机、CPLD/FPGA、DSP(LF2407)、S3C2410、44B0、STM32等,软件平台有Keil C51、汇编、ADS1.2、MDK、uCOS、Linux、VC++等。没有办法,在小公司干活就是要一个人做几个人的活。很多时候,去到一间新的公司,并不是自己来决定选用哪种CPU/软件平台,主要是每一家公司都有其产品平台,并且可能已经大量用在现有的产品上,不可能说想换就换,唯有使用原来的开发平台,这样会降低风险。另外,在一间公司呆了两三年后,总会有同事离职,而他开发的产品总得有人来接着继续搞,这算是小公司的一种惯常现场吧。就算是新开发的产品,如果没有足够的时间来验证各个模块的可靠性,也是存在非常大的风险,这一点很多刚毕业的大学生没有注意到这一点,以为性能越高的软硬件平台就能够立马解决公司现有的全部问题,那是不切实际的想法。我在以前的公司工作时,曾经见过一个产品组的开发人员做过这样的产品,几个毕业没多久的研究生向老板建议开发一款新型的控制板及PC端后台服务器软件,采用的硬件架构是S3C2410+Linux操作系统,同时要扩展多路串口,多路高精度的A/D转换,多路输入输出(板上还有控制AC220V的继电器)。服务器后台采用C#开发,数据库用oracle,大部分颠覆了原来的技术架构,并且这个产品要准备用在一个比较重要的项目上。原来公司也做类似的项目,做法是用了好几块不同的控制板,有单片机控制板,也有STM32控制板,同时也有PLC和触摸屏,后台服务器用VC6.0开发,数据库SQL
server,老系统表面上看起来没有ARM9平台集成度那么高,C#也比VC6.0容易上手,但有一点原有系统用得很稳定,客户没有投诉很大问题。而那几位同事一下子把整个系统都改了,虽然一块ARM主板完成原来好几块板子的功能,认为生产成本可以降低很多,但要知道,集成这多的功能实际上也包含更多的风险,成功的可能性很低。这当中不仅仅是技术问题,还有工程问题,比如新的元件采购、样品调试、可靠性测试、生产安排等,几乎让整个公司的运作链条全参与进来,你说你能在短期内降低生产成本吗?
那时候我刚应聘进去不久,作为一个新入职工程师,也不好意思立马去否决别人的计划,毕竟他们得到老板的支持与认可。新入职才几天,总不能一上班就把别人批得一无是处吧。我当时只是给他们一个建议,最好把各个功能模块做好,并且测试稳定后再决定是否那样做,但他们显然对我的建议不感冒。实际上,我当时就已经觉得这样的做法必死无疑,几乎没有一个环节可以控制风险,做产品并不是玩过一下开发板的demo就可以容易做好,就算Linux移植、驱动、应用全部能够搞清楚了,距离一个产品还有很多工作要做。结果这个产品做了八个月,还不能提供一个完整的样品给测试人员测试,更别说生产了。老板眼看着已经不能按时交货,只好中止了开发。算一算,三个人开发八个月,人工加上公司分摊在每个员工身上的成本,(8K/月*3人)*8个月,再加上其他开支大约25~30万左右。大公司可能对这些小钱不在乎,但对于五六十人的小公司,已经没有办法支撑下去开发。最后,那三个人只好辞职了事。这样的消耗无论对于开发人员还是公司,没有一方得利,最好别干这种傻事。
总结十几年来开发的各种产品,能够让公司赚了大钱的居然是用51单片机做的控制板。实际上,从公司的角度看,产品能够赚到钱并不在于是否使用了多高难度的技术。多年前我曾经在一间自行车工厂里,看到一款专门自动安装并拉紧网线的自动化设备,它的主控板还是用80C31做CPU,外扩有液晶屏,还有很多块其它扩展板,而整机却卖到上百万人民币,国内没有任何厂家做到它的可靠性,而这个厂家是欧洲最有名的自行车行业的自动化设备供应商。所以,产品不一定非要用ARM9或多核CPU才能搞定。
在我同学朋友当中,也有不少从事电子、软件方面,而最有钱的却是一个毕业后专门做变压器的,你说这个东西有什么技术含量吗?没有一点技术含量,但他现在在深圳市区最少有几套大房子。一直以来,我认为自己编程还算是个高手,但收入比起我那同学简直不值一提。所以,别以为自己精通JAVA,或精通C++,或精通智能手机应用开发,或精通linux内核,就认为自己牛B,在别人的眼里,我们和工地上扛水泥的苦力一个鸟样,别太把自己当根葱!