嵌入式开发职业发展方向有哪些?
1. 硬件层是整个嵌入式系统的基础,如果熟悉单片机和接口,会C语言和汇编语言编程的话,从嵌入式系统的硬件层入手会比较容易,硬件层也是驱动层的基础。
一名优秀的驱动工程师必须能够看懂硬件电路图并自行完成CPLD逻辑设计,同时熟悉操作系统内核及其调度。但硬件平台是基础,附加值还是要靠软件。

硬件层比较适合电子、通信、自动化、机电一体化、信息工程等专业的学生,需要掌握的基本专业知识有单片机原理与接口技术、微机原理与接口技术、C语言等。
2.驱动层:这部分比较难。
驱动工程师不仅要能看懂电路图,还要精通操作系统内核,这样编写的驱动程序才不会在系统调用时独占操作系统时间片,导致其他任务无法执行。如果不了解操作系统内核架构和实时调度,又没有良好的驱动程序编写风格,很多人虽然能像大多数书上说的那样加驱动,但可能连初级驱动工程师的水平都达不到。
这样编写的驱动程序在被应用程序调用的时候,就好比我们在Windows中打开一个程序并运行,之后再打开另外一个程序,要么中断前一个程序,要么等待一段时间再运行后面的程序。
没有三四年的工作经验,没有对操作系统内核的一些研究,想要成为一名优秀的司机并不容易,但他们的工资却是嵌入式四层中最高的。
驱动层比较适合电子、通信、自动化、机电一体化、信息工程等专业的学生,特别是计算机体系结构专业的学生,除了硬件层的基本知识外,还要对数据结构与算法、操作系统原理、编译原理等有较强的理解。
3.操作系统层
对于操作系统层,目前只能说是简单的移植,写过操作系统的人非常少,或者写过功能不全的操作系统,这部分工作大多由驱动工程师来完成。
操作系统负责调试系统任务,管理磁盘和文件,嵌入式系统的实时性非常重要。据说微软300人花了两年时间开发XP操作系统,总共600人年。中科院软件所自己的Nuwa Hopen操作系统估计也要几百人年才能完成。所以这部分工作相对意义不大。
4.应用层:比较容易。
如果你知道在Windows下如何调用编程接口函数,那么区别仅在于操作系统下的编译和开发环境。Java编程也一样。
嵌入式系统所涉及的算法都有专业人员处理,不必归于嵌入式系统范畴。但如果涉及到嵌入式数据库、基于嵌入式系统的网络编程、基于某些应用层(如SIP、H.323、Astrisk)的协议应用程序开发,那就比较复杂,难度也更大。
如果你想在嵌入式开发事业上取得一定的成功,你需要付出大量的努力和不断的学习。Maker Academy 的嵌入式课程非常适合提高你的编程技能。