第二章ARMCortexM3内核结构.pdf





《第二章ARMCortexM3内核结构.pdf》由会员分享,可在线阅读,更多相关《第二章ARMCortexM3内核结构.pdf(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、四川师范大学成都学院 课时授课计划(教案)备课日期:2011 年 03 月 1 日 第 1 页 第二章 ARM Cortex-M3 内核结构 教学目标 通过本章的学习,要理解 ARM Cortex-M3内核结构,结合 MCS-51单片机,分析其优缺点;掌握 ARM Cortex-M3内核寄存器组织、处理器运行模式、存储器映象、异常及其操作;了解存储器保护单元及应用;了解 ARM Cortex-M3调试组件的工作原理及应用。本章是 ARM Cortex-M3 微控制器体系结构分析,内容涉及内核结构、CPU 寄存器组织、存储器映射、异常形为及操作,在学习过程中与 8 位单片机(MCS-51 单片机
2、、PIC 系列单片机等)结合分析,以期达到良好学习效果。2.1 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 系列,其中
3、A 系列是针对可以运行复杂操作系统(Linux、Windows CE、Symbian等)的处理器;R 系列是主要针对处理实时性要求较高的处理器(汽车电子、网络、影像系统);M 系列又叫微控制器,对开发费用敏感,对性能要求较高的场合。Cortex-M系列目前的产品有M0、M1、M3,其中M1用在FPGA中。Cortex-M系列对微控制器和低成本应用提供优化,具有低成本、低功耗和高性能的特点,能够满足微控制器设计师进行创新设计的需求。其中,ARM Cortex-M3处理器的性能是ARM7的两倍,而功耗却只有ARM7的1/3,适用于众多高性能、极其低成本需求的嵌入式应用,如微控制器、汽车系统、大型家
4、用电器、网络装置等,ARM Cortex-M3提供了32位微控制器市场前所未有的优势。Cortex-M3内核,内部的数据路径为32位,寄存器为32位,存储器接口也是32位。Cortex-M3采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问分开进行。Cortex-M3还提供一个可选的MPU,对存储器进行保护,而且在需要的情况下也可以使用外部的cache。另外在Cortex-M3中,存储器支持小端模式和大端存储格式。Cortex-M3内部还附赠了很多调试组件,用于在硬件水平上支持调试操作,如指令断点,数据观察点等。另外,为支持更高级的调试,还有其它可选组件,包括指令跟踪和多种类型
5、的调试接口。2.1.2 内核结构组成及功能描述 Cortex-M3微控制器内核包括处理核心和许多的组件,目的是用于系统管理和调试支持。如图2.1为Cortex-M3内核方框图。四川师范大学成都学院 课时授课计划(教案)备课日期:2011 年 03 月 1 日 第 2 页 图 2.1 Cortex-M3 内核方框图 1.处理器内核 Cortex-M3处理器内核采用ARMv7-M架构,其主要特性如下:Thumb-2指令集架构(ISA)的子集,包含所有基本的16位和32位Thumb-2指令;哈佛处理器架构,在加载/存储数据的同时能够执行指令取指;带分支预测的三级流水线;32位单周期乘法;硬件除法;N
6、VIC CM3核 MPU FPB AHB-AP DWT ITM APB ETM TPIU ROM表 SW-DP JTAG-DP 专用外设总线I-code 总线 D-code总线 系统总线 中断 睡眠 调试 NMI SLEEPING SLEEPDEEP 指令 数据 触发 专用外设总线(内部)Cortex-M3 中断号239:0 总线矩阵 总线矩阵 Flash存储器 SRAM可选配 系统总线(AHB)静态 RAM 外部 RAM控制器 外部 RAM 外部设备 AHB to APB总线 外设总线 UART PWM Timer SysTick I/O 四川师范大学成都学院 课时授课计划(教案)备课日期:
7、2011 年 03 月 1 日 第 3 页 Thumb状态和调试状态;处理模式和线程模式;ISR的低延迟进入和退出;可中断-可继续(interruptible-continued)的LDM/STM、PUSH/POP;支持ARMv6类型BE8/LE;支持ARMv6非对齐访问。2.NVIC(嵌套向量中断控制器)NVIC与处理器内核是紧密耦合的,这样可实现快速、低延迟的异常处理。在Cortex-M微控制器此功能非常强大。3.总线矩阵 总线矩阵用来将处理器和调试接口与外部总线相连。处理器包含4 个总线接口:ICode 存储器接口:从Code 存储器空间(0 x00000000 x1FFFFFFF)的取
8、指都在这条32 位AHBLite 总线上执行。DCode 存储器接口:对Code 存储器空间(0 x00000000 x1FFFFFFF)进行数据和调试访问都在这条32 位AHBLite 总线上执行。系统接口:对系统空间(0 x200000000 xDFFFFFFF)进行取指、数据和调试访问都在这条32 位AHBLite 总线上执行。外部专用外设总线(PPB):对外部PPB 空间(0 xE00400000 xE00FFFFF)进行数据和调试访问都在这条32 位APB 总线(AMBA v2.0)上执行。跟踪端口接口单元(TPIU)和厂商特定的外围器件都在这条总线上。注:处理器包含一条内部专用外设
9、总线,用来访问嵌套向量中断控制器(NVIC)、数据观察点和触发(DWT)、Flash 修补和断点(FPB),以及存储器保护单元(MPU)。4.FPB FPB单元实现硬件断点以及从代码空间到系统空间的修补访问,FPB有8 个比较器。5.DWT 数据观察点和跟踪,调试功能部件。四川师范大学成都学院 课时授课计划(教案)备课日期:2011 年 03 月 1 日 第 4 页 6.ITM ITM是一个应用导向(application driven)的跟踪源,支持对应用事件的跟踪和printf类型的调试。7.MPU 存储器保护单元(MPU)是用来保护存储器的一个元件。处理器支持标准的ARMv7“受保护的存
10、储器系统结构”(PMSA)模型。如果希望向处理器提供存储器保护,则可以使用可选的MPU;MPU对访问允许和存储器属性进行检验。它包含8 个区和一个可选的执行默认存储器映射访问属性的背景区。8.ETM ETM支持指令跟踪的低成本跟踪宏单元。9.TPIU TPIU用作来自ITM和ETM(如果存在)的Cortex-M3内核跟踪数据与片外跟踪端口分析仪之间的桥接。10.SW/JTAG-DP Cortex-M3处理器可配置为具有SW-DP或JTAG-DP调试端口的接口,或两者都有。这两个调试端口提供对系统中包括处理器寄存器在内的所有寄存器和存储器的调试访问。2.2 内核寄存器组织 如图 2.2所示,Co
11、rtex_M3内核寄存器分为 16 个通用寄存器 R0R15和 7 个特殊功能寄存器。四川师范大学成都学院 课时授课计划(教案)备课日期:2011 年 03 月 1 日 第 5 页 图 2.2 寄存器组织图 2.2.1 通用寄存器 R0-R15 R0R12寄存器:是真正意义上的通用。在处理器运行过程中,作数据的寄存。R13为堆栈指针寄存器:堆栈指针是用于访问堆栈,也即系统的 RAM区。Cortex_M3中采用了两个堆栈指针:主堆栈指针(MSP)和进程堆栈指针(PSP),R13在任何时刻只能是其中一个,默认情况为MSP,可以通过控制寄存器(CONTORL)来改变。Cortex_M3中堆栈方向是向
12、低地址方向增长,为满堆栈机制。堆栈操作是通过 PUSH和 POP来完成操作的。例如 MSP当前指针指向:0 x2000_000C;R0=0 x00000000。执行:PUSH R0 此时 MSP指向:0 x2000_0008 执行示意如图 2.3所示。R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13(SP)R14(LR)R15(PC)MSP PSP 低寄存器 高寄存器 xPSR PRIMASK FAULTMASK BASEPRI CONTROL 通用寄存器 特殊功能寄存器 状态寄存器 中断屏蔽寄存器 控制寄存器 四川师范大学成都学院 课时授课计划(教案
13、)备课日期:2011 年 03 月 1 日 第 6 页 2.3 堆栈操作示意图 R14 程序连接寄存器(LR):在执行分支(B)和链接(BL)指令或带有交换分支(BX)和链接指令(BLX)时,PC 的返回地址自动保存进 LR。比如在子程序调用时用保存子程序的返回地址。LR也用于异常返回,但是在这里保存的是返回后的状态,不是返回的地址,异常返回是通过硬件自动出栈弹出之前压入的 PC 完成的。R15 程序计数器(PC):是程序运行的基础,具有自加的功能。该寄存器的位 0 始终为 0,因此,指令始终与字或半字边界对齐。2.2.2 特殊功能寄存器 特殊功能寄存器分为程序状态寄存器、中断屏蔽寄存器和控制
14、寄存器三类。xPSR程序状态寄存器:系统级的处理器状态可分为 3类,应用状态寄存器(APSR)、中断状态寄存器(IPSR)、执行状态寄存器(EPSR),可组合起来构成一个 32 位的寄存器,统称 xPSR。表 2.1 xPSR 寄存器 寄存 器名 位 31 30 29 28 27 26:25 24 23:20 19:16 15:10 9 8 7 6 5 4:0 APSR N Z C V Q IPSR 中断编号 EPSR ICI/IT T ICI/IT xPSR寄存器的各位的功能如表 2.2:表 2.2 xPSR 寄存器各位功能 位 名称 定义 31 N 负数或小于标志:1:结果为负数或小于;0
15、 结果为正数或大于 30 Z 零标志:1:结果为 0;0:结果为非 0 0 x2000_000C 已使用 已使用 上次压入的数据 未用 未用 已使用 已使用 已使用 0 x00000000 未用 MSP RAM RAM 0 x2000_0008 MSP 向下生长 四川师范大学成都学院 课时授课计划(教案)备课日期:2011 年 03 月 1 日 第 7 页 29 C 进位/借位标志:1:进位或借位;0 没有进位或借位 28 V 溢出标志:1:溢出;0:没有溢出 27 Q 粘着饱和标志:1:已饱和;0:没有饱和 26:25 15:10 IT IF-Then 位。它们是 if-Then 指令的执行
16、状态位。包含 if-Then 模块的指令数目和它们的执行条件 24 T 用于指示处理器当前是 ARM 状态还是 Thumb 状态 15:12 ICI 可中断-可继续的指令位:如果在执行 LDM 或 STM 操作时产生一次中断,则 LDM或 STM 操作暂停,该位来保存该操作中下一个寄存器操作数的编号,在中断响应之后,处理器返回由该位指向的寄存器并恢复操作。8:0 ISR 占先异常的编号 中断屏蔽寄存器:分为三组,分别是 PRIMASK、FAULTMASK、BASEPRI。PRIMASK为片上外设总中断开关,该寄存器只有位 0 有效,当该位为 0 是响应所有外设中断;当该位为 1 时屏蔽所有片上
17、外设中断。FAULTMASK寄存器管理系统错误的总开关,该寄存器中有位 0 有效,当该位为 0 时,响应所有的异常;为 1 屏蔽所有的异常。BASEPRI寄存器用来屏蔽优先级等于和小于某一个中断数值的寄存器。控制寄存器:CONTROL有两个作用,其一用于定义处理器特权级别,其二用于选择堆栈指针,如表3.3所示。表 2.3 CONTROL 寄存器 位 功能 CONTROL1 堆栈指针选择 0:选择主堆栈指针 MSP 1:选择进程堆栈指针 PSP CONTROL0 0:特权级 1:用户级 CONTROL0:异常情况下,处理器总是处于特权模式,CONTROL0位总是为 0;在线程模式情况下(非异常情
18、况),处理器可以工作在特权级也可工作在用户级,该位可为 0 或 1。特权级下所有的资源都可以访问,而用户级下被限制的资源不能访问,比如 MPU被限制的资源。CONTROL1:为 0 时,只使用 MSP,此时用户程序和异常共享同一个堆栈,处理器复位后默认的也是该模式。为 1 时,用户应用程序使用进程堆栈 PSP,而中断任然得使用主堆栈 MSP。这种双堆栈机制,特别适合在带有 OS(操作系统)的环境下使用,只要 OS 内核在特权级下执行,而用户应用程序在用户模式下执行,就可很好的将代码隔离互不影响。2.3处理器操作模式 ARM Cortex-M3支持2 个模式和两个特权等级。如图2.4所示,在嵌入
19、式系统应用程序中,程序代码涉及异常服务程序代码和非异常服务程序代码,这些代码可以工作在处理器特权级也可以工作在用户级四川师范大学成都学院 课时授课计划(教案)备课日期:2011 年 03 月 1 日 第 8 页 级,但有区别。当处理器处在线程模式下时,既可以使用特权级,也可以使用用户级;另一方面,handler模式总是特权级的。在复位后,处理器进入线程模式特权级。图 2.4 操作模式和特权等级 在线程模式用户级下,对系统控制空间(SCS,0 xE000E0000 xE000EFFF,包括NVIC、SysTick、MPU以及代码调试控制所用的寄存器)的访问将被禁止。除此之外,还禁止使用MRS/M
20、SR访问,除了APSR之外的特殊功能寄存器。如果操作,则对于访问特殊功能寄存器的,访问操作被忽略;而对于访问SCS空间的,将产生错误。在特权级下不管是任何原因产生了任何异常,处理器都将以特权级来运行其服务例程,异常返回后,系统将回到产生异常时所处的级别,同时特权级也可通过置位CONTROL0来进入用户级。用户级下的代码不能再试图修改CONTROL0来回到特权级。它必须通过一个异常handler,来修改CONTROL0,才能在返回到线程模式后进入特权级。如图2.5所示。图 2.5 处理器模式转换图 把代码按特权级和用户级分开处理,有利于使Cortex-M3的架构更加稳定可靠。例如,当某个用户程序
21、代码出问题时,可防止处理器对系统造成更大的危害,因为用户级的代码是禁止写特殊功能寄存器和NVIC中寄存器的。另外,如果还配有MPU,保护力度就更大,甚至可以阻止用户代码访问不属于它的内存区域。在引入了嵌入式实时操作系统中,为了避免系统堆栈因应用程序的错误使用而毁坏,我们可以给应用程序专门配一个堆栈,不让它共享操作系统内核的堆栈。在这个管理制度下,运行在线程模式的用户代码使用PSP,而异常服务例程则使用MSP。这两个堆栈指针的切换是智能全自动的,在异常服务的始末由Cortex-M3硬件处理。如前所述,特权等级和堆栈指针的选择均由CONTROL负责。Handler 模式 错误的用法 线程模式 线程
22、模式 特权级 用户级 异常 handler 的代码 主应用程序的代码 启动代码 用户 程序 异常服务例程 用户 程序 异常服务例程 特权级的线程 特权级 handler模式 CONTROL0=1 特 权 级 线程模式 用 户 级 线程模式 异常 异常 CONTROL0=0 四川师范大学成都学院 课时授课计划(教案)备课日期:2011 年 03 月 1 日 第 9 页 当CONTROL0=0,在异常处理的始末,只发生了处理器模式的转换,如图2.6所示。若CONTROL0=1(线程模式+用户级),则在中断响应的始末,处理器模式和特权等级都要发生变化,如图2.7所示。CONTROL0 只有在特权级下
23、才能访问。用户级的程序如想进入特权级,通常都是使用一条“系统服务呼叫指令(SVC)”来触发“SVC异常”,该异常的服务例程可以视具体情况而修改CONTROL0。图 2.6 中断前后的状态转换 图 2.7 中断前后的状态转换+特权等级切换 2.4存储器系统 2.4.1 存储器映射 Cortex-M3采用了固定的存储映射结构,如图 2.8所示。Cortex-M3的地址空间是 4GB,程序可以在代码区,内部 SRAM区以及外部 RAM区中执行。但是因为指令总线与数据总线是分开的,最理想的是把程序放到代码区,从而使取指和数据访问各自使用己的总线。内部 SRAM区的大小是 512MB,用于让芯片制造商连
24、接片上的 SRAM,这个区通过系统总线来访问。在这个区的下部,有一个 1MB的区间,被称为“位带区”。该位带区还有一个对应的 32MB的“位带别主程序 中断事件 入栈 出栈 中断返回 中断服务程序 线 程 模 式(用户级)Handler模 式(特权级)线 程 模 式(用户级)t主程序 中断事件 入栈 出栈 中断返回 中断服务程序 线 程 模 式(特权级)Handler模 式(特权级)线 程 模 式(特权级)t四川师范大学成都学院 课时授课计划(教案)备课日期:2011 年 03 月 1 日 第 10 页 名(alias)区”,容纳了 8M 个“位变量”(对比 8051的只有 128个位变量),
25、位带区对应的是最低的1MB地址范围,而位带别名区里面的每个字对应位带区的一个比特。位带操作只适用于数据访问,不适用于取指。通过位带的功能,可以把多个布尔型数据打包在单一的字中,却依然可以从位带别名区中,像访问普通内存一样地使用它们。位带别名区中的访问操作是原子的,消灭了传统的“读改写”三步。图 2.8 Cortex-M3 存储器映射图 片上外设对应 512MB的空间,芯片上所有与外围设备相关的寄存器都位于该区域。这个区中也有一条 32MB的位带别名,以便于快捷地访问外设寄存器,用法与内部 SRAM区中的位带相同。例如,可以方便地访问各种控制位和状态位。要注意的是,外设区内不允许执行指令。通常半
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二 ARMCortexM3 内核 结构

限制150内