记得三月份有个同学问我一个问题,什么是嵌入式,单片机是嵌入式吗?嵌入式开发应该学什么?
说实话,虽然我工作多年,但这个问题真的让我很困惑。
当我们开发产品时,我们很少理解这些概念性的东西。
后来我特意去了解了一下,今天就和有同样问题的朋友分享这些概念。
嵌入式系统一般称为嵌入式系统。
可以理解为硬件和软件都是切割的计算机。
一般来说,我们使用的计算机是通用计算机,嵌入式系统是专用计算机。
专用计算机可灵活切割硬件和软件。切割后,更适合对成本、体积、功耗、智能控制有严格要求的产品,如家电、汽车、医疗、工业、军事等电子产品。
嵌入式系统的核心是它的处理器,有几种类型的处理器:
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 Program ** ble Chip)
而我们单片机就属于嵌入式控制器MCU所以单片机当然属于嵌入式系统。
事实上,从上述处理器分类可以衍生出许多其他职位,如FPGA方向,Linux方向。
因此,我总结了一些从事嵌入式开发的主流职位,你可以根据自己的喜好入座。
1. 单片机工程师/嵌入式工程师
2. Linux系统开发工程师
3. Linux应用工程师
4. 安卓系统开发工程师
前两个是硬件驱动层,后两个是应用层。
我一直在做单片机开发,所以对于这个职位,如果你想从事这个开发,你需要学习什么课程?
技术会更新迭代,所以如果你根据一些学校十年不变的教学内容来学习,很可能与实际工作需求不匹配。
最好的办法就是通过招聘平台直接搜索相关岗位,看看他们的岗位需求。
以下是我的需求:
单片机工程师/嵌入式工程师
岗位要求:
① 熟悉单片机的基本通信协议接口,IIC、SPI、串口、CAN等。
② 熟练使用各种单片机外设,如TIME、USAR、PWM、中断、DMA、ADC。
③ 掌握C语言和单片机(STC、STM8、STM编程开发,代码要求规范整洁。
④ 至少熟悉一个PCB软件,能理解原理图。
⑤ 各种项目经验
从岗位需求不难分析出,以下三部分是我们的必修课。
1. C语言
2. 单片机
3. 基础电路
C语言没什么好说的。只要你想玩单片机,你就必须学习,我认为它的重要性应该排在第一位。
C语言教程在市场上泛滥,我们还为单片机录制了一套C语言入门课程。
与其他C语言教程相比,许多教程更倾向于纯软件方向。我们录制的目的是让每个人在学习后都能无缝地连接到单片机开发,所以我认为我们的课程仍然有一定的价值。
这一块也是免费给大多数想开始学习的朋友,想学习可以去小破站找到无尽的单片机编程,整个网络同名,如果你需要课件和源代码可以通过教程找到我们。
单片机当做工具来学习就可以了,可以先学STC 51、烧录程序比较方便,学完再学STM32F103系列最典型,实际应用最多。
至于上面写的各种外设,TIME、USART、PWM都是单片机的内部资源,我们在学习单片机的过程中肯定会接触到,不需要单独学习。
最后,我们需要学习电路基础。我们用C语言编写程序打开单片机外设,然后通过外设控制外围电路实现产品功能。如果我们不能理解电路图,我们就不必谈论控制。
更详细的学习路径可以参考我下面的文章。