看到这个问题,相信大家很多人都在问,也有很多人想知道,还有很多人有自己的看法,今天我在这里发表一下自己的观点。
现在在大学里,
51单片机仍是
电子类专业必修的课程,然而这几年随着ARM的火爆,很多
51
的学习者有了专业一个疑问:既然大家都在用
ARM
,我们为什么还要学
51
?而且找工作的时候人家也比较关注有过
ARM
使用经验的。
为了解决这个疑问,我们首先需要分清下面几个概念:单片机、
ARM
、
DSP
、
FPGA/CPLD
,这几个关键词是学习电子的人常见的几种芯片(我不知道该统称什么,姑且这么叫吧)。这几个词要分类的话首先要把
FPGA/CPLD
和其他的分开,因为
FPGA/CPLD
的原理和单片机、
ARM
、
DSP
不同。
FPGA/CPLD
是通过硬件实现功能的,
FPGA
是
Field
-
Programmable Gate Array
的缩写,即现场可编程门阵列;
CPLD
是
Complex Programmable Logic Device
的缩写,即复杂可编程逻辑器件。通过名字可以看出,二者都是可编程的逻辑器件,即实实在在的硬件,通过对硬件编程以实现某种特定功能。说直白 一些,二者就是一个与非门或者或非门阵列。由于所有的逻辑式子都可以变换成与非结构或者或非结构,因此所有的逻辑功能都可以通过
FPGA/CPLD
实现, 编程后的芯片相当于一个数字芯片,如加法器,移位寄存器等。二者的区别在于
FPGA
是基于
RAM
结构的,
CPLD
是基于
ROM
机构的,这些不是本次讨论的 重点,不再赘述。
再说单片机和
ARM
及
DSP
的关系,单片机是
“
单片微型计算机
”
的简称;
ARM
是
Advanced RISC Machines
的简称,它只是一家微处理器设计企业的名字,因此
ARM
是他们设定的微处理器的统称;
DSP
是
Digital Signal Processing
的简称,即数字信号处理。了解了这些,我们可以说单片机是所有所有
MCU
(微型控制单元)的统称,
ARM
是
DSP
只是他们的一 种,
ARM
属于用公司名称的一种称呼,而
DSP
则是根据功能(数字处理)命名的一种称呼。但是,在行业内,单片机一般特指
8
位或
16
位的
MCU
,在本文中 仍采用大家熟悉的叫法,把单片机和
ARM
放在并列的位置。
了解了这些,我们还需要了解一个问题,什么是
51
单片机。这个问题本不想说,可是 看到有人说
51
是
AT89C51
的简称,所有觉得有必要提一下。
1980
年,
Intel
推出了首款单片机
8051
(这个
8051
有可能是公司内部的设计编 号,我没有找到为什么叫这个),之后又陆续推出了与
8051
指令完全相同的
8031
、
8032
、
8052
等系列的单片机,初步形成了
MCS-51
系列。
1984
年,
Intel
出售了
51
核,此后,世界上出现了上千种
51
单片机,如爱特梅尔、飞利浦,华邦,还有国内的宏晶等。
51
单片机泛指所有兼容
8051
指令的单片机。当然,一些公司购买
51
核后增加了一些功能或者寄存器等,增加的这些东西是不兼容的。于
51
单片机处于并列关系的有
AVR
系 列,
PIC
系列等,他们的区别在于虽然都属于
8
位机(
PIC
系列的有
16
位的),但所使用的指令集不同,这也就是区别一个单片机系列的一种方法。
51
单片机过时了吗?要了解怎么一个问题,首先得搞清楚
51
单片机在市场中的应用情况以及将来的发展情况。众所周知,自从
ARM
出现以来,短短的几年内便出现 了
ARM7
、
ARM9
、
M3
、
M4
、
A8
、
A9
、
A10
等等多个系列,其性能也得到了飞速发展,以其高性能,低价格,低功耗等优势迅速占领了
MCU
的江 山,比起当年的
51
有过之而无不及。作为
32
位机,其性能是毋庸置疑的,即便是相同的时钟速率,
32
位机的处理一些数据的速度也要快于
8
位机,如一个
32
位的加法运算,
8
位机至少需要
4
个周期,而
32
位机只需要一个周期即可完成。
ARM
的优势在于较高的处理速度,还有丰富的外设资源,还有就是较大的数据和 程序存储空间。相比之下,
51
单片机就没有优势了吗?当然不是,
51
单片机的优势在于小巧的内核,成熟的技术(其实现在
ARM
的技术也很成熟),还有就是 位操作。在相当多的应用场合,我们并不需要
ARM
如此强大的处理功能和速度,而是只需要简单的控制,
51
单片机已经完全可以满足实际的需求,这样一 来,
ARM
的优势便显的不再重要,而
51
的位操作则是
ARM
达不到的,也许你会说
ARM
同样可以实现位操作,但如果你了解的比较深的话会发现,
ARM
的位 操作是通过移位,与或等操作之后实现的,而
51
单片机则又位寻址空间,是真正的位操作。再一个就是价格,在价格上最便宜的
ARM
好像已经降到了
0.5
美元 (可能是这个价格,记不清了),而最便宜的
51
可能是
0.5RMB
。但一些中档的
ARM
则要比高端的
51
单片机便宜了。十几或者几十
RMB
的
ARM
的性能 是同价格的
51
单片机无法比拟的。此外,由于
51
内核简单,一些高端的
51
增加的功能使得他们的
51
单片机操作起来变得异常复杂,而且不同厂家的操作完全 不同,这样就增加是使用的难度。综合看来,在高端或者中端应用方面,
51
单片机已经没有了任何优势,其市场主要是一些老产品或者不想学新东西的老工程师在 支撑,其消亡也是必然的。然而在低端应用方面,
51
仍然可以占有一席之地,除了操作和价格上的微弱优势,其更大的优势在于学习简单。
从学 习角度来讲,衡量是否学会一个
MCU
的标准应该是你写的程序你应该知道他是怎么执行的,应该具体到某一个指令所涉及到的寄存器,看到一个指令之后脑子里应 该是一串
01
运算才行,而不是可以简单的应用了。虽然现在很多公司推出的新产品都给出了固件库,可以使工程师更快的进行编程使用。但是,这样的结果是使更 多的硬件工程师变成纯软件工程师而已。你会对一个芯片编程,但你并不了解他。也许有人说,反正我能用了就行了,干嘛非要了解它呢。其实这样想就错了,要想 真正的用好一个芯片。不了解他是不行的,甚至不深入全面的了解都是不行的,一些硬件上的简单改动有可能使系统的性能发生很大的变化。因此要想设计一个比较 好的产品,必须对芯片本身有一个深入的了解。在这方面,
51
单片机由于内核简单,很容易上手并容易深入了解。学习起来比较简单。熟练掌握了
51
,再学习其 他的芯片,如
ARM
也是很简单的,因为所有的微控制器的功能结构框架都是一样的,了解了一种之后再学习另一种很简单。相比复杂的
ARM
结构,
51
结构就显 的很简单了,甚至可以认为,
ARM
是在
51
的结构上增加的许多功能模块构成的,虽然二者的结构并不真的相同。
前几天在
论坛里 看到有人呼吁,别学
51
了,改学
ARM
吧。我觉得这样的人应该属于二者都没有学好的人,二者的区别和联系肯定不清楚才这样喊的,同时有过
51
和
ARM
学习 经验的人应该知道,学精了
51
再学
ARM
所用的时间只不过是看一遍芯片手册的时间(有些夸张),而直接以
ARM
作为
MCU
入门的话则要费很大的劲。对于一 个从来没有接触过单片机的人来说,面对复杂的
ARM
手册往往会感到无从下手。可以这样比喻一下,学
ARM
是一口气登上一座高山,而学
51
相当于到了半山 腰。在半山腰上的风景虽不及山顶,却仍可有所作为。而再从半山腰的高度上山,难度自然减小了。至于有人抱怨说找工作的时候没人要只会
51
的,我觉得应该这 样看这个问题,学
51
和学
ARM
并不存在冲突,了解了
51
只后当然可以再学
ARM
。
我觉得,即便将来
51
的应用没落了,学习
51
仍是一种不错的入门手段,就行学计算机的一直在学
X86
一样。我不反对直接选择
ARM
入门,但却反对那些不了解
51
就呼吁大家放弃
51
的人。作为电子产品的设计者,如何在种类繁多的
MCU
中选择自己合适的一款才是最重要的。
虽然不可否认
51
单片机越来越多的被高端产品,尤其是
ARM
所替代,但我仍觉得
51
单片机没有过时,学习
51
单片机也没有过时!
|