嵌入式就业方向及具体细分岗位如下:
方向 | 岗位 |
单片机开发 | 单片机开发工程师(MCU开发工程师) RTOS开发工程师 |
Linux应用开发 | Linux应用工程师 QT开发工程师 Linux多媒体开发工程师 |
Linux驱动开发 | Linux/Android驱动开发工程师 Linux设备驱动开发工程师 Linux内核驱动开发工程师 |
Android系统开发 | Linux系统移植工程师 Android系统开发工程师 |
像嵌入式软件工程师、嵌入式系统工程师之类的岗位,可能是上述各种方向的
要根据岗位具体要求来判断
今天主要介绍单片机开发的学习路线:
学习路线思维导图 | 嵌入式学习资料
资料包括:嵌入式八股文、笔试面试真题
基础知识、项目代码、必备书籍
基础知识
1. C语言基础
学习内容:
1)基本语法:数据类型、运算符、控制结构、函数、数组、指针、结构体等基本概念
2)学完基础知识可以做一些小游戏项目,比如五子棋、贪吃蛇这些
学习资源:
① 视频:
浙江大学翁凯老师的《C语言程序设计》https://www.bilibili.com/video/BV1dr4y1n7vA/
郝斌老师的C语言课程也不错,但视频画质和授课软件比较落后,这里就不推荐了,大家感兴趣可以看看,B站上有个最新修复版的
② 书籍:
入门书籍:《C Primer Plus》和《C语言程序设计》
虽然我这里说是入门书籍,但是对计算机一窍不通的小白还是不友好,比较适合有编程基础的读者。可以学完上面的视频教程有一些C语言基础后再来读,收获会很大。两者难度差不多,可以任选其一
进阶书籍:《C专家编程》介绍了大多数C语言的坑,精髓很多;《C陷阱与缺陷》阐述了很多容易让人误解的语法细节,重在帮助C程序员绕过编程过程中的陷阱和障碍;《C和指针》指针是C语言的重难点,所以一本专门讲指针的书还是非常需要的。但其实这本书也讲了很多指针外的内容,这些内容稍微有点多余了。
2. 单片机
毫无电路基础的小白选手推荐先买开发板进行学习;有一定数电模电基础的,可以考虑最小系统板+面包板+外设电路组合学习
① C51
有基础的建议直接跳过,学习STM32。
零基础小白、转行等人员建议从8位的51单片机开始学,因为学起来简单,学的过程会相对轻松和有成就感,对于零基础的人群其实稳住学习心态是最重要的
具体学习内容直接看下面的视频,不多说了,51单片机自学就可以了。
学习资源:
郭天祥老师的《十天学会51单片机》https://www.bilibili.com/video/BV1Ks411Y7mi/
江科大的《C51单片机入门教程》https://www.bilibili.com/video/BV1Mb411e7re/
② STM32
学习内容:
1)轮询、定时器、中断
2)外设通信:GPIO、时钟、UART、DMA、SPI、I2C、LED灯、传感器、OLED屏等
3)标准库函数和HAL库开发
4)Keil调试
5)项目入门:寻迹避障智能小车、智能垃圾桶、温湿度监测系统等。
寻迹避障小车
https://www.bilibili.com/video/BV1K1421y7Yk/
智能垃圾桶
https://www.bilibili.com/video/BV1tzWge8EUc/
温室大棚智能环境监测
https://www.bilibili.com/video/BV1JvsLeaEKU/
后面两个是我们自己账号上自己发布的视频,源码和课件也都整理好了(+V:linglv03)免费分享给大家~
学习资源:
江科大的《STM32入门教程》
https://www.bilibili.com/video/BV1th411z7sn/
开发板推荐野火和正点原子的,两家价格差别不大,任选一个就可以,买了板子有配套的课程。野火的代码相对更加规范严谨,而正点原子的代码风格不太适合作为实际项目的参考。但是正点原子的文档资料会更详细一些,大家自行考虑。
如果觉得开发板贵的话也可以看铁头山羊的教程,自己动手来搭建https://www.bilibili.com/video/BV11X4y1j7si/
我们这边也有十几个项目可以学习,硬件物料我们可以直接借给你使用。项目很全,难度从基础到进阶再到高级都有。
我们的教学模式是老师一对一线上会议辅导的模式,不仅给足学生自由学习的时间,同时也能提供专业的一对一指导,价格更是十分友好
篇幅有限,完整大纲加微信领取一份(+V:linglv03)
同时我们也有自己的STM32项目和基础教程,推荐大家观看,里面有FreeRTOS项目和基础教学
https://www.bilibili.com/video/BV18F411f7gM/
③ 国产单片机
④ RISC-V内核单片机
③④这两种类型单片机招聘岗位上要求很少,推荐大家还是学习STM32单片机。岗位上有额外要求或者自己感兴趣的可以学一学,比如兆易创新单片机,既是国产也是RISC-V内核
3. 开发环境
学习内容:
1)集成开发环境(IDE):Keil MDK、IAR、STM32CubeMX、VScode等
2)编译工具链:GCC工具链(开源的通用编译工具链,支持多种架构)、ARM工具链(专门针对ARM架构的,在Keil MDK等IDE中,ARM编译工具链是默认的编译工具链)等
学习资源:
Keil 5安装资源和教程,资源在简介里
https://www.bilibili.com/video/BV1Pu4m1u7sA/
Keil 5学习
https://www.bilibili.com/video/BV1is411p7RB/
4. 硬件基础
1)数电模电、微机原理等基础知识,了解基本电路原理,像数字电路中的逻辑门、触发器、寄存器等,以及模拟电路中的放大器、滤波器等;
2)熟悉常用的电子元器件;
3)原理图理解和使用;
4)常见元件焊接,常用工具使用(万用表、示波器、逻辑分析仪等)
硬件部分到时候做硬件学习路线的时候再细说,这边不细说学习资源了
进阶学习
1. RTOS(实时操作系统)
RTOS包括FreeRTOS、RT-Thread、μC/OS等,这里还是推荐学习FreeRTOS,因为招聘要求上写的大多数是这个
学习内容:
1)RTOS等实时操作系统基础(任务、锁、信号量、消息队列)
2)FreeRTOS操作系统移植
RTOS之前的学习路线是裸机开发,进阶建议学习RTOS实时操作系统,是加分项同时也是现在很多单片机岗位的必备需求,下面给大家引申一个概念:
裸机开发和RTOS开发的区别
裸机开发:指的是不依赖于任何操作系统,程序的运行,完全取决于代码的逻辑设计,硬件设备的固定设定。开发者需要直接管理硬件资源,如内存、外设等,以及处理中断和异常,不需要操作系统的参与和调度。
RTOS开发:裸机程序难以解决的问题就是,控制每个任务的运行时间。难以消除任务与任务之间的相互影响。RTOS的开发就是运行一个实时操作系统,由RTOS来管理硬件资源、任务调度、中断处理等。开发者在RTOS上编写应用程序,通过API与RTOS交互,实现多任务并发执行。RTOS让多个任务轮流运行,不再需要我们手工在任务函数去使用状态机拆分程序
学习资源:
基础学习:推荐韦东山老师的这个课程,更清晰,适合新手
https://www.bilibili.com/video/BV1Jw411i7Fz/
项目推荐:STM32移植FreeRTOS智慧安全厨房
我们老师制作的教学视频,前三节可白嫖(可老师一对一会议辅导)
https://www.bilibili.com/video/BV16m4y177jF/
也有完整录播课(仅提供录播课和代码,不提供任何答疑服务)
https://www.linglv123.com/series/XL100095xxxxxx
2. C语言进阶
1)数据结构:线性表、栈、队列、链表等
2)基础算法:排序(插入排序、冒泡排序)和查找(排序查找、二分查找)
3. 物联网通信技术
蓝牙BLE、WIFI、4G、lora、zigbee等
4. 嵌入式高级外设
摄像头camera、USB、电容触摸屏等
5. GUI技术
QT、LVGL、串口屏等
学习资源:
项目推荐:LVGL+FreeRTOS开发基于ESP32S3的智能终端系统,FreeRTO和GUI技术一网打尽(可以白嫖前三节,有录播课但录播课硬件部分讲解较少,推荐学长一对一会议辅导)
https://www.bilibili.com/video/BV1cw4m1y773/
6. 通信协议
socket/tcp/udp、lwip、RS485、modbus、mqtt、can、lin、uds诊断等
7. 代码优化
代码规范:缩进、注释、命名、可读性
代码可移植:平台数据类型、对齐、大小端、多用库函数
8. 低功耗
睡眠、停机、待机、测试指标
9. 编译/链接脚本
gcc、makefile、加载地址、数据段/代码段
10 硬件进阶
原理图绘制、2-4层PCB layout、电路分析和调试等
11. 常用算法
PID、卡尔曼滤波等
进阶学习这部分的大部分内容推荐大家直接通过项目进行学习就可以了
其他方向需额外学习:
● 物联网
端云对接、fota、opencpu式开发等
● 智能汽车和自动驾驶
CAN、LIN、UDS、车规级MCU、Autosar、ROS、SLAM、hypervisor、车载以太网、DoIP等
● 电机控制
交流电机、直流有刷、直流无刷BLDC(有霍尔、无霍尔、FOC算法)、舵机、步进电机、伺服电机等
● 新能源和储能
数字电源、BMS、EMS、双向PCS、UPS等
最后推荐一下我们的校招学习路线,适合应届生参加校招来参考:
https://www.bilibili.com/video/BV14x4y1J7a2/