良许Linux教程网 干货合集 2025年嵌入式如何高薪入行?

2025年嵌入式如何高薪入行?

大家好,我是良许。能看到这篇文章的人,大多数都来自于我的直播间。有些小伙伴可能对我还不太熟悉,在此先做个简单的自我介绍。
  1. 211机械硕士,国家奖学金获得者(读书期间拿奖拿到手抽筋);
  2. 毕业后自学转行嵌入式,目前已经深耕嵌入式11年;
  3. 前世界500强高级嵌入式工程师,率团队研发百万行级别项目;
  4. 畅销书《速学Linux》作者;
  5. 全网粉丝60万以上,机械工业出版社专家委员会委员;
  6. 团队培养近千名学员零基础入行嵌入式,学员最高薪资60万。

做自媒体 5 年以来,很多人问我说嵌入式到底是什么,应该怎么学,同时我也发现了很多人学习嵌入式很迷茫,也走了很多弯路,因此为了响应大家的呼声,我将自己转行以及培养学员的经验,写下此文毫无保留向大家分享。

全文 7000 余字,花费一周写成,大概需要花费 10 分钟阅读。但这 10 分钟是我这 11 年经验的精华,会让你少走几个月甚至一两年的弯路,强烈建议收藏细读!

1. 嵌入式有哪些方向?

嵌入式在各行各业都有应用场景,但综合来讲,只有两个方向:一个是单片机,另一个是嵌入式Linux。

现在炒得比较多的还有鸿蒙,但目前还不成气候,将来有可能有第三个方向:嵌入式鸿蒙。

基于当下这个大环境,我还是建议你们把重心放在单片机和嵌入式Linux上,鸿蒙先不要去碰。

1.1 单片机方向

单片机是很多人入门嵌入式的第一步。简单来说,单片机就是一个小型的计算机芯片,里面有CPU、内存、I/O接口等,适合用来做一些简单的控制任务。常见的单片机有51系列、AVR、PIC和STM32等。

单片机的学习门槛不高,适合初学者。你可以从控制LED灯、读取传感器数据这些小项目开始,慢慢上手。然后跟着我的《STM32实战快速入门》课程,做出 15 个实战项目。

只学我的STM32课程,是可以找到工作的,目前已经有很多同学来给我报喜的。但如果你想要薪资更高的话,还需要再学FreeRTOS、AD画板、LVGL等内容。

由于需求非常广,人才又缺乏,现在单片机工程师的薪资越来越高了。所以如果你的学历不占优势的情况下(大专、三本等),做单片机是你当下最具性价比的选择。

1.2 嵌入式Linux方向

嵌入式Linux是另一个重要方向,适合用在复杂的应用场景。嵌入式Linux是基于Linux内核的操作系统,功能强大,灵活性高。

单片机与Linux的区别,你可以理解为手枪与大炮的区别。单片机能做的事情偏简单、轻量化,而Linux能做的事情就更多了,性能也更强悍。

Linux主要学这些内容:Linux基本操作、Linux应用编程、Linux底层开发等等。

嵌入式Linux整体薪资比单片机高,但缺点是岗位比单片机少,适合学历比较好的同学选择。

2. 嵌入式要学哪些编程语言?

现在市面上热门的编程语言有十几种,但对于我们嵌入式工程师来讲,主要的还是只有四种:C语言、C++语言,Python,Shell。

2.1 C语言

学习C语言是进入嵌入式开发的第一步。C语言在嵌入式系统中无处不在,因为它直接与硬件交互,效率高。

很多人一提到C语言就觉得它很难,其实并不是,C语言是我学过的最简单的编程语言。你们之所以觉得它难,是因为你们学校里只会念PPT的老师把它教难的。

C语言要学的东西实际上并不多,无非就是变量、函数、控制语句、指针、数组、结构体等等,把这些搞熟了就可以了。一些复杂的语法暂时不用学,时间要花在刀刃上,别钻牛角尖。

一提到C语言大家一定会想到指针,同时大家肯定最怕的肯定也是指针。也难怪,现在很多高校的老师,连自己都没搞明白指针,还怎么指望他们把你们教明白?

C语言课程我预计今年4月份录制,到时我尽量以通俗易懂的语气带大家高效学习C语言。

目前C语言课程卖59元,但用的是郝斌的开源课程。59元是答疑的成本,等我自己的C语言录完后,价格至少上调99元。

C语言课程购买链接  手机端   电脑端 (手机端/电脑端只要购买一个即可,下同)

2.2 C++语言

C++是C语言的扩展,增加了面向对象编程的特性。它在嵌入式系统中也很常用,特别是在需要复杂数据结构和面向对象设计的项目中。

如果你从事的是嵌入式Linux方向,大概率就是要跟C++打交道。我当年在500强里的时候,主要用的就是C++语言。

C++这门语言确实比较难,也是我学过的最难的一门编程语言。所以说C++相关的程序员比较高薪是有理由的,毕竟C++本身就是门槛。

C++的重点在于类和对象的使用。类是C++的核心概念,它允许你将数据和函数封装在一起。你需要学会如何定义类、创建对象,以及如何使用构造函数和析构函数。继承和多态是C++的高级特性,它们允许你创建更灵活和可扩展的代码。

有了C语言的基础之后,你再把C++的类研究清楚了,基本上就算上手C++了。

但是,千万别在简历上写精通C++,首先精通这两个字只有菜鸟敢写,我深耕嵌入式11年了都不敢说自己精通这个精通那个;其次,C++相关的内容太多了,连C++之父自己都不敢说自己精通C++,你哪来的底气比C++之父还牛逼?

2.3 Python

Python是一种高级编程语言,因其简单易用而广受欢迎。虽然Python在嵌入式系统中不如C和C++常用,但它在开发和测试阶段非常有用,特别是在需要快速原型设计和数据处理的场合。

Python这门语言由于抖音上那些大胸「安排姐」的「科普」,现在也被搅得乌烟瘴气。Python是很好,但也不是她们所宣扬的那样无所不能,感觉学了Python就能造出一架宇宙飞船一样。

做单片机的同学,一般不怎么用得上Python,除非有些单片机会支持Python,比如ESP32等。做单片机的就老老实实先把C语言学得再扎实一些再说,C++和Python先不要去碰它们。

但是做嵌入式Linux的小伙伴,一般也要学一学Python,因为在一些场景下,你用Python写个脚本会比C/C++更方便,之后你再用C/C++来调用这个脚本即可。当年我们的项目就是这么干的。

Python这门语言确实简单,你基本上花个一周左右的时间就能上手了。但如果你需要玩转Python的高级语法,那么同样也是需要长期不断的练习。

下面这个Python课程是由蚂蚁老师录制的,他是大厂高工,做了多年Python开发。目前售价98元,有需要的朋友可以拍。

Python课程购买链接  手机端   电脑端

2.4 Shell脚本

前面三种语言大家或多或少还是有听说过甚至学过,但如果没有接触过Linux的话,Shell脚本估计就很少人有听过了。

做单片机的同学也用不上Shell脚本,如果做Linux的话,那Shell脚本就逃不掉了。类似Python一样,我们一般也是用Shell写一些脚本,然后用C/C++调用这个脚本。而且有时候我们也会用Shell写个启动脚本,系统启动的时候开始各种调用应用程序。

Shell脚本其实就是帮你把一堆命令写在一个文件里,然后让系统自动去执行。就像你平时在命令行里敲的那些命令,现在可以写成一个脚本文件,系统就能自动帮你执行这些命令。这样做的好处是可以自动化很多重复的任务,比如备份文件、批量处理数据等。

Shell脚本学起来比Python还简单,所以大家无需担心。如果你都能把C/C++拿下来了,还担心个啥Shell呢?

Shell脚本我们目前已经有个课程,15年大厂工作经验的讲师主讲,一个专栏包含了两个课程。其中一个课程讲Shell的基础知识(变量、函数、控制语句等),另一个课程手把手带你写100个Shell案例,性价比非常高!

Shell脚本课程购买链接 → 手机端   电脑端

3. 单片机方向要学些什么?

从事这个方向,你至少需要会一个或多个单片机,比如STM32或ESP32等。建议先学STM32。

只会单片机,你是可以找到工作的,前面已经提到过。但如果你想薪资更高的话,那么还需要再懂一个轻量级的操作系统。现在比较主流的有:FreeRTOS、RT-Thread、UCOS,等等。建议先学FreeRTOS。

然后你还需要懂得画板。虽然单片机工程师还是偏软,但画板也是一个必备的技能,公司偶尔也会让你去画画板的。现在画板比较主流的有嘉立创、AD、Candance等。这几个都差不多,建议入门学嘉立创(我的32课程里有),进阶学AD。

除此之外,现在还有些产品有带屏幕,那么你就需要掌握一些GUI的开发了。单片机GUI一般比较简单,主流的有:LVGL、emWin等,建议先学LVGL。

3.1 51单片机

51单片机是入门的经典选择。它简单易学,适合初学者。但现在使用51做产品的不多,岗位也不多,所以51可学可不学。但如果你觉得直接学STM32有点吃力的话,那么可以考虑先通过51过度一下。

学习51单片机你需要了解它的基本结构和工作原理,熟悉其寄存器、内存布局和指令集。51单片机的资源有限,但它是学习嵌入式系统的好起点。你还需要了解51单片机的中断系统,它可以帮助你处理异步事件。

51的外设不多,无非就是GPIO、定时器、串口等,通过这些外设,你可以实现LED闪烁、按键检测、串口通信等基本功能。掌握这些基本功能后,你可以尝试更复杂的项目。

3.2 STM32单片机

STM32是功能强大的32位单片机,现在很多产品都用STM32,所以它的岗位非常多,薪资也高。有些人说一定要先学51再学32,其实未必,如果你能把32学明白的话,那么直接学32即可。

32位单片机除了STM32外,还有很多,比如GD32、ESP32、MM32等等。作为初学者,没必要一下子学这么多单片机,也浪费精力。STM32是32单片机的祖师爷,其它单片机或多或少都有参考STM32,所以你把STM32学精学透之后,后面如果你再用其它的32单片机,很快就可以上手的。

学习STM32需要了解STM32的硬件资源,熟悉HAL库和LL库的使用。STM32提供丰富的硬件资源,如GPIO、ADC、TIM、UART等,了解这些资源的使用方法。你还需要了解STM32的时钟系统,它可以帮助你配置系统的运行速度。

学会外设之后,肯定还要再学传感器的用法。传感器有很多,但都非常类似,很多都是零一信号,学会了关键的、常用的几个传感器就行了。

除了传感器,还需要再学学模块的用法,比如OLED屏幕、LCD1602、ESP8266、舵机等等。模块也有很多种,而且用法还不太一样。所以没得办法,只能一个个慢慢学了。

但这些传感器、模块,其实并不是STM32专有的,实际上你作为一名嵌入式工程师,这些东西你都必须得学。

这些东西学完之后,一定需要做项目。我作为一个面试官,我可以很负责任告诉你,如果你的简历上没有项目的话,你一定找不到工作!

项目不在于多,而在于精。你认真做出3~5个高质量的项目,拿个offer都是轻轻松松的事情。

在我的STM32课程里,不仅讲了外设,而且讲了传感器、模块,更重要的是还带你做了15个实战项目。而且,这些都是全程手敲代码,手把手带你学。课程总共322节,70小时,媲美别人几千元的大课。

STM32课程购买链接 → 手机端   电脑端

3.3 FreeRTOS

学会一个轻量级的操作系统是单片机工程师必备的技能,首推FreeRTOS。

FreeRTOS其实很简单,刚开始学习的时候,建议你先学会如何用它再说。而底层FreeRTOS的源码及实现等,建议有了一定的基础之后再学。B站上很多FreeRTOS的课程,一上来就开始讲源码,弹幕里一堆的初学者表示一脸蒙蔽。

FreeRTOS主要要学习的内容:移植FreeRTOS、创建/调度任务、队列、信号量、互斥量、动态内存分配和管理等,其实内容并不多,认真学的话基本上一周就能上手了。

而FreeRTOS底层的源码就比较复杂了,建议有了基础之后再去研究源码,一上来就干源码只会让你头发掉更多。

我的FreeRTOS课程实际上包含了两个课程:一个是CubeMX版,另一个纯手敲版。CubeMX版已经录完了,纯手敲版近期就要开录了。而且,为了响应大家的呼声,纯手敲版到时也会加入几个综合项目。

FreeRTOS课程购买链接 → 手机端   电脑端

3.3 AD画板

作为单片机工程师,现在或多或少需要懂一些画板。就算你的工作不涉及到画板,但你如果懂得画板的话也可以有底气与硬件工程师扯皮,免得一些不必要的锅莫名其妙甩到你头上来。

公司产品做得比较简单的话,其实用嘉立创就够了,看我的STM32课程完全可以应付这样的工作了。如果产品比较复杂,那有可能就需要使用AD或Candance了。但不管是什么软件,其实都大差不差的。

AD画板的流程一般是这样的:先绘制电器原理图,再进行PCB的布局布线,最后生成3D图确认一下。

AD内置了很多常用的元件库,但如果有些元件没提供的话就需要自己动手去绘制了。你画了几个之后差不多也能上手了。

然后就是布局布线了,你需要合理安排元件位置和走线,确保电路的可靠性和可制造性。我们公司之前分得很细,有个专门的岗位只做布局布线,这个岗位叫layout。而我们要做的就是把原理图画就好行。

所以大公司一般分得非常细,一个萝卜一个坑,每个人只负责自己岗位的事情,这样就算你离职了也很快就能找到新人把你替换了。而如果是小公司的话,就要身兼数职了,什么活都要干。

最后3D图其实就是预览了,看看自己画的东西是否与预期的一样,同时也要跟机械团队进行配合,看看你设计的电路板能不能塞进他们做的外壳里。内置的元件3D图已经帮你做好了,自己设计的元件就需要自己画3D图了。

目前我们网站的AD画板课程是由18年硬件工作经验的老师录制,一个专栏包含了三套课程:一个课程教你画2层板,另一个课程教你画4层板,还有个课程教你画6层板。通过这个专栏,你都可以成为一名专业的硬件工程师。

AD画板课程购买链接  手机端   电脑端

3.5 LVGL

现在很多产品都带有屏幕,所以GUI开发也是嵌入式程序员必备的技能。常见的GUI开发有LVGL、emWin等,作为初学者,建议先玩好LVGL再说。

LVGL是一个轻量级的图形库,适合嵌入式GUI开发。它不仅可以移植到STM32上,还可以移植到ESP32等等其它的单片机,也可以跑在Linux系统上。

Linux系统上,跑的比较多的GUI是QT,但这两年QT开始收费了,所以现在LVGL在Linux平台的占有率一直在上升,毕竟免费的不香吗?

跟FreeRTOS一样,刚开始学习LVGL的时候,千万不要去钻牛角尖,前期强烈建议大家先学会应用,然后再去研究它的底层源码。如果一上来就开始折腾源码,恐怕你为数不多的头发又要保不住了。

LVGL其实也非常简单,就是调库就行了。你要学的就是各种控件的使用,以及各种布局。它比较难的地方(其实也不太难)在于事件处理和回调机制,掌握这些机制可以让你实现复杂的用户交互。

而这些机制主要还是C语言的函数指针的用法。所以C语言真的是要好好学学,为后面其它模块学习打下基础。

还有就是页面的美化,以及动画功能。但现在很多嵌入式产品都比较朴素,花里胡哨的美化和动画一般比较少了。

LVGL是有个模拟器的,你在电脑上就可以模拟并运行你写好的界面。通过这个模拟器你就可以学习大多数LVGL的各种功能了。

然后你要学的就是怎么把LVGL移植到各大硬件平台,比如STM32、ESP32、树莓派,等等。再之后,你要学习的是如何将你写的界面与硬件进行交互,比如按下按键进行翻页,再按下按键确认之类的。

总之,LVGL整体也不算太难,前期你先用模拟器熟悉好各种库函数的使用就好了,后面再去移植到硬件上。

4. 嵌入式Linux方向要学些什么?

嵌入式 Linux 方向一直都是个高薪方向,年薪百万的不在少数,我培养的年薪 60 万的学员就是做 Linux 方向的。

这个方向高薪,但岗位相对较少,而且要求也较高,学历比较好的同学(一本、211/985、研究生)可以考虑。

主要学的东西是:Linux基础知识、Linux应用开发、Linux底层开发、QT,等等。

Linux部分除了命令我还没录课程,预计明年会录制Linux部分的课程,今年先把单片机相关课程完善一下。

4.1 Linux基础知识

既然你跟Linux打交道,那么Linux基础知识肯定要懂。否则,你连Linux系统怎么开机关机都不懂,那还怎么玩?对于其他程序员,基本上是在Window电脑上玩的,而Window系统大家基本都比较熟悉,所以不用刻意去学习。

但是,就算你只是个单片机工程师,其实Linux基本操作我也是强烈建议你去学一样的。不懂Linux的程序员不是个好程序员。我之前做的一个项目,用的是Marvell的芯片,是个单片机,但是它却是在Linux系统下编译的。

Linux的基础知识要学啥呢?其实说白了就是命令。你需要掌握文件操作、进程管理、网络配置等基本技能,也需要懂权限管理、文件系统操作、用户管理等等。

Linux命令有300~500个,不同的发行版还不一样。但对于程序员来讲,不需要掌握那么多,只需要掌握最常用的30~50个命令就可以了。而对于运维工程师来讲,那就非常有必要掌握更多的命令了。

对于Linux命令,我专门录制了一门课——《速学150个Linux常用命令》,并且开源在了B站,成为了一个爆款,甚至有些高校老师都直接在课堂上播放我的课程用于教学。所以四舍五入,我也算个高校老师,嘻嘻~

前期你先学我课程里打星标的几个命令即可,后面有时间了再去研究一下其它的命令。

课程原来有10小时以上,但后面加了字幕,把一些废话删了,所以只剩下九个半小时。B站课程是免费的,完全开源,但是没有答疑。如果你需要答疑服务,或者单纯觉得我良许录课还可以想请我喝个咖啡的,可以拍一下下面的链接。

Linux命令课程购买链接 → 手机端   电脑端

4.2 Linux应用开发

什么是Linux应用开发,很多同学不是非常理解,我打个比方你就知道了。比如说,在Window系统上,我们有微信、QQ、谷歌浏览器等等软件,开发这些软件我们其实可以称为Windows应用开发。那同样地,换到Linux系统上我们也开发微信、QQ、谷歌浏览器,我们就称之为Linux应用开发。

我当年在500强里做的就是Linux应用开发,这个岗位纯纯的就是纯软件编程,基本不涉及到硬件。而且你开发的过程基本上就是调用Linux的API函数,难度不算大。

学习这个模块的内容,你需要熟悉Linux的开发环境,使用GCC、Makefile、CMake等工具进行编程。然后你就要熟悉Linux系统编程常用的库函数的,比如:文件I/O、进程、线程、进程间通讯、线程间通讯,等等。

再有就是要学习一下网络编程,比如:HTTP(s)、Socket、TCP/UDP、MQTT,等等。

这些函数其实不多,也不太难,甚至很多函数都很类似。你把这些函数的作用、参数、返回值搞明白了,再敲几个demo小案例,就可以了。

4.3 Linux底层开发

Linux底层开发算是比较难的模块了,所以它的薪资也比较高。但是,底层相比应用层,岗位就更少了。一般来讲,公司里应用层与底层的比例大概是9:1。

所以,我不建议大家一上来就开始搞Linux底层,一方面这个模块的内容确实比较难,不好上手,容易劝退;另一方面,底层岗位少要求高,企业也不喜欢招零基础就干底层的。一般比较建议先干3~5年应用层后,再转底层,薪资会更高一些。

底层开发一般会涉及到3个东西:bootloader、内核、驱动。

bootloader和内核,一般芯片原厂会给你做得好好的,所以这部分的工作比较少。芯片原厂会有单独的bootloader和内核移植相关的岗位需求,普通的公司一般比较少,顶多让你知道一些东西,到时候好跟芯片厂家扯皮。

驱动开发是Linux底层岗位最多的方向,你会发现搜索Linux底层开发的时候,出来的基本都是驱动开发。那什么是驱动开发呢?简单来说,就是让Linux系统认识你的设备。

比如早期的Windows电脑,如果要让鼠标能被电脑认识并顺利工作,那么就需要安装驱动软件。包括你们在学STM32的时候,需要安装ST-Link或CH340的驱动,开发这些驱动的人就是驱动工程师。在Linux系统下也是同理,就是写代码让Linux系统能支持你的设备。

Linux驱动一般是两个方向的设备,一个是字符设备,另一个是块设备。然后一定要搞设备树,会有更大的竞争力。

Linux驱动课程购买链接 → 手机端   电脑端

4.4 QT

与LVGL类似,QT也是一个跨平台的图形用户界面库。但是QT比LVGL要强大很多,同时也对硬件要求比较高。

其实QT严格上来讲是个单独的东西,跟嵌入式是独立的,只不过可以跑在嵌入式平台而已。当然,它也可以跑在Window、MacOS等等系统,这就是所谓的跨平台。

但是现在QT与嵌入式结合比较多,所以我们也认为它是嵌入式的一部分。

学习QT首先就得先学好C++,毕竟它的编程语言就是C++。然后你要掌握QT的信号和槽机制,实现复杂的用户交互。与LVGL类似,QT也提供了非常多的控件,比如标签、按钮、下拉菜单,等等。把这些控件学好了就已经学会了80%的QT了。

同时QT界面布局也很强大,也可以做到非常好看的界面。除此之外,你还要学会如何把QT移植到嵌入式平台上,否则你界面写得再好看也没用。

5. 后记

希望这些详细的建议能帮助你更好地理解和掌握嵌入式系统的各个模块。记得多动手实践,理论结合实践才能真正掌握这些技能。

我现在全职做嵌入式课程,尽量在2026年年底把上面讲的所有模块全部都录一遍,给同学们提供更好的课程。而且,我所有的课程都会定价在200元以内,让同学们以最小的成本学到最多的知识!

一起加油!

本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
头像

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部