ARM Cortex-M架构基本概念

Overview

Arm Cortex-M系列处理器为32位RISC(精简指令集)处理器,具有:

  • 32-bit 寄存器
  • 32-bit 内部数据通道
  • 32-bit 总线通道
    Cortex-m0 为ARMv6架构,具有三级流水线结构(取值,译码,执行)— 处理器采用的是冯诺依曼结构,数据和指令共享一个总线接口和存储器,即取指令和数据访问不可同时执行。
    支持Thumb指令集(绝大部分16-bit Thumb ISA 和32-bit Thumb-2 ISA),共有56种基本指令,分别包括对memory的读写访问,算数指令和逻辑操作指令。
    存储器系统采用了32位寻址,具有最大4GB的寻址空间,存储器映射是一致的,空间内分别包括程序代码,数据,外设和处理器内的调试支持部件。
    嵌套向量中断控制器(NVIC)为cortex-m处理器内部的中断控制器,可编程且其寄存器经
    过存储器映射,NVIC 地址固定,编程模型对所有的 cortex-m 处理器都是一致的。

架构

ARM Cortex-M架构基本概念_第1张图片
Cortex-m0微处理器架构如上图所示,分别包括处理器核,NVIC,调试子系统,WIC,AHB-lite 总线接口以及连接这些单元的内部总线系统。

处理器核负责对数据进行处理,该处理器包括ALU(算数逻辑单元),控制逻辑,内部寄存器,数据通路。
ARM Cortex-M架构基本概念_第2张图片

共“取指 - 译码 - 执行”三个阶段,指令通道采用三级流水线,可提供指令通道的吞吐量和运行效率。

处理器内部的寄存器组和特殊寄存器

寄存器组主要用于在执行指令过程中用于保存和处理中间变量和指令地址,由于这些寄存器处于处理器内部,所以访问速度较快;采用加载-保存结构,例如如果想处理某个处于存储器中某个地址上的数据,需要先把该数据加载到寄存器中,在处理器内部处理后再写回该存储器中。
ARM Cortex-M架构基本概念_第3张图片

通用寄存器组

通用寄存器包括低寄存器(R0-R7)和高寄存器(R8-R12):
(1)R0-R7可以被任意指令访问
(2)R8-R12不可以被某些thumb指令访问

堆栈指针(SP)

R13寄存器可以作为stack pointer,SP用于记录当前堆栈的地址,当在不同任务中切换时,SP用于保存上下文(一般来说,SP寄存器中的地址是当前正在执行的指令所在的地址)Cortex-m0中可以将SP细化成MSP和PSP:在应用程序中,需要特权访问时使用MSP,例如异常访问和系统内核访问;PSP用于执行一般的程序代码。
处理模式:执行中断服务程序(ISR)等异常处理,在处理模式下,处理器总是具有特权访问等级。
线程模式:执行普通的应用程序代码,处理器可以处于特权访问等级/非特权访问等级,实际操作权限由特殊寄存器CONTROL控制。

LR(linker registers)

R14可用于链式寄存器,主要功能:(1)用于保存子程序或者一个程序调用的返回地址 (2)当程序调用结束后,将LR中的返回地址加载到程序计数器(PC)中。
(LR是用来保存在程序调用前所在的地址,即保存返回地址,保证程序在结束函数调用后回到原有的进程中,可以往后按顺序继续执行程序代码)

特殊寄存器

组合程序状态寄存器xPSR:
用于提供执行程序的信息,及ALU的标志位,包括三个寄存器:
(1)应用程序状态寄存器(APSR):保存算数逻辑单元(ALU)操作后所产生的标志位,即几乎所有的数据处理都会改变APSR,N(negative)/Z(zero)/C(carry)/V(overflow)则反应了运算结果。
(2)中断程序状态寄存器(IPSR):保存当前正在执行的中断编号,可用于在调试时识别当前产生的中断类型。
(3)执行程序状态寄存器(EPSR):只包括T标志位,表示是否处于thumb状态,cortex-m0只支持Thumb状态,因此T位恒为1。
ARM Cortex-M架构基本概念_第4张图片
这三个寄存器可以作为一个xPSR来访问

中断屏蔽特殊寄存器IMSR:
IMSR中包括一位PRIMASK,当PRIMASK = 1时,除了NMI和hard fault外,将屏蔽掉其他所有中断
ARM Cortex-M架构基本概念_第5张图片
特殊寄存器CONTROL:
CONTROL寄存器用来选择堆栈指针:CONTROL[1] = 1——PSP / CONTROL[1] = 0 —— MSP
ARM Cortex-M架构基本概念_第6张图片

你可能感兴趣的:(ARM-M0架构及验证,架构,arm开发)