嵌入式一直冠以高门槛的名号,相较于软件开发逊色的起步薪资也被网友调侃“饿肚子”。热情投入嵌入式的人比比皆是,无可奈何转入产品经理或技术型销售的也比肩继踵。嵌入式工程师有前途吗?
的确,由于嵌入式代码量相对纯软导致起步工资低,但行业大牛的工资也非常可观。另外以长远目光来看,嵌入式渗透消费电子、安全安防、汽车电子、医疗电子、电信等等各个行业的计算机领域,而每年也约有40万的人才缺口。今年机器学习(ML)话题大热,Arm也推出神经网络机器学习软件ArmNN,可在基于Arm的高能效平台上轻松构建和运行机器学习应用程序,未来嵌入式行业也将不断革新,嵌入式市场有所可期。
据知乎某15年从业人员看,对于嵌入式不必悲观,也切莫盲目乐观,不同时期不同人对前途的定义是不同的。他表示,影响前途发展的因素包括平台、人脉、目标与机遇,有了更多的项目经验才有立足的机会,有广阔的人脉关键时刻才会有人拉一把,有了目标才能专注一个方向不断发展。另外,他还表示,切莫钻技术“牛角尖”,管理岗能爬就爬,错过机会,错过年龄,追悔莫及也无济于事。
还有网友表示,世上不只平均收入 的行业从业人员可以高质量的生活,排名第二、第三、第四等等从业人员都有高质量的生活,而在排名榜单上光鲜亮丽的从业人员也未必过得大红大紫。任何行业都与机遇、环境都有关,再好的行业也有混不下去的人,再差的行业也有人闷声赚大钱。另外,时间在变,世事也在变,前几年大热的公务员,现在也逐渐被人嫌弃。所以在浓厚的兴趣使然下,才有可能成功。
另外,嵌入式这个鱼塘也有搅浑水般的存在。据了解,某知乎er最近面试的十几个平均工作年龄超三年的硬件工程师,居然搞不清楚三级管mos管,甚至连三个脚的名字都可以搞错,高低电平这种基础知识也搞不清楚,令人意外的是,这种水平的人开口要价也基本10K+。高的并不是门槛,高的是可以踏踏实实干好这一件事。
什么是前途?个人兴趣+努力程度+把握机会=前途。如果单纯为了吃饱饭,完全没必要去学什么嵌入式,嵌入式培训入学门槛高、学费贵,赤裸裸的歧视本科以下学历,歧视文科,培训出来就业虽然年薪10万起,但是没基础没兴趣学得会吗?如果为了吃饱饭,大千世界何其多的机会,何必折腾?
嵌入式工程师如何规划就业之路?
据贴吧某位大神分享,进入嵌入式的人形形色色,在此前有计算机专业的、有电子类专业的、有硬件工程师、有些甚至完全不相关,基础也千差万别。技术之路的终点也千差万别,有的 走上了管理,有些转行做了产品经理,有的 成了技术流的销售,还有极少数的人成了真正的技术专家。而嵌入式工程师的的终点只有一个,就是真正的技术专家。
嵌入式技术大体上可分为编程语言,内核技术,操作系统,总线接口,系统集成。其实细心的可以发现,在CESDN的论坛分区上就已经体现了,除了系统集成只是在嵌入式系统大区里面体现了下,其他的都有明确的板块对应关系。但是学习之路并非如此学习,而是分为几个层次,据该工程师多年对业内的观察,将嵌入式工程师的技术范围分成下面几个等级:
1.初级:或其他单片机,UCOS,I2C,SPI,UART。汇编和C能力一般,系统集成能力弱。
2.中级:在初级的基础上,ARM/MIPS,其他一些RTOS并了解Linux,SDIO,USB。汇编和C能力不错,有一定系统集成能力。
3.高级:主要是对中级的进阶,这一个层面已经不在于掌握具体的技术,而是掌握当前流行技术中的基本思想和构成方式,所以任何流行的技术,对于这一阶段来说,都是手到擒来的。而由于掌握了所有技术的原理,系统集成能力也是超强。
对于初级和中级,都有明确的标杆,在此阶段,工程师还是在入行阶段,评判标准往往是掌握了什么技术,而学技术的 境界是需要掌握了技术的构成和模式。拿个很简单的例子来说,所有的接口技术,其实都可以归纳为几个要点,单工还是双工、如何发起传输、如何应答、如何报错、如何纠错、如何在其基本传输之上建立高级的应用。只要掌握这些,接口技术便不攻自破。
最近业内普遍流行在某个平台上编程而忽视深入的技术研究。Android也好,MTK的TuneKey也好,你只是在别人的指挥下舞蹈,而技术并没有任何提升,提升只是更好的掌握了这个平台,5年后呢?平台退出市场了,掌握的这些还有什么用处么?学技术,要扎实,要从低至上。很多人一入门,首先想的就是,专注搞Linux和ARM应用处理器。在此之前,Linux里面进程调度了解吗?这不是“回字有几种写法”的问题,而是皮毛和骨骼的关系。按照技术的发展,完全应该先从UCOS之类的RTOS学起,然后慢慢学到Linux,会发现,Linux的最基本的东西,如系统调度,信号量,事件等,是和UCOS的原理类似的。而如果你一开始学习Linux,学到的只是如何在Linux平台上完成你的事情。
说点实际的,现在Linux和Andriod是很吃香,也有很多人建议一开始就学习这些热门技术,这样能挣钱。没错,开始的时候可以速成,但如果从长远来看,薪水也永远只是在工程师的主流薪上波动,想要成为技术大牛,年薪百万,永远不可能。技术需要从基础做起,一步一个脚印,成为 ,没个三五年,难。不过能够坚持下来的,必成大器。
学习嵌入式需要涉及哪些工作?
据21IC论坛分享,分为四类工作:
1.系统设计工作
在系统的设计阶段,系统分析师将根据需求确定系统的硬件的基本构成,根据系统的需求选择使用那种处理器,使用哪种操作系统,使用那些软件开发工具。系统分析师往往是较为完整的参与过嵌入式系统设计的全过程,对于系统应用的行业较为了解,对于嵌入式系统本身的开发流程十分清楚的人。
2.硬件设计工作
系统硬件设计人员需要根据系统分析师的设计结果,进行硬件原理图的设计。通常需要硬件设计人员熟悉嵌入式系统的硬件构成。硬件设计人员需要了解常用的嵌入式系统处理器,存储器(Flash,SDRAM),以太网MAC芯片,音频/视频编解码芯片,电源管理芯片,总线接口电路(USB,PCI),液晶显示模块,可编程逻辑器件(FPGA/CPLD),无线网络通信模块(Bluetooth,WLAN,GPRS)等硬件电路构成元素的基本工作原理,连接使用方法,使用注意事项,基本调试方法等内容。在网络上能找到很多公司的评估板的原理图,对于这些原理图要仔细研究,摸清处理器同存储器,网卡,液晶模块等器件的连接方法和原因。通过对这些电路的研究,能够较快地了解整个嵌入式系统的构成,这些电路同实际产品中的电路虽有一定差别的,特别是对于手持设备,但这些差别不影响初学者学习嵌入式系统的硬件设计基本构成。
3.驱动程序和操作系统移植工作
现代嵌入式系统的开发同传统8位单片机系统的开发相比,一个显著的区别就是嵌入式操作系统的广泛使用。在拿到焊接完毕的电路板,并进行基本的测试后,就要进行驱动程序和操作系统的移植工作了。首先要进行的Bootloader的编写和移植工作。Bootloader相当于PC系统的BIOS。对于有些嵌入式操作系统,如uc/OSII没有bootloader同样可以开发调试。但是对于WindowsCE和嵌入式linux系统而言Bootloader就是必须的了。
4.应用程序的开发
嵌入式系统的应用程序开发同在PC机上开发应用程序的区别不是很大。对于WindowsCE系统而言,Microsoft已经提供了较为完善的开发工具。开发人员可以使用Windows的C#语言直接在PC上进行应用程序的开发和模拟调试,也可将目标系统同PC机相连,进行联机调试。现在有很多系统支持J2ME(JAVA的嵌入式系统版本),这使得JAVA在嵌入式系统应用开发中占有较大的优势。另外,作为专业的嵌入式系统软件开发人员,还需要充分了解面向对象技术和设计模式等方面的知识,当然作为初学者可以先不深入研究这方面的内容。同学们在学习嵌入式的过程中要不断进行知识的探索,在一步一步学习之后就会有一个很大的进步。