第 2 章 cortex-m3 概览

39
第2第 Cortex-M3 第第

Upload: ivie

Post on 24-Jan-2016

187 views

Category:

Documents


0 download

DESCRIPTION

第 2 章 Cortex-M3 概览. 1. Cortex‐M3 简介. 寄存器组. 2. 操作模式和特权极别. 存储器映射. 3. 5. 嵌套向量中断控制器. 总线接口. 4. 6. 内容提要. 存储器保护单元. 7. 指令系统. 8. 中断和异常. 9. 10. 调试支持. 内容提要. 1. Cortex‐M3 简介. 内核与芯片区别:. 基于 Cortex-M3 的 MCU. 1. Cortex‐M3 简介. Cortex‐M3 是一个 32 位处理器内核。 32 位 内部的数据路径; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 2 章     Cortex-M3 概览

第 2 章 Cortex-M3 概览

Page 2: 第 2 章     Cortex-M3 概览

内容提要

Cortex‐M3 简介1

寄存器组2

操作模式和特权极别3

嵌套向量中断控制器4

存储器映射5

总线接口6

Page 3: 第 2 章     Cortex-M3 概览

内容提要

存储器保护单元7

指令系统8

中断和异常9

调试支持10

Page 4: 第 2 章     Cortex-M3 概览

内核与芯片区别:内核与芯片区别:

1. Cortex‐M3 简介1. Cortex‐M3 简介

基于 Cortex-M3 的 MCU基于 Cortex-M3 的 MCU

Page 5: 第 2 章     Cortex-M3 概览
Page 6: 第 2 章     Cortex-M3 概览

1. Cortex‐M3 简介

Cortex‐M3 是一个 32 位处理器内核。 32 位 内部的数据路径; 32 位 寄存器; 32 位 存储器接口。

Cortex-M3 内核采用哈佛架构,指令和数据各使用一条总线。由于指令和数据可以从存储器中同时读取,所以 Cortex-M3 处理器对多个操作并行执行,加快了应用程序的执行速度。

Cortex‐M3 内部附赠了调试组件,用于在硬件调试操作。

Page 7: 第 2 章     Cortex-M3 概览

处理器组件有两个层次, ETM 、 TPIU 、 SW/JTAG-DP 和 ROM 表四个组件在 Cortex-M3 层的外部,因为这些组件要么是可选的,要么就是在实现和使用时可以灵活改变的

可能的实现选项: TPIU 、 SW/JTAG-DP 、 ROM 表

TPIU TPIU 是 ITM 、 ETM( 如果存在 ) 和片外跟踪端口分析器之间传输 Cortex-M3 跟踪数据的桥梁。 TPIU 可以设置成支持低开销调试的串行引脚跟踪,或者用于更高带宽跟踪的多引脚跟踪。

(注意:如果没有 TPIU ,那么 Contex-M3 就没有跟踪能力。)

Page 8: 第 2 章     Cortex-M3 概览

SW/JTAG-DP 处理器可以设置成有 SW-DP 或者 JTAG-DP 调试端口,或者两者都有。调试端口提供对系统中所有的外设寄存器、存储器、处理器寄存器的调试访问。

ROM 表 :自动检测 CM3 中包含哪些调试组件。

Page 9: 第 2 章     Cortex-M3 概览

FPB : 闪存地址重载与断点单元 ITM :指令跟踪宏单元 ETM :嵌入式跟踪宏单元 DWT :数据观察点与跟踪单元

Page 10: 第 2 章     Cortex-M3 概览

2. 寄存器组

通用寄存器 数据操作主堆栈指针( MS

P )进程堆栈指针( PS

P )

操作系统内核以及异常处理用户应用程序

连接寄存器 存储子程序返回地址程序计数器 指向当前的程序地址

Cortex‐M3 处理器拥有 R0‐R15 的寄存器组。

返回目录

Page 11: 第 2 章     Cortex-M3 概览

2. 寄存器组

Cortex‐M3 还搭载了若干特殊功能寄存器:

程序状态字寄存器组 (xPSR) 中断屏蔽寄存器组 (PRIMASK, FAULTMASK, BASEPRI) 控制寄存器 (CONTROL)

Page 12: 第 2 章     Cortex-M3 概览

程序状态寄存器 (xPSR) 应用程序 PSR ( APSR ) 中断号 PSR ( IPSR ) 执行 PSR ( EPSR )

2. 特殊功能寄存器组

返回目录

Page 13: 第 2 章     Cortex-M3 概览

中断屏蔽寄存器组 PRIMASK FAULTMASK BASEPRI

2. 特殊功能寄存器组

返回目录

Page 14: 第 2 章     Cortex-M3 概览

控制寄存器( CONTROL ) 控制寄存器用于定义特权级别,还用于选择当

前使用哪个堆栈指针

2. 特殊功能寄存器组

返回目录

Page 15: 第 2 章     Cortex-M3 概览

3. 操作模式和特权极别

Cortex‐M3 处理器支持两种处理器的操作模式,以及两级特权操作:• 处理模式 ( handler mode )• 线程模式 ( thread mode )

特权级 用户级

异常处理代码 处理模式 错误用法

主应用程序代码 线程模式 线程模式

Page 16: 第 2 章     Cortex-M3 概览

Cortex-M3 处理器代码可以是特权执行或非特权执行。 线程模式在复位之后为特权访问 。 这里需要注意的是,处理模式始终是特权访问的。

返回目录

Page 17: 第 2 章     Cortex-M3 概览

4. 嵌套向量中断控制器 (NVIC)

主要有以下特征:

可配置 1~240 个外部中断。 可配置优先级位数 3~8 位。 支持电平和脉冲(边沿)中断。 可以动态重新分配中断优先级。 优先级分组。 进入中断时,处理器状态自动保存,退出中断时状

态自动恢复,无额外指令开销

Page 18: 第 2 章     Cortex-M3 概览

NVIC 采用尾链( Tail-Chaining )技术,简化了在激活与挂起的中断之间的数据传 送。它用简单的 6 个周期的取指,取代了传统的串行堆栈通常需要超过 30 个时钟周期的 Push-Pop 操作。

为了提高低功耗特性, NVIC 设计了三种睡眠方式。其深度睡眠( Deep-Sleep )功能可以输出信号到其他系统模块,使整个器件快速关闭。

Cortex-M3 处理器使用一个可以重复定位的向量表,表中包含了将要执行的函数的地址,可供具体的中断处理器使用。中断被接受之后,处理器从向量表中获取地址。向量表复位时指向零,编程控制寄存器可以使向量表重新定位。

Page 19: 第 2 章     Cortex-M3 概览

向量表

Cortex-M3 支持大量异常,包括 11 个系统异常,和最多240 个外部中断。异常产生时,对应的异常处理程序就会执行。为了决定handler 的入口地址, CM3 使用了“向量表查表机制”

返回目录

Page 20: 第 2 章     Cortex-M3 概览

虽然 CM3 是支持 240 个外中断的,但具体使用了多少个是由芯片生产商决定。 CM3 还有一个 NMI (不可屏蔽中断)输入脚。当它被置为有效时, NMI 服务程序会无条件地执行。

Page 21: 第 2 章     Cortex-M3 概览

5. 存储器映射

Cortex‐M3 支持 4GB 存储空间

Page 22: 第 2 章     Cortex-M3 概览

数据类型 Cortex-M3 支持以下数据类型: 1. 32 位字 2. 16 位半字 3. 8 位字节存储器格式 Cortex-M3 处理器能够以小端格式或大端格式访问存储器中的

数据字,而访问代码时始 终使用小端格式。 小端格式 : 一个字中最低地址的字节为该字的最低有效字节,最高

地址的字节为最高有效字节。存储器系统地址 0 的字节与数据线 7-0 相连。

注 :小端格式是 ARM 处理器默认的存储器格式。

Page 23: 第 2 章     Cortex-M3 概览
Page 24: 第 2 章     Cortex-M3 概览

CM3 支持 both 小端模式和大端模式。

●复位时确定使用哪种端模式的,且运行时不得更改。 ●指令预取永远使用小端模式 ● 外部私有总线地址区 0xE0000000 至 0xE00FFFFF

也永远使用小端模式。

Page 25: 第 2 章     Cortex-M3 概览
Page 26: 第 2 章     Cortex-M3 概览

bit-banding 1. 两个 bit-banding 区域。 分别为 SRAM 和外设存储区域中的 最低的 1MB 功能: 将存储器别名区的一个字映射为 bit-band 区的一个位

2. Cortex-M3 存储器映射有 2 个 32MB 别名区,它们被映射为两个 1MB 的 bit-band 区。

对 32MB SRAM 别名区的访问映射为对 1MB SRAMbit-band 区的访问。

对 32MB 外设别名区的访问映射为对 1MB 外设 bit-band

区的访问

Page 27: 第 2 章     Cortex-M3 概览

地址 0x23FFFFE0 的别名字映射为 0x200FFFFF 的 bit-band 字节的位 0 : 0x23FFFFE0=0x22000000+(0xFFFFF*32)+0*4 地址 0x23FFFFFC 的别名字映射为 0x200FFFFF 的 bit-band 字节的位 7 : 0x23FFFFEC=0x22000000+(0xFFFFF*32)+7*4 地址 0x22000000 的别名字映射为 0x20000000 的 bit-band 字节的位 0

: 0x22000000=0x22000000+(0*32)+0*4 地址 0x220001C 的别名字映射为 0x20000000 的 bit-band 字节的位 0 : 0x2200001C=0x22000000+(0*32)+7*4

Page 28: 第 2 章     Cortex-M3 概览

1. 在地址 0x20000000 处写入 0x3355AACC 

2. 读取地址 0x22000008 。本次读访问将读取 0x20000000 ,并提取比

特 2 ,值为 1 。 3. 往地址 0x22000008 处写 0 。本次操作将被映射成对地

址 0x20000000 的 " 读-改-写 " 操作 , 把比特 2 清 0 。

4. 现在再读取 0x20000000 ,将返回 0x3355AAC8 ( bit[2]已清零)。

举例:举例:

注意:位带别名区的字只有 LSB 有意义。 注意:位带别名区的字只有 LSB 有意义。

Page 29: 第 2 章     Cortex-M3 概览

位带操作好处: 能用来化简跳转的判断。当跳转依据是某个位时,

以前必须这样做: ‹ 读取整个寄存器 ‹ 掩蔽不需要的位

‹ 比较并跳转 现在只需: ‹ 从位带别名区读取状态位

‹ 比较并跳转

Page 30: 第 2 章     Cortex-M3 概览

非对齐数据访问CM3 支持使用非(地址)对齐的传送,数据存储器的访问无需对齐。

CM3 支持使用非(地址)对齐的传送,数据存储器的访问无需对齐。

而以前的 ARM 处理器只允许对齐的数据传送。 而以前的 ARM 处理器只允许对齐的数据传送。

对齐:以字为单位的传送,其地址 的最低两位必须是 0 ; 以半字为单位的传送,其地址的 LSB 必须是 0 ; 以字节为单位的传送 ,则无所谓对不对齐。

Page 31: 第 2 章     Cortex-M3 概览
Page 32: 第 2 章     Cortex-M3 概览
Page 33: 第 2 章     Cortex-M3 概览

事实上,在内部是把非对齐的访问转换成若干个对齐的访问的,这种转换动作由处理器 总线单元来完成。

坏处:但是,因为它 通过若干个对齐的访问来实现一个非对齐的

访问,会需要更多的总线周期。事实上,节省内 存有很多方法,但没有一个是通过压缩数据的地址,不惜破坏对齐性的这种歪门邪道。因此, 应养成好习惯,总是保证地址对齐,这也是让程序可以移植到其它 ARM 芯片上的必要条件。

Page 34: 第 2 章     Cortex-M3 概览

6. 总线矩阵

总线矩阵与如下外部总线相连:1. ICode 总线 : 从代码空间取指令和向量, 32 位总

线2. DCode 总线 : 对代码空间进行数据加载 /存储以及

调试访问, 32 位总线。 3. 系统总线 : 对系统空间执行取指令和向量,数据加

载 /存储以及调试访问, 32 位总线。 4. 非对齐访问。总线矩阵将非对齐的处理器访问转换

为对齐访问。

Page 35: 第 2 章     Cortex-M3 概览

7. 存储器保护单元( MPU )

Cortex‐M3 有一个可选的存储器保护单元。可以对特权级访问和用户级访问分别施加不同的访问限制。当检测到犯规时, MPU 就会产生一个 fault 异常;

最常见的就是由操作系统使用 MPU ,以使特权级代码的数据,包括操作系统本身的数据不被其它用户程序弄坏。

MPU 在保护内存时是按区管理的。它可以把某些内存区域设置成只读,从而避免了那里的内容意外被更改;还可以在多任务系统中把不同任务之间的数据区隔离。

Page 36: 第 2 章     Cortex-M3 概览

8. 指令集

Cortex‐M3 只使用 Thumb‐2 指令集。

ARM公司在其Cortex-M3 内核中嵌入新的 Thumb-2 指令集。新的 Thumb-2 内核技术保留了紧凑代码质量并与现有 ARM方案的代码兼容性,提供改进的性能和能量效率。

Thumb-2 是一种新型混合指令集,融合了 16 位和 32 位指令,用于实现密度和性能的最佳平衡。在不对性能进行折中的情况下,节省许多高集成度系统级设计的总体存储成本。

Page 37: 第 2 章     Cortex-M3 概览

10. 调试支持

Cortex‐M3 内核搭载了若干种调试相关的特性。最主要的就是程序执行控制,包括停机 (halting) 、单步执行 (stepping) 、指令断点、数据观察点、寄存器和存储器访问、性能速写 (profiling) 以及各种跟踪机制。

Page 38: 第 2 章     Cortex-M3 概览

小结

1.高性能 许多指令都是单周期的——包括乘法相关指令; 简化了软件开发和代码维护,使产品面市更快;

2. 先进的中断处理功能 内建的嵌套向量中断控制器支持多达 240 条外部

中断输入; 在进入异常服务例程时,自动压栈了 R0‐R3, R12,

LR, PSR 和 PC ;3. 低功耗

Cortex‐M3 需要的逻辑门数少,所以先天就适合低功耗要求的应用,支持节能模式。内核可以进入睡眠模式,并且以不同的方式唤醒。

Page 39: 第 2 章     Cortex-M3 概览

ARM7 与 Cortex-M3