进入嵌入式这行的人形形色色,有之前学计算机的,有学电子类相关的,有压根一点都不沾边的,还有一些硬件工程师转过来的,基础也千差万别。技术之路的终点也千差万别,有的最后走上了管理,有的最后转行做了PM,有的最后成了技术流的销售,还有极少数的人成了真正的技术专家。这篇文章说的技术之路的终点只有一个,就是真正的技术专家,而专家之后怎么走,就看你自己了。
嵌入式技术大体上可以分为以下几个部分,编程语言,内核技术,操作系统,总线接口,系统集成。其实细心的可以发现,在CESDN的论坛分区上就已经体现了,除了系统集成只是在嵌入式系统大区里面体现了下,其他的都有明确的板块对应关系。但是我们的学习之路并非是要如此学习,而是分为几个层次,根据我多年对业内的观察,将嵌入式工程师的技术范围分成下面几个等级: 1。初级:8051或其他单片机,UCOS,I2C,SPI,UART。汇编和C能力一般,系统集成能力弱。 2。中级:在初级的基础上,ARM/MIPS,其他一些RTOS并了解Linux,SDIO,USB。汇编和C能力不错,有一定系统集成能力。 3。高级:主要是对中级的进阶,这一个层面已经不在于掌握具体的技术,而是掌握当前流行技术中的基本思想和构成方式,所以任何流行的技术,对于这一阶段来说,都是手到擒来的。而由于掌握了所有技术的原理,系统集成能力也是超强。
对于初级和中级,都有一些明确的标杆,因为在这两个阶段,工程师还是在入行阶段,所评判的标准往往是你会做什么技术,掌握了什么技术,而学技术的最搞境界并非掌握了具体的技术,而是掌握了这个技术的构成思想以及模式。拿个很简单的例子来说,所有的接口技术,其实都可以归纳为几个要点,单工还是双工?如何发起传输,如何应答,如何报错,如何纠错,如何在其基本传输之上建立高级的应用。只要掌握了这些,接口技术还有什么难的?无非就是一些具体的方式。当然,新入行的工程师不必要一开始就了解这些,可以慢慢的从初级到中级,然后最好自己能够悟到高级。 说到这里可以结束了,我想也不用说的太具体,但是因为最近业内普遍流行在某个平台上编程而忽视深入的技术研究,所以我想再罗嗦下,纠正下这样的观点。Android也好,MTK的Tune Key也好,你只是在别人的指挥下舞蹈,而你的技术,并没有因为你做这个的时间长短有任何提升,你的提升只是更好的掌握了这个平台,5年后呢?这个平台退出市场了,你掌握的这些还有什么用处么?学技术,要扎实,要从低至上。很多人一入门,首先想的就是,我搞Linux和ARM应用处理器。我想问问,你懂 Linux里面进程怎么调度的么?这不是回字有几种写法的问题,而是皮毛和骨骼的关系。按照技术的发展,你完全应该先从UCOS之类的RTOS学起,然后慢慢学到Linux,你会发现,Linux的最基本的东西,如系统调度,信号量,事件等,是和UCOS的原理类似的。而如果你一开始学习Linux,你学到的只是如何在Linux平台上完成你的事情。
最后说点实际的,现在Linux和Andriod是很吃香,也有很多人建议一开始就学习这些热门技术,这样能挣钱。没错,开始的时候,你可以速成,但是如果你这么来规划你的技术之路,你的薪水也永远只是在工程师的主流薪水上波动,想要成为技术大牛,年薪百万,永远不可能。技术需要从基础做起,一步一个脚印,成为顶尖,没个三五年,难。不过能够坚持下来的,必成大器。