嵌入式学习路线

本文指导了嵌入式工程师的学习路线,强调了理解方向、实践编程、掌握C/C++、汇编、Linux基础、RTOS、外设使用和项目经验的重要性。随着技能深度增加,薪资也随之提升,特别指出RTOS和内核研究是拉开差距的关键.
摘要由CSDN通过智能技术生成

大佬链接:

https://www.zhihu.com/people/m6fjgt/columns
嵌入式驱动工程师学习路线
资源大集合(https://gitee.com/zhengnianli/EmbedSummary)
大佬总结文档
在线书籍
在线代码编辑器
嵌入式学习路线

就业方向

重要的不是找教程,而是方向和方法
偏硬件:单片机开发,Linux驱动开发
偏软件:Linux应用开发

看书不要希望一次就会,一次就明白是什么意思,也不要死记硬背,看不明白也没关系,以后遇到了知道去哪里去找就可以了; 看很多书,视频只能知道点理论知识, 多看代码读出代码的意思,多写代码, 理论与实践要相结合, 见多识广,熟能生巧

在这里插入图片描述

c语言

知道基本的语法,结构体,共用体,指针, 函数指针,回调函数

简单汇编

举个例子,很多做家用消费类产品的芯片都是选非常便宜的,内存也非常小,资源非常匮乏。
他们写程序都是用汇编,算着汇编指令去写的。
你可以用资源丰富的芯片做,然后用c把代码写的很健壮,但是成本绝对比别人高。哪怕一颗芯片只贵1毛钱,如果一个月出货10万个,你就让企业少挣1万。

c++

知道基本的语法,什么是类,怎么定义,继承,接口,要深刻理解

Linux基本命令

ls, cd, vi, mkdir, rm, touch, head, tail, find, grep, tail, head, wc, sort, uniq

基础电路

走弯路的小伙伴最多,再重申一遍,不用死磕模电,甚至都不用去学, 只需要看懂电路关键输入输出就行
学习电路最好的途径就2个: 一是开发板,二是项目 ,通过项目不断地积累电路
50个常用硬件设计电路

单片机入门 阅读原文

没有必要先学习51单片机
学习51单片机的目的是为了让更好容易地去理解单片机的资源到底是怎么用起来的,怎么通过程序去控制电路的,相当于为你后续学习别的单片机铺路
挑选一个合适的开发板,推荐用stm32f407入门stm32(一个stm32核心板、一个TFT屏幕、一个st-link下载器,usb转ttl(用于调试)一套成本也就30左右.一定要多动手写代码。每学习一个外设都应该去动手写代码
Arduino:
直接调库就能很轻松把STM32的外设用起来,而不需要关心底层配置了什么寄存器,不用研究那么深
hal库是st公司为自己家的stm32系列芯片开发的一套库,一套库兼容所有的stm32芯片,必然导致代码臃肿(为了兼容性),hal库编译太慢了, 不推荐。
标准库是st公司早期为stm32芯片研发的开发库,目前只支持到stm32f429系列,再往后的stm32f7系列就只有hal库了。hal配合cubemx开发,速度飞快,确实有多种优点

常用的外设:GPIO、UART(串口)、中断、TIMER(定时器)、AD、DA、SPI、I2C、PWM、DMA
开发工具链:ARM公司的Keil:多文件编译、调试仿真、常见配置

先把前面所学的知识变成实实在在的项目,可以是一些小项目,比如说寻迹小车之类的,可以到某宝找一些DIY套件自己写程序,也可以找无际单片机编程学习实际产品开发。
这一步非常重要,也容易被初学者忽略,这一步的目的是为了学习实现功能的思维,锻炼代码整合能力,这个能力比你会单片机更重要。
接下来的时间,全部放在做项目上面,再去学别的单片机已经没太大意义了,使用起来都是大同小异
现在缺的是功能实现的思路,以及代码实现的能力
可以去找一些开源的项目学习,只是自己摸索比较浪费时间。
到某宝找一些单片机的项目DIY套件,一般他们会有提供源码,可以跟着学习
找一个行业经验丰富的人带你,通过最短的时间去学习别人几年的精华是很划算的。
在这里插入图片描述

stm32进阶:

软件

  • RTOS(FreeRTOS/ VxWork/ UCOS/ RT-Thread): 怎么创建任务、信号量、互斥量、队列;
  • 防止代码注入、缓冲区溢出、功耗优化
  • 中间件(emwin写GUI界面用到,或者LVGL也可、Fatfs文件系统、Lwip网络协议栈

硬件:复杂的外设和芯片内部内容

在这里插入图片描述

stm32芯片内部功能逻辑图常见外设,只是挂载到总线(AHB、APB总线)上的一个个独立的功能单元,CPU(图中Cortex-M3就是芯片内部的CPU)如何与外设进行交互、芯片的调试系统、中断系统、总线系统等等。

比较复杂的外设: RCC(时钟系统)就相当于芯片的动力系统,连接着芯片内部的各个功能部件。
除此之外,RTC(实时时钟)、CRC(循环冗余校验)、CRYP(加密处理器)、RNG(随机数发生器)、HASH(散列处理器)等外设。
但比较复杂的,如USB、以太网、FSMC(灵活的静态存储控制器)、SDIO(安全数字输入/输出接口)、DCMI(数字摄像头接口)这些复杂的外设可以了解下不建议学习,不需要进行深入研究(学习成本高,真正用到了,学的那点也不够,导致性价比太低)。如果以后想专精某一个方面,可以去学习。
CAN总线用于汽车领域,如果不打算从事汽车领域工作的话,可以不用学习。
stm32f407芯片的外设就这么多,都在上面讲述了,各位同学根据自己的需求进行学习。

除了外设之外,M4内核还支持DSP指令集,这个用于对数学运算、控制运算、信号处理、数据处理等方面,也可以学习下如何使用。对DSP指令集的学习,只需要学习该如何使用DSP库即可,库里面的算法都是使用DSP指令集进行加速过的,我们只需要会用就行。

学习完上面的内容之后,也可以研究下CPU部分,如常见的堆、栈、流水线、寄存器、CPU现场等相关内容,这些在学习FreeRTOS时用得到,也是面试中常问的内容。

在软件主线、硬件主线之间,还有一个就是工具链,主要是编译器在链接期间的部分知识。这部分内容,也是我们经常用到的一些技能,如进行IAP开发、OTA开发等,还有一些特殊用途,也需要对链接阶段进行改动,以满足应用需求。

这里推荐几本书:《Cortex-M3权威指南》、《STM32F4xx参考手册》配合起来一起学习

芯片内核

Keil提高
FreeRTOS

Linux设备驱动开发

  • 字符设备架构、inode、cdev、file_operations、file之间关系
  • platform总线、设备树
  • 同步互斥机制,自旋锁、信号量、互斥体,原子操作
  • 中断、中断底半部
  • 等待队列,poll的实现
  • 常见设备的驱动的编写,key,led,gpio,adc、pwm、i2c、mpu6050
  • 网络设备:网卡驱动分析、netfilter使用
  • usb架构:
    在这里插入图片描述在这里插入图片描述

经济学里面有一个论断:供需关系决定价格

  • 3、5k薪资水平:
    这是绝大部分应届生的水平。这些人大概会一些stm32外设的配置,使用这些外设,配合一些模块(比如屏幕、蓝牙、陀螺仪等等)做一些应用开发,做一些小项目。这种水平的同学,找工作其实比较难(因为大家都类似,企业凭什么要你),这是个很现实的问题。而且这种水平对应的工作也不会太好,一般就是3、5k的样子,市面上一抓一大把。

  • 7、8k的薪资水平:
    要想再进一步,就要学习更多的东西,比如RTOS。RTOS是一个非常好的技能点,它是和周围同学、同事拉开差距的一个切点,也是关键点。能够使用RTOS提供的功能,如任务管理、信号量、邮箱、互斥量等,可能还会配上其它的中间件,如LVGL,fatfs等,做一些项目,这种应届生都是比较少的了。相比较前面那些同学,这种应届生更容易找工作,但依然处于初级阶段,依然还是做简单的应用开发,并未涉及较深入的内容。

  • 10k以上:
    若是想拿到这种水平的offer,就不能光局限在应用层面了。前面两者都是在应用层打转,并没有涉及较深入的内容。我们需要了解RTOS内部的实现机制、实现算法,stm32内核(IAP是个好东西,非常适合作为深研stm32的切入点)。只有到这个时候,我们才算是开始真正具备走向一个技术大牛应该有的基础。这个水平的嵌入式工程师,有了走向成为技术大牛的可能和基础,已经在技术大牛的起点了。

  • 20k以上
    能在应届生水平拿到20k以上offer的,都是有两把刷子,在2.4节提到的那些进阶技术,博主都有所涉猎,不仅如此,我还在Linux驱动、嵌入式AI领域有所研究。2.4节提到的技术,可以说20K薪资只是起点了,以后30K、50K也可以理解为2.4节技术的深入研究了。

  • 20
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值