嵌入式学习:达到什么水平才能顺利找到工作?

发表时间: 2024-03-14 08:00

大家好,我是杂烩君。

一位朋友问了这样一个问题:

嵌入式技术的范畴很广,不同地行业可能涉及到不同地技术。如:

  • 机器人行业应用的相关技术可能有:传感器数据采集处理、电机控制、ROS机器人操作系统、规划与运动控制、WiFi蓝牙等无线通信、图像识别、语音识别等。
  • 智能家居行业应用的相关技术可能有:WiFi蓝牙等无线通信、MQTT等物联网相关协议、物联网操作系统、物联网安全、传感器数据采集处理、物联网云平台等。
  • 汽车电子行业设计的相关技术可能有:传感器数据采集处理、物联网通信技术、语音识别、电机控制、BMS电池管理、总线通信协议等。

不同的嵌入式产品,需要的技术不全一样。但所需的基础技术都是差不多的。

每项技术可能有着相应的开发岗位,这些岗位实际可能不全叫嵌入式软件岗,但这些岗位大多都是嵌入式软件工程师 + 特定知识的学习之后就可以胜任。如:

  • 嵌入式软件基础 + 电控知识 = 电控软件开发工程师
  • 嵌入式软件基础 + AI技术 = 嵌入式 AI 应用开发工程师
  • 嵌入式软件基础 + 音视频技术 = 嵌入式音视频开发工程师
  • 嵌入式软件基础 + 底层知识 = 嵌入式驱动开发工程师

学嵌入式要学到什么程度才好找工作呢?

我认为是这些点:

编程语言

基本掌握嵌入式必备的编程语言。C语言为主,C++为辅。在资源有限的情况下,大多数嵌入式产品还是使用C语言为主的,特别是底层驱动开发。上层应用开发大多用C,在一些资源比较充足的平台中,也会选择使用C++来进行开发。

补充编程语言的知识时,除了掌握语言本身的知识之外。还需要同时学习:编译、构建、调试等方面的相关知识。这类很重要的知识一般C语言课程都没教:

芯片

基本掌握嵌入式处理器的基础知识。嵌入式处理器种类很多:MCU(微控制器)、MPU(微处理器)、DSP(数字信号处理器)等。MCU,也就是我们常说的单片机。

初学期,重点放在单片机的学习这一块。

理解整体框图、掌握基础外设如:GPIO、UART、TIM、ADC、DAC、I2C、SPI的裸机编程及相关原理、应用。

操作系统

基本掌握操作系统相关知识。

  • 先了解学习RTOS,如RT-Thread等。学习操作系统内核知识:线程调度、时钟管理、线程间同步、线程间通信、内存管理、设备管理等,并掌握基本的使用。
  • 再熟悉Linux操作系统的基本使用。
  • 再学习Linux下的应用开发知识:多线程编程、多进程编程、文件I/O编程、网络编程等。

开发工具

基本掌握必备的开发工具。

  • VScode、VS、Sourceinsight、Vim的使用。
  • 逻辑分析仪、示波器、调试器地 使用。
  • gcc、gdb的使用。
  • git的使用。
  • 对比工具、串口工具、网络工具的使用。

解决问题的能力

上面几点都可以通过一些技术资料进行学习。这一点则需要需要在实战中锻炼,比如自己找一些小项目来做,一来可以把上面列出的几点内容给完整地串起来,二是在做项目的过程中会遇到很多问题,通过不断解决这些实际问题可以积累一些解决问题的经验。

工作之后,知识储备该有的都有了,大家最后拼的也都是解决问题的经验、能力。

我觉得牢牢地掌握这些99.99999%的概率都会用得上的嵌入式软件基础对找工作才比较有利。其它一些技术可以再用的时候再去了解、学习。

特别是一些行业相关知识,可以入行之后再进行学习。如果你一开始的目标就很明确,要在某一行、某一个方向进行深耕,也可以提早学习相关知识,早些积累一些优势。