第2章cortex-m3体系结构_第1页
第2章cortex-m3体系结构_第2页
第2章cortex-m3体系结构_第3页
第2章cortex-m3体系结构_第4页
第2章cortex-m3体系结构_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

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

文档简介

第2章Cortex-M3体系结构

Cortex-M3System

structure

精选ppt第2章Cotex-M3体系结构主要内容CM3微处理器核结构处理器的工作模式和状态存放器、总线接口存储器的组织与映射指令集、流水线、异常和中断存储器保护单元STM32微控制器概述精选ppt2.1CM3微处理器核结构CM3微处理器核结构CM3微处理器特点精选ppt2.1.1CM3内核微控制器结构

CM3核调试模块外设存储器时钟和复位I/O内部总线CM3CPU精选ppt2.1.2CM3微处理器结构

CM3内核精选ppt2.1.3CM3微处理器内核结构

控制逻辑32位ALU乘法器除法器NVIC接口总线接口跟踪调试接口Thunb解码器Thunb-2解码器运算器精选ppt2.1.4CM3微处理器的特点哈弗结构支持低功耗模式分组堆栈支持非对齐数据访问统一的存储器映射位绑定操作32位硬件除法和乘法器中断响应快速且支持多级中断嵌套支持串行调试swd精选ppt2.1.4CM3微处理器的特点---指令方面ARMv7-M:Thumb-2ISA子集,包含所有根本的16位和32位Thumb-2指令。只有SP是分组的,存放器集比ARM7简单。硬件除法指令,SDIV和UDIV〔Thumb-2指令〕处理模式〔handlermode〕和线程模式〔threadmode〕Thumb状态和调试状态可中断-可继续的LDM/STM、PUSH/POP指令,实现低中断延迟。中断时自动保存和恢复处理器状态支持8位、16位和32位等非对齐访问。精选ppt外部中断可配置为1~240个优先级位可配置为1~8位中断优先级可动态地重新配置。优先级分组,分为占先中断等级和非占先中断等级。支持末尾连锁〔tail-chaining〕和迟来〔latearrival〕中断,减少了进出栈时间。处理器状态在进入中断时自动保存,中断退出时自动恢复,不需要多余的指令。2.1.4CM3微处理器的特点---中断方面精选ppt8个存储器区。子区禁止功能(SRD),实现对存储器区的有效使用。可使能背景区,执行默认的存储器映射属性。MPU〔存储器保护单元〕可裁剪2.1.4CM3微处理器的特点---存储器保护方面精选pptAHB标准的ICode、DCode和系统总线接口APB专用外设总线〔PPB〕接口Bitband支持,bit-band的原子写和读访问。存储器访问对齐写缓冲区,用于缓冲写数据。2.1.4CM3微处理器的特点---总线方面精选ppt当内核正在运行、被中止、或处于复位状态时,能对系统中包括Cortex-M3存放器组在内的所有存储器和存放器进行调试访问。两种调试端口:2线串行〔SW-DP〕口或JTAG〔JTAG-DP〕口。Flash地址重载和断点单元(FPB),实现断点和代码修补。数据观察点〔DWT〕程序指令跟踪宏单元(ITM),支持printf类型的调试可选的嵌入式跟踪宏单元(ETM),实现指令跟踪。跟踪端口单元(TPIU),连接跟踪端口分析仪。2.1.4CM3微处理器的特点---调试方面精选pptARM7TDMICortex-M3架构ARMv4T(冯.若依曼)ARMv7-M(哈佛)ISA支持Thumb/ARMThumb/Thumb-2流水线3级3级+分支预测中断FIQ/IRQ240个物理中断中断延时24—42个时钟周期12个时钟(末尾连锁仅6个)休眠保护无内置存储器保护无8段存储器保护单元硬件除法无2—12个时钟周期运行速度0.95DMIPS/MHz1.25DMIPS/MHz功耗0.28mW/MHz0.19mW/MHz面积0.62mm2(仅内核)0.86mm2(内核+外设)2.1.4CM3微处理器的特点---与ARM7TDMI比较精选ppt2.2CM3的工作模式及状态访问级别:特权级和用户级 出于平安考虑,防止意外、恶意访问破坏重要数据。工作模式:处理模式和线程模式 分别用于处理异常和普通程序工作状态:Thumb状态和调试状态 Thumb状态:16位和32位“半字对齐〞的Thumb和Thumb-2指令的执行状态。 调试状态:处理器停止并进行调试的状态。精选ppt特权(级)访问和用户(级)访问处理模式线程模式特权访问用户访问始终特权访问精选ppt特权执行可以访问所有资源。非特权对有些资源的访问受到限制或不允许访问。如局部指令(设置FAULTMASK和PRIMASK的CPS指令)。对系统控制空间〔SCS〕的大局部存放器的访问。特权访问和用户访问(非特权访问)的区别FAULTMASKPRIMASKSCS……用户访问特权访问精选ppt1.线程模式CM3处理器支持两种工作模式:线程模式和处理模式

2.处理模式在复位时处理器进入线程模式异常返回时处理器进入线程模式在线程模式下,所有代码可由特权级和用户级访问出现异常时处理器进入处理模式在处理模式中,所有代码只能由特权级访问精选pptCM3操作模式的转换线程模式特权访问复位处理模式特权访问异常线程模式用户访问异常异常退出CONTROL[0]=1CONTROL[0]=0MSR指令置位CONTROL[0]精选ppt2.3CM3的存放器通用存放器〔R0—R7、R8—R12〕堆栈指针〔R13〕链接存放器〔R14〕程序计数器〔R15〕程序状态存放器〔APSR、IPSR、EPSR〕异常中断存放器〔PRIMASK、FAULTMASK、BASEPRI〕控制存放器〔CONTROL〕精选ppt1、32位通用存放器R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSRr0~r12,为13个通用存放器低存放器,r0-r7可以被指定通用存放器的所有指令访问高存放器,r8-r12可以被指定通用存放器的所有32位指令访问,不能被16位指令访问。SP_processSP_main精选ppt2、分组的堆栈指针〔R13〕/〔SP〕R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSRSP_mainSP_process处理模式线程模式可用MSP始终使用MSP也可用PSP进程堆栈指针主堆栈指针精选ppt通过MSR指令修改CONTROL[1]进行堆栈切换线程模式主堆栈线程模式进程堆栈CONTROL[1]主堆栈进程堆栈10控制存放器的第1位一般通过中断返回进行堆栈切换,MSR指令切换用的极少。精选ppt3、链接存放器〔LR/R14〕R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSR链接存放器〔LR〕在执行分支(branch)和链接(BL)指令或带有交换的分支和链接指令(BLX)时,LR用于保存PC的返回地址。主要用于保存子程序的返回地址。LR也用于异常返回。精选ppt4、程序计数器R15〔PC〕R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSR程序计数器〔PC〕程序计数器总是指向正在取指的指令。程序状态存放器〔XPSR〕用于指示程序的运行状态。精选ppt5、XPSR----程序状态存放器执行状态存放器(EPSR)应用状态存放器(APSR)中断状态存放器(IPSR)精选pptAPSR的位分配负数或小于标志:1:结果为负数或小于0:结果为正数或大于

零标志:1:结果为00:结果为非0溢出标志:1:溢出0:没有溢出进位/借位标志:1:进位或借位0:没有进位或借位饱和〔stickysaturation〕标志程序状态存放器----应用状态存放器(APSR)3130292827260NZCVQ保留精选ppt程序状态存放器----中断状态存放器(IPSR)IPSR为当前被响应的异常的ISR编号。IPSR的位分配ISRNUMBER根底级别=0Reset=1NMI=2SVCall=11......31980保留中断号精选ppt程序状态存放器----执行状态存放器(EPSR)为什么需要执行状态存放器EPSR?LDM、STM和If-then指令,为多周期指令,如果在执行以上多周期指令时发生异常,处理器会暂时停止以上指令的操作,进入异常,这时需要保护现场。LDM指令STEP1STEP2STEP3STEP4异常异常程序EPSR使用的是[26:24]和[15:10]位精选ppt6、异常中断存放器6-1中断屏蔽存放器〔PRIMASK〕相当于中断总开关,为1,所有中断被屏蔽;为0,中断能正常响应。PRIMASK屏蔽所有中断响应中断10只有最低位有效精选ppt6-2中断屏蔽存放器BASEPRI可屏蔽等于和低于某个优先级的中断。例如,把BASEPRI设置为0X40〔即2<<5〕,那么2和2以上优先级的中断被屏蔽,只有0和1优先级的中断不被屏蔽。注:BASEPRI与优先级分组有关,stellaris系列处理器使用高3位来配置。BASEPRI2优先级0优先级1优先级2优先级3优先级4….中断被屏蔽中断可响应精选ppt7、控制存放器CONTROLCONTROL[1:0]由两个状态位组成:CONTROL[1]CONTROL[0]0主堆栈特权级1进程堆栈用户级精选ppt寄存器名称功能编号APSR应用状态寄存器0IAPSRAPSR和IPSR的组合1EAPSR

APSR和EPSR的组合2XPSRAPSR、EPSR和IPSR的组合3IPSR中断状态寄存器

5EPSR执行状态寄存器6IEPSRIPSR和EPSR的组合7MSP主堆栈指针8PSP进程堆栈指针9PRIMASK中断屏蔽寄存器16BASEPRI可屏蔽等于和低于某个优先级的中断17BASEPRI_MAXBASEPRI允许设置的最大值18FAULTMASK错误屏蔽寄存器19CONTROL控制寄存器20存放器总结精选ppt2.4CM3的总线接口主要内容ARM的总线标准CM3的总线结构精选ppt2.4.1ARM总线标准ARM微控制器使用的是AMBA总线体系结构 AMBA〔AdvancedMicrocontrollerBusArchitecture〕是ARM公司公布的总线标准,先进的AMBA标准定义了2种总线:AHB总线〔AdvancedHigh-performanceBus〕:用于连接高性能系统模块。它支持突发数据传输〔不间断的连续传输〕方式及单个数据传输方式,所有时序参考同一个时钟沿。APB总线〔AdvancePeripheralBus〕:是一个简单接口支持低性能的外围接口。精选ppt2.4.2CM3总线结构 1、ICode:传送指令指令存储区总线(0x0—0x1fffffff,AHB)2、DCode:传送数据、调试数据指令存储区总线(0x0—0x1fffffff,AHB)

3、系统总线(AHB)

访问存储区、片上设备、片外设备 访问区域:系统存储0x20000000—0xdfffffff, 0xe0100000—0xffffffff4、内部专用外设总线(0xe0000000--0xe003ffff,AHB)

访问CM3内部组件:NVIC、DWT、FPB、MPU 5、外部专用外设总线(0xe0040000--0xe00fffff,APB)

访问CM3外部组件:ETM、TPIU、ROM表 精选pptCortex-M3模块的内部方框图精选ppt2..5.1数据类型与存储器格式Cortex-M3既可使用大端格式也可使用小端格式访问存储器。Cortex-M3处理器有一个可配置引脚BIGEND,用来选择小端格式或大端格式。通常是以小端格式访问代码,小端格式是ARM处理器的默认存储器格式。2.5存储器的组织与映射精选ppt小端数据格式高字节在高地址,低字节在低地址精选ppt大端数据格式字低节在高地址,高字节在低地址精选ppt1、RAM:〔1〕静态RAM:cache〔2〕动态RAM:内存2、ROM:只读3、Flash:〔1〕NANDFlash:区块读写,大容量〔2〕NORFlash:随机读写,容量小,可运行装载在其中的代码2..5.2存储器层次结构精选ppt2.5.3存储组织Cortex-M3处理器的存储系统采用统一编址方式;程序存储器、数据存储器、存放器以及输入输出端口被组织在同一个4GB的线性地址空间内;小端方式存放。Cortex-M3

系列处理器将可访问的存储器空间被分成8个主块。精选ppt精选ppt2.5.4STM32存储器映射1系统总线构架四个主动单元:Cortex-M3内核的ICode总线〔I-bus〕、DCode总线〔D-bus〕、System总线〔S-bus〕和通用DMA〔GP-DMA〕。四个被动单元:内部SRAM、内部Flash存储器、FSMC、AHB到APB的桥〔AHB2APBx,连接所有的APB设备〕。精选ppt精选ppt总线结构中各单元的功能ICode总线:将Flash存储器指令接口与Cortex-M3内核的指令总线相连接,用于指令预取;DCode总线:将Flash存储器的数据接口与Cortex-M3内核的DCode总线相连接,用于常量加载和调试访问;System总线:将Cortex-M3内核的System总线〔外设总线〕连接到总线矩阵;精选pptDMA总线:

将DMA的AHB主控接口与总线矩阵相连;总线矩阵:

用于连接三个主动单元部件和三个被动单元,负责协调和仲裁Cortex-M3内核和DMA对SRAM的访问,仲裁采用轮换算法。

AHB/APB桥:

两个AHB/APB桥在AHB和2个APB总线之间提供完全同步连接。精选ppt2STM32存储器映射STM32系列处理器将可访问的存储器空间被分成8个主块,每个块为512MB。见图2-13外设地址见表2-9、表2-10、表2-11精选ppt2.5.5位带操作支持了位带操作后可以使用普通的指令来对单一的比特进行读写。在CM3中,有两个区中实现了位带操作。其中一个是SRAM区的最低1MB范围,第二个那么是片内外设区的最低1MB范围。这两个区中的地址除了可以像普通的RAM一样使用外,它们还都有自己的“位带别名区〞,位带别名区把每个比特膨胀成一个32位的字。当你通过位带别名区访问这些字时,就可以到达访问原始比特的目的。精选ppt精选ppt位带操作的概念其实30年前就有了,8051单片机开创的先河。这里的位带操作是8051位寻址区的威力大幅加强版。CM3使用如下术语来表示位带存储的相关地址位带区:支持位带操作的地址区;位带别名:对别名地址的访问最终作用到带区的访问上〔注意:这中途有一个作地址映射过程〕。精选ppt支持位带操作的两个内存区的范围0x2000_0000‐0x200F_FFFF〔SRAM区中的最低1MB〕0x4000_0000‐0x400F_FFFF〔片上外设区中的最低1MB〕精选ppt对于SRAM位带区的某个比特,记它所在字节地址为A,位序号为n(0<=n<=7),那么该比特在别名区的地址为:AliasAddr=0x22000000+((A‐0x20000000)*8+n)*4=0x22000000+(A‐0x20000000)*32+n*4精选ppt对于片上外设位带区的某个比特,记它所在字节的地址为A,位序号为n(0<=n<=7),那么该比特在别名区的地址为:AliasAddr=0x42000000+((A‐0x40000000)*8+n)*4=0x42000000+(A‐0x40000000)*32+n*4精选ppt精选ppt2.6指令集Cortex‐M3只使用Thumb‐2指令集。在过去,做ARM开发必须处理好两个状态。它们是:32位的ARM状态和16位的Thumb状态。当处理器在ARM状态下时,所有的指令均是32位的〔哪怕只是个〞NOP〞指令〕,此时性能相当高。而在Thumb状态下,所有的指令均是16位的,代码密度提高了一倍。不过,thumb状态下的指令功能只是ARM下的一个子集,结果可能需要更多条的指令去完成相同的工作,导致处理性能下降。精选ppt为了取长补短,很多应用程序都混合使用ARM和Thumb代码段。然而,这种混合使用是有额外开销〔overhead〕的,时间上的和空间上的都有,主要发生在状态切换之时。另一方面,ARM代码和Thumb代码需要以不同的方式编译,这也增加了软件开发管理的复杂度。精选ppt伴随着Thumb‐2指令集出现,终于可以在单一的操作模式下完成所有处理了。事实上,Cortex‐M3内核干脆都不支持ARM指令,中断也在Thumb态下处理〔以前的ARM总是在ARM状态下处理所有的中断和异常〕。它使CM3在好几个方面都比传统的ARM处理器更先进:消灭了状态切换的额外开销,节省了两者的执行时间和指令空间。不再需要把源代码文件分成按ARM编译的和按Thumb编译的,软件开发的管理大大减负。无需再反复地求证和测试:究竟该在何时何地切换到何种状态下程序才最有效率。开发软件容易多了。精选pptCortex-M3的流水线分为3级,分别为:取指译码执行取指译码执行从存储器装载一条指令识别将要被执行的指令处理指令并将结果写回寄存器在译码时进行分支预测,遇跳转指令也不会打断流水线PC值总是指向正在去取指的指令2.7流水线精选ppt指令1指令2指令3指令4…………程序存储器周期1周期2周期3周期4周期5周期6取指译码执行取指译码执行取指译码执行取指译码执行周期2周期1周期3周期4处理器执行一条指令的三个阶段

在第1个周期,PC指向指令1,此时指令1进入三级流水线的取指阶段。1精选ppt指令1指令2指令3指令4…………程序存储器周期1周期2周期3周期4周期5周期6取指译码执行取指译码执行取指译码执行取指译码执行周期2周期1周期3周期4处理器执行一条指令的三个阶段

在第2个周期,PC指向指令2,此时指令1进入三级流水线的译码阶段,同时取出指令2。2精选ppt指令1指令2指令3指令4…………程序存储器周期1周期2周期3周期4周期5周期6取指译码执行取指译码执行取指译码执行取指译码执行周期2周期1周期3周期4处理器执行一条指令的三个阶段

在第3个周期,PC指向指令3,此时指令1进入三级流水线的执行阶段,指令2进入译码阶段,取出指令3。3精选ppt指令1指令2指令3指令4…………程序存储器周期1周期2周期3周期4周期5周期6取指译码执行取指译码执行取指译码执行取指译码执行周期2周期1周期3周期4处理器执行一条指令的三个阶段

在第4个周期,指令1执行完成,指令2和指令3流水线推进一级,同时开始指令4的取指处理。4精选ppt2.8异常和中断主要内容异常和中断的概念嵌套式向量中断控制器中断、异常过程抢占 咬尾晚到 返回精选ppt

2.8.1异常和中断的概念 异常概念:在正常的程序执行过程中发生非正常情况〔包括访问存储器〔含取指〕失败、遇到未定义指令、执行中断指令、数据溢出、调试程序、软复位等非正常情况〕使CPU停止正在执行的程序,并转去执行相应的处理程序,这样的情况叫作异常。 中断:是指各种设备请求CPU处理特定的操作,包括传输信息、处理故障等。 异常是与程序同步的,中断是异步的随机的。 异常的处理方法与中断一样,后面不再区分。精选ppt系统异常〔中断〕什么是异常?只要正常的程序被暂时中止,处理器就进入异常模式。 异常包括复位、系统故障、外设中断等事件。 ARMCortex-M3处理器的所有异常可以通过NVIC〔嵌套向量中断控制器〕进行控制,通过NVIC可以设置各个异常的优先等级并对异常进行处理。 所有异常都在处理器模式〔HandlerMode〕中处理。精选ppt系统异常〔中断〕Cortex-M3处理器有哪些异常? 系统复位、NMI〔不可屏蔽中断〕、硬件故障、存储器管理、总线故障、使用故障、SVCall〔软件中断〕、调试监控和IRQ中断等。 IRQ中断也分为CortexM3内自带的PendSV〔系统效劳请求〕、SysTick(系统节拍定时器),和与芯片外设相关的外部中断。精选ppt异常类型表异常类型位置优先级描述-0-向量表的第一项,作为栈顶地址复位1-3(高)在上电和热复位时调用。这是异步的。不可屏蔽中断2-2不可屏蔽(NMI),也不会被复位之外的任何异常抢占。可由软件通过NVIC中断控制状态寄存器产生。异步的。硬故障3-1当故障由于优先级或者是可配置的故障处理程序被禁能而无法激活时,都会以硬故障的方式激活。同步的。存储器管理4可调MPU不匹配,包括访问冲突和不匹配。是同步的。总线故障5可调预取指、存储器访问,即与地址/数据(代码)相关的故障。精确的总线故障是同步的,不精确的总线故障是异步的。精选ppt异常类型表异常类型位置优先级描述使用故障6可调使用故障,例如执行未定义的指令或试图进行非法的状态转变。这是同步的。-7-10-保留。SVCall11可调使用SWI指令的系统服务调用。同步的。调试监控器12可调调试监控器(当没有暂停(Halt)时)。这是同步的,但仅在使能时有效。-13-保留。PendSV14可调系统服务的可挂起SWI指令。SysTick15可调系统节拍定时器中断。这是异步的。外中断16-255可调中断在ARMCortex-M3内核之外发出且通过NVIC返回(区分优先级)。这些都是异步的。精选pptCortex-M3异常有哪些特点?自动的状态保存和恢复。处理器在进入ISR之前将状态存放器和局部存放器自动压栈,退出ISR之后它们自动出栈,不需要多余的指令。自动读取代码存储器或SRAM中包含ISR地址的向量表入口。该操作与状态保存同时执行。支持末尾连锁,在末尾连锁中,处理器在两个ISR之间不需要对存放器进行出栈和压栈操作的情况下处理背对背中断。中断优先级可动态重新设置。Cortex-M3与NVIC之间采用紧耦合〔closely-coupled〕接口,通过该接口可以及早地对中断和高优先级的迟来中断进行处理。中断数目可配置为1~240。中断优先级的数目可配置为1~8位〔1~256级。Stellaris系列单片机只支持8级〕。处理模式和线程模式具有独立的堆栈和特权等级。使用C/C++标准的调用标准:ARM架构的过程调用标准〔PCSAA〕执行ISR控制传输。优先级屏蔽支持临界区〔关中断,使程序不被高优先级异常中断〕。精选ppt异常基于优先级的动作---占先用户程序中断1中断2优先级2

中断1中断2压栈

温馨提示

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

评论

0/150

提交评论