嵌入式系统是一种将软件和硬件紧密结合的技术,首先我们要认识到,无论我们是专注于软件开发还是硬件开发,最终的目标都是为了更好的工作和职业发展。
根据企业的规模和需求,大公司更倾向于将职责分得更细,例如软件分为:驱动、应用和系统,有的还会有中间件;而小公司则希望你能够掌握更全面的技能,即一个人能够胜任多个职位的工作。
曾经有人对稚晖君所具有的技能做了总结,他的技能包括:
电子基础、电子元器件选型、电路原理图设计、高速电路 PCB 设计、电子元器件焊接技术、电路板调试、启动程序 UBOOT 裁剪移植、Linux 内核裁剪移植、文件系统、底层驱动程序(C语言、ARM 架构汇编、Linux 内核架构)、上层应用程序(C++、Qt、JAVA、Python等,深度学习,机器学习,OpenCV,神经网络,自然语言处理)、高等数学、线性代数、概率论、离散数学。
嵌入式的技能等级分为初级、中级和高级;但从工作内容上可以先分为两个方向:软件和硬件。在本文中,我们将探讨嵌入式软件工程师的学习路径,包括技能等级的划分和各方向的学习重点,以及如何根据个人的兴趣和职业规划来选择合适的学习路径。
嵌入式软件方向
在嵌入式软件工作的分类方法是多元和多样的。在这里,我们将简要介绍几种主要的分类方式:
1、根据代码面向的对象,嵌入式软件工作可以大致分为三大类:
- 底层驱动开发:专注于硬件接口和设备驱动的编程,确保硬件组件的正确和高效运行。
- 应用开发:涉及创建用户界面和应用程序,通常需要具备良好的用户体验设计和软件工程技能。
- 系统开发:包括操作系统的定制和优化,以及系统服务和功能的开发。
2、从硬件使用的操作系统角度来分析,我们可以将其分为一下几类:
-
裸机 :直接在没有操作系统的硬件上进行编程,通常用于资源有限和对实时性要求高的系统。
-
RTOS(实时操作系统):例如FreeRTOS、RT-Thread、uCOS-III 等,这些系统提供了实时功能和简单的调度机制,常用于单片机开发。
-
Linux系统 :包括自定义裁剪的 Linux、Ubuntu、Raspberry Pi OS、Arch Linux ARM 等,这些系统通常运行在单板计算机(SBC:Single-Board Computer)上,提供了丰富的功能和强大的社区支持。
-
嵌入式相关的工作岗位描述,例如:
-
单片机工程师
-
嵌入式 Linux 软件工程师
-
Linux 驱动开发工程师
-
BSP 驱动开发工程师
-
嵌入式 QT 开发工程师
-
物联网开发工程师
通过了解嵌入式软件工作的这些分类,你可以更清晰地理解每个岗位的具体职责和要求。
接下来,我们就进入正题,说一下嵌入式工程师需要具备的开发技能,以及学习梯度。
1. 打好语言基础