嵌入式通用学习路线整理

article/2025/10/23 0:20:42

大家好,我是小麦。

从事嵌入式相关行业,差不多快有10年时间了,走过很多弯路,踩过很多坑。

很多人会问,嵌入式真的没有前途吗?这个我其实也无法回答。用发展的眼光来看,万物都有周期。

这个和嵌入式无关,和行业有关,一个行业的增长有关,和资本有关,和郭嘉发展有关。所以只有天时地利人和,而这个人和,就是你自己的选择。

对此这是我的看法,也欢迎大家发表自己的看法。

如果打算入门嵌入式学习,那就和大家聊聊嵌入式学习路线。

什么是嵌入式?

嵌入式即嵌入式系统,IEEE(美国电气和电子工程师协会)对其定义是用于控制、监视或者辅助操作机器和设备的装置,是一种专用的计算机系统

国内普遍认同的嵌入式系统定义是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。

嵌入式是一个比较多学科综合的方向,有很多细分的方向。其实可以直接切入某个细分的领域,然后介绍一下学习路线,比如单片机开发,Linux应用开发,Linux驱动开发。

但是不难发现,虽然是很多细分,但是需要学习的知识有所交叉,有的又相互独立。

9f016acfb9566a2e198f35dfa8789869.png

嵌入式的相应招聘岗位,基础技能树要求其实相差不大,不过有很多对行业绑定比较深的岗位,会要求有行业经验和这个行业沉淀的相关技能;

  • 比如汽车电子要求can,autosar;

  • 物联网要求网络协议,单片机,RTOS,WiFi,Bluetooth等等;

  • BSP工程师要求掌握Linux内核和各种子系统;

  • 机器人相关要求掌握ROS;

岗位还有很多,这里就不过多列举了,下面分享一下我认为的比较万金油的学习路线。

下面是我整理的思维导图。简单来说一下传统的学习路线。

dffe1ae63d6d23d3315de46b0ca9cff5.png

编程基础

1fef1e979663c47f0348a52c658dc688.png

C语言

这是必须要精通的。C语言非常灵活,可以进行单片机开发,驱动开发,固件开发,内核开发,应用开发,几乎都可以用到。

比如著名的操作系统Linux,主要就是C语言实现的,当然还有很多基于C语言的项目,这里就不一一介绍了。

学习C语言,我比较喜欢浙大翁恺老师的课程。

C++

C++在嵌入式中更多是应用开发方向,因为对C有较好的兼容,所以在硬件方面仍然使用C进行编程,而较为复杂的业务逻辑部分,则使用面向对象的C++进行封装和实现。

C++和C的混编也是非常实用的。

数据结构与算法

合理地使用数据结构,它会让的开发事半功倍,常用的数据结构,比如队列,链表其实在嵌入式的开发中十分常见,当然还有hashmap,二叉树等等。

如果编程语言是武器,那么数据结构就是招式。什么样的场景,使用什么样的招式,数据结构里大致都写了。

其他编程语言

还有很多其他的编程语言,我这里列举几个。

shell

这是脚本语言,在Linux上比较常见,一般来说,掌握shell,可以大大提高工作效率,这个是强烈建议熟练掌握的,遇到不懂的可以多看man page

python

很方便,大大提高效率。用于验证一些算法功能,或者办公自动化。

硬件知识

这里的硬件知识并不是对于做纯硬件开发的路线,而是做嵌入式软件开发,需要掌握哪些硬件知识,下面详细来说一说;

2abec489ef234d4ec045ee501892856a.png

硬件基础

具备最基础的硬件知识素养,如果是做驱动的开发,比如BSP工程师,必须具备最关键的两点,可以看懂芯片的Datasheet,可以看懂原理图,因为要做板机的开发。

常见的通讯协议

比如UART,I2C,SPI协议等等,这三个比较常见,也相对比较简单。其他还有很多通信协议,这里就不再介绍了。

常见的片上外设

比如gpioadcdacwatchdogtimerpwm这些,原理都是一样的,但是一般的SOC基本也都是类似的外设。

常见工具的使用

示波器,万用表,电源的使用,至少不能经常把正负极接错。示波器便于用来查看时序,开发的时候方便排查问题。

嵌入式系统

嵌入式操作系统的话,通常看具体的需求进行划分,常用的实时系统有ucosfreertosrtthreadvxworks等等,而Linux系统也十分常用;

实时系统

通常来说,实时系统大多用于用于控制的场合,比如ucosfreertosrtthreadvxworks等等,都是实时系统。

Linux系统

Linux系统应用比较广泛,智能硬件,监控设备,路由器,手机,汽车等等,都有它的身影。大致方向主要分为Linux驱动和Linux应用,两者的界限已经模糊不清。技术架构上分为用户空间和内核空间,如下图所示;

35c002a8665a643e08e255326b51f6ce.png

如果是应用开发,其实和纯软件开发差不多了。

基础内容,其实前面也有一部分提及,Linux系统编程,多线程,操作系统层面的基本知识,互斥,信号量,网络编程等等。

具体应用,比如音视频的开发,运动控制,机器人开发等等;

推荐看《Unix环境高级编程》,这是基础。

驱动

对于底层知识的掌握要求比较高,至少板机Linux的编译,剪裁,移植等内容。

可以根据具体硬件需求,添加相应的驱动到系统中,因为系统已经规定好相应的驱动框架,因此需要了解各种内核子系统和各种类型的驱动。比如字符设备驱动,块设备驱动,设备树的使用等等。

深入学习子系统也是一个难点,可以帮忙更好地了解Linux,例如进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)和进程间通信(IPC)。

比较推荐的学习资源,宋宝华老师的Linux内核4.0驱动书籍,韦东山老师的驱动视频,互联网时代,搜一下就有了。

总之,技术在于积累。

其他

上面说了这么多,如果要保持技术的精进,需要保证持续学习,多看优秀的源代码,找优秀的开源项目。

非常规学习路线

在掌握部分基础知识之后,也可以尝试这种学习路线,按照项目的形式进行学习。

定一个目标项目,例如;

  • 在Linux系统上实现一个程序,如果非得和硬件沾边,比如做一个人脸识别的门禁系统;

  • 比如要在一个板子上移植Linux系统,并添加驱动;

  • 用单片机开发一个小项目,完成软硬件的设计;

以上完全是三个不同的方向了,因为每个人的具体情况都不相同,可以根据自己的技术栈和兴趣爱好来做,想不到做什么的,找一些开源的项目,自己复刻一下,也是很好的。

有了目标之后,将任务拆解,这中间会遇到很多知识盲区,会用到上面我提到过的很多知识,这时候你就要去学习,去吸收,带着目的去学习和实践,效果反而会更好。

总结

这篇文章总体上介绍了嵌入式的学习路线,相对宽泛和简略,由于嵌入式的知识体系确实很庞大,单纯从个人角度去写,还有很多片面和局限的地方。

希望对一些想要加入这个方向的同学有所帮助,如果本文存在错误或者需要改进的地方,欢迎您的建议。


http://chatgpt.dhexx.cn/article/PnvGPT1B.shtml

相关文章

嵌入式学习(一)嵌入式c语言

第一章.c数据类型及语句 1.01 第一个c程序的编写 下载好VScode并配置好环境&#xff0c;可以开始进行第一个c程序的编写。 #include <stdio.h>int main(int argc,char *argv[]) {printf("Hello World!\n");return 0 ; } 需要注意的几点&#xff1a; 1.#inclu…

嵌入式学习难吗?

首先来说&#xff0c;学习任何一门技术都有它难的地方。如果说嵌入式学习难&#xff0c;那它就难在于嵌入式知识比较综合&#xff0c;比如C语言、数据结构、通信原理、单片机、数字电路、 arm体系、驱动开发、系统移植、Lora&#xff0c;NB-IOT等&#xff0c;大学里开过很多课都…

嵌入式学习(一)—— 初步认识

嵌入式学习&#xff08;一&#xff09;—— 初步认识 一、认识嵌入式二、嵌入式学习内容1.C语言学习2. 模拟电路&#xff0c;数字电路基础- 模拟电路- 数字电路 3. 硬件知识掌握4. 裸机开发5. 认识使用外设模块6. OS学习7.Linux开发板学习8.应用层学习9. PCB学习 三、推荐网站及…

嵌入式学习笔记

ARM &#xff1a;Advanced RISC Machine RISC&#xff1a;精简指令集 EMCU&#xff1a;Embedded Micro Controller Unit 嵌入式微控制器 EMPU &#xff1a;Embedded Micro Processor Unit 嵌入式微处理器 EDSP &#xff1a;Embedded Digital SIgnal Process 嵌入式数字信号处理…

嵌入式之学习路线

入门必看&#xff1a;https://www.xianjichina.com/news/details_69907.html IC设计&#xff0c;FPGA&#xff0c;射频&#xff0c;EMC&#xff0c;电气工程 ******嵌入式开发的相关硬件基础&#xff1a;对于软件工程专业的学生&#xff0c;从事嵌入式软件开发&#xff0c;像…

嵌入式学习路线,强烈推荐!!!

最近有小伙伴在微信私信我&#xff0c;如何学习嵌入式。一直想写一篇学习路线的文章&#xff0c;由于各种原因拖到了现在。 下面就如何学习嵌入式说下我个人的看法。 01 什么是嵌入式&#xff1f; 嵌入式即嵌入式系统&#xff0c;IEEE&#xff08;美国电气和电子工程师协会&am…

嵌入式学习笔记——概述

嵌入式系统概述 前言“嵌入式系统”概念1.是个啥&#xff1f;2.可以干啥&#xff1f;3.有哪些入坑方向&#xff1f;4.入坑后可以有多少薪资&#xff1f; 单片机1.什么是单片机&#xff1f;2.架构简介3.基于ARM架构的单片机结构简介 总结M4系列目录 前言 断更很长时间了&#x…

【超全面】Linux嵌入式干货学习系列教程

文章目录 一、前言二、Linux基础篇三、数据结构与算法基础三、Linux应用篇四、Linux网络篇五、ARM篇六、Linux系统移植篇七、Linux驱动篇八、Linux特别篇九、Linux项目篇 一、前言 博主学习Linux也有几个月了&#xff0c;在这里为广大朋友整理出嵌入式linux的学习知识&#xff…

嵌入式软件学习路线(入门)

大家不要只收藏不关注啊&#xff0c;哪怕点个赞都行哇。&#x1f62d; 嵌入式学习路线 嵌入式体系框架C语言的入门学习C语言的进阶学习单片机的入门学习linux的入门学习VxWorks的入门学习上位机的入门学习 刚工作两年&#xff0c;推荐的学习路线只做一家之言&#xff0c;如果…

嵌入式学习基础路线

博主来填坑了 博主终于硕士毕业拿到双证去公司报道了&#xff0c;趁空闲的时间来更新下嵌入式软件开发的学习路线。 嵌入式的学习 嵌入式总的来说就分两条路线&#xff1a;1&#xff09;走MCU的软件开发的路线&#xff1b;2&#xff09;走Linux的软件开发路线。 当然除了软…

嵌入式操作系统(嵌入式学习)

嵌入式操作系统 嵌入式操作系统是什么&#xff1f;嵌入式操作系统有哪些&#xff1f;常用的嵌入式操作系统及其特点对初学者的建议 嵌入式操作系统是什么&#xff1f; 嵌入式操作系统是一种专门设计和优化用于嵌入式系统的操作系统。它是在资源受限的嵌入式设备上运行的操作系…

嵌入式入门学习的必要步骤

很多新手在入门嵌入式的时候&#xff0c;经常会有很多问题&#xff0c;这也都是想要多多去了解嵌入式&#xff0c;也害怕自己浪费了时间还没有学会嵌入式&#xff0c;掌握到好方法学习嵌入式&#xff0c;那么就会事半功倍&#xff0c;下面一起来看看嵌入式入门学习的必要步骤是…

嵌入式系统学习

Lecture11-12 主要学习 ➢ 总线基础 ➢ UART协议 ➢ I2C协议 ➢ SPI协议 1.总线的基础 protocol 协议 总线只是一组导线的集合&#xff0c;在嵌入式板上的所有其他主要组件&#xff08;包括I/O子系统、内存子系统和主处理器&#xff09;之间传输各种数据信号、地址和控制…

嵌入式要学习哪些内容?

嵌入式要学习哪些内容&#xff1f; 嵌入式概括一下就是写程序&#xff0c;用软件控制硬件。嵌入式的学习应该是自上而下的。 1.语言先行 首先是写代码&#xff0c;写用户的应用程序。每种语言的使用目的是不同的&#xff0c;我们嵌入式选择的语言是C语言。 所以首先要学习C语言…

【嵌入式】超详细的嵌入式路径学习精选合集,建议收藏

超详细的嵌入式路径学习精选合集&#xff0c;纯干货&#xff0c;建议收藏&#xff01; 本合集归类汇总了嵌入式开发技术相关的学习路径、知识与经验总结&#xff0c;以及一些源码、资料分享等。将其分类列出目录&#xff0c;一来为了避免有些知识长时间不用&#xff0c;会很容…

【毕业季|进击的技术er】作为一名职场人,精心总结的嵌入式学习路线图

活动地址&#xff1a;毕业季进击的技术er 文章目录 0、作者介绍1、前言2、嵌入式基础必备知识2.1、学习内容2.2、学习建议2.3、学习资料 3、嵌入式入门篇——51单片机3.1、学习内容3.2、学习建议3.3、学习资料 4、STM32进阶篇4.1、学习内容4.2、学习建议4.3、学习资料 5、小而美…

【单片机/嵌入式】最完整学习路线

一.什么是单片机&#xff1f;什么是嵌入式&#xff1f;它们之间的区别与联系。 关于这个问题我在网上寻找到了相关文章解释得很详细&#xff0c;不了解的同学可以参考一下这篇文章&#xff1a;到底什么是嵌入式&#xff1f;什么是单片机&#xff1f; - 知乎 二.学习路线 一个人…

STM32理论 —— 看门狗

文章目录 1. 简述2. 独立看门狗 IWDG2.1 IWDG 相关寄存器2.1.1 键值寄存器IWDG_KR2.1.2 预分频寄存器IWDG_PR与重装载寄存器IWDG_RLR 2.2 核心代码 1. 简述 STM32 内部自带了 2 个看门狗&#xff1a;独立看门狗&#xff08;IWDG&#xff09;和窗口看门狗&#xff08;WWDG&#…

STM32看门狗配置说明

系统时钟&#xff1a; The WWDG clock is prescaled from the APB clock and has a configurable time-window that can be programmed to detect abnormally late or early application behavior. /** defgroup WWDG_Prescaler WWDG Prescaler* {*/ #define WWDG_PRESCALER_1…

看门狗要素以及stm32看门狗

阅读看门狗资料&#xff0c;要把握以下部分 原理图复位CPU条件使能以及关闭看门狗喂狗&#xff08;方式 时间&#xff09;寄存器Debug模式下是否使能stm32包括2个看门狗&#xff0c;拥有不同的时钟 内置 low-speed clock (LSI 40KHZ) &#xff0c;用于 Independent watchdog …