第2章 Cortex-M3 体系结构.ppt_第1页
第2章 Cortex-M3 体系结构.ppt_第2页
第2章 Cortex-M3 体系结构.ppt_第3页
第2章 Cortex-M3 体系结构.ppt_第4页
第2章 Cortex-M3 体系结构.ppt_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

主讲:曹珍贯TEL2、ARMCortex-M3体系结构,安徽理工大学电气与信息工程学院,2、ARMCortex-M3体系结构,2.1.CM3微处理器核结构2.2处理器工作模式及状态2.3.寄存器2.4总线接口2.5存储器的组织与映射2.6.指令集2.7.流水线2.8.异常与中断2.9存储器保护单元MPU2.10STM32微控制器概述,2.1CM3微处理器核结构,集成了内核和高级系统外设的分级处理器Cortex-M3内核哈佛体系结构拥有分支预测功能的三级流水线Thumb-2指令集和传统的Thumb指令集带有硬件除法和单周期乘法的ALUCortex-M3处理器Cortex-M3内核可配置的中断控制器总线矩阵先进的调试组件可选择的MPU(存储器保护单元)SetLED1();voiddelay().,BLdelaydelay:.BXLR.,0X20F0,0X20F4,地址,R14(LR),0X20F4,0X10F4,0X10F4,执行BL指令,LR的值同时更新,寄存器(PC),R0,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13(SP),R14(LR),R15(PC),XPSR,程序计数器(PC)程序计数器总是指向正在取指的指令。该寄存器的位0始终为0,因此,指令始终与字或半字边界对齐。,程序状态寄存器(XPSR)用于指示程序的运行状态。,CM3的状态寄存器,应用程序PSR(APSR)中断号PSR(IPSR)执行PSR(EPSR),异常中断寄存器,控制寄存器(CONTROL),2、ARMCortex-M3体系结构,2.1.CM3微处理器核结构2.2处理器工作模式及状态2.3.寄存器2.4总线接口2.5存储器的组织与映射2.6.指令集2.7.流水线2.8.异常与中断2.9存储器保护单元MPU2.10STM32微控制器概述,2.4总线接口,总线定义总线是CPU与存储器和设备通信的机制,是计算机各部件之间传送数据、地址和控制信息的公共通道。,片内总线或内部总线:连接CPU内部各主要功能部件,片外总线:CPU与存储器(RAM和ROM)和I/O接口之间进行信息交换的通道,数据总线Dbus,地址总线Abus,控制总线Cbus,按相对于CPU位置划分,按功能和信号类型,总线分类,原因:数据宽度:高速总线通常提供较宽的数据连接。成本:高速总线通常采用更昂贵的电路和连接器。桥允许总线独立操作,这样在I/O操作中可提供某些并行性。,一个微处理器系统可能含有多条总线,高速总线,低速总线,高速设备,低速设备,桥,总线互联的电路,2.4总线接口,总线定义总线是CPU与存储器和设备通信的机制,是计算机各部件之间传送数据、地址和控制信息的公共通道。,AMBA总线,片上总线标准种类繁多,而由ARM公司推出的AMBA(AdvancedMicrocontrollerBusArchitecture)片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规范主要包括了AHB(AdvancedHighperformanceBus)系统总线和APB(AdvancedPeripheralBus)外设总线。二者分别适用于高速与相对低速设备的连接。,Cortex-M3模块的内部方框图,I-Code总线负责在0 x0000_00000 x1FFF_FFFF之间的取指操作,D-Code总线负责在0 x0000_00000 x1FFF_FFFF之间的数据访问操作,系统总线负责在0 x2000_00000 xDFFF_FFFF和0 xE010_00000 xFFFF_FFFF之间的所有数据传送(取指和数据),外部专用外设总线负责0 xE004_00000 xE00F_FFFF之间的私有外设访问,内部专用外设总线负责0 xE000_00000 xE003_FFFF之间的私有外设访问,2、ARMCortex-M3体系结构,2.1.CM3微处理器核结构2.2处理器工作模式及状态2.3.寄存器2.4总线接口2.5存储器的组织与映射2.6.指令集2.7.流水线2.8.异常与中断2.9存储器保护单元MPU2.10STM32微控制器概述,存储器格式,存储器层次结构,RAM静态RAM和动态RAMROMPROM、EPORM、EEPROMFLASHNORFLASH、NANDFLASH,存储器格式,小端存储器系统:在小端格式中,数据的高字节存放在高地址中。大端存储器系统:在大端格式中,数据的高字节存放在低地址中。,0 x120 x340 x560 x78,0 x780 x560 x340 x12,CM3存储器映射,主系统由以下部分构成:四个驱动单元:Cortex-M3内核ICode总线(I-bus),DCode总线(D-bus),和系统总线(S-bus)GP-DMA(通用DMA)四个被动单元内部SRAM内部闪存存储器FSMCAHB到APB的桥(AHB2APBx),它连接所有的APB设备,1.STM32总线结构,2.5.4STM32存储器映射,可访问的存储器空间被分成8个主要块,每个块为512MB。其他所有没有分配给片上存储器和外设的存储器空间都是保留的地址空间(右图中的阴影部分)片外Flash的起始地址:0 x08000000;片内SRAM的起始地址:0 x20000000.,2STM32存储器映射,KEIL-MDK中的配置,512K,128K,按芯片实际容量填写,通常MDK会自动配置完成,2.5.5位绑定操作,Cortex-M3存储器空间中包括两个位段区:SRAM区的最低1MB空间和外设存储区的最低1MB空间。这两个位段区分别与两个32M的位段别名区对应,位段区中的每一位映射到位段别名区中的一个字。通过对别名区中某个字的读写操作可以实现对位段区中某一位的读写操作。,位段别名区中的字与位段区的位映射公式,bit_word_addr=bit_band_base+(byte_offsetx32)+bit_number4例如:SRAM位段区中地址为0 x20000300的字节中的位2被映射到别名区中的地址为:0 x22006008(=0 x22000000+(0 x300*32)+(2*4))的字。,对别名区中某个字进行写操作,该字的第0位将影响位段区中对应的位。对别名区中某个字进行读操作,若位段区中对应的位为0则读的结果为0 x00,若位段区中对应的位为1则读的结果为0 x01。对别名区的读写可以实现对位段区中每一位的原子操作,而且仅只需要一条指令即可实现。,2、ARMCortex-M3体系结构,2.1.CM3微处理器核结构2.2处理器工作模式及状态2.3.寄存器2.4总线接口2.5存储器的组织与映射2.6.指令集2.7.流水线2.8.异常与中断2.9存储器保护单元MPU2.10STM32微控制器概述,2.6指令集,2.6.1指令集,在过去,做ARM开发必须处理好两个状态。这两个状态是井水不犯河水的,它们是:32位的ARM状态和16位的Thumb状态。当处理器在ARM状态下时,所有的指令均是32位的(哪怕只是个”NOP”指令),此时性能相当高。而在Thumb状态下,所有的指令均是16位的,代码密度提高了一倍。不过,thumb状态下的指令功能只是ARM下的一个子集,结果可能需要更多条的指令去完成相同的工作,导致处理性能下降。伴随着Thumb-2指令集的横空出世,终于可以在单一的操作模式下搞定所有处理了,再也没有来回切换的事来烦你了。事实上,Cortex-M3内核干脆都不支持ARM指令,中断也在Thumb态下处理(以前的ARM总是在ARM状态下处理所有的中断和异常)。这可不是小便宜,它使CM3在好几个方面都比传统的ARM处理器更先进:消灭了状态切换的额外开销,节省了执行时间和指令空间。不再需要把源代码文件分成按ARM编译的和Thumb编译的,软件开发管理大大减负。无需再反复地求证和测试:究竟该在何时何地切换到何种状态下,我的程序才最有效率。开发软件容易多了。,40,2、ARMCortex-M3体系结构,2.1.CM3微处理器核结构2.2处理器工作模式及状态2.3.寄存器2.4总线接口2.5存储器的组织与映射2.6.指令集2.7.流水线2.8.异常与中断2.9存储器保护单元MPU2.10STM32微控制器概述,带分支预测的3级流水线,Cortex-M3的流水线分为3级,分别为:,取指,译码,执行,在译码时进行分支预测,遇跳转指令也不会打断流水线,PC值总是指向正在取指的指令,三级流水线结构的指令执行顺序,周期2,周期1,周期3,周期4,处理器执行一条指令的三个阶段,三级流水线结构的指令执行顺序,周期2,周期1,周期3,周期4,处理器执行一条指令的三个阶段,三级流水线结构的指令执行顺序,周期2,周期1,周期3,周期4,处理器执行一条指令的三个阶段,三级流水线结构的指令执行顺序,周期2,周期1,周期3,周期4,处理器执行一条指令的三个阶段,2、ARMCortex-M3体系结构,2.1.CM3微处理器核结构2.2处理器工作模式及状态2.3.寄存器2.4总线接口2.5存储器的组织与映射2.6.指令集2.7.流水线2.8.异常与中断2.9存储器保护单元MPU2.10STM32微控制器概述,2.8异常与中断,中断:请求信号来自于CM3内核外面,来自片上外设或外扩的外设;异常:是由于CM3内核的活动而产生的(P52)只要正常的程序被暂时中止,处理器就进入异常模式。异常包括复位、系统故障、外设中断等事件。Cortex-M3处理器中存在多种异常类型,系统复位、NMI(不可屏蔽中断)、硬件故障、存储器管理、总线故障、使用故障、SVCall(软件中断)、调试监控和IRQ中断等。IRQ中断也分为CortexM3内自带的PendSV(系统服务请求)、SysTick(系统节拍定时器),和与芯片外设相关的外部中断。,1异常与中断概念,异常类型表,异常类型表,上表其实也是一张完整向量表。当异常产生后,处理器根据中断号从在向量表中取出异常处理函数入口(函数指针)。,3中断、异常过程,从向量表中读SP,更新PC,加载流水线,更新LR,读向量表,硬件压栈,从向量表中读SP,更新PC,加载流水线,更新LR,读向量表,硬件压栈,利用向量表读出的位置更新PC。直到第一条指令开始执行时,才能处理迟来异常。,从向量表指向的位置加载指令。它与寄存器压栈操作同时执行。,LR设置为EXC_RETURN,以便从异常中退出。,在复位时,将SP更新为向量表中第1个字的值。,读存储器中的向量表,地址为向量表基址+(异常号*4)。中断函数入口。,在所选的堆栈上将xPSR、PC、LR、R12、R3、R2、R1、R0压栈,注意:LR的值并非进入异常程序的地址,注:以上步骤由硬件自动完成,仅需12个时钟周期,4占先,用户程序,中断1,中断2,优先级3,优先级2,中断1,中断2,压栈,压栈,出栈,出栈,在异常处理程序中,一个新的异常比当前的异常优先级更高,处理器打断当前的流程,响应优先级更高的异常,此时产生中断嵌套。,5末尾连锁,用户程序,中断1,中断2,优先级3,优先级2,中断1,中断2,如果此时中断1已经完成,不出栈也不压栈,直接跳至中断2程序,压栈,出栈,中断1结束,末尾连锁是处理器用来加速中断响应的一种机制。在结束ISR时,如果存在一个挂起中断,其优先级高于正在返回的ISR或线程,那么就会跳过出栈操作,转而将控制权让给新的ISR。,不用未尾连锁的情况,用户程序,中断1,中断2,优先级3,优先级2,中断1,压栈1,出栈1,压栈2,出栈2,中断2,此时压栈2与出栈1的内容完全相同,所以末尾连锁时可省去。,在中断1完成后,紧跟着发生中断2,迟来是处理器用来加速占先的一种机制。如果在保存前一个占先的状态时出现一个优先级更高的中断,则处理器转去处理优先级更高的中断,开始该中断的取向量操作。状态保存不会受到迟来的影响。因为被保存的状态对于两个中断都是一样的,状态保存继续执行不会被打断。处理器对迟来中断进行管理,直到ISR的第一条指令进入处理器流水线的执行阶段。返回时,采用常规的末尾连锁技术。,6迟来,6迟来,用户程序,中断1,中断2,优先级3,优先级2,中断1,中断2,压栈,出栈,继续压栈,执行末尾连锁不需出栈,压栈完成,在没有挂起异常或没有比被压栈的ISR优先级更高的挂起异常时,处理器执行出栈操作,并返回到被压栈的ISR或线程模式。在响应ISR之后,处理器通过出栈操作自动将处理器状态恢复为进入ISR之前的状态。如果在状态恢复过程中出现一个新的中断,并且该中断的优先级比正在返回的ISR或线程更高,则处理器放弃状态恢复操作并将新的中断作为末尾连锁来处理。,7返回,2、ARMCortex-M3体系结构,2.1.CM3微处理器核结构2.2处理器工作模式及状态2.3.寄存器2.4总线接口2.5存储器的组织与映射2.6.指令集2.7.流水线2.8.异常与中断2.9存储器保护单元MPU2.10STM32微控制器概述,2.9存储器保护单元MPU,在CortexM3处理器中可以选配一个存储器保护单元(MPU),它可以实施对存储器(主要是内存和外设寄存器)的保护,以使软件更加健壮

温馨提示

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

评论

0/150

提交评论