Cortex-M3/M4架构——基本介绍

  • 1. 概述
  • 2.Cortex-M架构
  • 3. Cortex-M3/M4-架构组成部分
  • 3.1 编程模型
  • 3.1.1 操作模式状态
  • 3.1.2 寄存器
  • 3.2 存储器系统
  • 3.3 异常和中断
  • 3.4 复位
  • 参考文献


1. 概述

什么是架构?百度百科说软件架构是系统的草图,用来指导软件系统的设计。
我理解,就像公司组织架构一样,根据需求目标,确定整体框架,框架里的每一部分都有各自的职能,部分之间有联系。架构规定了,构成部分,每个部分该做什么事,部分之间如何沟通。
Cortex-M3/M4处理器都是基于ARM-v7架构。

2.Cortex-M架构

Cortex-M架构(架构有的称为体系结构)包括ARM-v6,ARM-v7,ARM-v8和ARM-v8.1,处理器对应的架构如下表。

用户登录4A架构 4a架构 百度百科_M4


对比几种架构如下:

用户登录4A架构 4a架构 百度百科_M3_02


Cortex-M架构更为详细的信息参照官网:

https://developer.arm.com/architectures/cpu-architecture/m-profile

3. Cortex-M3/M4-架构组成部分

架构将从几个方面进行介绍,包括编程模型,存储器,中断,复位等方面进行,相当于针对组织架构的各部分分别介绍。

3.1 编程模型

编程模型,我理解是一个编程的模板。编程模型将从操作模式状态和寄存器两个方面介绍。

3.1.1 操作模式状态

Cortex-M3/M4处理器有两种操作状态和模式。

1.操作状态

包括调试状态和Thumb状态。

调试状态:处理器被暂停,进入此状态,停止指令执行。

Thumb状态:执行Thumb指令,进入此状态。

Cortex-M处理器在启动后默认处于特权线程模式以及Thumb状态。

用户登录4A架构 4a架构 百度百科_寄存器_03


2. 操作模式

操作模式有两种:处理模式和线程模式。

线程模式:执行普通代码

处理模式:主要执行中断服务程序等异常处理。处理模式下,具有特权访问等级(特权访问等级可访问处理器的所有资源,非特权访问等级某些状态不能访问)。

3.1.2 寄存器

这里的寄存器指的是处理器内核里的寄存器,用来对数据进行处理和控制。Cortex-M3/M4处理器的寄存器由寄存器组特殊寄存器浮点寄存器组成。

1)寄存器组

寄存器组有13个32位通用寄存器,3个特殊寄存器,总共16个寄存器。

用户登录4A架构 4a架构 百度百科_架构_04


栈指针:R13,通过PUSH/POP实现栈存储的访问。栈指针包括两种:主栈指针(MSP)和进程栈指针(PSP),由CONTROL寄存器决定。

MSP:默认的栈指针。用于处理模式。

PSP:用于线程模式。

链接寄存器:R14,用于调用函数或子程序时保存返回地址

程序计数器:可读可写。

2)特殊寄存器

包括程序状态寄存器、中断/异常屏蔽寄存器、控制寄存器。

用户登录4A架构 4a架构 百度百科_寄存器_05


程序状态寄存器包括以下三个寄存器

  • 应用状态寄存器(APSR)
  • 执行状态寄存器(EPSR)
  • 中断状态寄存器 (IPSR)

下图是以上状态寄存器位数的定义。

用户登录4A架构 4a架构 百度百科_架构_06


用户登录4A架构 4a架构 百度百科_M3_07


中断/异常屏蔽寄存器:

  • PRIMASK: 1位宽的中断屏蔽寄存器,异常优先级最高,为0。
  • FAULTMASK:故障屏蔽寄存器,异常优先级为1。
  • BASEPRI:根据优先级屏蔽。

CONTROL寄存器决定了

  • 栈指针的选择
  • 线程模式的访问,是特权还是非特权。

3)浮点寄存器

主要是指Cortex-M4浮点寄存器。主要包括浮点单元寄存器组和浮点状态寄存器。

用户登录4A架构 4a架构 百度百科_用户登录4A架构_08

3.2 存储器系统

特点如下:

  • 4GB寻址空间(32位)
  • 被定义的存储器映射
  • 支持大小端存储
  • 存储器保护单元(MPU)
  • 支持非对齐传输
  • 写缓冲

关于存储器映射,为了方便Cortex-M不同系列的移植和重用
4GB的存储空间被划分为以下几种,如下图所示:

  • 代码访问
  • 数据访问
  • 外设
  • 内部控制和调试部件

3.3 异常和中断

打断正常执行程序的事件就是异常,中断是异常的一种。异常源有多个,如下所示:

用户登录4A架构 4a架构 百度百科_M3_09


NVIC:Nested vectoredinterrupt controller嵌套向量中断控制器,作用是管理异常,比较中断优先级,确定异常入口以及屏蔽中断等。

下图是异常类型总结表

用户登录4A架构 4a架构 百度百科_M4_10

用户登录4A架构 4a架构 百度百科_用户登录4A架构_11

3.4 复位

复位类型有三种:

  • 上电复位。复位微控制器的所有
  • 系统复位。只复位处理器和外设,调试部分不复位
  • 处理器复位。
    复位流程如下:
  • 用户登录4A架构 4a架构 百度百科_用户登录4A架构_12

  • 先读主栈指针2个字,再读复位向量的地址。