嵌入式软件学习路线和方向,看看你想学什么或者喜欢什么吧,因为嵌入式的知识面比较多,前期可以根据自己擅长的方向选一个深入学习,后续有了经验以后再横向扩展。祝你成为超人。方向按照工作当中的岗位来区分,一个人不可能负责好几个部分,有可能还几个人负责几个驱动,如果是刚入职的新员工,可能会一个人负责一个驱动,招聘也是按照岗位的需求来招聘,所以再学习的时候,选中一个方向学习,要擅长一个方向,公司需要新员工入职后要尽快上手干活,如果所有的方面只懂一点点。那就不太好了,下面介绍一下嵌入式学习的几个方向,有些方向我也不是很懂,如果有说错的地方,希望读者批评指正。
嵌入式学习的几个方向
硬件层
电路+PCB+汇编+C+单片机系统设计
是整个嵌入式系统的根本,硬件层比较适合于,电子,通信,自动化,机电一体,信息工程类专业的从事,需要掌握的专业基础知识有,单片机原理以及接口技术,微机原理及接口技术,C语言等,从事的工作内容如下:
1. 计算机产品硬件设计
2. 了解计算机的结构及其发展趋势
3. 对计算机硬件的销售及市场有较深刻的认识
4. 区域市场管理
5. 按照计划完成符合功能性能要求和质量标准的硬件产品;
6. 根据产品详细设计报告,完成符合功能和性能要求的逻辑设计;
7. 根据逻辑设计说明书,设计详细的原理图和PCB 图;
8. 编写调试程序,测试或协助测试开发的硬件设备,确保其按设计要求正常运行;
9. 编写项目文档、质量记录以及其他有关文档;
10. 维护管理或协助管理所开发的硬件。
驱动层
C+裸机驱动(芯片内一个或多个模块的驱动)
C+裸机应用(基于通讯模块之上的编程)
C+RTOS驱动
C+汇编+Maltlab+算法
C+Linux字符驱动
C+FPGA+执行器驱动
C+Linux块驱动
是为计算机硬件设备(比如网卡、声卡du、鼠标zhi、键盘、网卡等等)编写的底层接口程序,使操作系统更好的对硬件设备使用和管理,驱动硬件工作。这些人的职称达到工程师的级别。就叫驱动工程师。驱动层比较适合于电子、通信、自动化、机电一体、信息工程类专业尤其是计算机偏体系结构类专业的人来搞,除硬件层所具备的基础学科外,还要对数据结构与算法、操作系统原理、编译原理都要十分精通了解。嵌入式系统中涉及算法的由专业算法的人来处理的,不必归结到嵌入式系统范畴内从事的工作内容如下:
1、电子通信,计算机类专业本科及以上学历;
2、熟练掌握C语言,熟悉linux内核;
3、有MTK或者展讯高通平台2年以上驱动工作经验;
4、熟悉安卓操作系统架构,了解JAVA编程及相关集成开发环境
5、熟悉 I2C、SPI、UART、USB等常见的硬件接口
操作系统层
C+汇编+RTOS移植+文件系统
C+汇编+Linux移植+U-Boot+文件系统+Makefile
对于操作系统层目前可能只能说是简单的移植,而很少有人来自已写操作系统,这部分工作大都由驱动工程师来完成,操作系统是负责系统任务的调试、磁盘和文件的管理,而嵌入式系统的实时性十分重要。操作系统有智能卡操作系统、实时操作系统、传感器节点操作系统、嵌入式操作系统、个人计算机操作系统、多处理器操作系统、网络操作系统和大型机操作系统。功能有:1、进程管理(Processing management)2、内存管理(Memory management)
3、文件系统(File system)4、网络通讯(Networking)5、安全机制(Security)6、用户界面(User interface)7、驱动程序(Device drivers)按应用领域划分主要有三种:桌面操作系统、服务器操作系统和嵌入式操作系统。
应用层
C+RTOS应用+进程同步与互斥+文件操作
C+RTOS网络编程
C+Linux socket网络编程
C+Linux应用编程+进程同步与互斥+文件操作
C++ + QT界面编程
C++ + Linux应用编程+进程同步与互斥+文件操作
C+Linux+HTML+CSS+Javascript网页服务器
如果会在windows下如何进行编程接口函数调用,到操作系统下只是编译和开发环境有相应的变化而已。如果涉及Jave方面的编程也是如此的。