ARMCortex-M3内核结构
- 格式:doc
- 大小:960.50 KB
- 文档页数:35
word
1 / 35
ARMCortex-M3内核结构
2.1 ARMCortex-M3处理器简介
概述
ARM公司成立于上个世纪九十年代初,致力于处理器内核研究,ARM 即Advanced RISC Machines的缩写,ARM公司本身不生产芯片,只设计内核,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片。这种运行模式运营的成果受到全球半导公司以与用户的青睐。目前ARM体系结构的处理器内核有:
ARM7TDMI、ARM9TDMI、ARM10TDMI、ARM11以与Cortex等。2005年ARM推出的ARMCortex系列内核,分别
为:A系列、R系列和M系列,其中A系列是针对可以运行复杂操作系统〔Linux、WindowsCE、Symbian等〕的处理器;R系列是主要针对处理实时性要求较高的处理器〔汽车电子、网络、影像系统〕;M系列又叫微控制器,对开发费用敏感,对性能要求较高的场合。
Cortex-M系列目前的产品有M0、M1、M3,其中M1用在FPGA中。Cortex-M系列对微控制器和低本钱应 用提供优化,具有低本钱、低功耗和高性能的特点,能够满足微控制器设计师进展创新设计的需求。其 中,ARMCortex-M3处理器的性能是ARM7的两倍,而功耗却只有ARM7的1/3,适用于众多高性能、极其低本钱需求的嵌入式应用,如微控制器、汽车系统、大型家用电器、网络装置等,ARMCortex-M3提供了32位微控制器市场前所未有的优势。
Cortex-M3内核,内部的数据路径为32位,存放器为32位,存储器接口也是32位。Cortex-M3采用了 哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问分开进展。Cortex-M3还提供一个可选的MPU,对存储器进展保护,而且在需要的情况下也可以使用外部的cache。另外在Cortex-M3中,存储器支持小端模式和大端存储格式。Cortex-M3内部还附赠了很多调试组件,用于在硬件水平上支持调试操作,如指令断点,数据观察点等。另外,为支持更高级的调试,还有其它可选组件,包括指令跟踪和多种类型的调试接口。
内核结构组成与功能描述
Cortex-M3微控制器内核包括处理核心和许多的组件,目的是用于系统管理和调试支持。如图为Cortex-M3内核方框图。 word
2 / 35
NMI中断号[239:0]
SLEEPINGSLEEPDEEP
NVIC
SysTick
中断 睡眠 CM3核
调试
指令 数据
MPU Cortex-M3
触发
ETM
TPIU
FPB
DWT ITM 专用外设总线
SW-DPJTAG-DP 专用外设总线〔内部〕AHB-AP
APB ROM表
总线矩阵
I-code总线 D-code总线 系统总线
总线矩阵 系统总线〔AHB〕
静态RAM 外部RAM 外部
控制器 设备 AHBtoAPB总线
Flash存储器
SRAM可
选配
外部RAM
I/O
外设总线
UART PWM Timer
图Cortex-M3内核方框图
1.处理器内核
Cortex-M3处理器内核采用ARMv7-M架构,其主要特性如下:
Thumb-2指令集架构〔ISA〕的子集,包含所有根本的16位和32位Thumb-2指令;
哈佛处理器架构,在加载/存储数据的同时能够执行指令取指;
带分支预测的三级流水线;
32位单周期乘法;
硬件除法;
Thumb状态和调试状态; word
3 / 35
处理模式和线程模式;
ISR的低延迟进入和退出;
可中断-可继续〔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总线上执行。
系统接口:对系统空间〔0x20000000–0xDFFFFFFF〕进展取指、数据和调试访问都在这条32位
AHBLite总线上执行。
外部专用外设总线〔PPB〕:对外部PPB空间〔0xE0040000–0xE00FFFFF〕进展数据和调试访问都在这条32位APB总线〔AMBA〕上执行。跟踪端口接口单元〔TPIU〕和厂商特定的外围器件都在这条总线上。
注:处理器包含一条内部专用外设总线,用来访问嵌套向量中断控制器〔NVIC〕、数据观察点和触发〔DWT〕、Flash修补和断点〔FPB〕,以与存储器保护单元〔MPU〕。
FPB单元实现硬件断点以与从代码空间到系统空间的修补访问,FPB有8个比拟器。
数据观察点和跟踪,调试功能部件。
ITM是一个应用导向〔applicationdriven〕的跟踪源,支持对应用事件的跟踪和printf类型的调试。 word
4 / 35
存储器保护单元〔MPU〕是用来保护存储器的一个元件。处理器支持标准的ARMv7“受保护的存储器
系统结构〞〔PMSA〕模型。如果希望向处理器提供存储器保护,如此可以使用可选的MPU;MPU对访问允许 和存储器属性进展检验。它包含8个区和一个可选的执行默认存储器映射访问属性的背景区。
ETM支持指令跟踪的低本钱跟踪宏单元。
TPIU用作来自ITM和ETM〔如果存在〕的Cortex-M3内核跟踪数据与片外跟踪端口分析仪之间的桥接。
Cortex-M3处理器可配置为具有SW-DP或JTAG-DP调试端口的接口,或两者都有。这两个调试端口提供对系统中包括处理器存放器在内的所有存放器和存储器的调试访问。
内核存放器组织
如图所示,Cortex_M3内核存放器分为16个通用存放器R0~R15和7个特殊功能存放器。 word
5 / 35
R0 R1
R2
R3
R4
R5
R6
R7 R8
R9
R10
R11
R12
R13〔SP〕
R14〔LR〕
R15〔PC〕
xPSR
PRIMASK
FAULTMASK
BASEPRI
CONTROL
低
寄
存
器
通
用
寄
存
器 高
寄
存
器
特
殊 状态存放器 功 能 中断屏蔽
寄 存放器 存 器 控制存放器
MSPPSP
图存放器组织图
通用存放器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执行示意如图所示。 word
6 / 35 已使用
已使用
上次压入的数据
未用
未用 已使用
已使用
已使用
0x00000000
未用
RAM RAM
0x2000_000CMSP
向下生 0x2000_0008 长MSP
堆栈操作示意图
R14程序连接存放器〔LR〕:在执行分支〔B〕和〔BL〕指令或带有交换分支〔BX〕和指令〔BLX〕时,PC的返回地址自动保存进LR。比如在子程序调用时用保存子程序的返回地址。LR也用于异常返回,但是在这里保存的是返回后的状态,不是返回的地址,异常返回是通过硬件自动出栈 弹出之前压入的PC 完成的。
R15程序计数器〔PC〕:是程序运行的根底,具有自加的功能。该存放器的位0始终为0,因此,
指令始终与字或半字边界对齐。
特殊功能存放器
特殊功能存放器分为程序状态存放器、中断屏蔽存放器和控制存放器三类。
xPSR程序状态存放器:系统级的处理器状态可分为3类,应用状态存放器〔APSR〕、中断状态寄存器〔IPSR〕、执行状态存放器〔EPSR〕,可组合起来构成一个32位的存放器,统称xPSR。
表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 xPSR 存放器各位功能
位 名称 定义
31 N 负数或小于标志:1:结果为负数或小于;0结果为正数或大于
30 Z 零标志:1:结果为0;0:结果为非0
29 C 进位/借位标志:1:进位或借位;0没有进位或借位
28 V 溢出标志:1:溢出;0:没有溢出