小编语:经济下行,企业裁员,所谓稳定的工作,从来都是伪命题。学无止境,在技术快速发展的今天,每一个技术人,都需要有在稳定中嗅到危机的自觉,都要主动去拥抱新技术,有意识的为自己打造全能型人才的未来职场竞争力!
华清远见嵌入式实训营里就有很多这样的学员。小编发现,选择来华清远见培训的在职人员也越来越多,大部分都是为了提升自己的技能储备。他们有的是原来做硬件工程师的,现在想提升做嵌入式硬件工程师。有的是公司做新能源汽车的,涉及到嵌入式技术,需要自己学习的。有的是事业单位公务员,时间很充足,想提升个人业务学习嵌入式。有的是做软件开发,想拓展学习智能硬件物联网。
而在各类需求里面,原来从事硬件相关工作,现在想做嵌入式软硬件开发的,具备明显的典型性。因为人才供需关系(企业招聘软件工程师的岗位人数远远多于硬件工程师的比例),加上硬件工程师的成长难度,加上软件开发各类风口技术催生的高薪岗位,软件开发工程师作为成长速度快、薪资高的岗位,一直深受职场追捧。很多之前从事硬件开发的工程师,因为各种各样的原因,会考虑转行做软件开发或者拓展学习软件开发。
那硬件工程师转行做软件开发,学什么最好呢?毫无疑问,嵌入式!嵌入式开发一直是一种软硬件结合非常紧密的技术,应用领域极为广泛,我们日常看到的很多产品,都是嵌入式产品,尤其在目前物联网、人工智能的时代背景下,物联网、人工智能的发展再次带火了嵌入式。嵌入式软硬结合的技术,在新的时代背景下,更是如鱼得水。对于嵌入式硬件工程师这个岗位,小编针对性的给大家分享一篇华清远见重庆中心王老师写的文章,希望能对所有想从事这个岗位的朋友们有所帮助。
正文如下:
随着嵌入式技术的普及,硬件工程师的性质也有所改变。嵌入式硬件工程师与我们平常所说的硬件工程师不同。嵌入式硬件工程不但要求具备硬件工程师的基本技能,还必须完成部分软件工程师的工作,例如:底层驱动的开发、嵌入式操作系统的裁剪,移植:GUI、文件系统等软件的移植;基于嵌入式操作系统的底层驱动程序的设计等。
一个合格的嵌入式硬件工程师,不仅要懂得硬件电路的设计和制作,还需要懂得固件程序的设计和调试,只有这样才能算完整的硬件工程师。当然,也分单片机嵌入式工程师和Linux嵌入式系统硬件工程师,前者更容易些,后者相对较复杂。
嵌入式硬件工程师需要学会的基础技能:
1. 由需求分析到总体方案、详细设计的规划创造能力;
2. 熟练运用设计工具,设计原理图、PCB板的能力;
3. 熟练运用单片机、DSP、PLD、FPGA等进行软硬件开发调试的能力;
4. 熟练运用仿真工具、示波器、信号发生器、逻辑分析仪等调测硬件的能力;
5. 掌握常用的标准电路的设计能力,如复位电路、常用滤波器电路、功放电路、高速信号传输线的匹配电路等;
6. 故障定位、解决问题的能力;
7. 设计文档的组织编写技能
如果你具备了上面这些基本技能,那么可以恭喜你,你可以作为一个普通的硬件工程师了,你也可以往一名真正的嵌入式硬件工程师靠拢。
对于嵌入式硬件工程师,应该包含硬件层、驱动层、操作系统层和应用层技术的学习:
1. 硬件层:
1. 应该具备单片机接口设计编程,并且能够用C语言和汇编进行编程;
2. ARM接口电路设计编程(裸机驱动程序编写);
3. 自行完成CPLD的逻辑设计等
硬件层是整个嵌入式系统的根本,如果现在单片机及接口这块很熟悉,并且能用C和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成CPLD的逻辑设计的,同时还要对操作系统内核及其调度性相当的熟悉。但硬件平台是基础,增值还要靠软件。
硬件层比较适合于,电子、通信、自动化、机电一体、信息工程类专业的人来搞,需要掌握的专业基础知识有:单片机原理及接口技术、微机原理及接口技术、C语言。
2. 驱动层:
1. 需要熟悉操作系统的任务管理机制;
2. 理解操作系统时间片机制;
3. 熟悉操作系统内核架构和实时调度性;
这部分比较难,驱动工程师不仅要能看懂电路图,还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导致其它任务不能动行。不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,很多人都能做到,但可能连个初级的驱动工程师的水平都达不到,这样所写的驱动在应用调用时,就如同windows下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不就是等上一会才能运行后来打开的程序。想做个好的驱动工程师,没有三、四年功底,操作系统内核不研究上几遍,不是太容易成功的,但其工资在嵌入式系统四层中,可是最高的。
驱动层比较适合于电子、通信、自动化、机电一体、信息工程类专业,尤其是计算机偏体系结构类专业的人来搞,除硬件层所具备的基础学科外,还要对数据结构与算法、操作系统原理、编译原理都要十分精通了解。
3. 操作系统层:
1. 明白操作系统选择,根据需求选择合适的操作系统;
2. 明白系统的启动流程;
3. 根据用户需求,完成系统的移植;
对于操作系统层目前可能只能说是简单的移植,而很少有人来自已写操作系统,或者写出缺胳膊少腿的操作系统来,这部分工作大都由驱动工程师来完成。操作系统是负责系统任务的调试、磁盘和文件的管理,而嵌入式系统的实时性十分重要。据说,XP操作系统是微软投入300人用两年时间才搞定的,总时工时是600人年,中科院软件所自己的女娲Hopen操作系统估计也得花几百人年才能搞定。因此这部分工作相对来讲没有太大意义。
4. 应用层技术:
1. 能够在理解操作系统的基础上,利用系统所提供的接口,完成用户需求。
2. 能够立即系统所提供的相关专业算法等。
相对来讲较为容易的,如果会在windows下如何进行编程接口函数调用,到操作系统下只是编译和开发环境有相应的变化而已。
嵌入式硬件工程师的从业范围是相当的大,很多工程师只是从事其中的一部分开发工作。硬件工程师转行做嵌入式驱动层、操作系统层开发,具备天然的技术优势,且都是目前高端高薪发展方向。当然了一个高级的嵌入式硬件工程师一定是一个全能型的人才。