记得在3月份,有一个学员问了我一个问题,什么是嵌入式,单片机是属于嵌入式吗?嵌入式开发要学什么?
说实话,虽然自己从业多年,但是这个问题还真把我问蒙了。
我们在做产品开发的时候,基本很少去了解这些概念性的东西。
后面我特意去了解了一下,今天就把这些概念分享给有同样问题的朋友。
嵌入式一般叫嵌入式系统。
大家可以理解成是硬件和软件都经过剪裁的计算机。
一般像我们使用的电脑是通用计算机,而嵌入式系统是专用的计算机。
专用的计算机可以灵活地对硬件和软件进行剪裁,剪裁以后它更适合去做对成本、体积、功耗、智能控制有严格要求的产品,比如说家电类、汽车类、医疗类、工业类、军事类等电子产品。
一个嵌入式系统的核心就是它的处理器,处理器有几种类型:
1.嵌入式微控制器MCU(Micro Control Unit)如8051/STM32等等。
2.嵌入式DSP处理器 (Digital Signal Processor)专门用于信号处理,比如数字滤波,FFT、频谱分析、典型TI公司的TMS320C2000/C5000。
3.嵌入式微处理器MPU(Micro Processor Unit)性能更强,外设资源更丰富,如AM186/88、PowerPCMIPS、ARM
4.嵌入式片上系统SoC(System on Chip)
5.可编程片上系统SoPC(System on a Programmable Chip)
而我们单片机就属于嵌入式控制器MCU这类,所以单片机当然是属于嵌入式系统。
从上面的处理器分类,其实可以衍生出很多别的职位,比如说FPGA方向,Linux方向。
所以,我又总结了从事嵌入式开发的一些主流职位,大家可以根据自己喜好入座。
1.单片机工程师/嵌入式工程师
2.Linux系统开发工程师
3.Linux应用工程师
4.安卓系统开发工程师
这4个职位,前2个是偏向于硬件驱动层,后2个是偏向应用层。
我一直是在做单片机开发,所以针对这个职位,来说一说如果想从事这个开发需要学习哪些课程?
技术还是会更新迭代的,所以如果你根据某些学校那些十年不变的教学内容来学习的话,很有可能与实际岗位需求对不上。
最好的办法就是直接通过招聘平台搜相关的职位,来看看他们的岗位需求。
下面是我随便筛选的一家公司的需求:
单片机工程师/嵌入式工程师
岗位要求:
- 熟悉单片机基本的通讯协议接口,IIC、SPI、串口、CAN等。
- 熟练运用单片机各种外设,如TIME、USAR、PWM、中断、DMA、ADC。
- 熟练掌握C语言及单片机(STC、STM8、STM32系列)编程开发,代码要求规范整洁。
- 至少熟悉一款PCB软件,能看懂原理图。
- 各种项目经验
我们从岗位需求不难分析出,以下3块的内容是我们的必修课。
- C语言
- 单片机
- 基础电路
C语言没什么可以说的了,只要你想玩单片机,是必须要学的,而且它的重要性我认为应该排在第一位。
市面上C语言教程已经泛滥了,我们也针对单片机录制了一套c语言入门课程。
相对其他c语言教程,很多都是偏向纯软件方向,我们录制这个目的是让大家学完以后可以无缝对接到单片机开发,所以我们的课程我认为还是有一定的价值。
这块也是无偿给广大想入门的小伙伴学习,想学习的可以到小破站找无际单片机编程,如果需要课件和源代码的可以通过教程找到我们。
单片机当做工具来学习就可以了,可以先学STC 51的,烧录程序比较方便,学完以后再学STM32F103系列,最典型,实际应用也最多。
至于上面写的各种外设TIME、USART、PWM都是单片机的内部资源,我们在学习单片机的过程中肯定会接触到,不用单独去学习。
最后还需要学习电路基础,我们是用c语言写程序把单片机外设开起来,然后通过外设去控制外围的电路实现产品功能,如果电路图都看不懂,就不用谈控制了。
更详细的学习路径可以参考我下面这篇文章。