CORTEX-M4知识点总结

发布时间 : 星期五 文章CORTEX-M4知识点总结更新完毕开始阅读

2架构

2.1架构简介

Cortex-M3和Cortex-M4处理器都是基于ARMv7-M架构。最初ARMv-7M架构是随着Cortex-M3处理器一同引进的,而在Cortex-M4发布时,架构中又额外增加了新的指令和特性,改进后的架构有时也被称为ARMv7E-M。

2.2编程模型

2.2.1操作模式和状态

Cortex-M4处理器包括两种操作状态和模式,还有两种访问等级。 1. 操作状态

· 调试状态:处理器被暂停后,就会进入调试状态,比如利用调试器触发断点,单步执行等。 ·Thumb状态:处理器执行程序代码,它就是处在Thumb状态,因为Cortex-M4用的是Thumb指令,所以称为Thumb状态,并且在Cortex-M处理器中已经不支持ARM指令,也就不存在ARM状态。 2. 操作模式

· 处理模式:执行中断服务程序等异常处理。在处理模式下,处理器总是具有特权访问等级。 · 线程模式:执行普通的程序代码。 3. 访问等级

· 特权访问等级:可以访问处理器中的所有资源。

· 非特权访问等级:有些存储器区域无法访问,有些操作也无法使用。

Thumb状态处理模式异常请求启动线程模式(特权等级)处理模式执行异常处理执行异常处理异常请求线程模式(非特权等级)调试事件调试状态(处理器停止指令执行)解除调试软件转换

访问等级有特殊寄存器CONTROL控制。软件可将处理器从特权访问等级转换至非特权访问等级,但反之无法直接转换,需要借助异常机制。

处理器的操作模式和状态可由图1.1来表示,在上电后,默认处于特权线程模式下的Thumb状态。

2.2.2 寄存器

对于ARM架构来讲,处理存储器中的数据时,需将其从存储器加载到寄存器中,处理完毕后,若有必要,还可以再写回存储器。这种方式被称作“加载-存储架构”(LOAD-STORE)。

Cortex-M4处理器的寄存器组中有16个寄存器,其中包括13个通用寄存器和3个有特殊用途的寄存器。

1 通用寄存器R0-R12

R0-R7被称作低寄存器,许多16位指令只能访问低寄存器。R8-R12称作高寄存器,可用32位指令和几个16位指令访问。R0-R12初始值未定义。

2 栈指针R13

R13为栈指针,可通过PUSH和POP操作实现栈存储的访问。栈指针包括两个:主栈指针MSP和进程栈指针PSP。MSP为默认指针,复位后或处理模式时只能是MSP,而PSP只能在线程模式使用。栈指针的选择有CONTROL寄存器控制。

MSP和PSP的最低两位必须是0,也就是栈指针的地址操作必须4字节对齐。

R0R1R2R3R4R5R5R6R7R8R9R10R11R12R13(SP)R14R15通用寄存器栈指针链接寄存器LR程序计数器PC

3 链接寄存器(LR)R14

用于函数或子程序调用时返回地址的保存,在异常中则用来保存进异常前状态信息,包括系统模式、栈指针模式等。异常返回时参考LR中的信息返回到相应状态。

4 程序计数器(PC)R15

R15为程序计数器,读操作返回当前地址加4,写操作引起跳转。

2.2.3 特殊寄存器

特殊寄存器有三类:程序状态寄存器、中断/异常屏蔽寄存器、处理器控制寄存器。

1 程序状态寄存器:应用PSR(APSR)、执行PSR(EPSR)、中断PSR(IPSR)。三个寄存器可以单独访问,也可以组合到一个寄存器中访问。

31N Z C V Q26ICI/IT T2320GE[0-3]16ICI/IT108ISR NUM0

在APSR中包含N(负标志)、Z(零标志)、C(进位标志)、V(溢出标志)、Q(饱和标志)和GE(大于或等于标志,只在M4中有)。

IPSR中是中断号,只读。

EPSR中,T为表示Thumb状态,由于M4支持Thumb状态,不支持ARM状态,T位始终为1。ICI是中断继续指令位,保存的是中断被打断时的信息。IT指令时IF-THEN指令,用于条件执行。

2 PRIMASK、FAULTMASK、和BASEPRI寄存器:这三个寄存器只能在特权模式下使用。PRIMASK可屏蔽除NMI和HardFault之外的所有异常。FAULTMASK还可屏蔽HardFault。BASEPRI可以根据设置屏蔽低优先级的中断,可控制8个或16个中断,相应的改寄存器的宽度为3位或4位。

3 CONTROL寄存器

CONTROL寄存器主要有以下几项作用: · 线程模式下的访问等级 · 指针的选择

· 当前代码是否使用了浮点单元 分别对应了寄存器的低三位

位 功能 nPRIV(第0位) 0对应特权等级,1为非特权等级 SPSEL(第1位) 0对应主栈指针,1为进程栈指针,处理模式下始终为0。

FPCA(第2位) 0未使用浮点,1使用了浮点 2.2.4 浮点寄存器

1 S0-S31和D0-D15

S0-S31都为32位寄存器,也可以D0-D15的方式成对访问,但M4不支持双精度浮点运算,只是可以传输双精度数据。

2 浮点状态和控制寄存器(FPSCR) FPSCR两个功能

· 提供浮点运算结果的状态信息,如负标志、进位标志等。 · 定义一些浮点运算动作,如何舍入等 3 经过存储器映射的浮点单元控制寄存器(CPACR)

该寄存器经过了映射,也就是说需要通过通用寄存器加载进行设置,寄存器的功能是可以设置浮点单元的访问权限,拒绝访问、特权访问,全访问。

2.3存储器系统

2.3.1 存储器系统特性

· 4GB线性地址空间

· 架构定义的存储器映射。4GB的存储器空间被划分为多个区域,用于预定义的存储器和外设。 · 支持大端和小端的存储器系统。 · 位段访问。 · 写缓冲

· 存储器保护单元MPU · 非对齐传输支持

2.3.2 存储器映射

CORTEX-M处理器的4GB地址空间被分为了多个存储器区域,如图所示。区域根据各自典型用法进行划分,他们主要用于:

· 程序代码访问(如CODE区域)

联系合同范文客服:xxxxx#qq.com(#替换为@)