390 likes | 718 Views
第 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 位 内部的数据路径;
E N D
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 位 内部的数据路径; • 32 位 寄存器; • 32 位 存储器接口。 • Cortex-M3 内核采用哈佛架构,指令和数据各使用一条总线。由于指令和数据可以从存储器中同时读取,所以 Cortex-M3 处理器对多个操作并行执行,加快了应用程序的执行速度。 • Cortex‐M3内部附赠了调试组件,用于在硬件调试操作。
处理器组件有两个层次,ETM、TPIU、SW/JTAG-DP和ROM表四个组件在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就没有跟踪能力。)
SW/JTAG-DP处理器可以设置成有SW-DP 或者 JTAG-DP 调试端口,或者两者都有。调试端口提供对系统中所有的外设寄存器、存储器、处理器寄存器的调试访问。 • ROM 表 :自动检测CM3中包含哪些调试组件。
FPB :闪存地址重载与断点单元 • ITM :指令跟踪宏单元 • ETM :嵌入式跟踪宏单元 • DWT :数据观察点与跟踪单元
2. 寄存器组 Cortex‐M3处理器 拥有R0‐R15 的寄存器组。 返回目录
2. 寄存器组 • Cortex‐M3 还搭载了若干特殊功能寄存器: • 程序状态字寄存器组(xPSR) • 中断屏蔽寄存器组(PRIMASK, FAULTMASK, BASEPRI) • 控制寄存器(CONTROL)
2. 特殊功能寄存器组 返回目录 • 程序状态寄存器(xPSR) • 应用程序 PSR(APSR) • 中断号 PSR(IPSR) • 执行 PSR(EPSR)
2. 特殊功能寄存器组 返回目录 • 中断屏蔽寄存器组 • PRIMASK • FAULTMASK • BASEPRI
2. 特殊功能寄存器组 返回目录 • 控制寄存器(CONTROL) • 控制寄存器用于定义特权级别,还用于选择当前使用哪个堆栈指针
3. 操作模式和特权极别 • Cortex‐M3 处理器支持两种处理器的操作模式,以及两级特权操作: • 处理模式( handler mode ) • 线程模式 ( thread mode )
Cortex-M3处理器代码可以是特权执行或非特权执行。 • 线程模式在复位之后为特权访问 。 • 这里需要注意的是,处理模式始终是特权访问的。 返回目录
4. 嵌套向量中断控制器(NVIC) 主要有以下特征: • 可配置1~240个外部中断。 • 可配置优先级位数3~8位。 • 支持电平和脉冲(边沿)中断。 • 可以动态重新分配中断优先级。 • 优先级分组。 • 进入中断时,处理器状态自动保存,退出中断时状态自动恢复,无额外指令开销
NVIC采用尾链(Tail-Chaining)技术,简化了在激活与挂起的中断之间的数据传 送。它用简单的6个周期的取指,取代了传统的串行堆栈通常需要超过30个时钟周期的Push-Pop操作。 • 为了提高低功耗特性,NVIC设计了三种睡眠方式。其深度睡眠(Deep-Sleep)功能可以输出信号到其他系统模块,使整个器件快速关闭。 • Cortex-M3 处理器使用一个可以重复定位的向量表,表中包含了将要执行的函数的地址,可供具体的中断处理器使用。中断被接受之后,处理器从向量表中获取地址。向量表复位时指向零,编程控制寄存器可以使向量表重新定位。
向量表 Cortex-M3支持大量异常,包括11个系统异常,和最多240 个外部中断。 • 异常产生时,对应的异常处理程序就会执行。为了决定handler 的入口地址,CM3 使用了“向量表查表机制” 返回目录
虽然CM3 是支持240 个外中断的,但具体使用了多少个是由芯片生产商决定。CM3 还有一个NMI(不可屏蔽中断)输入脚。当它被置为有效时,NMI 服务程序会无条件地执行。
5. 存储器映射 Cortex‐M3 支持4GB 存储空间
数据类型 Cortex-M3支持以下数据类型: 1. 32 位字 2. 16 位半字 3. 8 位字节 • 存储器格式 Cortex-M3 处理器能够以小端格式或大端格式访问存储器中的数据字,而访问代码时始 终使用小端格式。 小端格式:一个字中最低地址的字节为该字的最低有效字节,最高地址的字节为最高有效字节。存储器系统地址 0 的字节与数据线 7-0 相连。 注 :小端格式是 ARM 处理器默认的存储器格式。
CM3 支持 both 小端模式和大端模式。 ●复位时确定使用哪种端模式的,且运行时不得更改。 ●指令预取永远使用小端模式 ● 外部私有总线地址区 0xE0000000 至 0xE00FFFFF 也永远使用小端模式。
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 区的访问
地址 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
举例: 注意:位带别名区的字只有 LSB 有意义。
位带操作好处: 能用来化简跳转的判断。当跳转依据是某个位时,以前必须这样做: ‹ 读取整个寄存器 ‹ 掩蔽不需要的位 ‹ 比较并跳转 现在只需: ‹ 从位带别名区读取状态位 ‹ 比较并跳转
非对齐数据访问 CM3 支持使用非(地址)对齐的传送,数据存储器的访问无需对齐。 而以前的ARM 处理器只允许对齐的数据传送。
事实上,在内部是把非对齐的访问转换成若干个对齐的访问的,这种转换动作由处理器 总线单元来完成。 坏处: 但是,因为它 通过若干个对齐的访问来实现一个非对齐的访问,会需要更多的总线周期。事实上,节省内 存有很多方法,但没有一个是通过压缩数据的地址,不惜破坏对齐性的这种歪门邪道。因此, 应养成好习惯,总是保证地址对齐,这也是让程序可以移植到其它 ARM 芯片上的必要条件。
6.总线矩阵 • 总线矩阵与如下外部总线相连: 1.ICode 总线:从代码空间取指令和向量,32 位总线 2. DCode总线:对代码空间进行数据加载/存储以及调试访问,32位总线。 • 系统总线:对系统空间执行取指令和向量,数据加载/存储以及调试访问,32 位总线。 • 非对齐访问。总线矩阵将非对齐的处理器访问转换为对齐访问。
7. 存储器保护单元(MPU) • Cortex‐M3 有一个可选的存储器保护单元。 可以对特权级访问和用户级访问分别施加不同的访问限制。当检测到犯规时,MPU 就会产生一个fault 异常; • 最常见的就是由操作系统使用MPU,以使特权级代码的数据,包括操作系统本身的数据不被其它用户程序弄坏。 • MPU 在保护内存时是按区管理的。它可以把某些内存区域设置成只读,从而避免了那里的内容意外被更改;还可以在多任务系统中把不同任务之间的数据区隔离。
8. 指令集 • Cortex‐M3 只使用Thumb‐2 指令集。 ARM公司在其Cortex-M3内核中嵌入新的Thumb-2指令集。新的Thumb-2内核技术保留了紧凑代码质量并与现有ARM方案的代码兼容性,提供改进的性能和能量效率。 Thumb-2是一种新型混合指令集,融合了16位和32位指令,用于实现密度和性能的最佳平衡。在不对性能进行折中的情况下,节省许多高集成度系统级设计的总体存储成本。
10. 调试支持 • Cortex‐M3 内核搭载了若干种调试相关的特性。最主要的就是程序执行控制,包括停机(halting)、单步执行(stepping)、指令断点、数据观察点、寄存器和存储器访问、性能速写(profiling)以及各种跟踪机制。
小结 • 1.高性能 • 许多指令都是单周期的——包括乘法相关指令; • 简化了软件开发和代码维护,使产品面市更快; • 2.先进的中断处理功能 • 内建的嵌套向量中断控制器支持多达 240 条外部中断输入; • 在进入异常服务例程时,自动压栈了R0‐R3, R12, LR, PSR 和PC; • 3.低功耗 • Cortex‐M3 需要的逻辑门数少,所以先天就适合低功耗要求的应用,支持节能模式。内核可以进入睡眠模式,并且以不同的方式唤醒。