通用Cortex-M3处理器结构与工作原理.ppt_第1页
通用Cortex-M3处理器结构与工作原理.ppt_第2页
通用Cortex-M3处理器结构与工作原理.ppt_第3页
通用Cortex-M3处理器结构与工作原理.ppt_第4页
通用Cortex-M3处理器结构与工作原理.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通用Cortex-M3处理器结构与工作原理,课本第二章,本章工作原理包括两类内容: 通用Cortex-M3处理器结构与工作原理 具体STM32(CM3)处理器结构与工作原理,教学资源,四本重要的参考手册: STM32F103参考手册 Cortex-M3权威指南 STM32F103数据手册 STM32固件函数库使用手册,目录,Cortex M3处理器结构图 CM3内核 嵌套向量中断控制器(NVIC) 总线矩阵 外部总线 调试接口 多级存储结构 寄存器 存储器映射 存储器的组织 存储格式 异常与中断 异常的处理方式-中断 中断的概念 嵌套向量中断控制器的主要性能,Cortex-M3处理器基本结构,Cortex-M3中央内核基于哈佛架构,指令和数据各使用一条总线(图 2-1)。 与Cortex-M3不同,ARM7系列处理器使用冯诺依曼架构,指令和数据共用信号总线以及存储器。 由于指令和数据可以从存储器中同时读取,所以Cortex-M3处理器对多个操作并行执行,加快了应用程序的执行速度。,图 2-1 Cortex-M3处理器架构,Cortex-M3 处理器,集成了内核和高级系统外设的分级处理器 Cortex-M3 内核 哈佛体系结构 拥有分支预测功能的三级流水线 Thumb-2 指令集和传统的 Thumb指令集 带有 硬件除法和 单信号周期乘法的ALU Cortex-M3 处理器 Cortex-M3 内核 可配置的中断控制器 总线矩阵 先进的调试组件 可选择的 MPU & ETM,查看大图,逻辑体系,Cortex M3处理器结构框透视图,工作原理参见 Cortex-M3权威指南.pdf p101,STM32F10x系列微控制器 系统结构,课本p27,Cortex M3处理器结构框透视图,课本p25说明,STM32F10x系列微控制器 系统结构,STM32F10x系列微控制器 系统结构,CM3内核 程序执行三步曲: 取指 译码 执行,嵌套向量中断控制器(NVIC) NVIC为低延迟实现异常处理提供了方便。主要有以下特征: 可配置1240个外部中断。 可配置优先级位数38位。 支持电平和脉冲(边沿)中断。 可以动态重新分配中断优先级。 优先级分组。 支持尾链(tail-chaining)中断。 进入中断时,处理器状态自动保存,退出中断时状态自动恢复,无额外指令开销,总线矩阵 Cortex-M3处理器集成了一个AMBA AHB-Lite总线来连接系统外设,并降低系统集成的复杂性。 总线矩阵支持不对齐的数据访问,使不同的数据类型可以在存储器中紧密衔接可显著降低SRAM的需求和系统成本。 总线矩阵将处理器、调试接口连接到外部总线。,总线矩阵连接到以下外部总线: ICode总线。这是一条32位的AHB-Lite总线,主要用于从指令空间中取指和取向量。 DCode总线。这是一条32位的AHB-Lite总线,主要用于从指令空间的数据读写和调试访问。 系统总线。这是一条32位的AHB-Lite总线,主要用于从系统空间中取指、取向量、读写数据和调试访问。 PPB(私有外设总线)。这是一条32位的APB (v2.0)总线,主要用于从PPB空间读写数据和调试访问。,私有外设总线有两条: AHB私有外设总线,只用于CM3内部的AHB外设,它们是:NVIC, FPB, DWT和ITM。 APB私有外设总线,既用于CM3内部的APB设备,也用于外部设备( “外部”是对内核而言)。CM3允许器件制造商再添加一些片上APB外设到APB私有总线上,它们通过APB接口来访问。,调试接口 硬件调试解决方案,通过一个传统的JTAG口或一个适合小封装器件的2线串行调试口(SWD),可以获得很高的处理器系统可视度。 对于系统跟踪,处理器在数据观察点基础上集成了一个可选的ETM(嵌入式跟踪宏单元),它可以被配置为特定的系统事件触发。 为了简化这些系统事件的处理,一个串行观测器(Serial Wire Viewer,SWV)可以通过一个引脚输出标准的ASCII数据流。 Flash修补技术,使器件和系统开发者在调试或运行过程中,可以修补从ROM到SRAM或Flash的代码错误,可避免昂贵的重定制,上图向我们展示了设计的 RTL 层次。 其中的两条外设总线:一条72MHZ,一条36MHZ 由于 ETM、TPIU、SW/JTAG-DP 和 ROM 表4个组件是可选的,或者它们的实现和使用具有灵活性,因此这 4 个组件位于Cortex-M3 处理器的外面。 设计实现可能与图中显示的有所不同。可能的系统实现的选项见下面的 3 个部分:,TPIU的实现选项: 如果您的系统中有 ETM,则会含有 TPIU格式程序,否则就不包含该格式程序。 一个多内核的实现可使用单个或多个 TPIU来跟踪。 ARM TPIU模块可以用兼容 TPIU的指定合作伙伴的 CoreSight 取代。 在生产设备中,TPIU可以移除。 注:如果将 TPIU移除,则 Cortex-M3 不具有跟踪功能。,SW/JTAG-DP的实现选项: 设计实现可以含有 SW-DP 或 JTAG-DP中的任一个或两者都有。 ARM SW-DP 可以被兼容 SW-DP的指定合作伙伴的 CoreSight 取代。 ARM JTAG-DP可以被兼容 JTAG-DP 的指定合作伙伴的 CoreSight 取代。 SW-DP 或 JTAG-DP可以包含指定合作伙伴的测试接口。 ROM 表 如果系统中添加了附加的调试元件,则 ROM 存储器表中的描述需进行修改。,多级存储结构,按照与CPU的数据交换速度可分为 寄存器:CPU内部,暂存运行中的数据,掉电丢失。RAM类存储设备。 Flash闪存:CPU外部,保存程序和运行中的数据。ROM+RAM类存储设备。 SRAM:CPU外部,暂存运行中的数据。RAM类存储设备。,参见 Cortex-M3权威指南.pdf p26,寄存器,Cortex-M3寄存器: 13个通用寄存器(R0-R12) 分组的堆栈指针SP 链接寄存器R14 程序计数器R15 特殊用途程序状态寄存器xPSR 外部设备也有各自的寄存器,课本p33,1、通用寄存器 通用目的寄存器 R0-R12都是32位通用寄存器,用于数据操作。 注意:绝大多数16位Thumb指令只能访问R0-R7,而32位Thumb-2指令可以访问所有寄存器。 复位后的初始值是不可预料的,堆栈指针R13: Cortex-M3拥有两个堆栈指针,然而它们是banked,因此任一时刻只能使用其中的一个。 主堆栈指针(MSP):复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包括中断服务例程) 进程堆栈指针(PSP):由用户的应用程序代码使用。,堆栈是一种存储器的使用模型。它由一块连续的内存和一个栈顶指针组成,用于实现“后进先出”的缓冲区。 其最典型的应用,就是在数据处理前先保存寄存器的值,再在处理任务完成后从中恢复先前保护的这些值。 堆栈指针用于访问堆栈,并且PUSH指令和POP指令默认使用SP。,Cortex-M3权威指南.pdf p46,参见课本2相关章节,在执行PUSH和POP操作时,通常被称为SP的地址寄存器,会由硬件自动调整它的值,以避免后续操作破坏先前的数据。,连接寄存器R14: 当呼叫一个子程序时,由R14存储返回地址 程序计数寄存器R15: 指向当前的程序地址。如果修改它的值,就能改变程序的执行流,2、特殊功能寄存器 Cortex-M3还在内核水平上搭载了若干特殊功能寄存器,包括: 程序状态字寄存器组(PSRs) 中断屏蔽寄存器组(PRIMASK, FAULTMASK, BASEPRI) 控制寄存器(CONTROL),存储器的地址映射(地址分配),Cortex-M3 处理器只有一个单一固定的存储器地址映射。这一点极大地方便了软件在各种CM3单片机间的移植。 如各款CM3单片机的NVIC和MPU都在相同的位置布设寄存器,使得它们变得与具体器件无关。 虽然CM3定出的条条框框是粗线条的,但它依然允许芯片制造商灵活细腻地分配存储器地址空间,以制造出各具特色的单片机产品。 什么是地址:地址是给每一个存储单元(寄存器单元,Flash单元,SRAM单元,甚至外部设备的寄存器单元)分配的唯一的定位标志。(类似房间门牌号码或电话号码) 1个存储单元一般是对应1个字节。也可能对应1个二进制位。 什么是字:字的宽度由CPU的数据(功能)总线宽度来决定。STM32就表示它的字宽是4个字节32位。,CM3的地址空间是4GB, 程序可以在代码区,内部SRAM区以及外部RAM区中执行。 但是因为指令总线与数据总线是分开的,最理想的是把程序放到代码区,从而使取指和数据访问各自使用自总线 具体4GB的粗线条划分如下图:,CM3的存储器组织,Cortex-M3权威指南.pdf p83,课本p28-30,内部SRAM区的大小是512MB,用于让芯片制造商连接片上的SRAM,这个区通过系统总线来访问。 在这个区的下部,有一个1MB的区间,被称为“位带区”。 该位带区还有一个对应的32MB的 “位带别名(alias)区”,容纳了8M个“位变量”(对比8051的只有128个位变量)。 位带区对应的是最低的1MB地址范围,而位带别名区里面的每个字对应位带区的一个比特。 位带操作只适用于数据访问,不适用于取指。通过位带的功能,可以把多个布尔型数据打包在单一的字中,却依然可以从位带别名区中,像访问普通内存一样地使用它们。 位带别名区中的访问操作是原子的,消灭了传统的“读改写”三步曲。位带操作的细节待会还要讲到。,地址空间的另一个512MB范围由片上外设(的寄存器)使用。这个区中也有一条32MB的位带别名,以便于快捷地访问外设寄存器,用法与内部SRAM区中的位带相同。 如可以方便地访问各种控制位和状态位。要注意的是,外设区内不允许执行指令。 还有两个1GB的范围,分别用于连接外部RAM和外部设备,它们之中没有位带。 两者的区别在于外部RAM区允许执行指令,而外部设备区则不允许。 最后还剩下0.5GB的隐秘地带,CM3内核的闺房就在这里面,包括了系统级组件,内部私有外设总线,外部私有外设总线,以及由提供者定义的系统外设。,存储格式,Cortex-M3 处理器将存储器看作从 0开始向上编号的字节的线性集合。例如: 字节 0-3 存放第一个被保存的字 字节 4-7 存放第二个被保存的字 Cortex-M3 处理器能够以小端格式或大端格式访问存储器中的数据字,而访问代码时始终使用小端格式。,注意: 小端格式是 ARM 处理器默认的存储器格式。 在小端格式中,一个字中最低地址的字节为该字的最低有效字节,最高地址的字节为最高有效字节。存储器系统地址 0 的字节与数据线 7-0 相连。 在大端格式中,一个字中最低地址的字节为该字的最高有效字节,而最高地址的字节为最低有效字节。存储器系统地址 0的字节与数据线 31-24 相连。,小端数据格式,大端数据格式,2.6异常,异常是指由于执行指令时的一个错误条件而产生的故障。,工作原理参见 Cortex-M3权威指南.pdf p44,异常模型,Cortex-M3 处理器和嵌套向量中断控制器(NVIC)对所有异常按优先级进行排序并处理。所有异常都在处理模式中操作。 出现异常时,自动将处理器状态保存到堆栈中,并在中断服务程序(ISR)结束时自动从堆栈中恢复。 在状态保存的同时取出向量快速地进入中断。 处理器支持末尾连锁(tail-chaining)中断技术,它能够在没有多余的状态保存和恢复指令的情况下执行背对背中断(back-to-back interrupt)。,异常类型,课本p170,什么是“中断”?,中断服务程序,中断请求,中断服务程序,外 设,CPU,CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。 例如:吃饭时突然手机铃响,中断示意图,中断响应(查向量表),中断请求,中断返回,通过中断向量表找到中断服务程序所在存储

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论