ARM各系列CPU与STM32之间的关系

时间:2024-02-29 14:46:56

我用Arm时,最早用的是A8;后来用STM32时,知道了STM32这种类似于单片机之类的东西,其实也是Arm的。至于他们之间的区别和联系,感觉自己好像明白,又不能完全说得清楚,于是抽了个时间好好了整理了一下,放在这里备忘吧。

Arm分为三个系列Cortex-A系列,Cortex-M系列和Cortex-R.

以前用过的A8,A9之类的都属于Cortex-A系列;A是Application的缩写,表示高性能应用处理器
STM32单片机都属于Cortex-M系列。M是Micro的缩写,表示微控制器
Cortex-R系列我没用过,不知道有什么典型的CPU代表。R是RealTime的缩写,表示实时处理器。

A8/A9/A12/A15和STM32其实都是基于ARMv7架构的,只不过A8/A9/A12/A15是基于基于ARMv7-A 架构的;STM32是基于使用ARMv7-m架构的,用的cm3.

现在市面上大家的叫法很乱,容易把人叫晕菜了。所以我整理了一下常见的晕菜问题:

1.ARMv7 和ARM7是两个东西。

ARMv7是内核,现在STM32和A8/A9/A12/A15之类依然在用ARMv7的内核。现在市面大多数常用的ARM的片子都是基于ARMv7内核的。直到ARM推出了Cortex-A53和Cortex-A57这两款属于Cortex-A50系列的CPU,首次采用了64位的ARMv8架构。

ARM7是老得掉牙的片子了,最早推出是在1994年的时候,包括ARM7TDMI-S(基于ARMv4T架构)和ARM7EJ-S(基于ARMv5TEJ架构等等)。现在连嵌入式领域都已经不用了。

2.ARM9 和ARM A9 也是两个东西。

ARM A9通常指的是ARM Cortex-A系列的A9芯片。它的内核是ARMv7系列的,用的ARMv7-A架构。
ARM9 是基于ARMv5架构的,ARM11 是基于ARMv6架构的 ARM9和ARM11已经是很老的片子了,用得很少。现在学ARM基本都是从Cortex-A8/A9 上手。


所以ARM系列按照时间顺序依次应该是这样的:

ARM7(ARMv4/ARMv5内核,冯诺依曼结构)-->ARM9(ARMv5内核,哈佛结构)-->ARM11(ARMv6内核,哈佛结构)->Cortex-A5/A7/A8/A9/A12/A15(32位的ARMv7-A内核,哈佛结构)-->Cortex-A57/A53(64位的ARMv8架构,哈佛结构)

 

STM32系列与ARM的A系列之间的区别:主要是主频/RAM/ROM/时钟/硬件管脚的区别。另外还有一个区别,STM32是不带MMU(内存管理单元的),所以STM32不适合跑大的linux系统,最多跑跑ucos和freertos之流。当然,其实大多数时候,用STM32都是小型项目,很多都是在裸奔的。而A系列的CPU跑各种版本的linux都表示无压力。

最后整理一下STM32现在用得比较多的几个CPU的参数:


F103 主频72M ; RAM 20k ; Flash 64/128k; I/O数量 80 ; 通信接口数量 9 ; timer数目 7
F405 主频168M ; RAM 192K ; Flash 1M ; I/O数量 140 ; 通信接口数量 15 ; timer数目 17
F427 主频180M ; RAM 256K ; Flash 2M ; I/O数量 168 ; 通信接口数量 21 ; timer数目 17