第2章 ARM-cortex-M3内核1
第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章 ARM-cortex-M3内核1
.
16
向量表
当一个发生的异常被CM3 内核接受,对应的异常handler (处理程序) 就会执行。为了决定handler(程序) 的入 口地址,CM3 使用了“向量表机制”。这里使用一张向 量表。
向量表其实是一个WORD(32 位整数)数组,每个下标 对应一种异常,该下标元素的值则是该异常handler 的入 口地址。
.
11
特殊功能寄存器操作指令
只能被专用的MSR 和MRS 指令访问。
MRS <gp_reg>, <special_reg> 功能:读特殊功能寄存器的值到通用寄存器。
MSR <special_reg>, <gp_reg> 功能:写通用寄存器的值到特殊功能寄存器。
.
12
3.2 异常与中断
在ARM 编程领域中,凡是打断程序顺序执行的事件,都 被称为异常(exception)。
在复位后,该寄存器的值为0。因此,在地址0 处必须包 含一张向量表,用于初始时的异常分配。
.
17
.
18
举例
如果发生了异常11(SVC),则NVIC 会计算出偏移 移量是11x4=0x2C,然后从那里取出服务程序的入口 地址并跳入。
0 号异常的功能则是个另类,它并不是什么入口地址, 而是给出了复位后MSP 的初值。
当CPU响应中断、保护断点之后,就要进行中断源的识别, 即寻找中断源,找到相应的中断服务程序入口。
.
21
向量中断支持
当开始响应一个中断后,CM3 会自动定位一张向量表, 并且根据中断号从表中找出ISR 的入口地址,然后跳转过 去执行。
不需要像以前的ARM 那样,由软件来分辨到底是哪个中 断发生了,也无需半导体厂商提供私有的中断控制器来完 成这种工作。这样会使中断延迟时间大为缩短。
第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
《ARM 白皮书—Cortex-M3 处理器简介》
I
ARM 白皮书
第一章 简介
第1章 简介
基于ARM嵌入式处理器的片上系统解决方案可应用于企业应用、汽车系统,家庭网络 和无线技术等市场领域。ARM CortexTM系列提供了一个标准的体系结构来满足以上各种技 术的不同性能要求,其包含的处理器基于ARMv7 架构的三个分工明确的部分。A部分面向 复杂的尖端应用程序,用于运行开放式的复杂操作系统;R部分针对实时系统;M部分为成 本控制和微控制器应用提供优化。Cortex-M3 是首款基于ARMv7-M架构的处理器,是专门 为了在微控制器,汽车车身系统,工业控制系统和无线网络等对功耗和成本敏感的嵌入式应 用领域实现高系统性能而设计的,它大大简化了可编程的复杂性,使ARM架构成为各种应 用方案(即使是最简单的方案)的上佳选择。
1.3 针对敏感市场降低成本和功耗
成本是采用高性能微控制器永恒的屏障。由于先进的制造工艺相当昂贵,只有降低芯片 的尺寸才有可能从本质上降低成本。为了减小系统区域,Cortex-M3 处理器采用了至今为止 最小的 ARM 内核,该内核的核心部分(0.18um G)的门数仅为 33000 个,它把紧密相连的
第二章ARM_Cortex-M3内核结构
ARMCortex-M3支持2个模式和两个特权等级。如图2.4所示,在嵌入式系统应用程序中,程序代码涉及异常服务程序代码和非异常服务程序代码,这些代码可以工作在处理器特权级也可以工作在用户级级,但有区别。当处理器处在线程模式下时,既可以使用特权级,也可以使用用户级;另一方面,handler模式总是特权级的。在复位后,处理器进入线程模式+特权级。
R15程序计数器(PC):是程序运行的基础,具有自加的功能。该寄存器的位0始终为0,因此,指令始终与字或半字边界对齐。
2.2.2
特殊功能寄存器分为程序状态寄存器、中断屏蔽寄存器和控制寄存器三类。
xPSR程序状态寄存器:系统级的处理器状态可分为3类,应用状态寄存器(APSR)、中断状态寄存器(IPSR)、执行状态寄存器(EPSR),可组合起来构成一个32位的寄存器,统称xPSR。
注:处理器包含一条内部专用外设总线,用来访问嵌套向量中断控制器(NVIC)、数据观察点和触发(DWT)、Flash修补和断点(FPB),以及存储器保护单元(MPU)。
4.
FPB单元实现硬件断点以及从代码空间到系统空间的修补访问,FPB有8个比较器。
5.
数据观察点和跟踪,调试功能部件。
6.
ITM是一个应用导向(application driven)的跟踪源,支持对应用事件的跟踪和printf类型的调试。
CONTROL[1]:为0时,只使用MSP,此时用户程序和异常共享同一个堆栈,处理器复位后默认的也是该模式。为1时,用户应用程序使用进程堆栈PSP,而中断任然得使用主堆栈MSP。这种双堆栈机制,特别适合在带有OS(操作系统)的环境下使用,只要OS内核在特权级下执行,而用户应用程序在用户模式下执行,就可很好的将代码隔离互不影响。
第二章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处理器-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微处理器
Cortex-A(ARMv7-A):需要运行复杂应用程序的“应用处 理器” 。支持大型嵌入式操作系统,比如Symbian(诺基亚 智能手机用),Linux,以及微软的Windows CE和智能手机 操作系统Windows Mobile。 Cortex-R(ARMv7-R):硬实时且高性能的处理器。面向高 端实时市场。像高档轿车的组件,大型发电机控制器,机器手 臂控制器等,要求可靠性高,对事件的反应也要极其敏捷。 Cortex-M(ARMv7-M):面向单片机的应用而量身定制。面 向实时控制系统,具有低成本、低功耗、极速中断反应以及高 处理效率。
13
第2章 Cortex-M3微处理器
2.2 Cortex-M3微处理器内核体系结构
14
Cortex-M3的一个简化视图
第2章 Cortex-M3微处理器
Cortex-M3处理器系统方框图
15
第2章 Cortex-M3微处理器
2.2 Cortex-M3微处理器内核体系结构
•
Cortex-M3内核
2.8 调试系统
2.9 指令集
2
第2章 Cortex-M3微处理器
2.1 Cortex-M3微处理器简介
•
有关ARM:
ARM在1990年成立,当初的名字是“Advanced RISC Machines
Ltd.,”,当时它是苹果电脑、Acorn电脑公司、以及VLSI技术(公 司)三家公司的合资。 1991年,ARM推出了ARM6处理器家族。 现如今,ARM芯片的出货量每年都比上一年多20亿片以上。 ARM 从不制造和销售具体的处理器芯片,而是把处理器的设计授 权给相关的商务合作伙伴,让他们去根据自己的强项设计具体的
10
第2章 Cortex-M3微处理器
最新第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), 连接跟踪端口分析仪。
第2章ARMcortexM3内部结构详解
2.1 ARMCortex-M3简介
嵌入式跟踪宏单元ETM •选配件 •实时的指令跟踪 •跟踪结果由TPIU输出 数据观察点及跟踪单元DWT: 设置数据观察点,匹配后可触发ETM 可将数据信息输出至ITM 指令跟踪宏单元ITM: 该模块可以支持DWT的调试消息输出 调试消息输出到TPIU 跟踪端口的接口单元TPIU: 提供处理器和外部跟踪设备的数据接口
异常类型
0 1 2 3 4 5 6 7‐10 11 12 13 14 15 16 17 18‐255
表项地址偏移量
0x00 0x04 0x08 0x0C 0x10 0x14 0x18 0x1c‐0x28 0x2c 0x30 0x34 0x38 0x3c 0x40 0x44 0x48‐0x3FF
异常向量
2.1 ARMCortex-M3简介
存储器保护单元MPU •选配件 •将存储器分为多个区域并分别进行保护
2.1 ARMCortex-M3简介
AHB-Lite
AHB APB
2.2 指令集
旧版本指令集 ARM:32位指令集 Thumb:16位指令集
新版本指令集Thumb2指令集 消灭了状态切换的额外开销,节省了执行时间和指令空间。 UAL(统一汇编语言)语法机制,由编译器决定使用32位指令或 16位指令。 不再需要把源代码文件分成按 ARM 编译的和按 Thumb 编译的, 软件开发的管理大大减负。
功能描述
这是个只有1个位的寄存器。当它置1时,就关掉所有可屏蔽 的异常,只剩下NMI和硬fault可以响应。它的缺省值是0,表 示没有关中断。
这是个只有1个位的寄存器。当它置1时,只有 NMI 才能响 应,所有其它的异常,包括中断和fault,通通屏蔽。它的缺 省值也是0,表示没有关异常。主要用于操作系统。
ARM Cortex-M3处理器内核
• 6 嵌套向量中断控制器(NVIC) 嵌套向量中断控制器( ) – 嵌套向量中断控制器(NVIC):
• 提供低-等待延时异常和中断处理 • 控制电源管理 • 执行系统控制寄存器
– NVIC支持多达240个可动态配置优先级的中断,每个中 断具有多达256个优先级。NVIC和处理器内核接口紧密 耦合,这使能了低等待延时中断的处理和迟到达中断的 有效处理。 NVIC保留了堆栈(嵌套)中断的内容来使能 中断的尾部链接。 – 你只可以完全访问特权模式的NVIC,但如果你使能配置 控制寄存器,你就可以在用户模式中挂起中断。任何其 它的用户模式访问都会引起总线错误。 – 所有NVIC寄存器可使用字节、半字和字来访问,除非特 别说明。 – 所有NVIC寄存器和系统调试寄存器都是小端配置,不管 处理器的端点状态如何。
• 跟踪端口接口单元(TPIU ) 跟踪端口接口单元(
– ITM, DWT 和ETM 的跟踪数据都在TPIU 处汇聚。TPIU 用于把这 些跟踪数据格式化并输出到片外,以供跟踪端口分析仪之类的设 备接收使用。
功能描述
• 1 串行线和 串行线和JTAG调试 调试 – Luminary Micro使用与ARM CoreSight™ 兼容的串行线 JTAG调试端口(SWJ-DP)接口来替代 ARM SW-DP 和JTAG-DP。 – SWJ-DP接口将SWD和JTAG调试端口组合到一个模块 SWJ-DP SWD JTAG 中。 • 2 嵌入式跟踪宏单元 (ETM) ) – ETM没有在 Stellaris®器件中执行。
• 中断
– 软件可在7个异常(系统处理程序)以及40个中断上设 置8个优先级。 – 把优先级划分为占先优先级和次要优先级两组(抢占 式优先级和响应优先级 )。每个中断源都需要被指定 这两种优先级,就需要有相应的寄存器位记录每个中 断的优先级;在Cortex-M3中定义了8个比特位用于设 置中断源的优先级 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
举例
如果发生了异常11(SVC),则NVIC 会计算出偏移 移量是11x4=0x2C,然后从那里取出服务程序的入口 地址并跳入。 0 号异常的功能则是个另类,它并不是什么入口地址, 而是给出了复位后MSP 的初值。
程序状态寄存器(PSRs 或xPSR)
程序状态寄存器在其内部又被分为三个子状态寄存器: 应用程序 PSR(APSR) 中断号 PSR(IPSR) 执行 PSR(EPSR) 这3 个寄存器即可以单独访问,也可以组合访问(2 个组 合,3 个组合都可以),当使用三合一的方式访问时,应 使用名字“xPSR”或者“PSRs”。
可嵌套中断支持
可嵌套中断支持的作用范围很广,覆盖了所有的外部中断 和绝大多数系统异常。 外在表现是:这些异常都可以被赋予不同的优先级,当前 优先级被存储在xPSR 的专用字段中。当一个异常发生时, 硬件会自动比较该异常的优先级是否比当前的异常优先级 更高。
如果发现来了更高优先级的异常,处理器就பைடு நூலகம்中断当前的 中断服务程序,而服务新来的异常,这个过程立即抢占。
3.3 操作模式和特权级别
Cortex‐M3 处理器支持两种处理器的操作模式,支持两 级特权操作。
操作模式
两种操作模式分别为:处理器模式(handler mode)和线程 模式(thread mode)。 引入两个模式的目的,是用于和区别异常服务例程的代码 和普通应用程序的代码。
特权极别
特权的分级——特权级和用户级。这可以提供一种存储器 访问的保护机制,使得普通的用户程序代码不能意外地, 甚至是恶意地执行涉及到要害的操作。 处理器支持两种特权级,这也是系统一个基本的安全模型。
3.1.3特权访问和用户访问
特权模式:
除用户模式外,其它模式均为特权模式。 ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选 为只允许)特权模式下访问。 此外,特权模式可以自由的切换处理器模式,而用户模式不能直接 切换到别的模式。
支持硬件协处理器的软件 仿真 未定义指令异常响应时进入此模 式
处理器模式 用户 (usr) 系统 (sys) 快中断 快中断 中断 中断 管理 管理 (svc) 中止 中止 (abt) 未定义 未定义 (und) (fiq) (fiq) (irq) (irq) (svc) (abt) (und)
非特权模式: 对有些资源的访问受到限制或不允许访问
处理器模式
处理器模式 用户 (usr) 系统 (sys) 快中断 中断 (fiq) 说明 正常程序工作模式 用于支持操作系统的特权 任务等 支持高速数据传输及通道 处理 备注 不能直接切换到其它模式 与用户模式类似,但具有可以直 接切换到其它模式等特权 FIQ异常响应时进入此模式 IRQ异常响应时进入此模式
只能被专用的MSR 和MRS 指令访问。
MRS <gp_reg>, <special_reg> 功能:读特殊功能寄存器的值到通用寄存器。
MSR <special_reg>, <gp_reg> 功能:写通用寄存器的值到特殊功能寄存器。
3.2 异常与中断
在ARM 编程领域中,凡是打断程序顺序执行的事件,都 被称为异常(exception)。 除了外部中断外,当有指令执行了“非法操作”,或者访 问被禁的内存区间,因各种错误产生的fault,以及不可屏 蔽中断发生时,都会打断程序的执行,这些情况统称为异 常。在不严格的情况下,异常与中断也可以混用。
当CPU响应中断、保护断点之后,就要进行中断源的识别, 即寻找中断源,找到相应的中断服务程序入口。 识别中断源有三种方法:查询法、向量法和强置程序计数 器法(已被淘汰)。
查询法
通过程序来查询是哪一个中断源提出的中断请求。 过程:在CPU响应中断之后,对所有的中断,都进入到这个 查询流程。先看中断源1是否提出请求,若是,转去执行中断 源1的中断服务程序;否则再看中断源2是否提出请求,若是, 转去执行中断源2的中断服务程序。否则继续查看后面的中断 源…。 查询的顺序决定了中断的优先级。当发现一个中断源提出中 断请求后,就转去执行相应的服务程序,而不再继续向下查 找,不管它们是否也提出了请求。中断源1的级别最高,中断 源2的级别次之,中断源n的级别最低。
中断屏蔽寄存器组
PRIMASK :屏蔽所有的中断——当然了,不可屏蔽NMI。 FAULTMASK:屏蔽所有的fault——NMI 依然不受影响 BASEPRI :屏蔽所有优先级不高于某个具体数值的中断。
控制寄存器(CONTROL)
控制寄存器用于还用于定义特权级别和堆栈指针的选择。
特殊功能寄存器操作指令
嵌套向量中断控制器(NVIC)
Cortex‐M3 在内核上搭载了一颗中断控制器—嵌套向量中 断控制器NVIC(Nested Vectored Interrupt Controller)。 NVIC 提供如下的功能: 可嵌套中断支持 向量中断支持 动态优先级调整支持 中断延迟大大缩短 中断可屏蔽
第二章 Cortex-M3基础
Cortex-M3基础
Cortex‐M3 是一个32 位处理器内核。内部的数据是32 位 的,寄存器是32 位的,存储器接口也是32 位的。 CM3 采用了哈佛结构,拥有独立的指令总线和数据总线, 可以让取指与数据访问并行。这样一来数据访问不再占用 指令总线,从而提升了性能。
异常模式
说明 备注 不能直接切换到其它模式 与用户模式类似,但具有可以直 接切换到其它模式等特权
正常程序工作模式 用于支持操作系统的特权 任务等
这五种模式称为异常模式。 支持高速数据传输及通道 它们除了可以通过程序切换进入外, FIQ异常响应时进入此模式 处理 也可以由特定的异常进入。当特定 用于通用中断处理 IRQ异常响应时进入此模式 的异常出现时,处理器进入相应的 系统复位和软件中断响应时进入 操作系统保护代码 此模式 模式。每种异常模式都有一些独立 用于支持虚拟内存和/或 的寄存器,以避免异常退出时用户 在ARM7TDMI没有大用处 存储器保护 模式的状态不可靠。 支持硬件协处理器的软件 未定义指令异常响应时进入此模
向量表
当一个发生的异常被CM3 内核接受,对应的异常handler (处理程序) 就会执行。为了决定handler(程序) 的入 口地址,CM3 使用了“向量表机制”。这里使用一张向 量表。
向量表其实是一个WORD(32 位整数)数组,每个下标 对应一种异常,该下标元素的值则是该异常handler 的入 口地址。
特权模式
说明 备注 不能直接切换到其它模式
正常程序工作模式 用于支持操作系统的特权 任务等
(abt)
(und)
除用户模式外,其它模式均 与用户模式类似,但具有可以直 为特权模式。接切换到其它模式等特权 ARM内部寄存器和 支持高速数据传输及通道 一些片内外设在硬件设计上只允许 FIQ异常响应时进入此模式 处理 (或者可选为只允许)特权模式下 用于通用中断处理 IRQ异常响应时进入此模式 访问。此外,特权模式可以自由的 系统复位和软件中断响应时进入 操作系统保护代码 此模式 切换处理器模式,而用户模式不能 用于支持虚拟内存和/或 直接切换到别的模式。 在ARM7TDMI没有大用处 存储器保护
程序代码也可以主动请求进入异常状态的(常用于系统调 用)。
CM3 的所有中断机制都由NVIC 实现。除了支持240 个外 中断之外,NVIC 还支持16‐4‐1=11 个内部异常源。
虽然CM3 是支持240 个外中断的,但具体使用了多少个 是由芯片生产商决定。
NMI
CM3 还有一个NMI(不可屏蔽中断)输入脚。 当它被置为有效时,NMI 服务程序会无条件地执行,NMI 究竟被拿去做什么,还要视处理器的设计而定。 在多数情况下,NMI 会被连接到一个看门狗定时器,有时 也会是电压监视功能块,以便在电压掉至危险级别后警告 处理器。NMI 可以在任何时间被激活。
R15:程序计数寄存器(PC)
指向当前的程序地址。 如果修改它的值,就能改变程序的执行。
寄存器
特殊功能寄存器
Cortex‐M3 还在内核上搭载了若干特殊功能寄存器,包 括: 程序状态字寄存器组PSRs;
中断屏蔽寄存器组PRIMASK, FAULTMASK, BASEPRI; 控制寄存器CONTROL。
查询法的优缺点
查询法的优点是硬件简单,程序层次分明,只要改变程序 中的查询次序即可改变中断源的中断优先级,而不必变更 硬件连接。 其缺点是速度慢(从CPU响应中断到进入中断服务的时间 较长),实时性差,特别是当中断源较多时,尤为突出。 此外,查询要占用CPU时间,降低了CPU的使用效率 。
R14:连接寄存器
当调用一个子程序时,为了减少访问内存的次数,由R14 存储返回地址,把返回地址直接存储在寄存器中,这与其 他大多数其它处理器都不一样。 只有1 级子程序调用的代码无需访问内存,从而提高了子 程序调用的效率。如果多于1 级,则需要把前一级的R14 值压到堆栈里。
在ARM编程时,应尽量只使用寄存器保存中间结果,迫不 得以时才访问内存。
内容提要
寄存器组 异常和中断
操作模式和特权极别
存储器映射 总线接口 指令集 复位