在IT领域做预言,很难准确。还好我只是一个无名小卒,预测对错与否,大家也只当胡咧咧好了。
毕业之后,工作职责中至今都带有嵌入式三个字,至今已经有6年的时间,对嵌入式开发,还算小有心得。最早的软件开发领域,原本没有embedded这一分类,因为早期的PC计算能力太弱,内存太小,大家都相当于在从事embedded开发。之后PC行业出现了Microsoft + Intel联盟,两家很默契,Intel定期推出更快的处理器,Microsoft义不容辞的消耗掉所有新增的计算能力,却仅带给用户20%甚至更少的功能提升。之前已经说过,IT行业赢家通吃,速度是生存的根本。到PC进入Pentium时代时,大家发现,开发效率成为瓶颈,而不是计算能力,于是各种类库,IDE竞相出现,都是为了提高生产力,经过层层封装的软件在运行效率上大不如前,体积也越来越大,而硬件厂商趁此时机大赚特赚。
还记得超级解霸的作者梁肇新先生的书中提到他会很认真的过汇编代码,甚至手写,超级解霸在我的P166MMX上的表现给我留下了深刻的记忆。我的播放器历程大体是超级解霸->金山影霸->FFMPEG->mplayer classic->暴风影音->QQ影音。大学时代,罗云彬先生出的win32 汇编编程也成绝唱。喜欢汇编和底层的人,个人觉得往往是控制欲较强的人,想要从最底层控制计算机。好吧,又跑题了,本来要说嵌入式的,为什么扯到了PC?
最早的嵌入式概念应该是MCS-96/98/51单片机时代,Soc用于工控领域,今天8位机基本已经绝迹,AVR PIC之类更像是当年的COBOL,我们叫Legacy system,再玩工控,最少得ARM7,Cortex-M3起,还要能够上个freeOS eCos什么的,最后再带一Tcp/Ip协议栈+USB支持,你要是写一个while 1 大循环你都不好意思跟人打招呼。我进入这个领域的时候,Linux正是如日中天,我也刚好赶上那一拨潮流,研究Linux的虚拟内存机制、中断系统那些日子,至今历历在目。现在回想起来,其实那个时候的Linux已经鼎盛,底层的架构已经相当的完善,移植到新的芯片上越来越容易,而且芯片厂商的BSPs开始越来越完善,BUG越来越少。做driver其实就是总线协议翻译器,当然基本功还是很重要的,要有很强的并发思维能力才能做好driver,问题是,后面driver也越来越丰富,除了自己定义的FPGA需要开发一下驱动,而这种驱动又是建立在成熟总线之上的,连翻译器都不如。Anyway,我还是非常感谢那段岁月,让我对计算机的运行原理理解的还算透彻,从cache到MMU到内存时序,从IDE到SATA到genhd,从USB协议栈到mass storage,理解了底层的东西,对我的系统思考能力有相当大的帮助。
但是,今天如果你还想进入这个行业,我个人推荐,学习可以,但是不要指望它作为你职业生涯的动力源。早年的嵌入式,往往意味着资源受限,缺少良好的中间件,基本都要自己造轮子。今天的嵌入式已经变成当年PC的翻版,Android+ARM,正在冲击着嵌入式开发领域,Google买了Moto移动之后,更加暴露了司马昭之心。现在的Ti开发板拿来都能run android,现在的嵌入式,是一个app当道的年代,这时的app开发,跟当年的PC软件开发已经变的越来越接近,Android,Qt,Windows 8,iOS,都已经相当的完备,而计算资源也不再是问题,双核1.5G已经出现,内存随便也在256MB以上,而且还有先进的沙箱技术,应用开发变的越来越简单,很快就会出现一些寡头,占据这个领域。
看到这里,大家会说,现在玩Android Windows8 iOS不是正当其时么?薪酬高,就业机会也很多。且慢,随着大家的不断涌入,以及大公司将门槛不断降低,很快这个行业的薪酬就会被拉平,甚至更低。更何况,现在被Intel收购的windriver,把Virtualization已经引入到了嵌入式开发当中,连并行都不用怎么思考了。放心,我还在玩“嵌入式”,不过也不妨碍我学习C#,Python,ruby,Lisp,因为医疗行业的缓慢,使得我还可以做相当长时间的Legacy man,呵呵。
设备的发展已经快到瓶颈,就如同今天PC升级的动力远不如之前一样,等到cortex A15 和 Ivy bridge普及时,设备将趋于饱和,没有在这一波占据上游的公司,会很危险,如Nokia MTK。
我个人觉得,云计算这个概念已经到了成熟期,在这个时期,平台服务和内容提供商将成为赢家,如何构建平台服务,以及如何在平台上二次开发,将成为一个热点,如在新的HTML5上构建中间件和控件库,如将在线服务渗透至每个人的日常生活(EverNote,麦库记事,DropBox...),而设备的重要性将大大降低。反而是传感器领域,正在不断的突破之中。
所以,今天的嵌入式,也许就是明天的C51?