概述
我用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
转载于:https://www.cnblogs.com/stay-foolish1984/p/8928403.html
最后
以上就是冷静宝贝为你收集整理的ARM各系列CPU与STM32之间的关系的全部内容,希望文章能够帮你解决ARM各系列CPU与STM32之间的关系所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复