第二章ARM Cortex-M3内核结构

合集下载

ARM Cortex-M3处理器内核

ARM Cortex-M3处理器内核
计数器在多次触发(multi-shot)方式下操作。也就是说,计数 器装载重装值,然后递减计数。当计数到0时,它将COUNTFLAG 置位,并且可以根据TICKINT的值来选择是否将SysTick处理程序挂 起。然后又重新装载重装值并开始计数。 0 = 计数器被禁能。
• SysTick 重装值寄存器
SysTick 重装值寄存器用于指定当计数器计数到达0时装入当前值寄 存器的起始值。它可以是1到0x00FF.FFFF之间的任意值。 作为多次触发(multi-shot)定时器,它每N+1个时钟脉冲就会触发。 如果在每个节拍中断时写入新值,那么它就被当作单次触发,这样就 必须写入实际的递减值。
• SysTick 当前值寄存器
• SysTick 控制和状态寄存器
使用 SysTick 控制和状态寄存器来使能 SysTick 特性。复位是 0x0000.0000。
– COUNTFLAG
如果上次读取计数器计数值为0,则返回1。通过应用进行读操作 时清零。如果调试器使用DAP读取,那么只要AHB-AP控制寄存 器中的 MasterType位被设为0,该位就会在只读操作时清零。否 则,COUNTFLAG位不会因为调试器的读操作而改变。
使用 SysTick 当前值寄存器来查找该寄存器的当前值。 该寄存器是写清零。向该寄存器写入任意值都会将寄存器清零。清零 该寄存器也会将SysTick控制和状态寄存器的COUNTFLAG位清零。
flash修补和断点fpb单元用于实现断点操作数据观察点和触发dwt单元用于执行观察点触发源和系统性能分析数据跟踪源仪表跟踪宏单元itm用于支持printf型调试调试消息测试访问端口和边界扫描结构标准
Cortex-M3处理器内核 ARM Cortex-M3处理器内核

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内核

第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指令系统

第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。 上条指令结果的标志

cortex-m3体系结构

cortex-m3体系结构

5、XPSR----程序状态寄存器
应用状态寄存器(APSR) 中断状态寄存器(IPSR) 执行状态寄存器(EPSR)
程序状态寄存器----应用状态寄存器(APSR)
APSR的位分配
31 30 29 28 27 26
0
NZCVQ
保留
饱和(sticky saturation)标志
溢出标志: 1:溢出 0:没有溢出
7、控制寄存器CONTROL
CONTROL[1:0] 由两个状态位组成:
CONTROL[1] CONTROL[0]
0
主堆栈
特权级
1
进程堆栈
用户级
寄存器总结
寄存器名称 APSR IAPSR EAPSR XPSR
功能 应用状态寄存器 APSR和IPSR的组合 APSR和EPSR的组合 APSR、EPSR和IPSR的组合
STEP4
EPSR使用的是[26:24]和[15:10]位
6、异常中断寄存器
6-1中断屏蔽寄存器( PRIMASK )
PRIMASK 1
0
只有最低位有效
屏蔽所有中断
响应中断
相当于中断总开关, 为1,所有中断被屏蔽; 为0,中断能正常响应。
6-2 中断屏蔽寄存器BASEPRI
BASEPRI 2
优先级0 优先级1
IPSR EPSR IEPSR MSP PSP PRIMASK BASEPRI BASEPRI_MAX FAULTMASK CONTROL
中断状态寄存器 执行状态寄存器 IPSR和EPSR的组合 主堆栈指针 进程堆栈指针 中断屏蔽寄存器 可屏蔽等于和低于某个优先级的中断 BASEPRI允许设置的最大值 错误屏蔽寄存器 控制寄存器

第2章 Cortex-M3 内核原理2

第2章  Cortex-M3 内核原理2

2.5 工作模式
工作模式
• Cortex‐M3支持两种模式和两个特权等级。
特权级 异常handler代码 Bootloader或主应 用程序代码 处理模式(handler mode) 用户级 用法错误
线程模式(thread mode) 线程模式(thread mode)
RESET
工作模式
• Cortex‐M3处理器的工作模式和特权等级共有三种配合。
Control寄存器与微处理器工作模式
工作模式(续)
• 在“线程模式+用户级”下,
禁止访问包含配置寄存器以及调试组件寄存器的系统控制空间 (SCS);P39 禁止使用MSR访问除APSR外的特殊功能寄存器。
• 在特权级下(“处理模式 or 线程模式”)
可通过置位CONTROL[0]来进入用户级; 不管是任何原因产生了任何异常,处理器都将以特权级来运行其服 务例程; 异常返回后将回到产生异常之前的特权级。
CONTROL[0]=? CONTROL[1]=0
CONTROL[0]=0 CONTROL[1]=0
工作模式(续)
• 特权等级和堆栈指针的选择均由CONTROL负责。
(2)若CONTROL[0]=1(线程模式+用户级),则在中断响应的始 末,处理器模式和特权等级都要发生变化。
CONTROL[0]=1 CONTROL[1]=1
• 用户级下(“线程模式”)
代码不能再试图修改CONTROL[0]来回到特权级。 它必须通过产生异常,并通过异常处理程序程序(处于特权级下) 来修改CONTROL[0],才能在线程模式拿到特权级。
工作模式(续)
• 特权级和处理器模式的切换
置位control[0]

arm cortex-m3全可编程soc原理

arm cortex-m3全可编程soc原理

arm cortex-m3全可编程soc原理如下:
1.架构:Cortex-M3 核心是基于ARMv7-M 架构,这是一个针对
嵌入式应用程序优化的架构。

它包含一个ARM 指令集、一个
ARM 连接至程序的接口以及一些特定于嵌入式应用的扩展。

2.核心功能:Cortex-M3 核心具有高性能、低功耗和低成本的特
点。

它包含一个32 位RISC 处理器,具有一个三级流水线。

核心还包含一个嵌套向量中断控制器,允许高效的异常和中断
处理。

3.可编程性:Cortex-M3 是完全可编程的。

这意味着硬件和软件
都可以通过编程来定制。

ARM 的微控制器工具链(如Keil 或
IAR)可用于编译和调试代码,以适应特定的应用需求。

4.系统集成:SoC 是一种将多个硬件组件集成到一个单一芯片上
的技术。

在Cortex-M3 中,这些组件可能包括内存、通信接口、
ADC、DAC 等。

通过将所有这些组件集成到单个芯片上,可以
降低系统成本、减小体积并提高可靠性。

5.低功耗:Cortex-M3 被设计为低功耗微控制器,适用于电池供
电的应用。

它具有多种低功耗模式,可以在不使用时降低功耗。

6.安全性:Cortex-M3 提供了多种安全特性,如内存保护单元
(MPU)和安全区域(Secure Zone),以保护敏感数据和代码。

ARM Cortex-M3 内核介绍

ARM Cortex-M3 内核介绍

ARM Cortex-M3 内核介绍内核包含四部分:1.乘法器;2.控制逻辑;3.Thumb 指令译码器;4.内部接口CM3 内部包含元素介绍:1. DAP,调试访问接口,Debug Access Port。

Cortex‐M3 的调试系统基于ARM 最新的CoreSight 架构。

不同于以往的ARM 处理器,内核本身不再含有JTAG 接口。

取而代之的,是CPU 提供称为调试访问接口(DAP)的总线接口。

通过这个总线接口,可以访问芯片的寄存器,也可以访问系统存储器,甚至是在内核运行的时候访问!对此总线接口的使用,是由一个调试端口(DP)设备完成的。

DPs 不属于CM3 内核,但它们是在芯片的内部实现的。

目前可用的DPs 包括SWJ‐DP(既支持传统的JTAG 调试,也支持新的串行线调试协议),另一个SW‐DP 则去掉了对JTAG 的支持。

另外,也可以使用ARM CoreSignt 产品家族的JTAG‐DP 模块。

这下就有 3 个DPs 可以选了,芯片制造商可以从中选择一个,以提供具体的调试接口(通常都是选SWJ‐DP)。

2. ETM 的作用就是记录处理器做的事情并送到外面的调试器。

由于微控制器带有大量的片内存储器,因此不能简单地通过观察外部管脚来确定处理器核是如何运行的。

ETM 对深嵌入处理器内核提供了实时跟踪能力。

它向一个跟踪端口输出处理器执行的信息。

软件调试器允许使用JTAG 接口对ETM 进行配置并以用户易于理解的格式显示捕获到的跟踪信息。

ETM 直接连接到ARM 内核而不是主AMBA 系统总线。

3.NVIC 是Cortex-M3 处理器中一个完整的部分,它可以进行高度配置,为处理器提供出色的中断处理能力。

在NVIC 的标准执行中,它提供了一个非屏蔽中断(NMI)和32 个通用物理中断,这些中断带有8 级的抢占优先权。

NVIC可以通过综合选择配置为1 到240 个物理中断中的任何一个,并带有多达256。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

备课日期: 页Βιβλιοθήκη 2011 年 03 月 1 日

2
四川师范大学成都学院

课时授课计划(教案)
Thumb状态和调试状态; 处理模式和线程模式; ISR的低延迟进入和退出; 可中断-可继续(interruptible-continued)的LDM/STM、PUSH/POP; 支持ARMv6类型BE8/LE; 支持ARMv6非对齐访问。
四川师范大学成都学院
课时授课计划(教案)
第二章
ARM Cortex-M3 内核结构
教学目标 通过本章的学习,要理解 ARM Cortex-M3 内核结构,结合 MCS-51 单片机,分析其优缺点;掌握 ARM Cortex-M3 内核寄存器组织、处理器运行模式、存储器映象、异常及其操作;了解存储器保护单元及应 用;了解 ARM Cortex-M3 调试组件的工作原理及应用。 本章是 ARM Cortex-M3 微控制器体系结构分析,内容涉及内核结构、CPU 寄存器组织、存储器映 射、异常形为及操作,在学习过程中与 8 位单片机(MCS-51 单片机、PIC 系列单片机等)结合分析, 以期达到良好学习效果。
2.1 2.1.1 概述
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内部还附赠了很多调试组件,用于在硬件水平上支持 调试操作,如指令断点,数据观察点等。另外,为支持更高级的调试,还有其它可选组件,包括指令跟 踪和多种类型的调试接口。
进位/借位标志:1:进位或借位;0 没有进位或借位 溢出标志:1:溢出;0:没有溢出 粘着饱和标志:1:已饱和;0:没有饱和 IF-Then 位。它们是 if-Then 指令的执行状态位。 包含 if-Then 模块的指令数目和它们的执行条件 用于指示处理器当前是 ARM 状态还是 Thumb 状态 可中断-可继续的指令位: 如果在执行 LDM 或 STM 操作时产生一次中断, 则 LDM 或 STM 操作暂停,该位来保存该操作中下一个寄存器操作数的编号,在中断响 应之后,处理器返回由该位指向的寄存器并恢复操作。 占先异常的编号
中断屏蔽寄存器:分为三组,分别是 PRIMASK、FAULTMASK、BASEPRI。 PRIMASK 为片上外设总中断开关,该寄存器只有位 0 有效,当该位为 0 是响应所有外设中断;当该 位为 1 时屏蔽所有片上外设中断。 FAULTMASK 寄存器管理系统错误的总开关,该寄存器中有位 0 有效,当该位为 0 时,响应所有的异 常;为 1 屏蔽所有的异常。 BASEPRI 寄存器用来屏蔽优先级等于和小于某一个中断数值的寄存器。 控制寄存器:CONTROL 有两个作用,其一用于定义处理器特权级别,其二用于选择堆栈指针,如表 3.3 所示。
2.2 内核寄存器组织
如图 2.2 所示,Cortex_M3 内核寄存器分为 16 个通用寄存器 R0~R15 和 7 个特殊功能寄存器。
备课日期: 页
2011 年 03 月 1 日

4
四川师范大学成都学院
课时授课计划(教案)
R0 R1 R2 R3 R4 R5 R6 R7 R8 R9
低 寄 存 器 通 用 寄 存 器
寄存 器名 APSR IPSR EPSR
位 31 N 30 Z 29 C 28 V 27 Q 中断编号 ICI/IT T ICI/IT 26:25 24 23:20 19:16 15:10 9 8 7 6 5 4:0
xPSR 寄存器的各位的功能如表 2.2:
表 2.2 xPSR 寄存器各位功能
位 31 30
名称 N Z 零标志:1:结果为 0;0:结果为非 0
定义 负数或小于标志:1:结果为负数或小于;0 结果为正数或大于
备课日期: 页
2011 年 03 月 1 日

6
四川师范大学成都学院
课时授课计划(教案)
29 28 27 26:25 15:10 24 15:12 8:0
C V Q IT T ICI ISR
4.FPB
FPB单元实现硬件断点以及从代码空间到系统空间的修补访问,FPB有8个比较器。
5.DWT
数据观察点和跟踪,调试功能部件。
备课日期: 页
2011 年 03 月 1 日

3
四川师范大学成都学院
6.ITM
课时授课计划(教案)
ITM是一个应用导向(application driven)的跟踪源,支持对应用事件的跟踪和printf类型的调 试。
高 寄 存 器
R10 R11 R12 R13(SP) R14(LR) R15(PC) MSP PSP
特 殊 功 能 寄 存 器
状态寄存器 中断屏蔽 寄存器 控制寄存器
xPSR PRIMASK FAULTMASK BASEPRI CONTROL
图 2.2 寄存器组织图
2.2.1 通用寄存器 R0-R15
2.2.2 特殊功能寄存器
特殊功能寄存器分为程序状态寄存器、中断屏蔽寄存器和控制寄存器三类。 xPSR 程序状态寄存器:系统级的处理器状态可分为 3 类,应用状态寄存器(APSR)、中断状态寄 存器(IPSR)、执行状态寄存器(EPSR),可组合起来构成一个 32 位的寄存器,统称 xPSR。
表 2.1 xPSR 寄存器
中断
NVIC
睡眠 调试 指令
CM3核
数据 MPU
Cortex-M3
ETM 触发 TPIU
专用外 FPB 专用外设总线(内部) SW-DP JTAG-D P AHB-AP 总线矩阵 DWT ITM 设总线
APB
ROM表
I-code总线 总线矩阵
D-code总线
系统总线 系统总线(AHB)
静态 RAM
外部 RAM 控制器
2.1.2 内核结构组成及功能描述
Cortex-M3微控制器内核包括处理核心和许多的组件,目的是用于系统管理和调试支持。如图2.1为 Cortex-M3内核方框图。
备课日期: 页
2011 年 03 月 1 日

1
四川师范大学成都学院
课时授课计划(教案)
NMI 中断号[239:0] SLEEPING SLEEPDEEP SysTick
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 所示。
外部 设备
AHB to APB 总线
外设总线 外部 RAM Flash 存 储器 SRAM 可 选配 I/O UART PWM Timer
图 2.1 Cortex-M3 内核方框图
1.处理器内核
Cortex-M3处理器内核采用ARMv7-M架构,其主要特性如下: Thumb-2指令集架构(ISA)的子集,包含所有基本的16位和32位Thumb-2指令; 哈佛处理器架构,在加载/存储数据的同时能够执行指令取指; 带分支预测的三级流水线; 32位单周期乘法; 硬件除法;
备课日期: 页
2011 年 03 月 1 日

5
四川师范大学成都学院
课时授课计划(教案)
RAM 已使用 已使用 已使用 向 下 生 长
RAM 已使用 已使用 0x2000_000C MSP 上次压入的数据 未用 未用 0x2000_0008 MSP
0x00000000
未用
2.3 堆栈操作示意图
R14 程序连接寄存器(LR):在执行分支(B)和链接(BL)指令或带有交换分支(BX)和链接 指令(BLX)时,PC 的返回地址自动保存进 LR。比如在子程序调用时用保存子程序的返回地址。LR 也用于异常返回,但是在这里保存的是返回后的状态,不是返回的地址,异常返回是通过硬件自动出栈 弹出之前压入的 PC 完成的。 R15 程序计数器(PC):是程序运行的基础,具有自加的功能。该寄存器的位 0 始终为 0,因此, 指令始终与字或半字边界对齐。
相关文档
最新文档