最近有很多同学问:对嵌入式系统感兴趣,想今后从事这方面的工作,在学校学完基于51的单片机原理之后该继续学点什么,是ARM还是STM32?
大家可能只是听说过这两个名词,但不清楚他们代表什么,其实这样问就像在问:4缸汽油涡轮增压发动机和大众POLO有什么区别?
下面先来解释以下ARM和STM32分别是什么:
ARM(中文名:安谋)公司是一家从事CPU芯片设计开发的厂商,但本身并不生产芯片,而是靠转让设计许可,由合作公司生产各种的芯片。世界各大半导体生产商从ARM公司购买其设计的ARM 微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。
STM32就是ST(意法半导体)公司生产的一系列使用ARM Cortex-M处理器内核的32位微控制器(Microcontroller)。
ARM的核心就像是汽车发动机的设计图纸,不同的芯片厂家类似汽车生产商。作为汽车生产商首先要从ARM公司买来发动机的图纸,再生产这款发动机,然后不同的汽车生产商按照自己的要求和理念,再设计生产不同的车体、底盘等,然后把发动机安装进去,成为一款能够出售的、实用的汽车。
ARM处理器中除了用于微控制器的Cortex-M系列的还有面向移动应用和实时应用领域的Cortex-A和Cortex-R系列的处理器核心。
学习建议:
STM32属于微控制器也就是单片机,使用场合多为应用控制,它主要和8051,AVR等竞争低端单片机市场,优势在于性价比高,片上资源较为丰富。如果只学STM32的话一个月就够了,做这类应用主要还在于你对使用的硬件和外围接口是否熟悉,比如SPI,IIC,SD卡和各类传感器等。单片机的优点是成本低,缺点在于性能不足,做音频和图像处理的话速度还是太慢了。对于目前市场来说缺少的更多是嵌入式高端人才,低端人才已经饱和,工资一般不会太高,所以建议接下来继续学习Cortex-A系列和Linux系统。在软件和硬件的复杂度上Cortex-A相对于M系列高了一个层次,因此薪资也会高一个层次,需要学习嵌入式Linux,内核编程,驱动开发,应用软件等知识。而且Linux系统的使用范围更广,不局限于嵌入式,就业范围更广。