作者:嵌入式软件和硬件
链接:https://www.zhihu.com/question/322341076/answer/1068611110
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
入门阶段:(不要只看书,要多动手,但千万不是直接动手,不去看书)
C语言:嵌入式编程大多用C语言、少量汇编,先学习C语言,汇编用到的时候再上网查询。教材:随便一本C语言大学教材,快速入门,电脑上照着教材敲代码,有问题网上搜索解决。
51单片机:看书了解单片机是个什么东西,单片机的基本原理,然后买开发板学习,照着视频学习一遍开发板上的基本模块操作。掌握IO操作、UART通信、模拟IIC和SPI通信、中断的原理、定时器计数器。书+开发板。
简单模块:数码管、蜂鸣器、电机、按键、流水灯等;【不一定要学习开发板上的所有模块,学习一些常用的,感兴趣的即可,很多模块操作相似,快速入门】
数电模电:掌握基本的电路知识,能够看懂开发板的电路原理图。能够照着开发板的原理图焊接电路。
工具软件:Keil软件和altium designer软件
【附加】掌握51单片机的内部结构,UART、IIC的协议详情,学会看数据手册
【自我测试】如果是大学生,可以积极参加,电子设计竞赛,智能汽车竞赛,等各种电子类比赛。实战中提高速度和效果最快。哪怕是刚学,也积极参加,通常参加了会有培训什么的,有很多人一起学习、交流,也是可以的。哪怕最开始拿不了名次,哪怕是校级比赛,积极参加。
【自我测试】使用altium designer软件设计一个电路,并购买电子器件焊接电路板。编写程序,实现单片机读取温度传感器和湿度触感器的数据,通过uart发送到电脑上位机,同时上位机发送命令给单片机,控制蜂鸣器响+灯亮。可以自行发挥,电路设计照抄开发板。
进阶阶段:
STM32单片机:掌握STM32的库函数编程以及寄存器操作,复杂外设:DMA、ADC、DAC、PWM、IIc、SPI、jtag调试、中断、时钟系统,高级模块:蓝牙、WiFi、摄像头、键盘鼠标、USB。书+开发板(正点原子推荐,资料齐全,视频配套,入门速度快)+博客+自己做笔记
cortex M3内部结构:掌握STM32的内部结构和cortex M3内核结构,书籍:《cortex M3/M4权威指南》。
C语言进阶:C指针、数据结构。书籍:《C和指针》《C primer》《数据结构与算法分析》
实时操作系统:freertos 或者 ucos操作系统。下载源码,学会移植,学习操作系统基本结构,深入掌握操作系统调度和内存管理。源码+手册+大佬博客
应用层:学习一点C++或者C#,常识写上位机程序,Windows的应用程序。
【自我测试】STM32+摄像头+蓝牙+上位机。STM32读取摄像头的数据,通过蓝牙传输给PC电脑上位机,并且上位机显示出来。
【自我测试】如果是大学生,可以积极参加,电子设计竞赛,智能汽车竞赛,等各种电子类比赛。实战中提高速度和效果最快。
工具软件:keil或者IAR、QT编写上位机、其他工具软件
职业阶段:
进一步掌握的话,就看求职方向了,学习的目的一方面是兴趣,另一方面也是赚钱。看市场需求,一般嵌入式的大厂大都要求有Linux开发经验,
按照顺序:先学会使用Linux,再学习Linux内核。Linux十分庞大,弄懂一个组件或者一项就能找个不错的工作。
Linux应用层编程、Linux系统编程、ARM体系结构(嵌入式一般先学ARM架构,其他架构工作中再学)
Linux驱动、Linux内核基本模块:内存管理,任务调度,文件系统。弄懂一个需要很多时间。
书籍:《Unix环境高级编程》《Linux内核设计与实现》《Linux系统编程》《深入理解Linux内核》《Linux设备驱动开发详解》《Linux设备驱动程序内核机制》《Linux内核情景分析》《ARM体系结构与编程》《ARM嵌入式系统开发:软件设计与优化》
多做学习总结,写博客。【博客,写之前是写给自己的,写完了就是给别人的】
嵌入式的应用十分广泛,实际工作中用到的知识肯定不止这些,也有些完全用不上,但是这些都是基础的,掌握好基础,掌握学习新知识的方法,工作中,找到数据手册就可以开发了。
有做芯片的、手机的、安防、四轴飞行器、通信、家电,各行各业都离不开嵌入式。前景还是可以的,但是一定要**深入学习,浅层的皮毛都可以做,含金量低。
C语言、实时操作系统或者Linux操作系统、ARM芯片架构,这三点掌握的比较深入了,再工作中换其他硬件平台都可以较快的上手。
|