文档章节

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

o
 osc_x4h57ch8
发布于 2018/04/24 12:31
字数 789
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

我用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

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

Buffer的创建及使用源码分析——ByteBuffer为例

目录 Buffer概述 Buffer的创建 Buffer的使用 总结 参考资料 Buffer概述 注:全文以ByteBuffer类为例说明 在Java中提供了7种类型的Buffer,每一种类型的Buffer根据分配内存的方式不同又可以分为...

osc_zoa046qb
28分钟前
21
0
《 ZooKeeper : Wait-free coordination for Internet-scale systems 》论文研读

Zookeeper 研读 说明:本文为论文 《 ZooKeeper : Wait-free coordination for Internet-scale systems 》 的个人理解,难免有理解不到位之处,欢迎交流与指正 。 论文地址:Zookeeper Paper...

osc_4isxawz4
29分钟前
19
0
利用__new__实现单例模式

26 利用__new__实现单例模式 python当中有很多方法都可以实现单例模式, 但利用__new__无疑是最推荐的方式. 代码如下: class Demo:is_instance = Nonedef __new__(cls, *args, **kwargs...

_Change_
31分钟前
11
0
如何白嫖微软Azure12个月及避坑指南

Azure是微软提供的一个云服务平台。是全球除了AWS外最大的云服务提供商。Azure是微软除了windows之外另外一个王牌,微软错过了移动端,还好抓住了云服务。这里的Azure是Azure国际不是Azure中...

osc_dwuu5jqk
31分钟前
21
0
Mybatis源码初探——优雅精良的骨架

@ 目录 前言 精良的Mybatis骨架 宏观设计 基础支撑 日志 日志的加载 日志的使用 数据源 数据源的创建 池化技术原理 数据结构 获取连接 回收连接 缓存 缓存的实现 CacheKey 反射 总结 前言 My...

osc_r9wwwi0j
32分钟前
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部