8051、AVR和ARM的关系及实际情况--转载
首先,我们先来谈谈我们对8051、AVR、ARM或其它单片机的现有印象是怎么来的。主要的来源其实有两种,来自于网络上关于芯片的介绍,来自书架上芯片的教学书籍。主要都是一些官话、套话,什么具有精简指令集、增加了多个定时器、更快的速度、价格更低,更适合工业设备开发之类。大家可以看出,这些介绍的用语都是比较词,也就是说性能的优秀是与另一个不优秀的相比较得来的。8051系列单片机因为是最早的处理器内核,很不幸,8051内核的单片机成了众矢之地。AVR、ARM和其它一大堆单片机都在和8051比较。最终的结果就是大家认为8051是最落后的,AVR、ARM,还是PIC、MSP430都比8051强大。再加上以8051系列单片机入门的图书很多,如以AT89C51、STC89C52之类的单片机或开发板入门的书几乎占了一大半的书架。所以大部分爱好者选择8051来入门,同时也自然而然的意识到学完最简单的8051之后还要学习更“高级”的AVR、ARM、PIC、MSP430之类的单片机。认为只有学会了这些才是一个提升的过程,会用AVR和ARM,就成为了单片机高手了。
这种观念的形成主要是没有得到正确的引导,因为大部分入门教程都是没有作者主见的纯技术知识的堆积,读者从书中得不到学习方式、方法的引导,所以会产生一大堆错误的观念。当错误的观念形成的多了,久而久之在更多的人群中,错误的观念慢慢好像变得“正确”了。而且爱好者的圈子里一般都是仅讨论纯技术,而不去交流行业和相关的非技术内容,使的更多的人不断进入观念错误的循环。而且很难把他们转变过来。就好像来过我网站的人都说我的制作有创意,其实不是我的能力强,而是大家都是在研究技术上的实现,而不是考虑如何创新,就算想创新了,也没有花上足够的时间去构想、实验。这与图书的作者只想着把知识点放到书里,却没有研究怎么有主见的引导读者的正确观念的道理是一样的。
以上就是我所分析的原因,如果您认同我的说法则请继续阅读下面我所讲的所谓的正确观念。如果您不认同我以上所说,那就请停止阅读,不要浪费您的时间。
在说正确的观念之前,我们来看一看单片机真正的用途是什么。虽然电子爱好者可以用它来制作各种好玩的电子制作,但再怎么制作每个人也用不上100片单片机,仅靠电子制作是无法支撑单片机市场的。那么最大的需求者是谁呢?说白了,他们就是成批量生产电子产品的厂家。例如他们有用单片机来制作每个公司门口都会用到的门禁系统、考勤机。仅中国大大小小的公司无计其数,需要的单片机数量自然是如繁星一般了。还有消费类电子产品,工业控制设备、安防设备、小家电、公办自动化产品,还有大大小小特殊需要的定制产品。这些需求,就是单片机最主要的市场了。如此之大的市场需求,生产单片机的厂商自然盯大的眼睛想着怎么多卖多赚钱了。单片机厂商的竞争和我们日常所见的各品牌手机、菜市场中各摊位的竞争没有什么区别。
怎么才能占据更多的市场份额呢?那就要看单片机产品的开发者关注什么东西了。谁是单片机产品的开发者?就是那些门禁系统、考勤机设计公司的老板和工程师们。如果你是设计公司的老板兼工程师,你会需要怎么样的单片机?首先要能满足我制作门禁系统、考勤机的功能需要,然后是价格便宜,性能稳定,容易开发,采购方便,有同类替代产品。大家注意,在以上的需求中没有要求功能强大,因为这并不重要。如果我只需要4个I/O接口,而单片机却有着40个I/O接口,这对产品的价值提升并没有什么意义,而且通常功能越多,价格也越高。如果一款单片机非常便宜,却只有2个I/O接口也是不行的,因为它再便宜也不能满足我们需要4个I/O接口的目的。所以单片机的选择是适用就好,而不是走价格和性能的极端。
那么8051、AVR、ARM、PIC等单片机就是在这种市场环境中出现的,换句话说,这些单片机就是为了满足这种市场需求而被生产出来的。从这个角度上看,8051、AVR、ARM就没有什么高、低、贵、贱之分了,大家都是为了满足这个不同电子产品应用需要的大市场。并没有说8051就是下贱的,ARM就是高级的,大家都是靠销量说话的。用8051去开发多媒体产品和用ARM去开发简单的流水灯都是非常白痴的行为了。不过,虽然我们除去了高贵与低贱的歧视,可是又不得不承认,不同的单片机的开发难度是不同的。有一些是系统复杂所带来的难度,还有一些是因为单片机开发相关软硬件功能的落后再导致的。还有一小部分是学习者本身智商程度所产生的难度。不管怎么样,任何的开发难度都会变成这款单片机推广销售的不利因素,谁也不希望学习困难的东西。当然,还有一些人就是愿意学习难学的东西,非要学难学的单片机,费大力气研究难懂的数据手册。这种情况多出现在不是工程开发人员的单片机爱好者身上,因为他们不用承担实际的项目,不用考虑学习的时间、开发风险和项目开发中的各种困难与压力。所以他们并不认为学习某款单片机的困难是单片机生产厂商做的工作不足,而是把原因归到自己身上,认为自己不如别人聪明,非要把这款单片机学会才能证明自己的智商。
我所说的,正是许多人要学习AVR的迷局。除了出于天真的想法去学习难学的单片机,还有一个原因是没有真正了解这些单片机的性能、应用以及它们之间的区别。有人说8051单片机落后了,能说出这种话的定是还没什么开发经验的初学者。而越是什么都不懂的人越容易发表评论。下面我们来看看AVR和8051的区别吧。
AVR和8051单片机同为8位单片机,AVR当年发布的时候其最大的亮点就是它是1T单片机,带给开发者有实际意义的信息就是速度快(和8051相比),还有就是低功率,内部集成了更多的功能。在发布之初,我也非常看好AVR单片机,也买了几片回来玩玩。可是AVR虽然性能上有了不少优势,可是把玩的时候却发现了相关配套服务的不足,比如AVR的引脚甚至封装和8051的不兼容,开发软件也和8051不同,下载线要重新制作,单片机内部结构和编程方法都要重新学习。对于之前没有学过8051单片机的人来说,这些都是新鲜的,没有阻碍的。可是对于8051单片机的老手来讲,学习AVR就需要重新学习和使用一套完全不同的平台,而学习新的平台需要花上不少的时间。这一事实阻止了一部分人转向使用AVR。如果AVR可以在设计之初考虑到与8051相关配套软硬件兼容的问题,那么AVR将会占有更多的市场份额。必竟8051单片机是最早的单片机,已经有非常多的忠实用户了。
AVR的独断专行,让其它单片机厂商看到了机会。推出一款功能与AVR相当甚至更强大,同时又兼容8051软硬件的单片机必然会得到市场的欢迎。于是飞利浦、SST、STC等厂商开始研发,增强型8051单片机问世了。增加型8051单片机是延用8051的内核,在单片机内部集成更多功能模块。其中做的最出色的就是STC公司的单片机了。它的接口和传统的8051完全兼容,而且内部集成了复位芯片、EEPROM等功能。STC12C系列的单片机也与AVR相同,达到了1T单片机的速度。而且STC12系列单片机还在片内集成了ADC、PWM、EEPROM、独立时钟、内部R/C振荡器、增加了P4接口。从性能上超过了AVR的产品,价格也便宜,同时又和传统的8051的软硬件兼容。STC12C完全超过了AVR的性能,工程师们又不需要学习新的开发平台,只要在原来的8051平台上就直接可以开发STC的1T单片机了。在这种情况之后AVR的落后是必然的结果,虽然ATMEL公司还在大力推出新款AVR单片机,可以市场占有率越来越少,以至于在一般的电子市场上都买不到了。但是在网络上还有一些原来在AVR最兴盛时的粉丝团,他们还在坚持用AVR来制作和开发产品。不过在技术高速发展的今天,固执的忠实于一种品牌,而不是根据发展的需要而改变,这是很不理智的。当然,AVR目前还是有一定市场的,只是市场很小罢了。
8051和ARM的比较是另外一会事。就算是最强的增加型8051也不可能和ARM相比较。因为ARM是32位处理器核心,支持更大的处理速度和寻址能力,ARM9又支持MMU,可以安装嵌入式操作系统。ARM是在8051和PC机用CPU之间的中层产品。用来开发多媒体产品,如MP4、手机等。8051和ARM的软硬件平台也是不同的,可是学习ARM可以做一个8051根本做不到的事情,所以学习ARM是值得的学习投入。只是在学习之前需要先想好,学习ARM的目的。是为了找一份好工作,还是为了制作更好玩的电子制作。
现在基础ARM平台开发的公司有许多,学习ARM可以找到不错的工作。但是学好了8051也一样可以有好的工作机会,只是ARM起步晚,会的人不多,竞争相对小一些。而且不管学什么都要面对未来继续学习新技术的事实。学习ARM最关键的是学习操作系统,而不是ARM芯片本身。ARM最大的优势就是因为它可以安装操作系统,好像我们的电脑一样,我们所写的应用程序可以在操作系统上运行,而不像8051那样单线程运行。安装操作系统最大的好处就是可以降低开发难度。有的人认为学习ARM要用操作系统是很难学的东西。其实这是错误的观念,安装操作系统就是为了减少开发难度,有一些如USB、液晶屏、鼠标、键盘的驱动程序已经有现成的了,只要在我们的应用程序中调用就行了。ARM的开发更侧重于软件层面的开发,更多的是开发上层应用程序和少量的底层驱动程序。ARM的硬件也是有固定的接口,有占用的LCD接口,有占用的USB接口,只要按官方的数据手册制作就可以了。
对于想玩ARM的爱好者朋友,ARM的趣味并不大,而ARM的门槛却很高。首先ARM芯片很贵,便宜的也要30多元,加上周边的一系列配套的电路,一片ARM系统也要百元以上。而且ARM芯片封装都是高密脚贴片封装,没有所谓的直插封装。制作ARM的作品就必须制作PCB板,而且是2层到8层的PCB板。对于一般的爱好者来说,这是不容易接受的。另外,用ARM来完全小制作的资料非常之少,ARM的相关驱动程序一般都是某些公司的内部资料。相对来说最丰富的还是开源的LINUX和部分WIN CE的资料。一般开发ARM是需要团队完成的,有专门开发软件的,有专门负责硬件的,很少有一个人完成的。更不用说我们用ARM自己开发有趣的制作了。总之,ARM虽好,可是目前还不适合电子爱好者把玩。增强型8051单片机是最好的选择,使用性能更好,功能更多的单片机可以产生许多创新设计。
以上就是我的一些评论,说的都是实话,言语中可能对某些现象表示了我个人的不满,如有不周请原谅。欢迎发表您的看法,如果大家喜欢我的行业评论文章,请多多支持,好让我有信心继续撰写更多的一家之言。谢谢!
大家都来顶一下
顶一下
写的真的非常不错,认真读了一遍,受益匪浅!
AVR这一块,可能有一个突破点是arduino,这样与传统的51和ARM都不一样,传统的51完全是裸跑程序,ARM要靠OS。Arduino搞出来的是烧一个bootloader进去当runtime,能简单的用类C的Processing开发,降低了难度,正好处于两者之间。我感觉arduino这种思路比较适合软件行业的人,比如说google主推的i/o标准就是基于arduino的,google对于智能家居这块其志不小。这与51是纯硬件工程师天下不同,arduino能吸引大量原来的纯软件人员转入软硬结合的领域,也能当个半边天吧。当然了,理论上说增强的51搞出类似arduino这样的东西确实不是不可能。
多谢分享!感触很深啊!
听了很多云云 我也觉得产品的存在自然有它的用武之地
学的很好 受教了
很深刻啊啊啊, 啊啊 啊
写得不错,正在纠结未来的发展方向,小编给了一个很好的辨析,我觉得我是不用学arm了(不搞系统,软件开发,仅仅学习控制)
写的真的非常不错,认真读了一遍,受益匪浅!
LZ说得非常好,单片机本没有高低贵贱之分,关键是怎么用,用到什么上,发挥了本身多大的性能
顶一顶
赞一个~~~~
看完此帖,作为大三正在学习单片机的我算是长见识了!谢谢小编!
写的真的非常不错,认真读了一遍,受益匪浅!
顶一下~~~~~~~~~~~
受教了…一下学了很多
收获颇丰,有新的认识了
顶一个!
正确认识单片机极其升级版的功能,天生我材必有用
受教了,需要多谢这样的帖子
还没看完,我去上个Wc
顶,这种原创好帖,就算是我这种一直潜水的人,也要顶!
分析的不错,看法比较好。
虽然我是大三的学生,学过51、AVR、STM32等等,身边很多同学看到别人用51做的东西很是鄙视,唯32独尊。但是我一直不是很能体会到他们之间的太大的区别.....,感觉完全无法沟通,然后我就去搞FPGA了....
感谢小编,学习了
学习
值得好好一看,顶小编。
记得以前看过,不过再看一遍,感觉又不一样了
ddddddddddddddddddddddddddddddddddddddddd
顶一下。
小编高见。威武
这个帖子写的不错,分析的还算合理,其实8051侧重的是低端和入门,好多高校也只是作为演讲教材,我自学AVR的那段时间也确实看到了好多的不兼容,至于ARM,还没尝试,多谢小编了。
学习受教了啊,多谢分享!
初学者,受益匪浅,谢谢
作者很中肯的态度,指引单片机的学习者和电子爱好者的学习方向,很好的建议,停下脚步,仔细想想,缺乏的是创新能力,而不是仅仅的技术转换,很好,受益匪浅。
技术不是用来炫的,那是还没工作的人的想法。如果进入了相应领域,就知道该学什么了。
不管是51 AVR 还是ARM,看看自己的经历和脚步。还有市场、老板的态度。
真的很不错,很受益~
受教了,感谢LZ分享
真实! 受教了!
小编写的很好,让我对前路明晰了不少,非常感谢,也希望更多单片机爱好者能读一读
总之,ARM虽好,可是目前还不适合电子爱好者把玩。增强型8051单片机是最好的选择,使用性能更好,功能更多的单片机可以产生许多创新设计。
需求导向,合适的才是真道理。
本还在犹豫是继续学习51还是转向ARM,感谢小编给我个对其判断的参考!
学习了,感谢小编
从工程师的角度看问题,学习了
学习了感谢小编的分享!