1.硬件层
它是整个嵌入式系统的基础。如果熟悉单片机和接口,会用C语言和汇编语言编程的话,从嵌入式系统的硬件层入手还是比较容易的。硬件层也是驱动层的基础。一个优秀的驱动工程师必须能看懂硬件电路图,能自己完成CPLD逻辑设计,同时熟悉操作系统内核及其调度。不过硬件平台是基础,增值还是要靠软件。
硬件层比较适合电子、通信、自动化、机电一体化、信息工程等专业的学生,需要掌握的基本专业知识有单片机原理与接口技术、微机原理与接口技术、C语言等。
2. 驱动层
这部分比较难,驱动工程师不但要能看懂电路图,还要对操作系统内核非常精通,这样自己编写的驱动才不会在系统调用时独占操作系统时间片,导致其他任务无法动弹。不了解操作系统内核架构和实时调度,没有很好的驱动编写风格。很多人能按照大多数书上介绍的方式添加驱动,但可能连初级驱动工程师的水平都达不到。这样,驱动被应用程序调用时,就好比我们在Windows中打开一个程序运行,再打开另一个程序,它要么中断前面的程序,要么等待一段时间,再运行后面打开的程序。如果想成为一名优秀的驱动,没有三四年的基础和几章学习操作系统内核的经验,是很难成功的,但他们的薪水却是嵌入式四层中最高的。
驱动层比较适合电子、通信、自动化、机电一体化、信息工程等专业的学生,特别是计算机体系结构专业的学生,除了硬件层的基本知识外,还要对数据结构与算法、操作系统原理、编译原理等有较强的理解。
3.操作系统层
目前操作系统层只能说是简单的移植,很少有人写过操作系统,或者写了缺部分的操作系统。这部分工作大多由驱动工程师完成。操作系统负责系统任务的调试、磁盘和文件管理,嵌入式系统的实时性非常重要。
4.应用层
相对来说比较容易,如果会Windows下编程接口函数的调用,区别只是操作系统下的编译开发环境不同,Java编程亦是如此。嵌入式系统中的算法都是专业人员来做的,没必要归于嵌入式系统。但如果涉及到嵌入式系统下的嵌入式数据库,基于嵌入式系统的网络编程,基于某些应用层面的协议应用开发,那就比较复杂,难度也大了。
智能驾驶座舱、车联网、自动驾驶一体化