我的幻想毫无价值,我的计划渺如尘埃,我的目标不可能达到。一切的一切毫无意义
----除非我们付诸行动。
博主撰写这篇文章的时候乃一名大三(实则大四)抠脚学生,常混迹各大分区的嵌入式小白,在一所独立学院上学,期间学过51,STM32,也简单的学过FPGA,机器视觉(学校开的课程趁此期间学习的)也用这些单片机做了些小作品,不断的学习历程也让我接触到了更多的知识。
对我来说,掐指一算,自从上大学开始,到现在为止,也算实打实的接触嵌入式,迈过了3个年头。我试问了自己,你知道嵌入式是做什么?学什么?怎么学?果不其然,我支支吾吾几分钟,道不出所以然。那么问题就来了,如果一个人毫无目的的做一件事情,那试问他一定会成功吗?
因此我也遍历了百度、知乎、牛客、CSDN…各大论坛、也看了各招聘网站的岗位要求;加之之前摸爬滚打阿经历,总结出自己的学习路线并持续坚持着。于是乎,在此文章与大家分享一下,对嵌入式该怎么学的浅显见解,请大佬们多多指教。
入门阶段: (不要只看书,要多动手,但千万不是直接动手,不去看书)
C语言:嵌入式编程大多用C语言、少量汇编。先学习C语言,汇编用到的时候再上网查询。
教材:随便一本C语言大学教材,快速入门,电脑上照着教材敲代码,有问题百度解决。
51单片机:看书了解单片机是个什么东西,单片机的基本原理,然后买开发板学习,照看视频学习一遍开发板上的基本模块操作。掌握IO操作、UART通信、模拟IIC和SPI通信、中断的原理、定时器计数器。书+开发板。
简单模块:数码管、蜂鸣器、电机、按键、流水灯等;(不一定要学习开发板上的所有模块,学习一些常用的,感兴趣的即可,很多模块操作相似,快速入门)
数电模电:掌握基本的电路知识,能够看懂开发板的电路原理图。能够照看开发板的原
理图焊接电路。
常用工具软件:Keil软件和 altiumdesigner软件
【附加】掌握51单片机的内部结构,USRT,IIC的协议详情,学会看数据手册
【自我测试】如果是大学生,可以积极参加,电子设计竟赛,智能汽车竞赛,等各种电子类比賽。实战中提高速度和效果最快。哪怕是刚学,也积极参加,通常参加了会有培训什么的,有很多人一起学习、交流,也是可以的。哪怕最开始拿不了名次,哪怕是校级比赛,积极参加。
【自我测试】使用 altium designer软件设计一个电路,并购买电子器件焊接电路板编写程序,实现单片机读取温庋传感器和湿度触感器的数据,通过uart发送到电脑上位机,同时上位机发送命令给单片机,控制蜂鸣器响+灯亮。可以自行发挥,电路设计照抄开发板。
进阶阶段
STM32单片机:掌握STM32的库函数编程以及寄存器操作,复杂外设:DMA、ADC、DAC、PWwM、li、SP、jtag调试、中断、时钟系统,高级模块:蓝牙、WiFi、摄像头、键盘鼠标、USB。书+开发板(正点原子推荐,资料齐全,视频配套,入门速度快)+博客+自己做笔记cortex m3内部结构:掌握STM32的内部结构和 cortex N3内核结构,书籍:《 cortex M3/M4权威指南》
C语言进阶:C指针、数据结构。书籍:《C和指针》《 C primer》《数据结构与算法分析》
实时操作系统: freertos或者ucos操作系统。下载源码,学会移植,学习操作系统基本结构,深入掌握操作系统调度和内存管理。源码+手册+大佬博客
应用层:学习一点C++或者C#,常识写上位机程序, Windows的应用程序。
【自我测试】STM32+摄像头+蓝牙+上位机。STM32读取摄像头的数据,通过蓝牙传输给PC电脑上位机,并且上位机显示出来
【自我测试】如果是大学生,可以积极参加,电子设计竞赛,智能汽车竞赛,等各种电子类比赛。实战中提高速度和效果最快
常用工具软件:keil或者lAR、QT编写上位机、其他工具软件
职业阶段
进一步掌握的话,就看求职方向了,学习的目的一方面是兴趣,另一方面也是赚钱。看市场需求,一般嵌入式的大厂大都要求有Linux开发经验,
按照顺序 :先学会使用Linux,再学习Linux内核。 Linux十分庞大,弄懂一个组件或者一项就能找个不错的工作。
Linux应用层编程、Linux系统编程、ARM体系结构(嵌入式一般先学ARM架构,其他架构工作中再学)
Linux驱动、Linux內核基本模块:内存管理,任务调度,文件系统。弄懂一个需要很
书籍:《Unix环境高级编程》《Linux內核设计与实现》《Linux系统编程》《深入理解Linux内核》《 Linux设备驱动开发详情》《Linux设备驱动程序内核机制》《Linux内核情景分析》《ARM体系结构与编程》《AM嵌入式系统开发:软件设计与优化》
多做学习总结,写博客。嵌入式的应用十分广泛,实际工作中用到的知识肯定不止这些,也有些完全用不上,但
是这些都是基础的,掌握好基础,掌握学习新知识的方法,工作中,找到数据手册就可开发;有做芯片的、手机的、安防、无人机、通信、家电,各行各业都离不开嵌入式。前景可以的,但是一定要坚持深入学习,浅层的皮毛都可以做,含金量低。
C语言、实时操作系统或者Linux操作系统、ARM片架构,这三点掌握的比较深入了,在工作中换其他硬件平台都可以较快的上手。
前行上难,是在走上坡路。
最后,自己的目标更加地清晰了,学习起来也更加地高效了。
那么看完之后
你呢?
今天放下面子,明天更面子。
我是嘎胜
谢谢您的阅读