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

2023-10-19 08:40

本文主要是介绍[Cotex-M3学习教程]-0.1-Cortex-M3概述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

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指令集的区别。

这篇关于[Cotex-M3学习教程]-0.1-Cortex-M3概述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/238672

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学