完整wordCORTEXM4知识点总结推荐文档doc.docx
- 文档编号:6768019
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:50
- 大小:39.40KB
完整wordCORTEXM4知识点总结推荐文档doc.docx
《完整wordCORTEXM4知识点总结推荐文档doc.docx》由会员分享,可在线阅读,更多相关《完整wordCORTEXM4知识点总结推荐文档doc.docx(50页珍藏版)》请在冰豆网上搜索。
完整wordCORTEXM4知识点总结推荐文档doc
Cortex-M4内核知识点总结
余
明
Cortex-M4内核知识点总结.................................................................................
1
1ARM处理器简介................................................................................................
4
2架构...................................................................................................................
5
2.1
架构简介.................................................................................................
5
2.2
编程模型.................................................................................................
5
2.3
存储器系统.............................................................................................
8
2.4
复位和复位流程...................................................................................
12
3指令集.............................................................................................................
14
3.1CM4指令集特点...................................................................................
14
3.2
Cortex-M处理器间的指令集比较.......................................................
14
3.3
汇编指令简要介绍..............................................................................
14
3.3.1
处理器内传送数据...................................................................
14
3.3.2
存储器访问指令.......................................................................
15
3.3.3
算数运算...................................................................................
16
3.3.4
逻辑运算...................................................................................
17
3.3.5
移位...........................................................................................
17
3.3.6
异常相关指令...........................................................................
17
4存储器系统.....................................................................................................
18
4.1
存储器外设..........................................................................................
18
4.2
Bootloader.............................................................................................
18
4.3
位段操作...............................................................................................
19
4.4
存储器大小端......................................................................................
19
5异常和中断.....................................................................................................
21
5.1
中断简介..............................................................................................
21
5.2
异常类型...............................................................................................
21
5.3
中断管理..............................................................................................
22
5.4
异常或中断屏蔽寄存器......................................................................
23
5.4.1PRIMASK......................................................................................
23
5.4.2FAULMASK(M0中无)23
5.4.3BASEPRI(M0中无)23
5.5中断状态及中断行为23
5.5.1中断状态23
5.5.2中断行为24
5.6各Cortex-M处理器NVIC差异26
6异常处理28
6.1C实现的异常处理28
6.2栈帧28
6.3EXC_RETURN29
6.4异常流程30
6.4.1异常进入和压栈30
6.4.2异常返回和出栈31
7低功耗和系统控制特性32
7.1低功耗模式32
7.1SysTick定时器32
8OS支持特性34
8.1OS支持特性简介34
8.2SVC和PendSV34
8.3实际的上下文切换35
1ARM处理器简介
ARM处理器的种类很多,从手机上的高端处理器芯片到面向微控制器的芯
片,都有ARM的身影。
2011年基于ARM处理器的芯片的出货量已经到达79亿。
这一章首先对ARM处理器有个简单的了解。
在早期的时候,ARM处理器使用后缀表明特性。
例如ARM7TDMI,T表示支持Thumb指令,D表示JTAG,M表示快速乘法器,I则表示嵌入式ICE模块。
近几年,ARM改变处理器的命名方式,统一使用了Cortex处理器的名称。
Cortex处理器下分为三类:
·Cortex-A系列:
需要处理高端嵌入式系统等复杂应用的应用处理器
·Cortex-R系列:
实时、高性能的处理器,面向较高端的实时市场
·Cortex-M系列:
面向微控制器和混合信号设计等小型应用,注重低成本、低功耗。
不同系列的处理器使用不同版本的架构
Cortex-A系列
ARMv7-A架构
Cortex-R系列
ARMv7-R架构
Cortex-M系列
ARMv7-M、ARMv6-M
在Cortex-M系列中,进一步都处理器进行了划分
处理器
功能
架构
Cortex-M0、Cortex-M0+
低功耗
ARMv6-M
Cortex-M1
FPGA
ARMv6-M
Cortex-M3
微控制器
ARMv7-M
Cortex-M4
增加DSP
ARMv7E-M
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字节对齐。
R0
R1
R2
R3
R4
R5
R5
R6
R7
R8
R9
通用寄存
R10
器
R11
R12
栈指针
R13(SP)
链接寄存器LR
R14
程序计数器PC
R15
3链接寄存器(LR)R14
用于函数或子程序调用时返回地址的保存,在异常中则用来保存进异常前状
态信息,包括系统模式、栈指针模式等。
异常返回时参考LR中的信息返回到相应状态。
4程序计数器(PC)R15
R15为程序计数器,读操作返回当前地址加4,写操作引起跳转。
2.2.3特殊寄存器
特殊寄存器有三类:
程序状态寄存器、中断/异常屏蔽寄存器、处理器控制寄存器。
1程序状态寄存器:
应用PSR(APSR)、执行PSR(EPSR)、中断PSR(IPSR)。
三个寄存器可以单独访问,也可以组合到一个寄存器中访问。
31
26
23
20
16
10
8
0
NZ
CVQICI/IT
T
GE[0-3]
ICI/IT
ISRNUM
在APSR中包含N(负标志)、Z(零标志)、C(进位标志)、V(溢出标志)、Q(饱和标志)和GE(大于或等于标志,只在M4中有)。
IPSR中是中断号,只读。
EPSR中,T为表示Thumb状态,由于M4支持Thumb状态,不支持ARM状
态,T位始终为1。
ICI是中断继续指令位,保存的是中断被打断时的信息。
IT指令时IF-THEN指令,用于条件执行。
2PRIMASK、FAULTMASK、和BASEPRI寄存器:
这三个寄存器只能在特权模式下使用。
PRIMASK可屏蔽除NMI和HardFault之外的所有异常。
FAULTMASK还可屏蔽HardFault。
BASEPRI可以根据设置屏蔽低优先级的中断,可控制8个或16个中断,相应的改寄存器的宽度为3位或4位。
3CONTROL寄存器
CONTROL寄存器主要有以下几项作用:
·线程模式下的访问等级
·指针的选择
·当前代码是否使用了浮点单元
分别对应了寄存器的低三位
位
功能
nPRIV(第0位)
0
对应特权等级,1
为非特权等级
SPSEL(第1位)
0
对应主栈指针,1
为进程栈指针,处理模式下始终为0。
FPCA(第2位)0未使用浮点,1使用了浮点
2.2.4浮点寄存器
1S0-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区域)
·数据访问(如SRAM区域)
·外设(如外设区域)
系统0.5GB
外部设备1GB
外部RAM1GB
外设0.5GB
SRAM0.5GB
CODE0.5GB
某款芯片的存储器映射分配
0xFFFF_FFFF
0xF000_0000
0xE000_0000
0x5000_0000
0x4010_0000
0x4000_0000
0x3000_0000
0x2000_0000
0x60_0000
0x0000_0000
Reserved
PrivatePeripheralBus
Reserved
APBBRGdevice
FLASHCTRL
32KBy
DMA
tes
Reserved
SRAM8KBytes
Reserved
FLASHMEMORY
128K+4KFLASH
PWMregister
0x50F0_0000
GPIOregister
0x50D0_0000
Analogcontrol
(ADC/TP/Analog
Reg/1ksram)
0x50C0_0000
IOcontrol
0x50B0_0000
7816register
0x5090_0000
SPI3register
0x5073_0000
SPI2register
0x5072_0000
SPI1register
0x5071_0000
SPI0register
0x5070_0000
Timer_2register
0x5062_0000
Timer_1register
0x5061_0000
Timer_0register
0x5060_0000
WDTregister
0x5050_0000
RTCregister
0x5040_0000
CRCregister
0x5030_0000
UART3register
0x5023_0000
UART2register
0x5022_0000
UART1register
0x5021_0000
UART0register
0x5020_0000
I2C_1register
0x5011_0000
I2C_0register
0x5010_0000
SCU
(clock
Reset
Pmu
calendar)
0x5000_0000
一般Code放在Flash当中,数据放在RAM中。
数据在RAM存放有一定的顺序,可以分为数据段,BSS段、堆和栈区域。
·数据段,存储在内存的底部,包含初始化的全局变量和静态变量。
·BSS段,未初始化的数据。
·堆,C函数自动分配存储器区域,例如alloc()和malloc()。
·栈,用于临时数据存储,局部变量,函数调用
存储器栈(向下增
长)
堆(向上增堆(向上增
长)
长)
BSS段
数据段
0x20000000
2.3.3栈存储
同几乎所有的处理器架构一样,Cortex-M处理器在运行时需要栈存储和栈指
针R13。
ARM处理器将系统主存储器用于栈空间操作,使用PUSH指令往栈中存储数据以及POP指令从栈中提取数据。
处理器使用的是满递减的模型,栈指针是向下增长的。
处理器启动后,SP被设置为栈存储空间的最后的位置,也就是最低位置,PUSH时,SP指针首先减小,然后将数据压入栈中。
POP的时候相反,先将当前SP所指的数据出栈,然后再修改SP,SP此时增大。
可用下面两幅图加以理解,
PUSH操作
栈空间
寄存器
0x12345678
0x99999999R13(SP)
0x12345678R13(SP)
POP操作
栈空间
0x99999999R13(SP)
R13(SP)
寄存器
0x12345678
栈中主要用于:
·存储局部变量
·异常产生时保存处理器状态(LR、xPSR)和寄存器数值
·函数调用时
2.4复位和复位流程
对于典型的Cortex-M处理器,复位类型有三种:
·上电复位。
复位微控制器中所有部分。
·系统复位。
只会复位处理器和外设,不包括处理的调试支持部件
·处理器复位。
只复位处理器。
在复位后以及处理器开始执行程序前,处理器会从存储器中读出头两个字节。
第一个字表示主栈指针的初始值。
第二个字代表复位处理起始地址的复位向量。
处理器读出这两个自己后,就会将这些数值赋给
MSP和PC。
读地址
读地址
读取复位向量
0x00000000
0x00000004
表示的地址
取MSP初始
取复位向
取第一条指令
复位
量
值
时间
之前在栈存储时讲到过,Cortex-M处理器的栈操作时基于满递减的,所以S
P的初始值应该设置在栈顶的位置。
例如,若存储器区域为0x20007C000~0x20007FFF(1KB),初始的栈指针就应该为0x20008000。
另外,对于Cortex-M处理器,向量表中向量地址的最低位应该为1,以代表他们为Thumb状态。
对于下图中的例子,复位向量为0x101,而启动代码是从0
x100开始的。
在取出复位向量后。
Cortex-M处理器就可以从复位向量地址处执行程序,并开始正常操作。
其他存储器
0X20008000
0X20007FFC第一个压栈顶
0X20007FF8第二个压栈顶
0X20000000SRAM起始地址
启动代码
0X00000100
其他异常向量
0X000000040X00000101
0X000000000X20008000
SP初始值
复
位
向
量
3指令集
CORTEX-M4使用的是Thumb-2指令集,不支持ARM指令集,Thumb指令集是ARM指令集的子集,但是Thumb-2技术已经不再支持ARM状态。
CORTEX-M处理器间的一个区别就是指令集特性。
为了将回路面积降到最低,CORTEXM0、CORTEXM0+、CORTEXM1处理器只支持多数16位指令和部分32位指令,CORTEX-M3支持的32位指令更多。
CORTEX处理器支持剩下的SIMD(单指令多数据)等D
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 wordCORTEXM4 知识点 总结 推荐 文档 doc
![提示](https://static.bdocx.com/images/bang_tan.gif)