2.1.1 概述
ARM Cortex-M3 内核结构
ARM Cortex-M3 处理器简介
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微控制器内核包括处理核心和许多的组件,目的是用于系统管理和调试支持。如图2.1为 Cortex-M3内核方框图。
NMI 中断号[239:0]
SLEEPING SLEEPDEEP NVIC 中断 睡眠 调试 SysTick Cortex-M3 CM3核 指令 MPU 触发 ETM 数据 TPIU
FPB DWT ITM 专用外 设总线
SW-DP JTAG-DP 专用外设总线(内部) AHB-AP 总线矩阵 APB ROM表
I-code总线 D-code总线 系统总线 系统总线(AHB)
总线矩阵
静态 RAM 外部 RAM 外部 控制器 设备
AHB to APB 总线
Flash 存 储器 SRAM 可 选配 外部 RAM 外设总线 I/O UART PWM Timer
图 2.1 Cortex-M3 内核方框图
1.处理器内核
Cortex-M3处理器内核采用ARMv7-M架构,其主要特性如下:
? Thumb-2指令集架构(ISA)的子集,包含所有基本的16位和32位Thumb-2指令; ? 哈佛处理器架构,在加载/存储数据的同时能够执行指令取指; ? 带分支预测的三级流水线; ? 32位单周期乘法; ? 硬件除法;
? Thumb状态和调试状态;
? ? ? ? ? 处理模式和线程模式; ISR的低延迟进入和退出;
可中断-可继续(interruptible-continued)的LDM/STM、PUSH/POP; 支持ARMv6类型BE8/LE; 支持ARMv6非对齐访问。
2.NVIC(嵌套向量中断控制器)
NVIC与处理器内核是紧密耦合的,这样可实现快速、低延迟的异常处理。在Cortex-M微控制器此功 能非常强大。
3.总线矩阵
总线矩阵用来将处理器和调试接口与外部总线相连。 处理器包含4 个总线接口:
? ICode 存储器接口:从Code 存储器空间(0x0000000–0x1FFFFFFF)的取指都在这条32
位 AHBLite 总线上执行。 ? DCode 存储器接口:对Code 存储器空间(0x0000000–0x1FFFFFFF)进行数据和调试访问都
在这条32 位AHBLite 总线上执行。 ? 系统接口:对系统空间(0x20000000–0xDFFFFFFF)进行取指、数据和调试访问都在这条32 位
AHBLite 总线上执行。 ? 外部专用外设总线(PPB):对外部PPB 空间(0xE0040000–0xE00FFFFF)进行数据和调试访
问都在这条32 位APB 总线(AMBA v2.0)上执行。跟踪端口接口单元(TPIU)和厂商特定的 外围器件都在这条总线上。 注:处理器包含一条内部专用外设总线,用来访问嵌套向量中断控制器(NVIC)、数据观察点和 触发(DWT)、Flash 修补和断点(FPB),以及存储器保护单元(MPU)。
4.FPB
FPB单元实现硬件断点以及从代码空间到系统空间的修补访问,FPB有8个比较器。
5.DWT
数据观察点和跟踪,调试功能部件。
6.ITM
ITM是一个应用导向(application driven)的跟踪源,支持对应用事件的跟踪和printf类型的调 试。
7.MPU
存储器保护单元(MPU)是用来保护存储器的一个元件。处理器支持标准的ARMv7“受保护的存储器 系统结构”(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 所示,Cortex_M3 内核寄存器分为 16 个通用寄存器 R0~R15 和 7 个特殊功能寄存器。
低 寄 存 器
R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 MSP PSP
通 用 寄 存 器
高 寄 存 器
R12 R13(SP) R14(LR) R15(PC)
特 殊 功 能 寄 存 器
状态寄存器 中断屏蔽 寄存器 控制寄存器 xPSR PRIMASK FAULTMASK BASEPRI CONTROL
图 2.2 寄存器组织图
2.2.1 通用寄存器 R0-R15
R0~R12 寄存器:是真正意义上的通用。在处理器运行过程中,作数据的寄存。
R13 为堆栈指针寄存器:堆栈指针是用于访问堆栈,也即系统的 RAM 区。Cortex_M3 中采用了两个 堆栈指针:主堆栈指针(MSP)和进程堆栈指针(PSP),R13 在任何时刻只能是其中一个,默认情况为 MSP,可以通过控制寄存器(CONTORL)来改变。Cortex_M3 中堆栈方向是向低地址方向增长,为满堆栈 机制。堆栈操作是通过 PUSH 和 POP 来完成操作的。
例如 MSP 当前指针指向:0x2000_000C;R0=0x00000000。
执行:PUSH R0
此时 MSP 指向:0x2000_0008 执行示意如图 2.3 所示。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库ARM_Cortex-M3内核结构在线全文阅读。
相关推荐: