嵌入式进阶指南以及必备知识学习路线

嵌入式进阶记录

  • 引言
  • 学到的知识
    • C语言
    • 操作系统
    • STM32单片机
    • 韦东山Linux
  • 总结

引言

嵌入式是一个相当大的领域,要学的知识很多,自己今年7月份毕业后,正式进入这个领域,在研三的时候自己找了一份实习,主要是做基于ALIOS系统的门禁设备,为其编写网络、二维码以及蓝牙功能,这个项目现在告一段落,知识也记录在之前的几篇文章中,在上一篇的末尾中写了自己要做的3件事情,分别是:
1、把自己的C语言和操作系统再精进一下,跟着B站上的视频走一遍,查漏补缺一下,顺便刷一些题,练练手感。(现在读懂是没问题了,要向写的方向上发展,不要眼高手低)
2、把之前买的野火的STM32开发板,跟着视频,再把例子重新自己写一下,把SDIO,I2C,SPI等再好好熟悉一下。(感觉经过之前的任务历练后,这些对我来说应该没那么难了)
3、如果有时间的话,把韦东山的Linux也好好学一学,在Linux上主要学内核的知识,如多线程编程,信号量,事件等知识好好专研一下。(把这3个做完后自己应该就可以完全入行了,之前的任务让我感觉基础太不扎实了)

在这几个月中,我按着这个计划按部就班的开始学习,现在已经完成,感觉自己进步很大,现在把自己的学习历程以及学到的知识记录下来,给新入门的人员做一个学习路线。

学到的知识

学习的知识主要有这几部分:C语言、操作系统、野火STM32F103单片机、韦东山Linux嵌入式IMX6ULL,现在分别来介绍

C语言

学习C语言我主要看的是b站小甲鱼的课程,小甲鱼讲的我认为非常好,看课程只是一部分,重要是要经常练习,我练习C语言的网站是C语言网,上面的题非常好,一天练习几道题,一定不要眼高手低,而且要勤记笔记,经常翻出来看看。(记笔记推荐使用ONENOTE,在咸鱼上和别人拼一个Office365家庭版一年也就40多块钱,可以云端保存笔记,可以在任意电脑上随时查看以及编辑)
下面是我自己记的笔记。
嵌入式进阶指南以及必备知识学习路线_第1张图片
在这里添加一张C语言的思维导图。

把小甲鱼C语言课以及C语言网的题练习后,C语言这一块基本没问题了,可以没事抽空做几道题,保持手感,到这里大概花了一个月。

操作系统

操作系统在嵌入式中是非常非常重要的,因为嵌入式带操作系统的通常都是多线程编程,因此进程,线程的概念,状态,调度,同步这些知识一定要掌握。学习操作系统我推荐王道计算机考研 操作系统这个课,这个课是我看过讲的最好的操作系统课程,而且在每章的结尾,这个课都会列出导图进行总结,非常nice。初次学习可以先把前几章关于进程线程的知识好好看看吃透,后面的内存,文件系统可以用到的时候再回来看,当然时间充裕的话也可以一次看完。学习操作系统花了2周
嵌入式进阶指南以及必备知识学习路线_第2张图片

STM32单片机

要深入嵌入式系统,单片机还是有必要学一学的,当然不学直接上LINUX也可以,主要看自己工作用到用不到,我自己的工作场景中有的时候会用到单片机,因此还是复习了一下,单片机我用的是野火的STM32F103霸道开发板,视频看的是野火的HAL库视频,这个视频讲的还可以,就是老切换到班级支持包,新手可能就直接懵逼了,这个不用管,直接全部使用CUBEMX生成就行了。

单片机我推荐直接用CUBEMX+HAL库开发就行了,这个是最简单的,再也不用配置时钟什么的了,新手推荐使用这种方式,新手不推荐再使用寄存器和标准库进行STM32开发了。
贴一个自己的笔记。
嵌入式进阶指南以及必备知识学习路线_第3张图片
自己复习一遍STM32单片机大概花了2周,嵌入式几个通信协议原理推荐看创客学院这个老师的课,讲的超级好,是我见过讲协议讲的最好的老师,包括SPI、UART、RS232、RS485、IIC,看完后这几种通信协议肯定就没问题了。

韦东山Linux

最后一部分是学习韦东山的Linux,板子我买的韦东山老师的IMX6ULL,韦东山老师的课讲的非常好,主要分为嵌入式Linux应用开发以及嵌入式Linux驱动开发。
贴一下自己记得笔记
嵌入式进阶指南以及必备知识学习路线_第4张图片
新手学的话我推荐使用vscode+SSH远程,进行代码编写,source Insight我觉得比较老了(当然嵌入式老人可能source Insight已经习惯了),我自己是使用的vscode连接虚拟机ubuntu进行开发的,简直不要太爽,如果看的人多的话我专门写一下如何配置。
嵌入式进阶指南以及必备知识学习路线_第5张图片
在学习的过程中收获最大的是多线程编程这一章,让我搞懂了为什么使用信号量,互斥量等,不使用会产生什么样的后果,之前信号量一直有点迷。
嵌入式进阶指南以及必备知识学习路线_第6张图片
还有在使用Linux的时候,命令要总结一下,多记录,多看。
嵌入式进阶指南以及必备知识学习路线_第7张图片
这一部分花了3周,嵌入式驱动没看,我主要是干应用的,驱动对于我来说有点难,等用到的时候再看。

总结

经过2个月的努力,自己把嵌入式的知识过了一遍,感觉现在进步很大,如果新手刚开始学习的话估计要3-6个月,才能完成,自己学得快的原因是,本科的时候就参加过机械创新大赛,做的就是单片机,因此对嵌入式很感兴趣。
通过这两个月的学习总结也找到了下一步的方向,就是主要做Linux应用开发,Linux相对于单片机来说上限更高,且日后可以好好学习C++和网络编程,跨到互联网去,嵌入式相对于互联网钱还是少一点,不过要把嵌入式好好学好,作为基本盘,我的想法是可以去互联网,但是自己的基本盘不能丢,不过由于我在郑州,互联网企业少,嵌入式反而更好找工作,自己去不去C++后端日后再说,嵌入式Linux一定要学好。
自己下一步的任务是接到一个使用STM32F4单片机移植LWIP实现网络通信功能,把设备的实时状态传到网络后台,随时查看。这个任务主要是网络编程,TCP,HTTP等,自己也接触过,正好是检验的时候了,计划2个月做完。还有一个任务是使用RK3399开发一款虹膜门禁,这个项目公司之前做过,但是没做完,现在交到我手里了,把上一个任务做完后,开始这个任务。
在学习方面,下一步就是把C++好好学一学,还有数据结构,现在只会写链表,把C++学会后,上LeetCode上开始刷题。争取工资早日涨到1W,郑州工资太低了,自己刚研究生毕业要多努力,感觉如果按这2个月的热情,2年内肯定可以干到1W了,看来有钱才有热情啊,23333。

你可能感兴趣的:(嵌入式,linux,职场和发展,程序人生,面试)