[Cotex-M3学习教程]-0.1-Cortex-M3概述

news/2023/11/28 7:50:46

目录

1 Cortex-M3概述

1.1 ARM 处理器

1.2 cortex-M3介绍

1.3 cortex-M3结构概览图

 1.4 cortex-M3组件

1.4.1 内核系统

1.4.2 NVIC

1.4.3 寄存器组

控制寄存器(CONTROL)

程序计数寄存器(PC:R15)

堆栈指针寄存器(SP:R13)

程序状态寄存器(PSRs)

链接寄存器(LR)

1.4.4 指令集


1 Cortex-M3概述

1.1 ARM 处理器

对于ARM处理器而言,其目前有Classic系列、Cortex-M系列、Cortex-R系列、Cortex-A系列和ARM SecurCore系列5个大类。

目前最常见的Cortex系列,用于如下:

  • 工业控制处理器,可选择Cortex-M系列,其中M0适合用于替代51单片机
  • Cortex-R处理器可以作为具有带操作系统的控制系统
  • Cortex-A系列处理器更加常用的场合是消费电子

ARM公司推出的常见处理器和架构版本简要对比:

架构版本

处理器

ARMv1

ARM1

ARMv2

ARM2、ARM3

ARMv3

ARM6、ARM7

ARMv4

StrongARM、ARM7TDMI、ARM9TDMI

ARMv5

ARM7EJ、ARM9E、ARM10E、XScale

ARMv6

ARM11、ARM Cortex-M

ARMv7

  1. Cortex-A系列可以运行Linux等操作系统:Cortex-A8/9/5/7/15/17
  2. Cortex-R系列主要用于实时应用领域:Cortex-R4/5/6/7
  3. Cortex-M系列用于嵌入式系统的微控制器:Cortex-M3/4/7

ARMv8

  1. 也称为ARM 64位架构,主要用于服务器和高性能应用。
  2. 该架构支持ARM和Thumb指令集,还增强了虚拟化和安全性能:Cortex-A32/35/53/57/72/73
  3. R52

1.2 cortex-M3介绍

Cortex-M3是ARM公司推出的一款基于ARMv7架构的32位微控制器核心,具有以下功能和性能特点:

  • 较强的性能: 主频能够达到100MHz以上,能够满足许多高性能应用的需求
  • 低功耗特性:采用了高效的架构和处理技术,使得它具有低功耗特性
  • 支持Thumb-2指令集:能够提高代码密度,从而节省嵌入式系统的存储空间。
  • 支持多种外设接口:提供种外设接口和功能,包括SPI、I2C、UART、定时器等
  • 分层保护机制:采用分层保护机制,可以提高系统安全性,防止非授权访问和攻击
  • 应用广泛:适用领域,如工业控制、汽车电子、医疗设备、消费类电子等。
  • 支持物联网连接:用于物联网连接,支持通信协议,如ZigBee、BLE、WiFi等

1.3 cortex-M3结构概览图

 1.4 cortex-M3组件

1.4.1 内核系统

Cortex-M3处理器中央处理核心包括:

  1. 取指单元
  2. 指令解码单元
  3. 指令执行单元
  4. 寄存器组

其主要特性如下:

  • 支持的指令集是Thumb-2指令集,包含所有基本的16位和32 位Thumb-2 指令
  • 哈佛处理器架构,数据处理的同时能够执行取指操作
  • CM3重大革新是支持除法指令和部分支持64位乘法指令可成十上百倍地提高程序的执行速度
  • 支持三级流水线:取指,解码和执行
  • 工作状态支持Thumb状态和调试状态
  • 工作模式支持handler模式(中断模式)和线程模式
  • 支持ISR 的低延迟进入和退出
    • 支持咬尾中断处理
    • 支持晚到中断处理
  • 支持非对齐访问

1.4.2 NVIC

NVIC是Cortex-M3的中断控制器,它的存在提高了嵌入式系统的可靠性、响应速度和方便软件编程,特点如下:

  • NVIC与CPU紧耦合,包含若干系统控制寄存器
  • 支持多达240个外部中断
    • 每个中断都有自己的中断优先级
    • 中断优先级由8位的优先级和4位的子优先级组成
    • 可以通过配置控制器来设置中断优先级
  • 支持嵌套中断和优先级继承
    • 当中断正在被处理,如有更高优先级中断请求,NVIC中断当前中断,优先响应更高优先级的中断请求,并在处理完毕后回到原来被中断的中断程序中继续执行。
  • 支持向量表重定位
    • Cortex-M3的向量表可以位于内存中的任意地址,并且可以在运行时动态地进行重定位,这使得系统可以更加灵活地进行中断处理。
  • 支持中断屏蔽和中断使能
    • NVIC支持对中断进行屏蔽和使能,这使得处理器可以根据需要灵活地控制中断的响应和处理。
  • SysTick 定时器
    • SysTick 定时器在NVIC内部实现
    • SysTick定时器是一个非常基本的倒计时定时器,用于在每隔一定的时间产生一个中断,即使是系统在睡眠模式下也能工作

1.4.3 寄存器组

寄存器分类

寄存器

功能描述

通用寄存器

通用寄存器

R0-R12

用于数据操作,绝大多数16位Thumb指令只能访问R0-R7,而32 位Thumb-2指令可以访问所有寄存器

堆栈指针寄存器SP 

R13

主堆栈指针(MSP):复位后缺省使用的堆栈指针

进程堆栈指针(PSP):应用程序代码使用

连接寄存器LR

R14

当调用一个子程序时,由R14存储返回地址

程序计数寄存器PC

R15

指向当前的程序地址。修改其值,能改变程序执行流

特殊功能寄存器

程序状态寄存器

PSRs

APSR

应用 PSR(APSR)包含条件代码标志

IPSR

中断 PSR(IPSR)包含当前激活的异常的ISR编号

EPSR

执行 PSR(EPSR)包含两个重叠的区域

中断屏蔽寄存器

PRIMASK

除能所有中断—不可屏蔽中断(NMI)除外

FAULTMASK

除能所有fault—NMI除外,被除能faults会“上访”

BASEPRI

除能所有优先级不高于某个具体数值的中断

控制寄存器

CONTROL

定义特权状态,决定使用哪一个堆栈指针

控制寄存器(CONTROL

寄存器名

bit

描述

备注

CONTROL

0

0表示特权级的线程模式,

  1. 当在特权级下操作时才允许写该位
  2. 用户级唯一返回特权级的途径,触发一个(软)中断,再由服务例程改写该位

1表示用户级的线程模式

1

0表示选择MSP

  1. 仅处于特权级的线程模式下,此位才可写
  2. 异常返回,修改LR位2,能实现模式切换

1表示选择PSP

程序计数寄存器(PC:R15)

  • R15 是程序计数器,也称为“PC”
  • M3内部使用了指令流水线,读 PC 时返回的值是当前指令的地址+4
  • 如果向 PC 中写数据,就会引起一次程序的分支改变, 不更新 LR 寄存器

堆栈指针寄存器(SP:R13)

        堆栈指针用于访问堆栈,只需要两条指令,PUSH和POP,默认使用 MSP。通常进入子程序后,第一件事把寄存器值PUSH入堆栈中,子程序退出前POP曾经PUSH的寄存器。

程序状态寄存器(PSRs)

  • 处理器状态可分为3类,因此有3个程序状态寄存器
  • 程序状态寄存器里存放了两类信息
    • 一类体现当前指令执行结果的各种状态信息,如有无进位(CY位),有无溢出(OV位),结果正负(SF位),结果是否为零(ZF位),奇偶标志位(P位)等。
    • 一类存放控制信息,如允许中断(IF位),trace标志(TF位)等
  • 执行 PSR(EPSR)包含两个重叠的区域:
    • 用于 If-Then( IT)指令的执行状态区,以及T位(Thumb 状态位)。
    • 可中断-可继续(interruptible-continuable)指令( ICI)区,用于被打断的多寄存器加载和存储指令

31

30

29

28

27

26:25

24

23:20

19:16

15:10

9

8

7

6

5

4:0

APSR

N

Z

C

V

Q

IPSR

Exception Number

EPSR

ICI/IT

T

ICI/IT

        通过MRS/MSR指令,这3个PSR可以单独访问,也可组合访问:

  •         PSR = APSR + IPSR + EPSR
  •         IAPSR = IPSR + APSR
  •         IEPSR = IPSR + EPSR
  •         EAPSR = EPSR + APSR

链接寄存器(LR)

  1. R14 是连接寄存器(LR), 汇编程序中,可以把它写作LRR14
  2. LR 用在调用子程序时存储返回地址
  3. 使用 BL指令,自动填充 LR的值

1.4.4 指令集

        ARM Cortex-M系列处理器均使用Thumb-2指令集,主要特征为:在一种工作状态中允许混合使用16位和32位指令,下图指出了Thumb-2指令集与Thumb指令集的区别。


http://www.ppmy.cn/news/977394.html

相关文章

jQuery的DOM操作之笔记总结

jQuery的DOM操作之笔记总结 首先我们来介绍一下什么是DOM 简述: 1.DOM全称Document Object Model(文档对象模型)。 2.每个文档都是一棵DOM结构的树,文档里的很多元素,就像树上的很多节点,或是分叉的树枝…

mysql优化一般从这几个方面出发

MySQL 优化是针对数据库性能和查询效率的一系列操作和策略,旨在提高数据库的响应速度、降低资源消耗,并优化查询执行计划。以下是一些常见的 MySQL 优化技巧: 1、 使用合适的数据类型:选择合适的数据类型可以节省存储空间和提高查…

[SQL系列] 从头开始学PostgreSQL 自增 权限和时间

[SQL系列] 从头开始学PostgreSQL 事务 锁 子查询_Edward.W的博客-CSDN博客https://blog.csdn.net/u013379032/article/details/131841058上一篇介绍了事务,锁,子查询 事务有点像是原子操作,需要有完整性,要么全都完成了&#xff…

使用 Cpolar 内网穿透实现 Windows 远程 WebDAV 访问

文章目录 windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】1. 安装IIS必要WebDav组件2. 客户端测试3. 使用cpolar内网穿透,将WebDav服务暴露在公网3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访问测试 4. 安装Raidrive客户…

富文本CKEditor5简易入门,包括自定义上传图片(html版+vue.js)

一、安装及引入 官网&#xff1a;https://ckeditor.com/ckeditor-5/download/ 我这边使用的是自定义构建&#xff0c;然后下载下来。 二、简单使用 引入js <script src"../../../assets/plugins/ckeditor5/ckeditor.js"></script>html&#xff1a;…

深度学习中标量,向量,矩阵和张量

1.标量(Scalar) 只有大小没有方向&#xff0c;可用实数表示的一个量 2.向量(Vector) 可以表示大小和方向的量 3.矩阵(Matrix) m行n列,矩阵中的元素可以是数字也可以是符号&#xff0c;在深度学习中一般是二维数组 4.张量(Tensor) 用来表示一些向量、标量和其他张量之间的…

TCP/IP网络编程 第二十一章:异步通知I/O模型

理解异步通知I/O模型 理解同步和异步 首先解释“异步”&#xff08;Asynchronous&#xff09;的含义。异步主要指“不一致”&#xff0c;它在数据I/O中非常有用。之前的Windows示例中主要通过send&recv函数进行同步I/O。调用send函数时&#xff0c;完成数据传输后才能从函…

electron 安装失败,Electron failed to install correctly

我的电脑是mac&#xff0c;这个问题上网找了很多解决办法试了一下都不行&#xff0c;删除重装也不太行&#xff0c;但是单独安装是可以的 install electron执行完后再启动就可以啦 npm start下面的不太行 1.切到node_modules/electron执行如下指令 node install.js还有 nod…

RocketMQ教程-(5)-功能特性-事务消息

事务消息为 Apache RocketMQ 中的高级特性消息&#xff0c;本文为您介绍事务消息的应用场景、功能原理、使用限制、使用方法和使用建议。 事务消息为 Apache RocketMQ 中的高级特性消息&#xff0c;本文为您介绍事务消息的应用场景、功能原理、使用限制、使用方法和使用建议。…

HP-unix命令汇总

工作中&#xff0c;偶有oracle数据库运行在hp-unix上&#xff0c;记录下命令&#xff0c;需要的时候尽快找到命令 关机和重启 关机: shutdown -hy 0 重启: shutdown -ry 0 如无法重启&#xff0c;可使用reboot 查看所有硬件信息#print_manifest 查看CPU信息&#xff1a;#…

Tiny Player (js) - 轻量好用、免费开源的 web 视频播放开发组件,内置硬解、软解视频功能

一款简单好用的 JS 视频播放器&#xff0c;完美解决我遇到的移动端播放视频的需求&#xff0c;安利给各位。 关于 Tiny Player Tiny Player 是一个极简的视频播放器 JS 库&#xff0c;内置硬解、软解视频功能&#xff0c;支持原生控件样式以及自定义控件样式&#xff0c;小巧…

操作系统启动相关概念(BIOS、MBR、GPT、BRUB)

不管是 Windows 还是 Linux 操作系统&#xff0c;底层设备一般均为物理硬件&#xff0c;操作系统启动之前会对硬件进行检测&#xff0c;然后硬盘引导启动操作系统&#xff0c;如下为操作系统启动相关的各个概念。 一、BIOS 基本输入输出系统&#xff08;Basic Input Output Sy…

Vue组件自定义事件

v-on:xxx"" &#xff1a;绑定 this.$emit(xxx) : 触发 this.$off() : 解绑 App.vue <template><div class"app"><h1>{{msg}}</h1><!--通过父组件给子组件传递函数类型的props实现&#xff1a;子给父传递参数--><…

FPGA配置文件从串并模式下载

FPGA配置文件的下载模式有5种&#xff1a; 主串模式&#xff08;master serial&#xff09;从串模式&#xff08;slave serial&#xff09;主并模式&#xff08;master selectMAP&#xff09;从并模式&#xff08;slave selectMAP&#xff09;JTAG模式 其中&#xff0c;JTAG模…

Solr原理剖析

一、简介 Solr是一个高性能、基于Lucene的全文检索服务器。Solr对Lucene进行了扩展&#xff0c;提供了比Lucene更为丰富的查询语言&#xff0c;并实现了强大的全文检索功能、高亮显示、动态集群&#xff0c;具有高度的可扩展性。同时从Solr 4.0版本开始&#xff0c;支持SolrCl…

目标检测——SSD模型介绍

目录 SSD网络结构backboneextra部分loc和clsPriorBox层先验框的生成方法loc的预测结果 模型训练正负样本标记损失函数困难样本挖掘 模型预测 SSD网络结构 backbone extra部分 loc和cls PriorBox层先验框的生成方法 loc的预测结果 模型训练 正负样本标记 损失函数 困难样本挖掘…

Spring Cloud Alibaba 集成 Skywalking 链路追踪

Spring Cloud Alibaba 集成 Skywalking 链路追踪 简介 skywalking 是一个国产开源框架&#xff0c;2015 年由吴晟开源 &#xff0c; 2017 年加入 Apache 孵化器。skywalking 是分布式系统的应用程序性能监视工具&#xff0c;专为微服务、云原生架构和基于容器&#xff08;Doc…

KaiwuDB 资深解决方案专家周幸骏:打造核心时序引擎,释放数据新价值

以下为浪潮 KaiwuDB 资深解决方案专家周幸骏受邀于7月4日在京举行的可信数据库发展大会发表演讲的实录摘要&#xff0c;欢迎大家点赞、收藏、关注&#xff01; 01 聚焦“时序” 据 IDC 等权威数据统计&#xff0c;预估 2025 年物联网设备产生的数据可达到 79.4ZB &#xff1b;…

区块链实验室(11) - PBFT耗时与流量特征

以前面仿真程序为例&#xff0c;分析PBFT的耗时与流量特征。实验如下&#xff0c;100个节点构成1个无标度网络&#xff0c;节点最小度为5&#xff0c;最大度为38. 从每个节点发起1次交易共识。统计每次交易的耗时以及流量。本文所述的流量见前述仿真程序的说明:区块链实验室(3)…

C# 委托详解

一.委托的概念 C#中委托也叫代理&#xff0c;委托提供了后期绑定机制(官方解释)&#xff0c;功能类似于C中的函数指针&#xff0c;它存储的就是一系列具有相同签名和返回类型的方法的地址&#xff0c;调用委托的时候&#xff0c;它所包含的所有方法都会被执行。 二.委托的用法…
最新文章