引言

笔者接触嵌入式领域软件开发已近五年,几乎用的都是 ARM Cortex M 内核系列的微控制器。在这五年期间,感谢C语言编译器的存在,让我不用接触汇编即可进行开发,但是彷佛也错过了一些风景,没有领域到编译器之美和CPU之美,所以决定周末无聊的休息时间通过寻找资料、动手实验、得出结论的方法来探索 ARM CPU 架构的美妙,以及C语言编译器的奥秘。(因为我个人实在是不赞同学校中微机原理类课程的教学方法)。

一、ARM CPU Architecture

ARM CPU架构是一个用于计算机处理器的精简指令集(RISC)架构家族。它是世界上最普遍的处理器架构,从传感器、可穿戴设备、智能手机、到超级计算机,每年会有数十亿基于ARM的设备出货。

ARM CPU架构基于RISC精简指令集,包括:

  • 一个统一的寄存器文件,其中指令不限于作用于特定的寄存器;
  • 一种加载或存储架构,其中数据处理仅对寄存器内容进行,而不是直接对内存内容进行;
  • 简单的寻址模式,所有加载或者存储模式仅由寄存器内容和指令字段决定。

根据不同的应用场景,ARM CPU架构分为:

架构定义 使用案例 实现(处理器内核)
A系列 复杂的电脑应用(服务器、网络设备、手机、TV) Cortex-A、Neoverse
R系列 用于需要实时响应的场景(严格的安全性应用、需要确定响应的应用、自动驾驶) Cortex-R
M系列 功耗和尺寸比较重要的设备,尤其嵌入式设备和IoT设备,比如小型传感器、通信模组、智能家居产品等 Cortex-M

在本系列文章中,我们将以Cortex M内核为主进行探索,不去考虑Cortex A 系列和Cortex R系列。

二、Cortex M内核

Cortex-M处理器家族基于ARM M 架构定义,为嵌入式系统提供了低延迟和高度确定的操作,主要包括的Cortex-M系列内核如下图:

从图中大致可以看出:

① Cortex-M0、Cortex-M0+、Cortex-M1系列内核使用Armv6-M架构,常用的Cortex-M3、Cortex M4、Cortex M7系列内核使用Armv7-M架构,Cortex-M23系列使用Armv8-M Baseline架构,Cortex-M33、Cortex-M33P、Cortex-M55系列使用Armv8-M Mainline架构。

② 从Coretx-M23系列开始,Cortex-M内核中开始拥有TrustZone特性

③ Cortex-M4、CortexM7、Cortex-M33、Cortex-M35P、Cortex-M55系列中才有数字信号处理扩展(DSP)。

④ Cortex-M33、Cortex-M55系列中开始拥有ARM自定义指令

⑤ Cortex-M33、Cortex-M35P、Cortex M55系列拥有协处理器接口

接下来我们一一了解。

1. Cortex M0

Cortex M0处理器是ARM最小的处理器之一,主要特点是小体积,目的是使开发人员能够在8位的价格点上实现32位的性能。

Cortex M0处理器使用AHB-Lite总线、拥有三级流水线,支持部分Thumb/Thumb-2 指令集。

2. Cortex M0+

Cortex M0+处理器在Cortex M0处理器的基础上,进一步降低了功耗,提升了性能。Cortex M0+处理器使用 AMBA AHB-Lite 总线、降低为两级流水线,支持部分Thumb/Thumb-2 指令集。

3. Cortex M1

Cortex M1是首个专为FPGA上的实现而设计的处理器。使用 AMBA AHB-Lite 总线、三级流水线,支持部分Thumb/Thumb-2 指令集。

4. Cortex M3

Cortex-M3处理器是专为高性能、低成本平台开发设计的,包括汽车车身系统、工业控制系统、无线网络、传感器等,使用 3个 AMBA AHB-Lite总线 (哈佛总线架构),三级流水线,支持部分Thumb/Thumb-2 指令集、支持8 to 256优先级等级。


5. Cortex M4

Cortex-M4处理器是一款高效的嵌入式处理器,使用 3个 AMBA AHB-Lite总线 (哈佛总线架构),三级流水线,支持Thumb/Thumb-2 部分指令集,支持8 to 256优先级等级。相比CortexM3,增加了DSP扩展、可选的单精度浮点单元

6. Cortex M7

Cortex M7处理器是一款高性能、节能的处理器,6级大规模流水线,支持Thumb/Thumb-2 指令集,支持8 to 256优先级等级,支持DSP扩展、可选的单精度浮点单元,使用 1 个64-bit AMBA4 AXI总线, 1 个 32-bit AHB 外设接口、1 个 为外部主机访问TCMs内存提供的32-bit AMBA AHB 从机接口,拥有指令cache、数据cache、指令TCM、数据TCM

7. Cortex M23

Cortex M23处理器是一款非常简洁的处理器,对于大多数需要安全性的IoT和嵌入式应用,带有TrustZone的Cortex-M23是一个理想的处理器。

Cotex-M23使用 Armv8-M baseline 架构,拥有2级流水线,使用 AMBA 5 AHB 总线,支持Thumb/Thumb-2 部分指令集,支持4个优先级等级。还增加了指令支持硬件单周期乘法(32x32)和快速除法(32/32)。

8. Cortex M33

Cortex-M33适用于需要有效安全性或者数字信号控制的嵌入式和IoT应用场景。Cortex-M33有非常多的可选特性,包括DSP扩展、用于硬件强制隔离的TrustZone安全特性、一个协处理器接口、内存保护单元、浮点计算单元。

Cotex-M33使用 Armv8-M Mainline 架构,拥有3级流水线,使用 2 个 AMBA5 AHB 总线(哈佛架构),支持Thumb/Thumb-2 指令集,支持8 to 256个中断优先级等级,可选的TrustZone for Armv8-M支持,DSP扩展中支持可选的 DSP/SIMD 指令,可选的协处理器接口支持。

推荐傻孩子大佬的一篇文章:深度剖析,简单粗暴,详解Cortex-M23/33特性。


9. Cortex M35P

Cortex-M35P处理器使用TrustZone for Armv8-M,具有硬件安全和可选的软件隔离特性。对于试图阻止物理篡改并希望获得更高级别安全认证的嵌入式开发人员,ARM提供了Cortex-M35P这款处理器。

Cotex-M35P使用 Armv8-M Mainline 架构,拥有3级流水线,使用 2 个 AMBA5 AHB 总线(哈佛架构),支持Thumb/Thumb-2 指令集,支持8 to 256个中断优先级等级,具有可选的协处理器接口支持、TrustZone for Armv8-M支持、DSP支持,并且具有物理安全特性,内置保护,防止入侵和非入侵式攻击

10. Cortex M55

目前最新一代的Cortex M系列处理器为Cortex M55。

Cortex-M55是首个基于Armv8.1-M架构的处理器,采用ARM Helium技术(MVE,M系列矢量扩展),为下一代小型嵌入式设备带来了增强的机器学习水平和信号处理的性能,包括可穿戴设备,智能语音设备等。

Cotex-M55拥有4级流水线,使用 AMBA 5 AXI5 64-bit 主机总线,可选的64bit协处理器接口支持、可选的TrustZone支持,可选的Helium技术支持,DSP扩展中支持32位DSP/SIMD指令扩展

总结

认识了Cortex-M阵营都有哪些成员后,可以看到ARM Cortex-M 越来越注重安全性能和AI性能,这也给了我们一个发展方向,未来物联网的发展也不再是仅限于对接一下云平台上报数据这么简单,而是更多的提升物联网设备安全能力和AI能力,毕竟硬件设备遭遇入侵比电脑中毒更加可怕,如果端侧AI处理能力大大提升,则数据处理可直接在终端中完成,而不用去消耗不必要的云端算力~

至此,ARM探索之旅第一站就结束啦!下一站再会!

ARM探索之旅 | 一、带你认识ARM Cortex-M阵营相关推荐

  1. ARM探索之旅 03 | 如何使用 ARM FPU 加速浮点计算

    引言 笔者接触嵌入式领域软件开发以来,几乎用的都是 ARM Cortex M 内核系列的微控制器.感谢C语言编译器的存在,让我不用接触汇编即可进行开发,但是彷佛也错过了一些风景,没有领域到编译器之美和 ...

  2. C语言探索之旅 | 第一部分第三课:你的第一个程序

    作者 谢恩铭,公众号「程序员联盟」. 转载请注明出处. 原文:https://www.jianshu.com/p/c73fecacd006 <C语言探索之旅>全系列 内容简介 前言 控制台 ...

  3. RICO BOARD驱动探索之旅_环境搭建与点亮LED

    今天开始更新我的博客,一个专题: RICO BOARD驱动探索之旅 机缘巧合,我申请到了RICO BOARD,一直想自己玩玩,现在开播!!! 这款板的渊源我就不赘述了,它是以TI Sitara AM4 ...

  4. Web 探索之旅 | 第二部分第一课:客户端语言

    -- 作者 谢恩铭 转载请注明出处 Web探索之旅 | 第二部分 第二部分第一课:客户端语言 第二部分第二课:服务器语言 第二部分第三课:框架和内容管理系统 第二部分第四课:数据库 第二部分第五课:响 ...

  5. 美团外卖商家端视频探索之旅

    美团外卖商家端视频探索之旅 背景 美团外卖至今已迅猛发展了六年,随着外卖业务量级与日俱增,单一的文字和图片已无法满足商家的需求,商家迫切需要更丰富的商品描述手段吸引用户,增加流量,进而提高下单转化率和 ...

  6. shell 做加法运算_C语言探索之旅 | 第一部分第七课:运算那点事

    上一课是 C语言探索之旅 | 第一部分第六课:变量的世界(三),显示变量内容 今天,我们一起来学习 C语言(对大多数编程语言也类似)中的运算. 之前的课中,我们已经说过:电脑是一台"笨笨&q ...

  7. Android探索之旅 | 面向对象和Java基础

    -- 作者 谢恩铭 转载请注明出处 上一篇 Android探索之旅 | Android简介 中说到: "Android的默认开发语言是Java,入门简单.而且,你的Java水平不需要多好就可 ...

  8. 【C++探索之旅】第一部分第四课:内存,变量和引用

    内容简介 1.第一部分第四课:内存,变量和引用 2.第一部分第五课预告:简易计算器 内存,变量和引用 上一课<[C++探索之旅]第一部分第三课:第一个C++程序>中,我们已经学习了如何创建 ...

  9. Python探索之旅 | 第一部分第二课:安装Python和Python的常用开发软件

    作者 谢恩铭,公众号「程序员联盟」(微信号:coderhub). 转载请注明出处. 原文:https://www.jianshu.com/p/68fcd46254f5 <Python探索之旅&g ...

最新文章

  1. AI领域「听风者」:声纹识别5大核心知识点!
  2. 自定义android控件EditText 自定义边框 背景
  3. Windows Mobile开发资源相关下载收录
  4. Go开发报错 -- Golang strings.Builder type undefined
  5. Verilog中wire与reg类型的区别(转载自http://www.cnblogs.com/farbeyond/p/5204586.html)
  6. Lenovo E46A-Win 7_无线灯亮但无法启动(耽误3天以上您信吗.....)问题: wlan autoconfig 依赖服务或组无法启动...
  7. python参考手册下载_python参考手册第4版
  8. 剑指offer: 两个栈实现一个队列
  9. python VTK画3D方框
  10. 怎样剪立体灯笼_懒人版立体镂空星星折纸灯笼教程
  11. 求职时,怎样判断一家公司是否靠谱?
  12. matlab单级齿轮减速器设计
  13. 微信公众号--生成带参数的二维码 {“errcode“:48001,“errmsg“:“api unauthorized rid: 60520af9-71ff2283-63d36e0d“}
  14. sql查询查询半小时内数据的方法
  15. 单点登录cas-4.0.0 只是简单的同时登入,同时登出功能
  16. 搜索引擎site关键字的站内搜索
  17. wps的linux文字显示模糊,WPS字体模糊不清晰怎么回事
  18. 最全的 JVM 面试知识点(一):运行时数据区
  19. 退了IBM对日软件外包实训有些天了
  20. 大数据学习日志tenth

热门文章

  1. sql中的 in、exist、not in、not exist
  2. Shell 练习题 31-40题,内附答案
  3. nga怀旧服服务器维护,魔兽世界怀旧服:怀旧服1年暴雪热修的那些“BUG”
  4. 滴滴如何调度_滴滴研究院:解读滴滴调度系统中的人工智能
  5. 阿里云WINDOWS SERVER 2019服务器安装MySQL数据库及设置远程访问权限教程
  6. 类变量、实例变量、类方法、实例方法
  7. 学习C语言类似百词斩的软件,十款很不错的英语学习软件大推荐
  8. Typora付费,恢复到老版本
  9. html中outline属性,CSS outline 属性
  10. 无限火力更新服务器公告,英雄联盟更新维护公告