ARM 与 STM32

再进入 stm32 学习之前,我们先来了解一下 stm32 的芯片框架: ARM。

什么是 ARM

ARM 是一种采用 RISC(Reduced Instruction Set Computer)精简指令集的芯片,它的指令集只保留了最基础的指令,所以功耗小,成本低,特适合移动设备。ARM公司在创办之初是自己制造芯片的,但当时已经有因特尔和摩托罗拉等大佬在玩了,ARM公司制造芯片根本赚不了几个钱。于是它改变策略,自己不造,只是把芯片的设计方案授权给其他公司,其他公式在这基础上自己修改、制造。“正是这个模式,最终使得ARM芯片遍地开花,将封闭设计的Intel公司置于”人民战争”的汪洋大海。”1

那么 ARM 到底有什么不同呢?在此我翻译了一篇英文文章的部分,供各位学习。

ARM vs X86 – 关键的不同(翻译)

安卓支持三种 CPU 架构:ARM, X86 和 MIPS,而最普遍的就是 ARM。X86 主要在电脑和服务器中比较常用,在移动端就比较少用。MIPS 有很长的历史,在32位和64位嵌入式领域中都取得一定成功,但在安卓中是最少用的。

总之,那么 ARM 到底和 X86 有什么不同呢?为什么 ARM 更受欢迎?以及手机端和电脑端为什么用不同的 CPU?

CPU 是啥?

CPU(Central Processing Unit)是电子设备的大脑,它的工作是执行一系列的操作来控制硬件。现在的 CPU 需要每秒执行上百万条指令。因此高速与高效非常重要,这不仅会影响用户体验,也会影响电池消耗。

因此选择一个合适的 CPU 非常重要。一个强大却低效能的 CPU 会快速损耗电池,我们想要的是一个高效优雅的 CPU。这就引出了第一个不同:ARM 采用的是 RISC(Reduced Instruction Set Computing)指令集,而 X86 采用的是 CISC(Complex Instruction Set Computing)指令集。RISC 更简单,更“原子性”,而 CISC 则更为复杂。这里的“原子性”指把一个操作分解为更基础的操作,直到不可再分。比如,加法操作,CISC可能就是一条指令,而 RISC 就需要 3~4 个指令,包括 取操作数1,取操作数2,相加,保存数。因此 RISC 可以更加精简。

Fabs 晶圆

下一个不同的点是,ARM 一直都只设计低功耗的处理器,但 Intel 是高性能的桌面处理器。当 Intel 尝试设计移动处理器时,它只是强行将 CISC 塞进更小的处理器而已,所以功耗并不太好。

Intel i7 处理器功率大约是 45W,而手机上 ARM SOC 只需要 3W。虽然现在 Intel 的 Atom 处理器已经能做到较低功耗,但要媲美于 ARM,Atom 仍需要更好的工艺加持。

64位

Intel 的64位处理器采用的是 x86-64 架构,而实际上,这个架构是 AMD 设计的。原本 Intel 是有自己的 64位架构,叫 IA64。当时 AMD 不能生产 IA64 架构的 CPU,于是干脆就直接扩充的32位 x86,使其能同时跑 32 位和 64 位指令,名字也很直接:x86-64。结果 AMD 大胜,于是 Intel 只好乖乖采用 x86-64。x86-64 兼容性很好,但坏处就是它始终要背负着 32位的包袱。

但 ARM 不同。ARM 于 2011 年推出 64 位架构的 ARMv8,ARMv8 有 AArch32 与 AArch64 两种模式,从名字可以看出一个是 32位,一个是 64 位。但这两种模式分开的,因此 64 位的译码无需考虑 32 位的译码,因此如果只采用 64 位,则会比 x86-64 更简单。

异构

ARM 有一个 Intel 无法复制的优势:big.LITTLE 架构。这个架构允许 ARM 在同一个 CPU 中使用不同的核心,比如我们常说的大小核。而 Intel 则必须使用相同的核。这就使得 ARM 更加灵活:想要低功耗,用多几个小核;想要高性能,用多几个大核。

ARM 分类

目前 ARM 主要分为三类:

  1. 用户应用CPU:比如苹果的 A13,高通的骁龙 865 和华为的麒麟 990
  2. 嵌入式控制器:stm32
  3. 实时处理器

第一类我们已经很熟悉了,就是手机上的 CPU;第二类就是我们即将学习的 stm32;第三类,好吧,我也不清楚,估计是某些特殊用途,比如汽车仪表。

stm32

stm32 是 st 公司(意法半导体)推出的芯片中的一个系列,除此之外还有 STM8系列 和 SPC5系列。stm32 再细分,也有很多种,我们要学的就是 STM32F103。 STM32F103 再细分,则有 flash、rom、封装的不同。我们可以根据具体的需求来选择芯片。

stm32芯片命名遵循如下规范:对于 STM32F103C8T6

  1. ST 意法半导体公司
  2. M 微控制器 Microcontrollers
  3. 32 32位微控制器(还有 8 8位控制器)
  4. F 通用型(还有 S 简单型、L 低功耗、H 高性能)
  5. 1 增强系列(还有 0 精简、2/3 增强、4/7 高性能)
  6. 03 子型号
  7. C 48脚(还有 V 100 脚、Z 144脚)
  8. 8 64KB falsh(还有 B 128KB、C 256KB)
  9. T LQFP封装(还有 H BGA封装、Y WLCS64封装)
  10. 6 工作温度 -40℃~85℃(还有 8 -40℃~105℃)

名字只包含了最基本的信息,更详细的信息需要看 datasheet,比如 stm32c8.pdf。如果数据手册中有什么名词看不懂,可以去百度一下。

其他

SRAM 与 FALSH

SRAM(static random access memory)静态随机存储器:

  • 用于存储动态数据
  • 读写速度快
  • 调电数据消失
  • 成本高
  • 容量小

FLASH 闪存程序存储器属于 ROM:

  • 用于存储用户数据,
  • 读写速度慢
  • 调电数据不消失
  • 需要先擦除,后写入,且写入次数只有10万次
  • 成本低
  • 容量大