作为一名嵌入式软件开发的大二学生,需要尽早明确自己的职业方向并做好职业规划。下面对所学专业谈谈自己的认识以及对当前市场行情、人才需求的看法,并提前做好相应的准备。
关于嵌入式,它涉及到全社会生活的方方面面,一个嵌入式装置一般都由嵌入式计算机系统和执行装置组成,嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和应用软件层组成。执行装置也称为被控对象,它可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。
嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM内存中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。
从应用对象上加以定义,嵌入式系统是把软件和硬件结合,还可以包含机械的专业知识。国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
嵌入式开发的相关领域:
当今嵌入式行业内,主要有一些比较流行热门的领域,这些领域的人才缺口较大,容易受到企业的欢迎:
① 数字图像压缩技术:这是嵌入式最重要最热门的应用领域之一,主要是应掌握MPEG编解码算法和技术,如DVD、MP3、PDA、高精电视、机顶盒等都涉及MPEG高速解码问题。
② 通信协议及编程技术:这包括传统的TCP/IP协议和热门的无线通信协议。首先,大多数嵌入式设备都要连入局域网或Internet,所以首先应掌握 TCP/IP协议及其编程,这是需首要掌握的基本技术;其次,无线通信是目前的大趋势,所以掌握无线通信协议及编程也是是很重要的。无线通信协议包括无线 局域网通信协议802.11系列,Bluetooth,以及移动通信(如GPRS、GSM、CDMA等)。
③ 网络与信息安全技术:如加密技术,数字证书CA,以及各种网络安全设备,包括硬件防火墙,入侵检测IDS,还有防毒墙,IPS等,中国在这方面还是没有自己优势的,我们陈院长好象正在往这方面发展.
④ DSP技术:DSP是Digital Signal Process数字信号处理的意思,DSP处理器通过硬件实现数字信号处理算法,如高速数据采集、压缩、解压缩、通信等。数字信号处理是电子、通信等硬件 专业的课程,对于搞软件的人若能了解一下最好。目前DSP人才较缺。如果有信号与系统、数字信号处理等课程基础,对于学习MPEG编解码原理会有很大帮助。
职位方面,职位有主要有五个方面:
① 系统设计工程师 ② 硬件工程师
③ 底层驱动工程师 ④ Linux系统工程师
⑤ 应用设计工程师
薪资方面,在嵌入式行业中,具有10年工作经验的高级嵌入式工程师年薪在30万元左右。即使是初级的嵌入式软件开发人员,平均月薪也达到了3000—5000元,中高级的嵌入式工程师月薪平均超过10000元。参考国内招聘网大量的招募信息,嵌入式硬件工程师普遍在7000元左右,嵌入式软件工程师在10000元左右。
对于专业知识需求,因所选专业为嵌入式软件,故广集招聘网的招聘信息后,此处只罗列出和嵌入式软件相关的:
① 关于ARM:ARM A7/A8/9或A57 Cotex-A9 STM8 STM32
② 关于编程语言:精通C/C++语言,熟悉汇编
③ 常用软件:keil、atmel studio、Candence、PADS、Altium Designer
④ 协议相关:TCP/IP、USB、USART、I2C、SPI等,熟悉基于socket的网络通信
⑤ 通行通信接口编程:RS232,RS485,以太网
⑥ 操作系统相关:
1.掌握LINUX或uCOS 、rt-thread某一操作系统的使用与开发
2.能独立进行内核的移植和驱动编写。
3.内核系统移植/调试及应用程序开发工作
⑦ 辅助:
1.能阅读硬件原理图和芯片数据手册
2.可熟练使用示波器等常用嵌入式开发仪器
⑧ 其他:
1.良好的代码编写习惯和文档编写能力
2.良好的沟通和协调能力
3.能够阅读英文技术文档
关于学习之路,结合市场需求和网络上的资料,梳理了一份适合自己的学习路线。
① Linux开发基础学习
虚拟机搭建、Linux宿主机安装、Linux命令、服务器搭建Samba,NFS、VI编辑器
② Linux编程
GCC/GDB、Makefile、交叉编译环境搭建+C语言强化+Linux系统编程
③ 51单片机/AVR单片机入门
GPIO、中断服务程序、定时器、状态机编程、按键、OLED
④ ARM体系结构与编程
ARM处理器编程
⑤ Linux系统内核分析
⑥ Linux驱动程序开发
我的嵌入式目标:
① 底层驱动开发
② 应用程序开发
总结:由薪资和待遇看来,当前市场人才缺口还是较大,需求量逐年上升;但由于嵌入式不像移动互联开发(如安卓开发、C#开发等)纯软件的开发思维,而是涉及到底层硬件学习又兼顾驱动程序的编程,枯燥的硬件电路学习和繁杂的驱动程序编写,造成了嵌入式入门的困难。在我看来,在当今物联网的趋势和政策下,物体与物体的联系越来越密切,未来的嵌入式开发势必占据IT行业的半壁江山,扭转现在移动互联当红的现状,形成全民物联、全民嵌入的风气,呈现一幅繁荣的景象。但学习嵌入式需要有足够的耐心和毅力,需要学会举一反多,并建立牢固的知识基础,所以,在未来面对求职市场之前,我会坚持学习底层知识,敢于提问,敢于解决问题,多参加电子类比赛,尽最大努力提升自己的实力。最后,写下自己的座右铭:
让坚持成为一种习惯,让放弃成为一种奢侈。