admin管理员组

文章数量:1531706

2024年5月7日发(作者:)

信息 INFO创客 MAKER机器人 ROBOT制作 PROJECT

STM32入门100步·第1步

是时候学ARM了!

◇ 杜洋 洋桃电子

为啥学?

标题的意思是“现在是学习ARM最好

的时机”。什么是ARM?简单来说就一种

性能出众的32位处理器的内核架构。1991

年,一家叫ARM的公司在英国成立了,它

们设计出了一种高性能、低功耗的处理器

的设计方案,给方案取的名字也叫ARM。

ARM公司设计出了ARM内核架构(有

点绕但不难理解),但它们不去制造这种

处理器芯片,而是把设计方案卖给其他的

芯片生产厂商。生产厂商每生产出一片基于

ARM架构的处理器,就要向ARM公司支付

一定的专利使用费(当然最后都加到了消费

者头上)。芯片生产厂商使用ARM公司的

设计方案做出来的芯片就是“基于ARM架

构的处理器”(以下简称ARM处理器)。

这个故事听上去没什么了不起,但后

来ARM公司火了,正是因为它们赶上了便

携式智能设备快速发展的大好时机。正是

因为ARM处理器比其他处理器在同等性

能的情况下功耗更低,更适合使用电池的

电子产品,所以很多PDA掌上电脑、高级

功能手机都使用ARM处理器。后来苹果开

启了智能手机的新时代,ARM处理器毫无

对手地成为了智能手机CPU的唯一选择。

目前ARM处理器芯片的生产总数已经突

破600亿片,而且还在快速增长,真是一

本万利的好生意。智能手机几乎普及到了

全球每个人,也就是说全世界每个人身边

54

2017.09

都有至少1片ARM处理器。ARM处理器

都是物联网的设备。用户可以通过计算机、

的兴旺带动了整个产业链的富强。拿ARM

手机远程控制设备,还可以通过大数据、

处理器做手机的公司越来越多,在智能手

云计算全智能控制。物联网的应用小到每

机出现10周年之际,其市场将近饱和。

家每户的电器,大到城市交通、智能物流、

ARM处理器的火爆似乎走到了顶点。

精准到秒的天气预报。物联网的潜力非常

再说说为什么现在是学习ARM的最好

巨大,可能和智能手机一样再次变化我们

时机。不是说学得越早越好吗?ARM处理

的生活,我们将迎来物联网时代。

器刚出现时并不普及,其主要客户是智能

如果说在智能手机时代,掌握研发资

产品开发商,能买到和用到ARM处理器的

格的是少数手机厂商,那在物联网时代,

是少数大公司的技术人员。当ARM处理器

研发的门槛将降到最低。智能手机是单一

在市场上普及之时,也正是智能手机、平

的产品,目标用户也只有普通消费者。而

板电脑如火如荼之际。ARM处理器的主要

在物联网时代需要被智能化的电子产品种

  什么是ARM?简单来说就是一种性能出众的32位处理器的内核架构。

1991年,一家叫ARM的公司在英国成立了,它们设计出了一种高性能、低功

耗的处理器的设计方案,给方案取的名字也叫ARM。

用途还是做手机或者类似的便携式智能产

类非常多,而且目标用户有消费者,也有

品。手机不是谁都能做的,虽然你能很方

工厂、商场、学校、医院等专业领域。每

便地买到ARM处理器芯片,但主要用它

个领域都希望把设备智能化,这是一片巨

们搞研发的还是大公司的技术人员。随着

大的市场,其产值不只百亿。电子行业的

手机商场的饱和,市场开始向可穿戴设备

同行们将迎来一次机遇和挑战。学习ARM

和物联网上发力。2016年日本软银集团以

处理器、智能硬件、云计算会是加入物联

310亿美元的价格收购了ARM公司。这一

网狂欢派对的入场券。行业可能重新洗牌,

信息告诉我们,ARM公司还有更大的市场

不知道谁能参与下一局。

价值,那就是刚刚起步的物联网市场。

物联网将除了计算机和手机之外的更

谁要学?

多传感器、控制器连接到互联网中,比如

ARM处理器会引领物联网前行,想

智能电视、智能监控摄像头、智能台灯,

参与物联网发展的朋友都应该学习相关的

装备 EQUIPMENT入门 START WITH教育 EDUCATION史话 HISTORY

 图1 A公司招聘信息

技术,但我特别推荐以下几类朋友学习

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处理器是最好

 图2 B公司招聘信息

的选择之一。如果你是创业者,涉足物联

网行业是不错的选择,智能硬件的潜在价

值不可估量,市场份额的巨大使创业者有

平等的竞争和无限的机会,以Cortex-M系

列ARM处理器为核心的智能硬件会是更多

人的选择。

学什么?

我们说学ARM,学的到底是什么?

ARM不是一个东西,它只是内核架构,熟

悉了ARM内核架构没有用,我们要学的是

基于ARM架构的具体某一款芯片的使用。

我经过认真的考虑,推荐大家从Cortex-M

系列ARM处理器入手,在Cortex-M系列

当中又属STM32F1系列最适合入门者。我

为什么会有如此选择,难道我拿了人家厂

商的好处费?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版,谢谢”,

2017.09

55

信息 INFO创客 MAKER机器人 ROBOT制作 PROJECT

表1 ARM内核分类及应用

系列

ARM1

ARM2

ARM3

ARM6

ARM7

架构

ARMv1

ARMv2

ARMv2a

ARMv2a

ARMv3

ARMv3

ARM7TDMI(-S)

ARMv4T

ARM710T

ARM720T

ARM740T

ARMv5TEJ

StrongARM

ARM8

ARMv4

ARMv4

ARM9TDMI

ARM9TDMIARMv4T

ARM920T

ARM922T

ARM940T

ARM946E-S

ARMv5TE

ARM9E

ARMv5TEJ

ARMv5TE

ARMv5TE

ARMv5TEJ

ARM966E-S

ARM968E-S

ARM926EJ-S

ARM996HS

ARM1020E

ARM1022E

ARM1026EJ-S

80200/IOP310/IOP315

80219

IOP321

IOP33x

IOP34x

PXA210/PXA250

PXA255

PXA26x

XScaleARMv5TE

PXA27x

PXA800(E)F

Monahans

PXA900

IXC1100

IXP2400/IXP2800

IXP2850

IXP2325/IXP2350

IXP42x

IXP460/IXP465

ARMv6

ARM11

ARMv6T2

ARMv6KZ

ARMv6K

ARM1136J(F)-S

ARM1156T2(F)-S

ARM1176JZ(F)-S

ARM11 MPCore

Cortex-A8

ARMv7-A

Cortex-A9

Cortex-A9 MPCore

Cortex

ARMv7-R

ARMv6-M

Cortex-R4(F)

Cortex-M0

Cortex-M1

Cortex-M3

Cortex-M4

Cortex-M4F

Embedded profile、(FPU)

低成本、低功耗

低功耗、高效率

高效率控制

高性能控制

带浮点运算

600DMIPS

0.9DMIPS/MHz

0.9DMIPS/MHz

1.25DMIPS/MHz

1.25DMIPS/MHz

SIMD、Jazelle DBX、 (VFP)、8级流水线

SIMD、Thumb-2、(VFP)、9级流水线

SIMD、Jazelle DBX、(VFP)

1~4核对称多处理器、SIMD、Jazelle DBX、(VFP)

Application profile、VFP、NEON、Jazelle RCT、

Thumb-2、13-stage pipeline

Texas Instruments OMAP3掌上电脑

智能通信设备

智能通信设备

带实时操作系统的嵌入式微控制器

低功耗设备

低功耗智能设备

嵌入式微控制器

高级嵌入式微处理器

高级嵌入式微处理器

Nokia N93、N800手机

NSLU2网络存储适配器

1000MIPS@1.25GHz掌上电脑

Blackberry 8700系列黑莓手机

1~2核,RAID加速器

应用处理器,7级流水线

400 BogoMips@400MHz

可达400MHz

800MIPS@624MHz

Zaurus SL-5600掌上电脑

Palm Tungsten E2掌上电脑

Palm Tungsten T3掌上电脑

HTC Universal智能手机,Zaurus SL-C3100、

3200掌上电脑,Dell Axim x30、x50系列掌上电脑

Jazelle DBX

无振荡器处理器

(VFP)、6级流水线

(VFP)

Jazelle DBX

I/O处理器

400/600MHz

600BogoMips@600MHz

Thecus N2100网络存储适配器

220MIPS@200MHz

索尼爱立信K、W系列手机,明基西门子x65系列

手机

GP2X游戏机

Nintendo DS掌上游戏机、Nokia N-Gage手机

5级流水线

200MIPS@180MHz

Armadillo、GP32、GP2X、

Tapwave Zodiac游戏机

ARM7EJ-SJazelle DBX

3级流水线15MIPS@16.8MHz

36MIPS@40MHz

60MIPS@59.8MHz

游戏机、iPod音乐播放器

精简型掌上电脑

内核

ARM1

ARM2

ARM250

ARM2a

ARM610

Architecture 2加入了MUL乘法指令4MIPS@8MHz游戏机

游戏机、学习机

游戏机、学习机

Apple Newton掌上电脑

特色速度应用

Integrated MEMC (MMU),图像与I/O处理器。

7MIPS@12MHz

Architecture 2a 加入了SWP和SWPB指令

首次在ARM架构上使用处理器高速缓存

首创支持寻址32位的内存

12MIPS@25MHz

28MIPS@33MHz

ARM7TDMI

ARM10E

ARMv7-M

56

2017.09

装备 EQUIPMENT入门 START WITH教育 EDUCATION史话 HISTORY

相当于你对我说“我要学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所

  表2 3个系列内核的性能对照

Cortex-M0

架构版本

指令集

DMIPS/MHz

总线接口

集成NVIC

中断数

中断优先级

断点,观察点

存储器保护单元(MPU)

集成跟踪选项(ETM)

故障健壮接口

单周期乘法

硬件除法

WIC支持

Bit Banding

单周期 DSP/SIMD

硬件浮点

总线协议

CMSIS支持

应用

特性

v6M

Thumb、Thumb-2

系统指令

0.9

1

1~32+NMI

4

4/2/0,2/1/0

是(可选)

AHB Lite

8/16位应用

低成本和简单性能

Cortex-M3

v7M

Thumb、Thumb-2

1.25

3

1~240+NMI

8~256

8/4/0,2/1/0

是(可选)

是(可选)

是(可选)

AHB Lite、APB

16/32位应用

性能效率

Cortex-M4

v7ME

Thumb、Thumb-2、

DSP、SIMD、FP

1.25

3

1~240+NMI

8~256

8/4/0,2/1/0

是(可选)

是(可选)

AHB Lite、APB

32位/DSC应用

有效的数字信号控制

示是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年前

 图3 Cortex系列性能对照表

做过两款ARM7芯片流行一时,我最早了

2017.09

57

信息 INFO创客 MAKER机器人 ROBOT制作 PROJECT

 表3 常见的ARM处理器生产商和产品

厂商产品系列内核版本

AtmelAT91系列ARM926EJ-S

凌云逻辑EP93系列ARM920T

恩智浦(NXP)

LPC2100系列

LPC2210系列

ARM7TDMI

三星电子

S3C2410系列

S3C2440系列

ARM920T

STM32F0系列ARM Cortex-M0

意法半导体(ST)STM32F1系列ARM Cortex-M3

STM32F4系列ARM Cortex-M4

英飞凌

XMC1000系列ARM Cortex-M0

XMC1000系列ARM Cortex-M4F

飞思卡尔K50系列ARM Cortex-M4

德州仪器(TI)LM4Fx StellarisARM Cortex-M4F

新唐科技NUC505系列ARM Cortex-M4F

解ARM也是通过这两款芯片。三星生产的

S3C2440一度是高性能ARM9的王者。但

这些老牌大公司因为产品线太多,在ARM

处理器上都没有太快的更新。当Cortex-M

系列发布时,大厂们都没看好这款新内核,

认为现有的ARM9还要流行很长时间。只

有意法半导体(ST)推出了基于Cortex-M

的STM32F系列芯片,没想到一炮而红,

 图4 STM32F103C8T6芯片

彻底打败老牌大厂,STM32成了最新一代

ARM处理器的代名词。随后,英飞凌、

飞思卡尔(MSP430单片机的厂商)、德

好学吗?

州仪器、新唐科技等大小厂商都跟进推出

好不好学因人而异,学过51单片机的

Cortex的芯片,但已经抢占不了太多的市

朋友再学ARM就会容易一些,因为一些基

场份额。意法半导体成了Cortex产品最大

础的C语言知识和电路原理都是相通的。如

的赢家,当然ARM公司赢得更多。

果没有模拟/数字电路基础,也不会C语言,

聊完几大商业巨头的竞争史,最后回

学ARM会困难些,但也没到完全学不会的

到主题:学什么?ARM处理器是目前最有

程度。至于每位读者是否适合学ARM,我

潜力的,Cortex内核是最新、最好的系列,

想不妨试试看,如果遇见的困难太多再退而

Cortex-M系列最适合物联网设备的开发,

学简单的51单片机也不迟。而且在这个过

意法半导体公司的STM32系列是最流行、

程中你不仅大概了解了ARM的知识,也会

资料最多、应用最广的ARM芯片。所以,

发现自己学习的极限和局限在哪里。

用STM32系列学习ARM是目前的最优选

择。STM32有3个系列,F0系列功能太少,

怎么学?

F4系列过于复杂,取中间的F1系列进行

目前行业内教授ARM处理器的教程和

入门最为适合。最终我选定的ARM入门学

图书已经非常多,比较著名的也有两三家。

习用的芯片型号是STM32F103C8T6,芯

它们都是从ARM处理器的内核架构的原理

片的样子如图4所示。型号代表什么含义,

分析出发,以理论教学为先。这种方式沿袭

这款芯片又有什么功能,我们下期再说。

了大学专业教学模式,适合理论逻辑性很强

58

2017.09

的优秀大学生。而对于找工作、做项目、有

爱好的大众入门者来说,传统教学方式不仅

太抽象、太艰深,而且与实践脱节,提不起

兴趣,所以我计划在《无线电》杂志上连载

一系列从实践、兴趣、乐趣出发的新教学模

式文章,配以相关的教学视频。文章侧重理

论,视频关注操作过程,如此便会有事半功

倍的学习效果。敬请期待下一期的文章。

学多久?

学多久这个问题,除了因人的学习能

力而异之外,还要看你想学到什么程度。

以我的个人见解,学习一项技术是没有止

境的。所谓的“学会了”是指掌握了这种

技术的基本原理和思维方式,并能够在使

用技术时沿用这一原理和思维,自主、独

立地展开扩展性学习,而不再需要有老师

指点,遇见问题能够自己解决。以我个人

学习STM32的经历来看,我学STM32完

全是自学,没有看过某个系统的教程,只

是在网上找资料,看数据手册,遇见问题

也能独立解决。那是因为我有13年的51

单片机开发经验,对51单片机的原理和思

维都非常熟悉。把51单片机的原理和思维

套在ARM学习上同样适合,所以对我来

说,初学ARM就好像把之前学过的东西变

个样子复习一遍。正因为我学习ARM如此

之快,对于这套原理和思维非常熟悉,才

有胆量在此连载教学文章。虽然深知天外

有天,我做的教学不会是最好的,但我会

是最细致、最认真的,把知识与经验分享

出来,让更多朋友受益,本身也是一件幸

事。回到正题,ARM到底要学多久?如果

你对51单片机或者任何一款其他单片机很

熟悉,有丰富的应用经验,那1~3个月就

能学会。如果你是零基础入门的,对电路

基础和C语言都只是听说过,那么想学会

至少需要半年到一年。而我的连载文章会

以零基础的初始者为起点来教学,用最低

的门槛接纳更多想学习的朋友。

本文标签: 处理器公司芯片智能内核