一,为啥学?
标题的意思是“现在是学习ARM最好的时机”。什么是ARM?(读英文单词arm,不要读字母A-R-M)简单来说就一种性能出众的32位处理器的内核架构。1991年,一家叫ARM的公司在英国成立了,它们设计出了一种高性能、低功耗的处理器的设计方案,给方案取的名字也叫ARM。ARM公司设计出了ARM内核架构(有点绕但不难理解),但它们不去制造这种处理器芯片,而是把设计方案卖给其他的芯片生产厂商。生产厂商每生产出一片基于ARM架构的处理器,就要向ARM公司支付一定的专利使用费(当然最后都加到了消费者头上)。芯片生产厂商使用ARM公司的设计方案做出来的芯片就是“基于ARM架构的处理器”(以下简称ARM处理器)。这个故事听上去没什么了不起,但后来ARM公司火了,正是因为它们赶上了便携式智能设备快速发展的大好时机。正是因为ARM处理器比其他处理器在同等性能的情况下功耗更低,更适合使用电池的电子产品,所以很多PDA掌上电脑、高级功能手机都使用ARM处理器。后来苹果开启了智能手机的新时代,ARM处理器毫无对手地成为了智能手机CPU的唯一选择。目前ARM处理器芯片的生产总数已经突破600亿片,而且还在快速增长,真是一本万利的好生意。智能手机几乎普及到了全球每个人,也就是说全世界每个人身边都有至少1片ARM处理器。ARM处理器的兴旺带动了整个产业链的富强。拿ARM 处理器做手机的公司越来越多,在智能手机出现10周年之际,其市场将近饱和。ARM处理器的火爆似乎走到了顶点。
再说说为什么现在是学习ARM的最好时机。不是说学得越早越好吗?ARM处理器刚出现时并不普及,其主要客户是智能产品开发商,能买到和用到ARM处理器的是少数大公司的技术人员。当ARM处理器在市场上普及之时,也正是智能手机、平板电脑如火如荼之际。ARM处理器的主要用途还是做手机或者类似的便携式智能产品。手机不是谁都能做的,虽然你能很方便地买到ARM处理器芯片,但主要用它们搞研发的还是大公司的技术人员。随着手机商场的饱和,市场开始向可穿戴设备和物联网上发力。2016年日本软银集团以310亿美元的价格收购了ARM公司。这一信息告诉我们,ARM公司还有更大的市场价值,那就是刚刚起步的物联网市场。物联网将除了计算机和手机之外的更多传感器、控制器连接到互联网中,比如智能电视、智能监控摄像头、智能台灯,都是物联网的设备。用户可以通过计算机、手机远程控制设备,还可以通过大数据、云计算全智能控制。物联网的应用小到每家每户的电器,大到城市交通、智能物流、精准到秒的天气预报。最近很火的共享单车,就是给普通单车加上了卫星定位、远程开锁的智能车锁,把单车变成了物联网设备,创造了互联网+的商业模式。物联网的潜力非常巨大,可能和智能手机一样再次变化我们的生活,我们将迎来物联网时代。
如果说在智能手机时代,掌握研发资格的是少数手机厂商,那在物联网时代,研发的门槛将降到最低。智能手机是单一的产品,目标用户也只有普通消费者。而在物联网时代需要被智能化的电子产品种类非常多,而且目标用户有消费者,也有工厂、商场、学校、医院等专业领域。每个领域都希望把设备智能化,这是一片巨大的市场,其产值不只百亿。电子行业的同行们将迎来一次机遇和挑战。学习ARM处理器、智能硬件、云计算会是加入物联网狂欢派对的入场券。行业可能重新洗牌,不知道谁能参与下一局。
二,谁要学?
ARM处理器会引领物联网前行,想参与物联网发展的朋友都应该学习相关的技术,但我特别推荐以下几类朋友学习ARM。他们是电子类专业的大学生、从事单片机行业的技术人员、想以物联网创业的人,以及有进取心的单片机爱好者。
当年我大学毕业时,只身一人去深圳找工作,当时我学过一点51单片机,在人才市场里显得格外有优势。大多数公司都要求会些51单片机,一点不会的人很多公司都不考虑。多少年过去了,如今的电子技术专业的大学生找工作会是什么样的要求呢? 我随便在某著名求职网站搜索“嵌入式开发”,找出两个比较热门的职位能力要求。A公司的招聘信息(见图1)都是官话,职位是嵌入式硬件研发工程师,工作地在深圳,月薪8000-10000元。其中第2条要求熟悉ARM和DSP(数字信号处理),你看,搞硬件的都得玩过ARM哦。B公司的招聘信息(见图2)也是官话,但括号里面说出了老板的心声,职位是嵌入式工程师(或单片机工程师),工作地在深圳,月薪6000-8000,其中第2条要求熟悉单片机或Cortex-M的ARM处理器,还要做过3个项目以上。这样的职位要求对于刚毕业的大学生来说是不是有点太苛刻呢?没办法,市场决定技能,技能决定你的价值。
对于刚毕业的大学生和正在从事单片机开发的技术人员来说,如今熟悉使用51单片机依然能找到工作,但如果你熟悉ARM,那你的工作机会与发展潜力更大。会51单片机的人太多,如果你不能保证自己足够优秀,那就多掌握在未来有潜力的技能,Cortex-M系列ARM处理器是最好的选择之一。如果你是创业者,涉足物联网行业是不错的选择,智能硬件的潜在价值不可估量,市场份额的巨大使创业者有平等的竞争和无限的机会,以Cortex-M系列ARM处理器为核心的智能硬件会是更多人的选择。
三,学什么?
我们说学ARM,学的到底是什么?ARM不是一个东西,它只是内核架构,熟悉了ARM内核架构没有用,我们要学的是基于ARM架构的具体某一款芯片的使用。我经过认真的考虑,推荐大家从Cortex-M系列ARM处理器入手,在Cortex-M系列当中又属STM32F1系列最适合入门者(注:TI公司的TIVA C系列也很优秀)。我为什么会有如此选择,难道我拿了人家厂商的好处费?Cortex-M系列、STM32F1系列又是什么?要想彻底弄明白,就得讲讲ARM的进化史。
之前我们说过ARM公司设计了ARM内核架构,但这个架构并非固定的,随着技术的发展和市场的需求,ARM的版本也在不断升级。表1是ARM内核分类表。和iPhone手机的命名原则一样,ARM的更新换代也是用数字表示的。第一代叫ARM1,第2代叫ARM2,但没有4和5(或者出现过却很快消失),直接到了ARM7。说到ARM7,我最有体会,我在大学时ARM7刚刚出现,各种教程都言辞肯定地说ARM7将是未来的主流,如今却没有人再提起ARM7,因为它几乎被淘汰了。没多久,ARM9又火了起来,因为它具有MMU(内存管理单元)功能,可以运行操作系统,一时间各大教程又推崇 ARM9,认为能上操作系统才是王道。后来又出现ARM10、ARM11,这一时期很多初级的智能手机都是选用ARM处理器的。
到了2010年,ARM公司又发布了新的版本,这次命名不叫ARM12,而是专门起了一个名字叫Cortex。这里还需要说明一点,每次发布的ARM版本中都会有不同的内核架构,这样做是为了满足不同领域的应用需求。比如Cortex系列是ARM的版本名,就像iPhone7手机,是大的升级版本,但是针对不同的用户需求,比如有人喜欢小屏,有人喜欢大屏,又分成iPhone7和iPhone7 Plus,这就是Cortex版本中的ARMv7-A、ARMv7-R、ARMv7-M三种内核架构的子版本,内核架构的差异决定了其所应用的领域。ARMv7-A系列针对最高性能的操作系统和用户应用,适合作为智能手机的CPU。 ARMv7-R系列针对实时系统,适用于高性能航空航天设备。ARMv7-M系列则定位于微控制器,适用于智能终端设备、物联网产品。而在ARMv7-M系列中又会分为Cortex-M3、Cortex-M4、Cortex-M4F系列,这是针对一个大领域中的具体应用差异所划分的。这类似于iPhone7 Plus当中又分32GB、128GB、256GB 内存版本,在想买iPhone7 Plus的用户当中,根据自己使用量的需要选择不同的内存大小。当你向服务员说“我想买苹果公司的iPhone7手机、Plus版、32GB版,谢谢”,相当于你对我说“我要学ARM处理器、ARMv7-M架构、Cortex-M3系列,谢谢”。但这里你不需要说ARMv7-M架构,因为当你说出Cortex-M3系列时,就只能是这一架构了。就像你不用说iPhone7手机的 Plus版,而直接说iPhone7 Plus就可以了。
我们最终是要做物联网、智能硬件产品的,所以要特别关注一下在最新的Cortex系列之中,有哪些是针对这一应用而推出的子系列。首先大分类是Cortex-M系列,专门用于微控制器的系列。在这个分类之中有Cortex-M0、Cortex-M1、Cortex-M3、Cortex-M4、Cortex-M4F,其中M0和M1是针对低性能、低功耗的产品(比如电池供电的计时器),所以二者可以只用M0系列指代。M4F是指在M4的基础上加入了浮点运算功能,这是为少数特殊应用设计的,通常只说M4系列即可。表2是M0、M3、M4的性能对照表。从中可以看出M0系列的架构版本低、频率低,很多功能都没有,于是它的价格也低,适合做简单应用且对成本敏感的产品。M4系列架构版本最高,所有功能都有,价格必然最贵,适合做高性能且不在乎价格的产品。M3系列比M4系列差一些,性能、价格居中,适合要求性价比的产品。图3所示是Cortex系列性能对照,是所有子系列的性能排行榜。
关于ARM内核的部分我们都清楚了,接下来把我们要学习的ARM系列投射到具体的实物上,毕竟我们要用一款具体的芯片来学习与实验。之前说过,ARM公司不生产芯片,它们把方案卖给各大芯片生产商,要学习具体的ARM芯片,先要知道有哪些生产ARM内核的芯片生产商。要知道ARM芯片已经生产出超过600亿片,生产这么多芯片的厂商有成百上千家一点也不夸张吧?这么多厂商我没必要一一列举,苹果公司也自己生产ARM芯片,但你买不到。我要介绍的是最有代表性、市场上最常见的厂商,它们的芯片要在行业内有一定影响力。表3所列是目前最流行的ARM处理器生产商。第一家是我们最熟悉的Atmel公司,很多朋友的51单片机都是从AT89C51这款芯片开始的,而这家公司也推出过基于ARM9内核的处理器,只不过普及度不高。为了发挥它们家的优势,它们还把曾经在单片机圈非常火爆的AVR单片机做成了32位版本的AVR32,它不是ARM内核,但希望以此与ARM竞争,结果是现在很少有人听说过AVR32。ARM的地位不可动摇,大部分厂商还是乖乖地生产ARM处理器。专业做音频处理的凌云逻辑公司也推出了5款基于ARM9的芯片。飞利浦麾下的恩智浦公司在10年前做过两款ARM7芯片流行一时,我最早了解ARM也是通过这两款芯片。三星生产的S3C2440一度是高性能ARM9的王者。但这些老牌大公司因为产品线太多,在ARM 处理器上都没有太快的更新。当Cortex-M系列发布时,大厂们都没看好这款新内核,认为现有的ARM9还要流行很长时间。只有意法半导体(ST)推出了基于Cortex-M 的STM32F系列芯片,没想到一炮而红,彻底打败老牌大厂,STM32成了最新一代ARM处理器的代名词。随后英飞凌、 飞思卡尔(MSP430单片机的厂商)、德州仪器、新唐科技等大小厂商都跟进推出Cortex的芯片,但已经抢占不了太多的市场份额。意法半导体成了Cortex产品最大的赢家,当然ARM公司赢得更多。
聊完几大商业巨头的竞争史,最后回到主题:学什么?ARM处理器是目前最有潜力的,Cortex内核是最新、最好的系列,Cortex-M系列最适合物联网设备的开发,意法半导体公司的STM32系列是最流行、资料最多、应用最广的ARM芯片。所以用STM32系列学习ARM是目前的最优选择。STM32有3个系列,F0系列功能太少,F4系列过于复杂,取中间的F1系列进行入门最为适合。最终我选定的ARM入门学习用的芯片型号是 STM32F103C8T6,芯片的样子如图4所示。型号代表什么含义, 这款芯片又有什么功能,我们下期再说。
四,好学吗?
好不好学因人而异,学过51单片机的朋友再学ARM就会容易一些,因为一些基础的C语言知识和电路原理都是相通的。如果没有模拟/数字电路基础,也不会C语言,学ARM会困难些,但也没到完全学不会的程度。至于每位读者是否适合学ARM,我想不妨试试看,如果遇见的困难太多再退而学简单的51单片机也不迟。而且在这个过程中你不仅大概了解了ARM的知识,也会发现自己学习的极限和局限在哪里。
五,怎么学?
目前行业内教授ARM处理器的教程和图书已经非常多,比较著名的也有两三家。它们都是从ARM处理器的内核架构的原理分析出发,以理论教学为先。这种方式沿袭了大学专业教学模式,适合理论逻辑性很强的优秀大学生。而对于找工作、做项目、有爱好的大众入门者来说,传统教学方式不仅太抽象、太艰深,而且与实践脱节,提不起兴趣,所以我计划在《无线电》杂志上连载一系列从实践、兴趣、乐趣出发的新教学模式文章,配以相关的教学视频。文章侧重理论,视频关注操作过程,如此便会有事半功倍的学习效果。敬请期待下一期的文章。
六,学多久?
学多久这个问题,除了因人的学习能力而异之外,还要看你想学到什么程度。以我的个人见解,学习一项技术是没有止境的。所谓的“学会了”是指掌握了这种技术的基本原理和思维方式,并能够在使用技术时沿用这一原理和思维,自主独立地展开扩展性学习,而不再需要有老师指点,遇见问题能够自己解决。以我个人学习 STM32的经历来看,我学STM32完全是自学,没有看过某个系统的教程,只是在网上找资料,看数据手册,遇见问题也能独立解决。那是因为我有13年的51单片机开发经验,对51单片机的原理和思维都非常熟悉。把51单片机的原理和思维套在ARM学习上同样适合,所以对我来说,初学ARM就好像把之前学过的东西变个样子复习一遍。正因为我学习ARM如此之快,对于这套原理和思维非常熟悉,才有胆量在此连载教学文章。虽然深知天外有天,我做的教学不会是最好的,但我会是最细致、最认真的,把知识与经验分享出来,让更多朋友受益,本身也是一件幸事。回到正题,ARM到底要学多久?如果你对51单片机或者任何一款其他单片机很熟悉,有丰富的应用经验,那1到3个月就能学会。如果你是零基础入门的,对电路基础和C语言都只是听说过,那么想学会至少需要半年到一年。而我的连载文章会以零基础的初始者为起点来教学,用最低的门槛接纳更多想学习的朋友。
留言与评论(共有 0 条评论) |