Cortex-M3与M4权威指南

2024-01-24

处理器类型

所有的ARM Cortex-M 处理器是32位的精简指令集处理器。它们有:

  • 32位寄存器
  • 32位内部数据路径
  • 32位总线接口

除了32位数据,Cortex-M处理器也可以有效地处理器8位和16位数据以及支持许多涉及64位数据的操作(例如,乘法、累加)。

Cortex-M3和Cortex-M4处理器都有一个三阶段的流水线设计(指令获取、解码和执行),都有一个哈佛总线架构,允许同时获取指令和数据访问。

ARM Cortex-M处理器的内存系统使用32位寻址,这允许最大4GB的地址空间。内存映射是统一的,这意味着虽然可以有多个总线接口,但只有一个4GB的内存空间。内存空间由处理器内的程序代码、数据、外设和一些调试支持组件使用。

就像任何其它ARM处理器一样,Cortex-M处理器基于负载存储架构。这意味着需要从内存加载数据,处理数据,然后使用许多单独的指令将数据写回内存。

例如,要增加存储在SRAM中的数据值,处理器需要使用一条指令从SRAM读取数据并将其放入处理器内部的寄存器中,第二条指令增加寄存器的值,然后第三条指令将该值写回内存。处理器内部寄存器的详细信息通常被称为程序员模型。

处理器体系架构

处理器只是微控制器芯片的一部分。
存储系统、外设和各种接口功能由微控制器供应商开发。
在ARM处理器中,架构可以分为两个区域:

  • 体系结构:指令集体系结构(ISA),程序员模型(软件看到的)和调试方法(调试器看到的)。
  • 微体系结构:特定于实现的细节,如接口信号、指令执行时间、管道阶段。微体系结构是特定于处理器设计的。

指令集

Cortex-M处理器使用的指令集被称为Thumb(这包括16位的Thumb指令和更新的32位指令)。
M3和M4处理器集成了Thumb-2技术,允许16位和32位指令,以实现高代码密度和高效率。

经典的ARM处理器,例如ARM7TDMI,处理器有两种运行状态:一个32位的ARM状态和一个16位的Thumb状态。
在ARM状态下,指令是32位的,内核可以以非常高的性能执行所有支持的指令。
在Thumb状态下,指令是16位的,提供了很好的代码密度,但Thumb指令不具备ARM指令的所有功能,可能需要更多的指令来完成某些类型的操作。

为了获得两者的优势,许多经典ARM处理器的应用程序混合了ARM和Thumb代码。
然而,混合代码安排并不总是理想地工作。存在开销(在执行时间和指令数)。
在这里插入图片描述
在状态之间切换,以及两种状态的分离会增加软件编译过程的复杂性,并且使没有经验的开发人员更难优化软件。

随着Thumb-2技术的引入,Thumb指令集已经扩展到支持16位和32位指令编码。
现在,无需两种不同的操作状态之间切换,就可以处理所有的要求。
实际上,Cortex-M处理器根本不支持32位ARM指令。甚至中断处理也完全在Thumb状态下处理,而在经典ARM处理器中,中断处理程序进入ARM状态。
采用Thumb-2技术,Cortex-M处理器与经典ARM处理器相比具有许多优势,例如:

  • 没有状态切换开销,节省了执行时间和指令空间
  • 不需要在源文件中指定ARM状态或Thumb状态,使软件开发更容易
  • 这样更容易同时获得最佳的代码密度、效率和性能
  • 使用Thumb-2技术,与ARM7TDMI等经典处理器相比,Thumb指令集得到了很大的扩展。请注意,尽管所有的Cortex-M处理器都支持Thumb-2技术,但它们实现了Thumb ISA的不同子集。

框图

从高层角度来看,Cortex-M3和M4非常相似。
尽管在内部数据路径设计上存在显著差异,但处理器的某些部分(如指令预取缓冲区,部分指令解码和执行阶段)以及NVIC也彼此相似。
此外,“核心”层之外的组件几乎是相同的。

Cortex-M3和Cortex-M4处理器包含处理器的核心、嵌套矢量中断控制器(NVIC)、SysTick计时器和可选的浮点单元(用于Cortex-M4)。除了这些,处理器还包含:一些内部总线系统,一个可行的内存保护单元(MPU)和一组支持软件调试操作的组件。

Cortex-M3和Cortex-M4处理器是高度可配置的。例如,调试功能是可选的,如果产品中不需要调试支持,则允许片上系统设计人员删除调试组件。这使得设计的硅面积大大减少。在某些情况下,硅设计人员还可以选择减少硬件指令断点和数据观察点比较器的数量,以减少栅极计数。许多系统特性,如中断输入的数量、支持的中断优先级的数量和MPU也是可配置的。

内存系统

Cortex-M3和M4处理器本身不包括内存(即,它们没有程序内存,SRAM或缓存)。
相反,它们带有通用的片上总线接口,因此微控制器供应商可以在其设计中添加自己的存储系统。
通常,微控制器供应商需要向内存系统添加以下项目:

  • 程序存储器,通常是闪存。
  • 数据存储器,通常是SRAM
  • 外设

这样,不同的微控制器产品可以有不同的内存配置,不同的内存大小和类型,以及不同的外设。

Cortex-M处理器的总线接口是32位的,基于高级微控制器总线体系结构(AMBA)标准。
AMBA包含几个总线协议规范的集合。
AMBA规范可以从ARM网站获得。

Cortex-M3和M4处理器使用的主要总线接口是AHB Lite(高级高性能总线),用于程序内存和系统总线接口。
AHB Lite协议是一种流水线总线协议,允许高工作频率和低硬件面积成本。
另一种使用的总线协议是高级外围总线(APB)接口。

中断和异常支持

Cortex-M3/M4处理器包括一个嵌套向量中断控制器。它是可编程的,它的寄存器是内存映射的。NVIC的地址位置是固定的,程序员的NVIC模型在所有Cortex-M处理器中是一致的。

除了来自外设和其他外部输入的中断外,NVIC还支持许多系统异常,包括处理器内的不可屏蔽中断(NMI)和其他异常源。

微控制器供应商可以决定NVIC应该提供多少中断信号,以及NVIC设计中支持多少可编程中断优先级。

Cortex-M4特有的功能

Cortex-M4处理器在很多方面与Cortex-M3非常相似。然而,它有许多Cortex-M3没有的功能。这包括DSP扩展和可选的单精度浮点单元。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cortex-M3与M4权威指南 的相关文章

  • 为什么C语言没有被C++所取代呢?

    今日话题 为什么C语言没有被C 所取代呢 C 的复杂编译器实现和嵌入式平台的限制 使C语言保持了其地位 嵌入式系统多数仅支持C 即使支持C 也会限制某些功能 尤其是异常处理和RTTI 此外 C 引入的功能增加了二进制文件大小和运行时内存占用
  • 从外卖员到程序员,自学3年终于转行成功,三面“拿下”拼多多

    前言 先来自我介绍 老家农村 家里好不容易把我送到大城市读书 大学非985 211 但在我们老家 能出一个本科大学生也是非常不容易的 因为农村信息的相对闭塞 我对大学专业一无所知 加上分数并非前茅 最后被调剂一个我并不喜欢的专业 这里就不透
  • 物联网项目分享 Stm32单片机的音乐播放器设计 - 物联网 嵌入式

    文章目录 0 前言 1 简介 2 主要器件 3 实现效果 4 设计原理 5 部分核心代码 6 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕业答辩的要求 这两年不断有学弟学妹告诉
  • Freertos低功耗管理

    空闲任务中的低功耗Tickless处理 在整个系统运行得过程中 其中大部分时间都是在执行空闲任务的 空闲任务之所以执行 因为在系统中的其他任务处于阻塞或者被挂起时才会执行 因此可以将空闲任务的执行时间转换成低功耗模式 在其他任务解除阻塞而准
  • 深入浅出《Delta-Sigma Data Converters》(可下载)

    在数字信号处理领域 数据转换器是实现模拟与数字世界之间无缝转换的关键组件 而在这个子领域中 Delta Sigma Data Converter s 一书以其全面和深入的内容 为工程师 学者甚至爱好者们提供了一个极其宝贵的资源 今天将为大家
  • 太阳诱电 | 陶瓷电容器的静电容量相关

    陶瓷电容器的静电容量会因温度而变化吗 电容器的静电容量的温度特性是什么 陶瓷电容器的静电容量随周围的温度而变化 静电容量因温度而变化的现象 称为静电容量的温度特性 这是由于陶瓷电容器使用的材料造成的 也是所有陶瓷电容的常有现象 以下是本公司
  • Arm:objcopy 如何知道 elf 中的哪些部分要包含在二进制或 ihex 中?

    我正在开发一个项目 其中涉及解析arm elf 文件并从中提取部分 显然 elf 文件中有很多部分没有加载到闪存中 但我想知道 objcopy 到底如何知道要在二进制文件中包含哪些部分以直接闪存到闪存中 以arm elf文件的以下reade
  • 【计算机毕业设计】精品课程在线学习系统

    如今社会上各行各业 都喜欢用自己行业的专属软件工作 互联网发展到这个时候 人们已经发现离不开了互联网 新技术的产生 往往能解决一些老技术的弊端问题 因为传统精品课程学习信息管理难度大 容错率低 管理人员处理数据费工费时 所以专门为解决这个难
  • 用户数据中的幸存者偏差

    幸存者偏差 Survivorship bias 是一种常见的逻辑谬误 意思是没有考虑到筛选的过程 忽略了被筛选掉的关键信息 只看到经过筛选后而产生的结果 先讲个故事 二战时 无奈德国空防强大 盟军战机损毁严重 于是军方便找来科学家统计飞机受
  • 2024年网络安全十10大发展趋势发布

    2023年网络安全十10大发展趋势发布 近日 中国计算机学会 CCF 计算机安全专委会中 来自国家网络安全主管部门 高校 科研院所 大型央企 民营企业的委员投票评选出2023年网络安全十大发展趋势 福利 趋势一 数据安全治理成为数字经济的基
  • 库函数点亮Led

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • 【GRNN-RBFNN-ILC算法】【轨迹跟踪】基于神经网络的迭代学习控制用于未知SISO非线性系统的轨迹跟踪(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 第1部分 2 2 第2部分
  • 【GRNN-RBFNN-ILC算法】【轨迹跟踪】基于神经网络的迭代学习控制用于未知SISO非线性系统的轨迹跟踪(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 第1部分 2 2 第2部分
  • systick定时器

    systick定时器 文章目录 前言 一 前期疑惑 二 解答 1 关于systick是阻塞的吗 2 非阻塞 三 软件编写 总结 前言 这边记录systick相关知识点 一 前期疑惑 在学习systick志气啊 其实对于systick还是一脸
  • 为什么这么多人自学黑客,但没过多久就放弃了(掌握正确的网络安全学习路线很重要)

    网络安全是一个 不断发展和演变 的领域 以下是一个 网络安全学习路线规划 旨在帮助初学者快速入门和提高自己的技能 基础知识 网络安全的 基础知识 包括 网络结构 操作系统 编程语言 等方面的知识 学习这些基础知识对理解网络安全的原理和技术至
  • 嵌入式 C++11 代码 — 我需要 volatile 吗?

    采用 Cortex M3 MCU STM32F1 的嵌入式设备 它具有嵌入式闪存 64K MCU固件可以在运行时重新编程闪存扇区 这是由闪存控制器 FMC 寄存器完成的 所以它不像a b那么简单 FMC 获取缓冲区指针并将数据刻录到某个闪存
  • STM32 上的位置无关代码 - 指针

    我已成功在 STM32 上构建并运行位置无关的代码 向量表和 GOT 已修补 一切正常 但我对这样的代码有问题 double myAdd double x return x 0 1 double ptrmyAdd double myAdd
  • STM32F0、ST-link v2、OpenOCD 0.9.0:打开失败

    我在用着发射台 http www ti com ww en launchpad about htmlgcc arm none eabi 4 9 2015q2 为 STM32F0 进行编译 现在我想使用该集合中的 arm none eabi
  • 当端点和 PMA 地址均更改时,CubeMX 生成的 USB HID 设备发送错误数据

    我正在调试我正在创建的复合设备的问题 并在新生成的仅 CubeMX 代码中重新创建了该问题 以使其更容易解决 我添加了少量代码main 让我发送 USB HID 鼠标点击 并在按下蓝色按钮时使 LED 闪烁 uint8 t click re
  • GCC 变量映射和 MISRA-C

    我主要知道两种使用 GCC 声明内存映射寄存器的方法 有许多变体 使用双字段 每个外设的数据结构等 要么使用初始化为正确地址的指针 例如volatile uint32 t pMyRegister uint32 t 0xDEADBEEFUL

随机推荐

  • 计算机Java项目|有机蔬菜商城

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 【安全】原型链污染 - Hackit2018

    目录 准备工作 解题 代码审计 Payload 准备工作 将这道题所需依赖模块都安装好后 运行一下 然后可以试着访问一下 报错是因为里面没内容而已 不影响 准备工作就做好了 解题 代码审计 const express require exp
  • 【C#】基础巩固

    最近写代码的时候各种灵感勃发 有了灵感 就该实现了 可是 实现起来有些不流畅 总是有这样 那样的卡壳 总结下来发现了几个问题 1 C 基础内容不是特别牢靠 理解的不到位 导致自己想出来了一些内容 但是无法使用正确的C 代码实现 导致灵感无法
  • 手把手教你使用HarmonyOS本地模拟器

    我们通过下面的动图来回顾下手机本地模拟器的使用效果 本期 我们将为大家介绍HarmonyOS本地模拟器的版本演进 并手把手教大家使用HarmonyOS本地模拟器 一 本地模拟器的版本演进 2021年12月31日 经过一个版本的迭代优化 随D
  • 【UE】在控件蓝图中通过时间轴控制材质参数变化

    效果 步骤 1 新建一个控件蓝图和一个材质 2 打开材质 设置材质域为用户界面 混合模式设置为 半透明 在材质图表中添加两个参数来控制材质的颜色和不透明度 3 对材质创建材质实例 4 打开控件蓝图 在画布面板中添加一个图像控件 将刚才创建的
  • 案例研究:YGG 如何通过 GAP 帮助 Pixels 扩大玩家群体

    在 Sky Mavis 联合创始人 Jeffrey Jihoz Zirlin 在 YGG Web3 游戏峰会 W3GS 上发表主题演讲时 他向在场的人们透露 MMO 农场游戏 Pixels 的日活跃用户数已经超过了 130 000 人 这使
  • logback配置xml日志文件(保姆级教程)

    前言 这是个啥 这就是个控制日志输出格式 控制日志输出位置 控制日志输出环境 控制日志输出级别的玩意 控制忽略输出的日志就这些功能 没有什么很复杂的东西 废话不说多了 配置介绍 configuration
  • 题解 | #二维数组中的查找#C++二维数组暴力解法

    试用期被裁概率大嘛 华为西安 三一 在电信工作可以躺平吗 选offer 2022届offer收割机手把手教你拿offer 面试篇 新媒体运营面试的常问题都整理出来啦 还是准备辞职了 感觉我真的不适合上班 攒了点钱 准备辞职了 后面也不打算再
  • 高防服务器什么意思

    高防服务器什么意思 为什么要用高防服务器 小编为您整理发布高防服务器什么意思的解读 高防服务器是指具备较高防御能力的服务器 能够抵御DDoS CC等网络攻击 高防服务器通常用于保护游戏 APP 金融 电商等业务 这些领域因为其业务特性 容易
  • 2024最强Java面试八股文合集(持续更新)

    今天要谈的主题是关于求职 求职是在每个技术人员的生涯中都要经历多次 对于我们大部分人而言 在进入自己心仪的公司之前少不了准备工作 有一份全面细致 面试题 将帮助我们减少许多麻烦 在跳槽季来临之前 特地做这个系列的文章 一方面帮助自己巩固下基
  • DSCA190V 57310001-PK

    DSCA190V 57310001 PK DSCA190V 57310001 PK 具有两个可编程继电器功能 并安装在坚固的 XP 外壳中 DSCA190V 57310001 PK 即可使用 只需最少的最终用户校准 DSCA190V 573
  • 深度学习(5)--Keras实战

    一 Keras基础概念 Keras是深度学习中的一个神经网络框架 是一个高级神经网络API 用Python编写 可以在TensorFlow CNTK或Theano之上运行 Keras优点 1 允许简单快速的原型设计 用户友好性 模块化和可扩
  • Android开发--自定义时频域折线绘制图

    直接上干货 1 XML
  • Kafka速度之谜:高性能的幕后秘密大揭秘

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 kafka高性能的原因 Page Cache ZeroCopy 零拷贝 前言 Kafka的介绍 kafka是linkedIn开源的分布式消息系统 归给Ap
  • ESP10B 锁定连接器

    ESP10B 锁定连接器 ESP10B 电机新增内容包括双极型号标准 NEMA 尺寸 17 23 和 34 的步进电机现在包括输出扭矩范围从 61 盎司英寸到 1291 盎司英寸的双极型号 该电机配有带锁定连接器的尾缆 可轻松连接 每转可步
  • 自动驾驶离不开的仿真!Carla-Autoware联合仿真全栈教程

    随着自动驾驶技术的不断发展 研发技术人员开始面对一系列复杂挑战 特别是在确保系统安全性 处理复杂交通场景以及优化算法性能等方面 这些挑战中 尤其突出的是所谓的 长尾问题 即那些在实际道路测试中难以遇到的罕见或异常驾驶情况 这些问题暴露了实车
  • 题解 | #翻转单词序列# 复习Java几个集合方法使用

    人生第一次面试gg 字节跳动 复活赛 二面 字节后端实习面试 字节飞书后端一面凉经 字节 客服平台 一面面经 已挂 菜鸟前端 避雷避雷中华财险 中厂大厂到底怎么选 樊登读书精准营销岗面经 跨行 转技术岗进大厂的好机会 来看 岗位名称 云 软
  • sychnorized积累

    sychnorized 1 对象锁 包括方法锁 默认锁对象为this 当前实例对象 和同步代码块锁 自己指定锁对象 2 类锁 指synchronize修饰静态的方法或指定锁对象为Class对象 3 加锁和释放锁的原理 现象 时机 内置锁th
  • 两个月进口猛增10倍,买近百台光刻机,难怪ASML不舍中国市场

    据统计数据显示 2023年11月和12月 中国从荷兰进口的光刻机设备同比猛增10倍 进口金额超过19亿美元 让ASML赚得盆满钵满 ASML早前表示中国客户在2023年订购的光刻机全数交付 2023年11月中国进口的光刻机达到42台 进口金
  • Cortex-M3与M4权威指南

    处理器类型 所有的ARM Cortex M 处理器是32位的精简指令集处理器 它们有 32位寄存器 32位内部数据路径 32位总线接口 除了32位数据 Cortex M处理器也可以有效地处理器8位和16位数据以及支持许多涉及64位数据的操作