




已阅读5页,还剩76页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,第2章Cortex-M3体系结构Cortex-M3Systemstructure,.,第2章Cotex-M3体系结构,主要内容CM3微处理器核结构处理器的工作模式和状态寄存器、总线接口存储器的组织与映射指令集、流水线、异常和中断存储器保护单元STM32微控制器概述,.,2.1CM3微处理器核结构,CM3微处理器核结构CM3微处理器特点,.,2.1.1CM3内核微控制器结构,CM3核,调试模块,外设,存储器,时钟和复位,I/O,内部总线,CM3CPU,.,2.1.2CM3微处理器结构,CM3内核,.,2.1.3CM3微处理器内核结构,.,2.1.4CM3微处理器的特点,哈弗结构支持低功耗模式分组堆栈支持非对齐数据访问统一的存储器映射位绑定操作32位硬件除法和乘法器中断响应快速且支持多级中断嵌套支持串行调试swd,.,2.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位等非对齐访问。,.,外部中断可配置为1240个优先级位可配置为18位中断优先级可动态地重新配置。优先级分组,分为占先中断等级和非占先中断等级。支持末尾连锁(tail-chaining)和迟来(latearrival)中断,减少了进出栈时间。处理器状态在进入中断时自动保存,中断退出时自动恢复,不需要多余的指令。,2.1.4CM3微处理器的特点-中断方面,.,8个存储器区。子区禁止功能(SRD),实现对存储器区的有效使用。可使能背景区,执行默认的存储器映射属性。MPU(存储器保护单元)可裁剪,2.1.4CM3微处理器的特点-存储器保护方面,.,AHB标准的ICode、DCode和系统总线接口APB专用外设总线(PPB)接口Bitband支持,bit-band的原子写和读访问。存储器访问对齐写缓冲区,用于缓冲写数据。,2.1.4CM3微处理器的特点-总线方面,.,当内核正在运行、被中止、或处于复位状态时,能对系统中包括Cortex-M3寄存器组在内的所有存储器和寄存器进行调试访问。两种调试端口:2线串行(SW-DP)口或JTAG(JTAG-DP)口。Flash地址重载和断点单元(FPB),实现断点和代码修补。数据观察点(DWT)程序指令跟踪宏单元(ITM),支持printf类型的调试可选的嵌入式跟踪宏单元(ETM),实现指令跟踪。跟踪端口单元(TPIU),连接跟踪端口分析仪。,2.1.4CM3微处理器的特点-调试方面,.,2.1.4CM3微处理器的特点-与ARM7TDMI比较,.,2.2CM3的工作模式及状态,访问级别:特权级和用户级出于安全考虑,防止意外、恶意访问破坏重要数据。工作模式:处理模式和线程模式分别用于处理异常和普通程序工作状态:Thumb状态和调试状态Thumb状态:16位和32位“半字对齐”的Thumb和Thumb-2指令的执行状态。调试状态:处理器停止并进行调试的状态。,.,特权(级)访问和用户(级)访问,处理模式,线程模式,特权访问,用户访问,始终特权访问,.,特权执行可以访问所有资源。非特权对有些资源的访问受到限制或不允许访问。如部分指令(设置FAULTMASK和PRIMASK的CPS指令)。对系统控制空间(SCS)的大部分寄存器的访问。,特权访问和用户访问(非特权访问)的区别,.,1.线程模式,CM3处理器支持两种工作模式:线程模式和处理模式,2.处理模式,在复位时处理器进入线程模式,异常返回时处理器进入线程模式,在线程模式下,所有代码可由特权级和用户级访问,出现异常时处理器进入处理模式,在处理模式中,所有代码只能由特权级访问,.,CM3操作模式的转换,线程模式特权访问,复位,处理模式特权访问,异常,线程模式用户访问,异常,异常退出,CONTROL0=1,CONTROL0=0,MSR指令置位CONTROL0,.,2.3CM3的寄存器,通用寄存器(R0R7、R8R12)堆栈指针(R13)链接寄存器(R14)程序计数器(R15)程序状态寄存器(APSR、IPSR、EPSR)异常中断寄存器(PRIMASK、FAULTMASK、BASEPRI)控制寄存器(CONTROL),.,1、32位通用寄存器,R0,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13(SP),R14(LR),R15(PC),XPSR,r0r12,为13个通用寄存器,低寄存器,r0-r7可以被指定通用寄存器的所有指令访问,高寄存器,r8-r12可以被指定通用寄存器的所有32位指令访问,不能被16位指令访问。,SP_process,SP_main,.,2、分组的堆栈指针(R13)/(SP),R0,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13(SP),R14(LR),R15(PC),XPSR,SP_main,SP_process,处理模式,线程模式,可用MSP,始终使用MSP,也可用PSP,进程堆栈指针,主堆栈指针,.,通过MSR指令修改CONTROL1进行堆栈切换,线程模式主堆栈,线程模式进程堆栈,CONTROL1,1,0,控制寄存器的第1位,一般通过中断返回进行堆栈切换,MSR指令切换用的极少。,.,3、链接寄存器(LR/R14),R0,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13(SP),R14(LR),R15(PC),XPSR,链接寄存器(LR)在执行分支(branch)和链接(BL)指令或带有交换的分支和链接指令(BLX)时,LR用于保存PC的返回地址。主要用于保存子程序的返回地址。LR也用于异常返回。,.,4、程序计数器R15(PC),R0,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13(SP),R14(LR),R15(PC),XPSR,程序计数器(PC)程序计数器总是指向正在取指的指令。,程序状态寄存器(XPSR)用于指示程序的运行状态。,.,5、XPSR-程序状态寄存器,执行状态寄存器(EPSR),应用状态寄存器(APSR),中断状态寄存器(IPSR),.,APSR的位分配,负数或小于标志:1:结果为负数或小于0:结果为正数或大于,零标志:1:结果为00:结果为非0,溢出标志:1:溢出0:没有溢出,进位/借位标志:1:进位或借位0:没有进位或借位,饱和(stickysaturation)标志,程序状态寄存器-应用状态寄存器(APSR),.,程序状态寄存器-中断状态寄存器(IPSR),IPSR为当前被响应的异常的ISR编号。,IPSR的位分配,ISRNUMBER基础级别=0Reset=1NMI=2SVCall11.,.,程序状态寄存器-执行状态寄存器(EPSR),为什么需要执行状态寄存器EPSR?,LDM、STM和If-then指令,为多周期指令,如果在执行以上多周期指令时发生异常,处理器会暂时停止以上指令的操作,进入异常,这时需要保护现场。,LDM指令,STEP1,STEP2,STEP3,STEP4,异常,异常程序,EPSR使用的是26:24和15:10位,.,6、异常中断寄存器,6-1中断屏蔽寄存器(PRIMASK),相当于中断总开关,为1,所有中断被屏蔽;为0,中断能正常响应。,PRIMASK,屏蔽所有中断,响应中断,1,0,只有最低位有效,.,6-2中断屏蔽寄存器BASEPRI,可屏蔽等于和低于某个优先级的中断。例如,把BASEPRI设置为0X40(即25),则2和2以上优先级的中断被屏蔽,只有0和1优先级的中断不被屏蔽。注:BASEPRI与优先级分组有关,stellaris系列处理器使用高3位来配置。,.,7、控制寄存器CONTROL,CONTROL1:0由两个状态位组成:,.,寄存器总结,.,2.4CM3的总线接口,主要内容ARM的总线标准CM3的总线结构,.,2.4.1ARM总线标准,ARM微控制器使用的是AMBA总线体系结构AMBA(AdvancedMicrocontrollerBusArchitecture)是ARM公司公布的总线标准,先进的AMBA规范定义了2种总线:AHB总线(AdvancedHigh-performanceBus):用于连接高性能系统模块。它支持突发数据传输(不间断的连续传输)方式及单个数据传输方式,所有时序参考同一个时钟沿。APB总线(AdvancePeripheralBus):是一个简单接口支持低性能的外围接口。,.,2.4.2CM3总线结构,1、ICode:传送指令指令存储区总线(0 x00 x1fffffff,AHB)2、DCode:传送数据、调试数据指令存储区总线(0 x00 x1fffffff,AHB)3、系统总线(AHB)访问存储区、片上设备、片外设备访问区域:系统存储0 x200000000 xdfffffff,0 xe01000000 xffffffff4、内部专用外设总线(0 xe0000000-0 xe003ffff,AHB)访问CM3内部组件:NVIC、DWT、FPB、MPU5、外部专用外设总线(0 xe0040000-0 xe00fffff,APB)访问CM3外部组件:ETM、TPIU、ROM表,.,Cortex-M3模块的内部方框图,.,2.5.1数据类型与存储器格式,Cortex-M3既可使用大端格式也可使用小端格式访问存储器。Cortex-M3处理器有一个可配置引脚BIGEND,用来选择小端格式或大端格式。通常是以小端格式访问代码,小端格式是ARM处理器的默认存储器格式。,2.5存储器的组织与映射,.,小端数据格式,高字节在高地址,低字节在低地址,.,大端数据格式,字低节在高地址,高字节在低地址,.,1、RAM:(1)静态RAM:cache(2)动态RAM:内存2、ROM:只读3、Flash:(1)NANDFlash:区块读写,大容量(2)NORFlash:随机读写,容量小,可运行装载在其中的代码,2.5.2存储器层次结构,.,2.5.3存储组织,Cortex-M3处理器的存储系统采用统一编址方式;程序存储器、数据存储器、寄存器以及输入输出端口被组织在同一个4GB的线性地址空间内;小端方式存放。,Cortex-M3系列处理器将可访问的存储器空间被分成8个主块。,.,.,2.5.4STM32存储器映射,1系统总线构架,四个主动单元:Cortex-M3内核的ICode总线(I-bus)、DCode总线(D-bus)、System总线(S-bus)和通用DMA(GP-DMA)。四个被动单元:内部SRAM、内部Flash存储器、FSMC、AHB到APB的桥(AHB2APBx,连接所有的APB设备)。,.,.,总线结构中各单元的功能,ICode总线:将Flash存储器指令接口与Cortex-M3内核的指令总线相连接,用于指令预取;DCode总线:将Flash存储器的数据接口与Cortex-M3内核的DCode总线相连接,用于常量加载和调试访问;System总线:将Cortex-M3内核的System总线(外设总线)连接到总线矩阵;,.,DMA总线:将DMA的AHB主控接口与总线矩阵相连;总线矩阵:用于连接三个主动单元部件和三个被动单元,负责协调和仲裁Cortex-M3内核和DMA对SRAM的访问,仲裁采用轮换算法。AHB/APB桥:两个AHB/APB桥在AHB和2个APB总线之间提供完全同步连接。,.,2STM32存储器映射,STM32系列处理器将可访问的存储器空间被分成8个主块,每个块为512MB。见图2-13外设地址见表2-9、表2-10、表2-11,.,2.5.5位带操作,支持了位带操作后可以使用普通的指令来对单一的比特进行读写。在CM3中,有两个区中实现了位带操作。其中一个是SRAM区的最低1MB范围,第二个则是片内外设区的最低1MB范围。这两个区中的地址除了可以像普通的RAM一样使用外,它们还都有自己的“位带别名区”,位带别名区把每个比特膨胀成一个32位的字。当你通过位带别名区访问这些字时,就可以达到访问原始比特的目的。,.,.,位带操作的概念其实30年前就有了,8051单片机开创的先河。这里的位带操作是8051位寻址区的威力大幅加强版。CM3使用如下术语来表示位带存储的相关地址位带区:支持位带操作的地址区;位带别名:对别名地址的访问最终作用到带区的访问上(注意:这中途有一个作地址映射过程)。,.,支持位带操作的两个内存区的范围,0 x2000_00000 x200F_FFFF(SRAM区中的最低1MB)0 x4000_00000 x400F_FFFF(片上外设区中的最低1MB),.,对于SRAM位带区的某个比特,记它所在字节地址为A,位序号为n(0=n=7),则该比特在别名区的地址为:AliasAddr0 x22000000+(A0 x20000000)*8+n)*4=0 x22000000+(A0 x20000000)*32+n*4,.,对于片上外设位带区的某个比特,记它所在字节的地址为A,位序号为n(0=n=7),则该比特在别名区的地址为:AliasAddr0 x42000000+(A0 x40000000)*8+n)*4=0 x42000000+(A0 x40000000)*32+n*4,.,.,2.6指令集,CortexM3只使用Thumb2指令集。在过去,做ARM开发必须处理好两个状态。它们是:32位的ARM状态和16位的Thumb状态。当处理器在ARM状态下时,所有的指令均是32位的(哪怕只是个”NOP”指令),此时性能相当高。而在Thumb状态下,所有的指令均是16位的,代码密度提高了一倍。不过,thumb状态下的指令功能只是ARM下的一个子集,结果可能需要更多条的指令去完成相同的工作,导致处理性能下降。,.,为了取长补短,很多应用程序都混合使用ARM和Thumb代码段。然而,这种混合使用是有额外开销(overhead)的,时间上的和空间上的都有,主要发生在状态切换之时。另一方面,ARM代码和Thumb代码需要以不同的方式编译,这也增加了软件开发管理的复杂度。,.,伴随着Thumb2指令集出现,终于可以在单一的操作模式下完成所有处理了。事实上,CortexM3内核干脆都不支持ARM指令,中断也在Thumb态下处理(以前的ARM总是在ARM状态下处理所有的中断和异常)。它使CM3在好几个方面都比传统的ARM处理器更先进:消灭了状态切换的额外开销,节省了两者的执行时间和指令空间。不再需要把源代码文件分成按ARM编译的和按Thumb编译的,软件开发的管理大大减负。无需再反复地求证和测试:究竟该在何时何地切换到何种状态下程序才最有效率。开发软件容易多了。,.,Cortex-M3的流水线分为3级,分别为:,取指,译码,执行,在译码时进行分支预测,遇跳转指令也不会打断流水线,PC值总是指向正在去取指的指令,2.7流水线,.,周期2,周期1,周期3,周期4,处理器执行一条指令的三个阶段,.,周期2,周期1,周期3,周期4,处理器执行一条指令的三个阶段,.,周期2,周期1,周期3,周期4,处理器执行一条指令的三个阶段,.,周期2,周期1,周期3,周期4,处理器执行一条指令的三个阶段,.,2.8异常和中断,主要内容异常和中断的概念嵌套式向量中断控制器中断、异常过程抢占咬尾晚到返回,.,2.8.1异常和中断的概念,异常概念:在正常的程序执行过程中发生非正常情况(包括访问存储器(含取指)失败、遇到未定义指令、执行中断指令、数据溢出、调试程序、软复位等非正常情况)使CPU停止正在执行的程序,并转去执行相应的处理程序,这样的情况叫作异常。中断:是指各种设备请求CPU处理特定的操作,包括传输信息、处理故障等。异常是与程序同步的,中断是异步的随机的。异常的处理方法与中断一样,后面不再区分。,.,系统异常(中断),什么是异常?,只要正常的程序被暂时中止,处理器就进入异常模式。异常包括复位、系统故障、外设中断等事件。ARMCortex-M3处理器的所有异常可以通过NVIC(嵌套向量中断控制器)进行控制,通过NVIC可以设置各个异常的优先等级并对异常进行处理。所有异常都在处理器模式(HandlerMode)中处理。,.,系统异常(中断),Cortex-M3处理器有哪些异常?,系统复位、NMI(不可屏蔽中断)、硬件故障、存储器管理、总线故障、使用故障、SVCall(软件中断)、调试监控和IRQ中断等。IRQ中断也分为CortexM3内自带的PendSV(系统服务请求)、SysTick(系统节拍定时器),和与芯片外设相关的外部中断。,.,异常类型表,.,异常类型表,.,Cortex-M3异常有哪些特点?,自动的状态保存和恢复。处理器在进入ISR之前将状态寄存器和部分寄存器自动压栈,退出ISR之后它们自动出栈,不需要多余的指令。自动读取代码存储器或SRAM中包含ISR地址的向量表入口。该操作与状态保存同时执行。支持末尾连锁,在末尾连锁中,处理器在两个ISR之间不需要对寄存器进行出栈和压栈操作的情况下处理背对背中断。中断优先级可动态重新设置。Cortex-M3与NVIC之间采用紧耦合(closely-coupled)接口,通过该接口可以及早地对中断和高优先级的迟来中断进行处理。中断数目可配置为1240。中断优先级的数目可配置为18位(1256级。Stellaris系列单片机只支持8级)。处理模式和线程模式具有独立的堆栈和特权等级。使用C/C+标准的调用规范:ARM架构的过程调用标准(PCSAA)执行ISR控制传输。优先级屏蔽支持临界区(关中断,使程序不被高优先级异常中断)。,.,异常基于优先级的动作-占先,用户程序,中断1,中断2,优先级2,中断1,中断2,压栈,压栈,出栈,出栈,产生嵌套,在异常处理程序中,一个新的异常比当前的异常优先级更高,处理器打断当前的流程,响应优先级更高的异常,此时产生中断嵌套。,.,异常基于优先级的动作-末尾连锁,用户程序,中断1,中断2,优先级2,优先级3,中断1,中断2,如果此时中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 发展新质生产力的时代价值
- 医患关系论文精要2000字
- 青年在新质生产力发展中的行动路径
- 劳模工匠讲新质生产力
- 2025年输血学ABO血型配型技术应用模拟测试卷答案及解析
- 2025年耳鼻喉科常见耳疾诊治知识竞赛试卷答案及解析
- 2025年眼科常见疾病的诊断与治疗综合测试卷答案及解析
- 2025年康复医学评估工具运用考试答案及解析
- 乏燃料后处理新质生产力
- 关于感恩节的幼儿园主题活动方案
- 餐厅包场合同协议书范本
- 上门服务项目创业计划书
- 2025年鸡爪市场调研报告
- 景区廉洁管理制度
- 四川地区病历质量评分规范标准
- 土方开挖工程安全监理细则
- 药品效期和近效期药品管理
- 2022年医疗器械临床试验GCP考试题及答案
- 《诊断学意识障碍》课件
- 小学数学课程标准解读
- 培训主管技能展示
评论
0/150
提交评论