第二章ARM_Cortex-M3内核结构
ARM Cortex-M3处理器简介
ARM 白皮书
——ARM Cortex-M3 处理器简介 Shyam Sadasivan October 2006
广州周立功单片机发展有限公司 地址:广州市天河北路 689 号光大银行大厦 15 楼 F1
ARM 白皮书
目录
目录
第 1 章 简介 ....................................................................................................................................1 1.1 通过提高效率来提高性能................................................................................................1 1.2 快速有效的应用程序开发源于简易的使用方法 ............................................................1 1.3 针对敏感市场降低成本和功耗........................................................................................1 1.4 集成的调试和跟踪功能推进上市的步伐........................................................................2 1.5 从ARM7TM升级为Cortex-M3 可获取更佳的性能和功效 ..............................................2
第 5 章 针对无线网络实现了更低的功耗...................................................................................15 5.1 时钟门控和内置睡眠模式可以降低功耗......................................................................15 5.2 通过灵活的工作方式来增加处于睡眠模式的时间 ......................................................15 5.3 真正实现省电..................................................................................................................16
第2章--Cortex-M3-内核原理3--Thumb-2指令系统PPT优秀课件
1. 概述(续)
• Thumb-2并不是Thumb的升级 • 它是另起炉灶,继承并集成了传统的Thumb指
令集和ARM指令集的各自优点,可以完全代 替Thumb和原先的ARM指令集, • 是Thumb指令集和ARM指令集的一个超集。 • Thumb-2指令集体系架构,无需处理器进行工 作状态的显示切换,就可运行16位与32位混合 代码。 • 与ARM体系架构相比,速度提高大约15%到 20%。
11
2. Thumb-2指令集分类(续)
• 基于Thumb-2指令体系架构编写的代码在执 行 过 程 中 , 处 理 器 不 存 在 ARM 工 作 状 态 和 Thumb工作状态之间的切换。 • 那么,处理器必须能够自动识别当前指令长 度,是16-bit还是32-bit,以正确地执行Thumb2指令代码,它是如何识别呢?
14
3. 统一的汇编语言
• ARM指令集体系架构下,ARM指令与Thumb 指令分属不同的程序模块,由不同的汇编 器对其分别进行汇编。
• Thumb-2指令集体系架构下, 16bit指令与 32bit指令可以在同一程序模块出现,并由 同一汇编器对其进行汇编。
15
Toolchain flow with ARM7
(1)数据传送指令
Cortex-M3 中的数据传送类型包括:
① 两个寄存器间传送数据 ② 寄存器与特殊功能寄存器间传送数据 ③ 把一个立即数加载到寄存器
指令 MOV <Rd>, #<immed_8> MOV <Rd>, <Rn> MOV <Rd>, <Rm> MVN <Rd>, <Rm> MOV{S}.W #<modify_constant(immed_12)> MOV{S}.W <Rd>, <Rm>{, <shift>} MOVT.W <Rd>, #<immed_16>
第2章cortex-M3内核
Cortex-M3 处理器
集成了内核和高级系统外设的分级处理器 Cortex-M3 内核 哈佛体系结构 拥有分支预测功能的三级流水线 Thumb®-2 指令集和传统的 Thumb指令集 带有 硬件除法和 单信号周期乘法的ALU Cortex-M3 处理器 Cortex-M3 内核 可配置的中断控制器 总线矩阵 先进的调试组件 可选择的 MPU & ETM
(irq) 用于通用中断处理
管理 (svc)
中止 (abt) 未定义 (und)
操作系统保护代码
用于支持虚拟内存和/或 存储器保护 支持硬件协处理器的软件 仿真
系统复位和软件中断响应时进入 此模式
在ARM7TDMI没有大用处 未定义指令异常响应时进入此模 式
特权模式
处理器模式 用户 系统 (usr) (sys) 系统 快中断 (sys) 快中断 中断 (fiq) (fiq) (irq) 说明 正常程序工作模式 用于支持操作系统的特权 任务等 备注 不能直接切换到其它模式
未定义指令异常响应时进入此模 式
异常模式
处理器模式 用户 (usr) 系统 快中断 (sys) (fiq) 说明 正常程序工作模式 备注 不能直接切换到其它模式
中断 (irq) 快中断 (fiq) 管理 中断(svc) (irq) 管理 中止 (svc) (abt) 中止 未定义 (abt) (und) 未定义 (und)
非特权模式:
对有些资源的访问受到限制或不允许访问
处理器模式
处理器模式 用户 (usr) 系统 (sys) 快中断 中断 (fiq) 说明 正常程序工作模式 用于支持操作系统的特权 任务等 支持高速数据传输及通道 处理 备注 不能直接切换到其它模式 与用户模式类似,但具有可以直 接切换到其它模式等特权 FIQ异常响应时进入此模式 IRQ异常响应时进入此模式
第2章 Cortex-M3 内核原理3--Thumb-2指令系统
3. 统一的汇编语言
• ARM指令集体系架构下,ARM指令与Thumb 指令分属不同的程序模块,由不同的汇编 器对其分别进行汇编。
• Thumb-2指令集体系架构下, 16bit指令与 32bit指令可以在同一程序模块出现,并由 同一汇编器对其进行汇编。
Toolchain flow with ARM7
ARM7TDMI
r0
r1
r2
r3
State Change
r4 r5
eg. ISR entry/exit
r6
r7
r8
r8
r9
r9
r10
r10
r11
r11
rr1134r1((2slpr))rr1134r1((2slrrpr11))34
(spr)13 (lrr)14
r13 r(1s3p)(srp1)4 r(1l4r)(lr)
2. Thumb-2指令集分类(续)
• 基于Thumb-2指令体系架构编写的代码在执 行 过 程 中 , 处 理 器 不 存 在 ARM 工 作 状 态 和 Thumb工作状态之间的切换。
• 那么,处理器必须能够自动识别当前指令长 度,是16-bit还是32-bit,以正确地执行Thumb2指令代码,它是如何识别呢?
4. Cortex-M3常用的Thumb-2指令集(续)
(1)数据传送指令(续)
MRS/MSR 指令中的Sreg寄存器:
符号 IPSR EPSR APSR IEPSR IAPSR EAPSR PSR MSP PSP PRIMASK BASEPRI BASEPRI_MAX FAULTMASK CONTROL
当前服务中断号寄存器
功能
执行状态寄存器。它里面含T 位,在CM3 中T 位必须是1。 上条指令结果的标志
第2章 ARM Cortex-M3技术
跳转和控制指令
相关的跳转和控制指令包括B、BL、BLX、BX、 CBNZ、CBZ、IT、TBB、TBH指令; B{cond} label BL{cond} label BX{cond} Rm BLX{cond} Rm 详细信息参考《STM32W108嵌入式无线传感器网 络》2.2节。
移位操作
直接使用指令ASR、LSR、LSL、ROR和 RRX,移位结果写入指定的目标寄存器 寄存器移位结果作为第二操作数被指令使用
ASR:
LSR:
LSL:
ROR:
RRX:
地址对齐
字对齐的地址存取访问被用于一个字、两个字和更多 的字的存取访问,半字对齐的地址存取访问用于半字 的存取访问,字节的访问始终是对齐的。 Cortex-M3处理器只对以下指令支持非对齐的存取访 问: LDR、LDRT LDRH、LDRHT LDRSH、LDRSHT STR、STRT STRH、STRHT
1. 采用新的Thumb-2指令集架构的Cortex-M3处 理器,与执行Thumb指令的处理器相比,在效率方面 有哪些提高? 2. Cortex-M3处理器是多少位的?有哪些寄存器? 3. APSR寄存器标志位如何被指令操作影响,请举例 说明。 4. Cortex-M3处理器有哪些移位操作指令?针对每 种移动操作画出一个移位操作过程示意图。 5. 指令LDREX、LDREXB、LDREXH的一般格式 是什么?各举一条指令,并说明其具体含义。
乘法和除法指令
MUL执行乘法,MLA执行乘法累加,MLS执行乘法 扣除,都是用32位的操作数,保存32位的结果。 句法表达式: MUL{S}{cond} {Rd,} Rn, Rm MLA{cond} Rd, Rn, Rm, Ra MLS{cond} Rd, Rn, Rm, Ra
第2章cortex-m3体系结构
处理模式
始终使用 MSP
线程模式
可用 MSP 也可用 PSP
SP_process SP_main
进程堆栈指针
主堆栈指针
通过MSR指令修改CONTROL[1]进行堆栈切换
控制寄存器的第1位 CONTROL[1] 1 进程堆栈
0
主堆栈
线程模式 进程堆栈
线程模式 主堆栈
一般通过中断返回进行堆栈切换,MSR指令切换用的极少。
3、链接寄存器(LR/R14)
R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13(SP) R14(LR) R15(PC) XPSR
链接寄存器 (LR)
在执行分支(branch)和链接(BL)指令 或带有交换的分支和链接指令(BLX) 时,LR用于保存PC的返回地址。
SLEEPING SLEEPDEEP
中断
NVIC 睡眠
调试
CM3内核
指令
数据
MPU
Cortex-M3
触发
ETM
TPIU
跟踪端口 串行线 或多管脚
FPB
专用外设总线(内部)
第2章cortex-m3体系结 构
第2章 Cotex-M3体系结构
主要内容
一.CM3微处理器核结构 二.处理器的工作模式和状态 三.寄存器、总线接口 四.存储器的组织与映射 五.指令集、流水线、异常和中断 六.存储器保护单元 七.STM32微控制器概述
2.1 CM3微处理器核结构
➢ CM3微处理器核结构 ➢ CM3微处理器特点
2.1.4 CM3微处理器的特点---调试方面
当内核正在运行、被中止、或处于复位状态时, 能 对 系 统 中 包 括 Cortex-M3 寄 存 器 组 在 内 的 所 有存储器和寄存器进行调试访问。
第二章ARM_Cortex-M3内核结构
第二章ARM Cortex-M3内核结构教学目标通过本章的学习,要理解ARM Cortex-M3内核结构,结合MCS-51单片机,分析其优缺点;掌握ARM Cortex-M3内核寄存器组织、处理器运行模式、存储器映象、异常及其操作;了解存储器保护单元及应用;了解ARM Cortex-M3调试组件的工作原理及应用。
本章是ARM Cortex-M3微控制器体系结构分析,内容涉及内核结构、CPU寄存器组织、存储器映射、异常形为及操作,在学习过程中与8位单片机(MCS-51单片机、PIC系列单片机等)结合分析,以期达到良好学习效果。
ARM Cortex-M3处理器简介2.1.1 概述ARM公司成立于上个世纪九十年代初,致力于处理器内核研究,ARM 即Advanced RISC Machines 的缩写,ARM公司本身不生产芯片,只设计内核,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片。
这种运行模式运营的成果受到全球半导公司以及用户的青睐。
目前ARM体系结构的处理器内核有:ARM7TDMI、ARM9TDMI、ARM10TDMI、ARM11以及Cortex等。
2005年ARM推出的ARM Cortex系列内核,分别为:A系列、R系列和M系列,其中A系列是针对可以运行复杂操作系统(Linux、Windows CE、Symbian 等)的处理器;R系列是主要针对处理实时性要求较高的处理器(汽车电子、网络、影像系统);M系列又叫微控制器,对开发费用敏感,对性能要求较高的场合。
Cortex-M系列目前的产品有M0、M1、M3,其中M1用在FPGA中。
Cortex-M系列对微控制器和低成本应用提供优化,具有低成本、低功耗和高性能的特点,能够满足微控制器设计师进行创新设计的需求。
其中,ARM Cortex-M3处理器的性能是ARM7的两倍,而功耗却只有ARM7的1/3,适用于众多高性能、极其低成本需求的嵌入式应用,如微控制器、汽车系统、大型家用电器、网络装置等,ARM Cortex-M3提供了32位微控制器市场前所未有的优势。
第2章 Cortex-M3 内核原理2
➢ 原则上,Cortex-M3支持多达256级的可编程优先级,并且支 持128级抢占。
➢ 但是,绝大多数Cortex-M3芯片都会精简设计,以致实际上支 持的优先级数会更少,如 8级,16级,32级等。它们在设计 时会裁掉表达优先级的几个低端有效位,以达到减少优先级 数的目的(?)。
Control寄存器与微处理器工作模式
工作模式(续)
• 在“线程模式+用户级”下,
➢ 禁止访问包含配置寄存器以及调试组件寄存器的系统控制空间 (SCS);P39
➢ 禁止使用MSR访问除APSR外的特殊功能寄存器。
• 在特权级下(“处理模式 or 线程模式”)
➢ 可通过置位CONTROL[0]来进入用户级; ➢ 不管是任何原因产生了任何异常,处理器都将以特权级来运行其服
• 通过读取 PSP 的值,OS 就能够获取用户应用程序 使用的堆栈,了解被压入寄存器的内容,
• 而且还可以把其它寄存器进一步压栈(使用 STMDB 和 LDMIA的书写形式)。 • OS 还可以修改 PSP,用于实现多任务中的任务上下 文切换。
Cortex-M3微处理器工作状态
• Cortex-M3 处理器有两种工作状态:
护和恢复等措施,缩短中断嵌套时的 ISR间延迟。
中断可屏蔽。既可以屏蔽优先级低于某个阈值的中断/异常 (设置 BASEPRI
寄存器),也可以全体封杀(设置 PRIMASK和 FAULTMASK寄存器)。这是为了 让时间苛求(time critical)的任务能在时限 (deadline)到来前完成,而 不被干扰。
工作模式(续)
• 在特权级下,可以指定具体的堆栈指针,而不受当 前使用堆栈的限制,示例代码如下:
ARM CORTEX-M3 内核架构理解归纳
在我看来,Cotex-M3内核的主要包括:嵌套向量中断控制器(NVIC),取值单元,指令译码器,算数逻辑单元(ALU),寄存器组,存储器映射(4GB统一编址各区域功能的划分与界定),对于开发者而言,其实主要关注的主要分为三大块:1、寄存器组2、地址功能划分映射3、中断机制(NVIC)。
1)寄存器组Cortex-M3内核共有19组32位寄存器:R0——R12(通用寄存器);低寄存器组R0——R732位Thumb-2指令与16位Thumb指令均可访问高寄存器组R8——R1232位Thumb-2指令与极少数16位Thumb指令可访问R13(堆栈指针寄存器);主堆栈寄存器MSP(main-SP)/进程堆栈寄存器PSP(Process-SP)同一时间只能使用其中一个。
MSP供操作系统内核及中断(异常)处理子程序使用,PSP只供用户的应用程序代码使用(详细使用详见3、嵌套向量中断控制器(NVIC)的总结)。
堆栈指针是4字节对齐的,故最低两位永远是00;R14(连接寄存器)用于存储程序返回的地址及PC的返回地址;R15(程序寄存器)指向当前程序执行的地址;2)特殊功能寄存器组xPSR(程序状态字寄存器组),32位,可分为三个寄存器分别进行访问,也可以PSR或xPSR 的名字直接组合访问。
应用程序PSR(APSR)中断号PSR(IPSR)执行PSR(EPSR)中断屏蔽寄存器PRIMASK 单一比特位,置位后,除NMI与硬fault外,其他中断都不响应;FAULTMASK 单一比特位,置位后,除NMI外,其他中断都不响应;BASEPRI 共有9位,中断号小于等于该寄存器设置值的中断都不响应;控制寄存器controlControl[0] 0决定特权级线程模式;1用户级线程模式;Control[1] 0主堆栈;1进程堆栈;控制寄存器只能在特权级模式下改写,handler模式永远是特权级,且只允许使用主堆栈MSP 复位后,处理器进入特权级+线程模式下;2、地址功能划分映射Cortex-m3是一个32位处理器,其地址总线、数据总线都是32位的,故可在4G的地址范围上资源寻址。
第2章 Cortex-M3处理器-1
周期1 周期2 周期3 周期4 周期5 周期6
处理器执行一条 取指 译码 执行 指令的三个阶段
取指 译码 执行 取指 译码 执行 取指 译码 执行
3 在第3个周期,PC指向指令3,此时指令 1进入三级流水线的执行阶段,指令2进入译
码阶段,取出指令3。
21/47
三级流水线结构的指令执行顺序
9/47
(4)32位单周期乘法,硬件除法指令 (5)具有分组的堆栈指针 ( 6 ) 处 理 模 式 ( handler mode ) 和 线 程 模 式 ( thread mode) (7)Thumb状态和调试状态 (8)功耗低 (9)具有门数目少 (价格低)、调试成本低 (10)支持非对齐访问
10/47
寄存器(LR)、程序计数器(PC)、程序状态寄存器 (xPSR)、两个分组的SP寄存器。 6. 内存保护单元(MPU,可选) 7. 低成本调试解决方案 8. ROM表
16/47
三、总线结构
基于哈佛体系结构,有专门的数据总线和指令总线,使得数 据访问和指令存取可以并行进行,效率大大提高。
AMBA片上总线包括: (1)AHB(Advanced High performance Bus)系统总线:主 要用于高性能模块(如CPU、DMA等)之间的连接。 (2)APB(Advanced Peripheral Bus)外设总线:主要用于 低带宽的外设之间的连接。
AHB-AP
Cortex-M3处理器的结构
总线 矩阵
I-code 总线 D-code 总线
系统总线
11/47
2. 嵌 套 向 量 中 断 控 制 器 ( Nested Vector Interrupt Controller,NVIC)
最新第2章cortex-m3体系结构
控制 逻辑
Thunb
Thunb-2
解码器 解码器
运 算 32位ALU 器
乘法器 除法器
NVIC接口
总线接口
2.1.4 CM3微处理器的特点
哈弗结构 支持低功耗模式 分组堆栈 支持非对齐数据访问 统一的存储器映射 位绑定操作 32位硬件除法和乘法器 中断响应快速且支持多级中断嵌套 支持串行调试swd
2.1.4 CM3微处理器的特点---指令方面
ARMv7-M:Thumb-2 ISA子集,包含所有 基本的16位和32位Thumb-2指令 。
只有SP是分组的 ,寄存器集比ARM7简单 。 硬件除法指令,SDIV和UDIV(Thumb-2指
令) 处理模式(handler mode)和线程模式
FAULTMASK、BASEPRI) 控制寄存器(CONTROL)
R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13(SP) R14(LR) R15(PC) XPSR
1、32位通用寄存器
r0~r12 ,为13个通用寄存器 低寄存器 , r0-r7可以被指定通
2.1.4 CM3微处理器的特点---调试方面
当内核正在运行、被中止、或处于复位状态时, 能 对 系 统 中 包 括 Cortex-M3 寄 存 器 组 在 内 的 所 有存储器和寄存器进行调试访问。
两种调试端口:2线串行(SW-DP)口或JTAG (JTAG-DP)口。
Flash地址重载和断点单元(FPB),实现断点和代 码修补。
数据观察点(DWT) 程序指令跟踪宏单元(ITM), 支持printf类型的
调试 可选的嵌入式跟踪宏单元(ETM), 实现指令跟踪。 跟踪端口单元(TPIU), 连接跟踪端口分析仪。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章ARM Cortex-M3内核结构教学目标通过本章的学习,要理解ARM Cortex-M3内核结构,结合MCS-51单片机,分析其优缺点;掌握ARM Cortex-M3内核寄存器组织、处理器运行模式、存储器映象、异常及其操作;了解存储器保护单元及应用;了解ARM Cortex-M3调试组件的工作原理及应用。
本章是ARM Cortex-M3微控制器体系结构分析,内容涉及内核结构、CPU寄存器组织、存储器映射、异常形为及操作,在学习过程中与8位单片机(MCS-51单片机、PIC系列单片机等)结合分析,以期达到良好学习效果。
ARM Cortex-M3处理器简介2.1.1 概述ARM公司成立于上个世纪九十年代初,致力于处理器内核研究,ARM 即 Advanced RISC Machines 的缩写,ARM公司本身不生产芯片,只设计内核,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片。
这种运行模式运营的成果受到全球半导公司以及用户的青睐。
目前ARM体系结构的处理器内核有:ARM7TDMI、ARM9TDMI、ARM10TDMI、ARM11以及Cortex等。
2005年ARM推出的ARM Cortex系列内核,分别为:A系列、R系列和M系列,其中A系列是针对可以运行复杂操作系统(Linux、Windows CE、Symbian 等)的处理器;R系列是主要针对处理实时性要求较高的处理器(汽车电子、网络、影像系统);M系列又叫微控制器,对开发费用敏感,对性能要求较高的场合。
Cortex-M系列目前的产品有M0、M1、M3,其中M1用在FPGA中。
Cortex-M系列对微控制器和低成本应用提供优化,具有低成本、低功耗和高性能的特点,能够满足微控制器设计师进行创新设计的需求。
其中,ARM Cortex-M3处理器的性能是ARM7的两倍,而功耗却只有ARM7的1/3,适用于众多高性能、极其低成本需求的嵌入式应用,如微控制器、汽车系统、大型家用电器、网络装置等,ARM Cortex-M3提供了32位微控制器市场前所未有的优势。
Cortex-M3内核,内部的数据路径为32位,寄存器为32位,存储器接口也是32位。
Cortex-M3采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问分开进行。
Cortex-M3还提供一个可选的MPU,对存储器进行保护,而且在需要的情况下也可以使用外部的cache。
另外在Cortex-M3中,存储器支持小端模式和大端存储格式。
Cortex-M3内部还附赠了很多调试组件,用于在硬件水平上支持调试操作,如指令断点,数据观察点等。
另外,为支持更高级的调试,还有其它可选组件,包括指令跟踪和多种类型的调试接口。
2.1.2 内核结构组成及功能描述Cortex-M3微控制器内核包括处理核心和许多的组件,目的是用于系统管理和调试支持。
如图为Cortex-M3内核方框图。
图 Cortex-M3内核方框图1.处理器内核Cortex-M3处理器内核采用ARMv7-M 架构,其主要特性如下:Thumb-2指令集架构(ISA )的子集,包含所有基本的16位和32位Thumb-2指令; 哈佛处理器架构,在加载/存储数据的同时能够执行指令取指; 带分支预测的三级流水线; 32位单周期乘法; 硬件除法;Thumb 状态和调试状态; 处理模式和线程模式; ISR 的低延迟进入和退出;NV ICCM3核MPFPAHB-APDWITAP B ETM TRO M 表SW-DP JTA专用外设I-codeD-code 总线系统中睡调NMSLEESLEEPDE指数触专用外设总线(内Cortex-中断号[239:0]总线矩阵总线矩阵Fla sh 存储器SRA M 可选配系统总线(AHB )静态RAM外部RAM 控制器 外部RAM外部设备AHB to APB 总外设总线U ARTPWM Ti merSysTiI /O可中断-可继续(interruptible-continued)的LDM/STM、PUSH/POP;支持ARMv6类型BE8/LE;支持ARMv6非对齐访问。
(嵌套向量中断控制器)NVIC与处理器内核是紧密耦合的,这样可实现快速、低延迟的异常处理。
在Cortex-M微控制器此功能非常强大。
3.总线矩阵总线矩阵用来将处理器和调试接口与外部总线相连。
处理器包含4 个总线接口:ICode 存储器接口:从Code 存储器空间(0x0000000–0x1FFFFFFF)的取指都在这条32 位AHBLite 总线上执行。
DCode 存储器接口:对Code 存储器空间(0x0000000–0x1FFFFFFF)进行数据和调试访问都在这条32 位AHBLite 总线上执行。
系统接口:对系统空间(0x–0xDFFFFFFF)进行取指、数据和调试访问都在这条32 位AHBLite 总线上执行。
外部专用外设总线(PPB):对外部PPB 空间(0xE0040000–0xE00FFFFF)进行数据和调试访问都在这条32 位APB 总线(AMBA )上执行。
跟踪端口接口单元(TPIU)和厂商特定的外围器件都在这条总线上。
注:处理器包含一条内部专用外设总线,用来访问嵌套向量中断控制器(NVIC)、数据观察点和触发(DWT)、Flash 修补和断点(FPB),以及存储器保护单元(MPU)。
FPB单元实现硬件断点以及从代码空间到系统空间的修补访问,FPB有8个比较器。
数据观察点和跟踪,调试功能部件。
ITM是一个应用导向(application driven)的跟踪源,支持对应用事件的跟踪和printf类型的调试。
存储器保护单元(MPU)是用来保护存储器的一个元件。
处理器支持标准的ARMv7“受保护的存储器系统结构”(PMSA)模型。
如果希望向处理器提供存储器保护,则可以使用可选的MPU;MPU对访问允许和存储器属性进行检验。
它包含8个区和一个可选的执行默认存储器映射访问属性的背景区。
ETM支持指令跟踪的低成本跟踪宏单元。
TPIU用作来自ITM和ETM(如果存在)的Cortex-M3内核跟踪数据与片外跟踪端口分析仪之间的桥接。
JTAG-DPCortex-M3处理器可配置为具有SW-DP或JTAG-DP调试端口的接口,或两者都有。
这两个调试端口提供对系统中包括处理器寄存器在内的所有寄存器和存储器的调试访问。
内核寄存器组织如图所示,Cortex_M3内核寄存器分为16个通用寄存器R0~R15和7个特殊功能寄存器。
图 寄存器组织图2.2.1 通用寄存器R0-R15R0~R12寄存器:是真正意义上的通用。
在处理器运行过程中,作数据的寄存。
R13为堆栈指针寄存器:堆栈指针是用于访问堆栈,也即系统的RAM 区。
Cortex_M3中采用了两个堆栈指针:主堆栈指针(MSP )和进程堆栈指针(PSP ),R13在任何时刻只能是其中一个,默认情况为MSP ,可以通过控制寄存器(CONTORL )来改变。
Cortex_M3中堆栈方向是向低地址方向增长,为满堆栈机制。
堆栈操作是通过PUSH 和POP 来完成操作的。
例如MSP 当前指针指向:0x2000_000C ;R0=0x00000000。
执行:PUSH R0此时MSP 指向:0x2000_0008 执行示意如图所示。
寄存器寄存器通用寄存器特殊功能寄存器堆栈操作示意图R14程序连接寄存器(LR ):在执行分支(B )和链接(BL )指令或带有交换分支(BX )和链接指令(BLX )时,PC 的返回地址自动保存进LR 。
比如在子程序调用时用保存子程序的返回地址。
LR 也用于异常返回,但是在这里保存的是返回后的状态,不是返回的地址,异常返回是通过硬件自动出栈弹出之前压入的PC 完成的。
R15程序计数器(PC ):是程序运行的基础,具有自加的功能。
该寄存器的位0始终为0,因此,指令始终与字或半字边界对齐。
2.2.2 特殊功能寄存器特殊功能寄存器分为程序状态寄存器、中断屏蔽寄存器和控制寄存器三类。
xPSR 程序状态寄存器:系统级的处理器状态可分为3类,应用状态寄存器(APSR )、中断状态寄存器(IPSR )、执行状态寄存器(EPSR ),可组合起来构成一个32位的寄存器,统称xPSR 。
表 xPSR 寄存器xPSR 寄存器的各位的功能如表:表 xPSR 寄存器各位功能向下生长中断屏蔽寄存器:分为三组,分别是PRIMASK、FAULTMASK、BASEPRI。
PRIMASK为片上外设总中断开关,该寄存器只有位0有效,当该位为0是响应所有外设中断;当该位为1时屏蔽所有片上外设中断。
FAULTMASK寄存器管理系统错误的总开关,该寄存器中有位0有效,当该位为0时,响应所有的异常;为1屏蔽所有的异常。
BASEPRI寄存器用来屏蔽优先级等于和小于某一个中断数值的寄存器。
控制寄存器:CONTROL有两个作用,其一用于定义处理器特权级别,其二用于选择堆栈指针,如表所示。
表 CONTROL寄存器CONTROL[0]:异常情况下,处理器总是处于特权模式,CONTROL[0]位总是为0;在线程模式情况下(非异常情况),处理器可以工作在特权级也可工作在用户级,该位可为0或1。
特权级下所有的资源都可以访问,而用户级下被限制的资源不能访问,比如MPU被限制的资源。
CONTROL[1]:为0时,只使用MSP,此时用户程序和异常共享同一个堆栈,处理器复位后默认的也是该模式。
为1时,用户应用程序使用进程堆栈PSP,而中断任然得使用主堆栈MSP。
这种双堆栈机制,特别适合在带有OS(操作系统)的环境下使用,只要OS内核在特权级下执行,而用户应用程序在用户模式下执行,就可很好的将代码隔离互不影响。
处理器操作模式ARM Cortex-M3支持2个模式和两个特权等级。
如图所示,在嵌入式系统应用程序中,程序代码涉及异常服务程序代码和非异常服务程序代码,这些代码可以工作在处理器特权级也可以工作在用户级级,但有区别。
当处理器处在线程模式下时,既可以使用特权级,也可以使用用户级;另一方面,handler图 操作模式和特权等级在线程模式+用户级下,对系统控制空间(SCS ,0xE000E000~0xE000EFFF ,包括NVIC 、SysTick 、MPU 以及代码调试控制所用的寄存器)的访问将被禁止。
除此之外,还禁止使用MRS/MSR 访问,除了APSR 之外的特殊功能寄存器。
如果操作,则对于访问特殊功能寄存器的,访问操作被忽略;而对于访问SCS 空间的,将产生错误。
在特权级下不管是任何原因产生了任何异常,处理器都将以特权级来运行其服务例程,异常返回后,系统将回到产生异常时所处的级别,同时特权级也可通过置位CONTROL[0]来进入用户级。