Cortex-M3体系结构与芯片

Cortex-M3 是一个32位的内核。

1.Cortex-M3内核结构

Cortex-M3 内核是一个32位处理器内核,其采用了哈佛体系结构,拥有独立的指
令总线和数据总线,使得指令和数据可以同时访问。指令总线和数据总线共享同 一 个4G存储器空间范围。 其内核主要包含四部分:
(1)乘法器;
(2)控制逻辑;
(3)Thumb 指令译码器;
(4)寄存器组以及内部接口。
在这里插入图片描述

Cortex-M3内核是Cortex-M3 处理器的核心,它具有的主要特点有:
· (1 )Cortex-M3 是一个典型32位处理器内核。 其内部的数据路径是32位,寄存器
是32位,存储器接口是32位。
· (2) Cortex-M3 为哈佛架构。拥有独立的指令总线Bus和数据总线Bus, 取指令与数据访问可以同时进行。

2.基于Cortex-M3内核的处理器体系结构

Cortex-M3 内核是处理器的中央处理单元CPU核心 。

· 工作模式
模 式 (Pattern)就是解决某一类问题的方法论。 把解决某类问题的方法论总结归纳到理论高度就是模式。
在Cortex-M3 处理器中引入了线程模式和用户模式Handler 两种。另外处理器中引入模 式也是为了区别普通用户应用程序代码与中断/异常服务程序代码。

处理器为程序赋予了两种权限,分别被称为特权级和用户级。 在特权级状态,程序可以访问系统所有资源,而且程序功能比用户级多。在用户级状态,程序对有些资源的访问受到限制,或甚至禁止访问。

三级流水线**

在这里插入图片描述

寄存器

寄存器 (Register)是集成电路中非常重要的一种存储单元,通常由触发器组成。
寄存器是中央处理器中央处理器内的重要组成部分,是有限存贮容量的高速存贮部件,可用来暂存指令、数据和地址。

寄存器是处理器内部的重要元件, 一般包括通用寄存器、专用寄存器和控制寄存器。
在处理器诸部件中,包含的寄存器有指令寄存器(IR)、 程序计数器(PC)、 累加器(ACC)

Cortex-M3处理器还设计有三类SFR 寄存器,即程序状态寄存器PSR(Program State Register)、 中断屏蔽寄存器IMR(Interrupt Mask Register,IMR又分为PRIMASK、FAULTMASK 和BASEPRI) 和控制寄存器CR(Control Register)。

在这里插入图片描述

存储器分类与特点

存储器 (Memory) 是一种利用半导体、磁性介质等技术制成的存储数据的部件。存储器的主要功能是存储程序和各种数据,并能在计算机运行过程中高速、自动地完成程序或数据的存取。

按用途存储器可分为主存储器和辅助存储器,也有分为外部存储器和内部存储器的分类方法。存储器从使用功能上分,有随机存储器RAM(Random Access Memory) 和 只 读存储器ROM(Read Only Memory)。

(1) 随机存储器RAM特 点:可以读出,也可以写入。读出时并不损坏原来存储 的内容,只有写入时才修改原来所存储的内容。

(2) 只读存储器ROM 特点:只能读出原有的内容,不能由用户再写入新内容。

(3) CMOS存储器特点:它是一种只需要极少电量就能存放数据的芯片。

(4) Flash 存储器 (闪速存储器)特点:在不加电的情况下能长期保持存储的信息。

Cortex-M3 存储器分区

Cortex-M 处理器中常用的存储器有: (1)保存程序代码用的Flash 存储 器 ; (2)
保存程序运行数据用的静态RAM; (3) 电可擦除只读存储器EEPROM。

存储器结构和管理机制

在这里插入图片描述

在这里插入图片描述

Cortex-M3 支持位带操作,可使用普通的加载/存储指令来对单一的比特位进行直接读写。

3.中断及异常概念

中断就是指计算机系统运行过程中,出现某些意外情况需主机干预时,能自动停止正 在运行的程序并转入处理新情况的程序,处理完毕后又能返回原被暂停的程序继续运行。中断的产生可以由硬件产生,也可由软件产生。

硬件中断导致处理器通过 一个上下文切换来保存执行状态,软件中断则通常作为处理器指令集中的一个指令,以可编程的方 式直接指示这种上下文切换,并将处理导向一段中断处理程序。
在这里插入图片描述

非屏蔽中断主要用于断电、电源故障等重大的以及必须立即处理的情况。
在这里插入图片描述

处理器中采用中断的主要目的有:

(1) 提高处理器效率。 因计算机系统中处理的任务很多,通过中断可以协调它们 之间的工作。

(2 ) 维持计算机系统可靠工作。 在计算机系统中,程序员不能直接干预和操纵机 器,必须通过中断系统向系统发出请求,来实现人为干预。

(3) 满足实时处理要求。 在实时系统中,各种监测和控制装置可能会随机随时实 时地向处理机发出各种中断请求,处理器需要尽快随时响应并进行处理。

(4) 提供故障现场处理手段。

  1. 开和关中断

处理器在这些指令之间的切换就是通过中断来实现。比如在出现了异常事件后又恢 复正常时,处理器就会忙于恢复事件出现之前的工作环境,也称恢复现场。

  1. 保护现场和恢复现场

保护现场就是进入中断程序保存所有需要用到的寄存器的数据,恢复现场就是退出中断程序时恢复保存寄存器的数据。

  1. 中断响应与撤除

中断响应是当处理器发现已有中断请求时,中止现行程序执行,并自动引出中断处理程序的过程。 同时把断点地址自动送入堆栈进行保护,以便处理器执行结束 中断程序后能正确返回到原被中断的断点继续执行原有程序。
由于中断是有优先级的,如果多个中断源同时产生,程序就会按照优先级从高到低依次查询,因此突出一个方向性, 所以称之为向量。

嵌套向量中断控制器NVIC

  1. 可嵌套中断支持

中断嵌套是指中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理 级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行的过程。

  1. 向量中断支持

在中断发生并开始响应后, Cortex-M3 处理器会自动定位一张中断向量表,并根据中 断号从表中查找出中断服务程序的入口地址,处理器以此地址跳转执行相对应程序。在 Cortex-M3 内核NVIC中断控制器中,再解释其中断和异常目的。在Cortex-M3 内核NVIC中 , 其中断也叫内核异常,因此一般定义有以下概念:
(1)中断是指系统停止当前正在运行的程序转而其他服务,可能是程序接收了比
自身高优先级的请求,或者是人为设置中断, 一般认为中断是属于正常现象。

(2)异常是指由于处理器本身故障、程序故障或者请求服务等引起的错误,异常
属于不正常现象。

Cortex-M3 内核支持256个中断,其中包含了16个内核异常和240个外部中断,并且具有256级的可编程中断级别设置。 通常外部中断写作IRQ## 。

  1. 动态优先级调整支持

为使处理器能及时响应并处理发生的各种所有中断,会根据引起中断事件的重要性和紧迫程度,设计时就将各中断源分为若干个级别,称作中断优先级(Priority) 。
在Cortex-M3 中,中断与异常的优先级非常重要。它会影响到中断异常能否被响应,以及能否得到及时响应的关键因素。 优先级的数值越小,优先级别越高。高优先级别 中断异常可以抢占低优先级别的响应。

  1. 中断延迟大大缩短

Cortex-M3 内核还设计了自动的现场保护与恢复,咬尾以及晚到异常处理机制等处理 措施,使得能缩短中断嵌套时的延迟时间,提高处理器高效响应中断流程。其咬尾中断 以及晚到中断异常概念说明如下。
(1) 咬尾中断:Cortex-M3 内核设计时为缩短中断延迟做了很多努力。为此新增了 “咬尾中断” (Tail-Chaining) 机制。当处理器在响应某异常时,如果又发生其他异 常,但它们优先级不够高,则被阻塞。

(2) 晚到异常: Cortex-M3 的中断处理还设计有另一个机制,它强调了优先级的作 用。这就是“晚到异常处理”。

  1. 中断可屏蔽

中断可屏蔽的含义是处理器既可以屏蔽优先级低于某个阈值的中断异常,也可全部屏蔽所有的中断异常。因此为中断可屏蔽, Cortex- M3处理器设置了BASEPRI、PRIMASK 和FAULTMASK 中断异常屏蔽寄存器组。

  1. 中断向量表的重定位

中断向量表的起始地址和偏移,主要目的是告诉处理器该向量表是位于FLASH 还 是RAM 存储区域。

Cortex-M3 的NVIC中断控制器允许向量表重定位,即从其他地址处开始定位各中 断异常向量。

  1. 中断挂起进程

挂起进程在操作系统中可以定义为暂时被淘汰出内存的进程。 因为计算机的资源是 有限的,在资源不足的情况下,操作系统需要对在内存中的程序进行合理的安排,其中 有的进程被暂时调离出内存,当条件允许的时候,会被操作系统再次调回内存,重新进 入等待被执行的状态,即就绪状态。系统在超过一定的时间对此挂起进程没有任何动 作 。

引起挂起的原因主要有:
(1) 终端用户的请求需要。 当终端用户在自己的程序运行期间发现有可疑问题时, 希望使自己的程序静止下来暂停执行。若此时进程正处于就绪状态而未执行,则该进程 暂不接受调度,以方便研究其执行情况或对程序进行修改。中断以及异常

(2) 父进程的请求需要。 有时父进程希望挂起自己的某个子进程,以便考察和 修改子进程,或者协调各子进程间的活动。

(3) 负荷调节的需要。 当实时系统中的工作负荷较重,已可能影响到对实时任 务的控制时,可由系统把一些不重要的进程挂起,以保证系统能正常运行。

(4) 操作系统的需要。 操作系统有时希望挂起某些进程,以便检查运行中的资 源使用情况或进行记账处理。

  1. 中断输入及其挂起和响应的过程的可能几种情况:

(1)在具体执行进程中,若当前中断优先级较低,该中断就被挂起并对其挂起状态
进行标注。即使后来中断源取消了此中断请求,在系统中它的优先级最高的时候,也会 因它的挂起状态而得到处理器响应。如果在中断响应前,其挂起状态被清除了,则中断 被撤销;
(2)在中断服务程序开始执行后,此中断进入了“活跃”状态,其挂起状态标志被

硬件自动撤销。在中断服务程序执行完毕并且返回后,才能对此中断的新请求予以响应。 新请求也由硬件自动挂起标志位。另外在此中断执行过程中也可把自己对应的中断重新 挂起 ;

Cortex-M3的中断响应序列包括:

(1) 入栈:

(2) 取向量:

(3) 更新寄存器:

Cortex-M3 的中断返回流程包括:

(1) PC 恢 复:

(2) 出 栈:

(3) 更 新NVIC寄存器:

Cortex-M3系统级中断与异常特点
  1. 复 位

在 处 理 器 复 位 状 态 后 ,Cortex-M3做 的 第 一 件 事 就 是 读 取 下 列 两 个 3 2 位 整 数 的 值

  1. Fault异常

Cortex-M3 内核正常工作时都是按照指令顺序执行的。当发生异常或者中断时,将打断正在执行的动作,进而执行异常或中断的服务程序。

异常类型分为复位 (Reset), 不可屏蔽中断(NMI), 硬件错误(HardFault), 中断处理错误包括:存储管理错 误(MemManageFault), 总线错误(BusFault), 用法错误(UsageFault), 系统调用(SVC), 可悬挂系统调用(PendSV), 系统节拍(SysTick) 等。在此主要讨论以下比较特
殊的Fault 异常如“硬件错误(Hard Fault)”。

  1. 中断处理错误。

(1)存储管理错误(Memory Manage Fault):

(2)总线错误(Bus Fault):

(3)用法错误(Usage Fault)

Cortex-M3 中断及异常嵌套与返回途径
  1. 中断和异常嵌套及使用注意事项

中断嵌套是指中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行的过程。

  1. 异常和中断返回途径

当异常中断服务程序执行完毕之后,需要一个“ 异常返回”动作流程,从而恢复先 前的系统状态,使被中断的程序继续执行。

  1. 中断返回时,通常流程有:

( 1 ) 执 行POP 指令以恢复现场;

( 2 ) 处 理 挂 起 的 异 常 ;

( 3 ) 执 行PUSH 指令保护现场。

  1. 咬尾中断机制

在处理器响应某些异常时,如果又发生其他异常,但它们优先级不够高,则它们会被阻塞。
原先push A (执行完A) pop A push B (执行完B) pop B
现在push A (执行完A、执行B) pop B

  1. 晚到中断机制
    Cortex-M 3的中断处理还有另一个高级中断机制,它强调了优先级的作用,被称为
    “晚到的异常处理”。 当Cortex-M3 对某异常的响应序列还处在早期:

入栈的阶段,尚未执行其他服务程序时。如果此时收到了更高优先级异常的请求,
则本次入栈就成了高优先级中断先执行了。

入栈后,将执行高优先级的异常服务程序。可见高优先级的异常虽然来晚了,却因 为优先级高使得服务程序被先处理,低优先级异常的入栈操作则变成了为高优先级异常的入栈。

STM32 处理器特点

  1. 处理器属于高性能处理器

许多指令都是单周期的,包括乘法相关指令

  1. 具有强大的中断处理功能

内建的嵌套向量中断控制器支持多达240条外部中断输入。

  1. 具有低功耗

Cor tex-M3 内核支持节能模式,可通过使用等待中断指令 (WFI) 和等待事件指令 (WFE), 内核可以进入睡眠模式,并且能以不同的方式唤醒。

  1. 拥有强大的位寻址操作

Cortex-M3 内核支持“位寻址带”操作。 相比过去51单片机,其位寻址机制的“威力大幅加强版”,字节不变的大端模式,并且支持非对齐的数据访问。

  1. 先进的Fault 处理机制

支持多种类型的异常和Faults, 使故障诊断更容易系统工作更可靠。

Cortex-A7 MPCore架 构

Cortex-A7 MPcore处理器支持1~4核,通常是和Cortex-A15 组成big.LITTLE 架构的。Cortex-A15作为大核负责高性能运算,比如玩游戏的,Cortex-A7负责普通应用,因为CortexA7省电。 Cortex-A7 本身性能也不弱,不要看它叫做Cortex-A7 但是它可是比Cortex-A8性能要强大,而且更省电。
在这里插入图片描述

除了User(USR) 用户模式以外,其它8种运行模式都是特权模式。
如果学过STM32和UCOS 、FreeRTOS就会知道, STM32只有两种运行模式,特权模式和非特权模式,但是Cortex-A 就有9种运行模式。

通用寄存器

·RO~R15 就是通用寄存器,通用寄存器可以分为以下三类:

·① 、未备份寄存器,即 RO~R7。

·②、备份寄存器,即 R8~R14。

·③ 、程序计数器 PC, 即 R15。

  1. 未备份寄存器

未备份寄存器指的是RO~R7 这8个寄存器,因为在所有的处理器模式下这8个寄存器都 是同一个物理寄存器,在不同的模式下,这8个寄存器中的数据就会被破坏。所以这8个寄 存器并没有被用作特殊用途。

  1. 备份寄存器

备份寄存器中的R8~R12这5个寄存器有两种物理寄存器,在快速中断模式下(FIQ) 它们对应着Rx_irq(x=812)物理寄存器,其他模式下对应着Rx(812) 物理寄存器。

备份寄存器R13一共有8个物理寄存器,其中一个是用户模式(User) 和系统模式(Sys) 共用的,剩下的7个分别对应7种不同的模式。

备份寄存器R14一共有7个物理寄存器,其中一个是用户模式(User) 、 系统模式(Sys)
和超级监视模式(Hyp) 所共有的,剩下的6个分别对应6种不同的模式。

  1. 程序计数器R15

备份程序计数器R15也叫做PC,R15 保存着当前执行的指令地址值加8个字节,这是因
为ARM 的流水线机制导致的。 ARM 处理器3级流水线: 取指->译码->执行,

  1. 程序状态寄存器

因 为User和Sys这两个模式不是异常模式,所以并没有配备SPSR, 因此不能在User和Sys模式下访问SPSR, 会导致不可预知的结果。由于SPSR 是CPSR 的备份,因此SPSR 和
CPSR的寄存器结构相同

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐