第2章-CM3嵌入式系统体系结构ppt课件_第1页
第2章-CM3嵌入式系统体系结构ppt课件_第2页
第2章-CM3嵌入式系统体系结构ppt课件_第3页
第2章-CM3嵌入式系统体系结构ppt课件_第4页
第2章-CM3嵌入式系统体系结构ppt课件_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

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

文档简介

.,第2章ARMCortex-M3体系结构主讲朱兆优,.,Cortex-M3内核的主要特点,功耗低-2uw内核的门数少,具有优异的性价比中断延迟短调试成本低具有嵌套向量中断控制器(NVIC)处理器采用ARMv7-M架构具有可裁减的存储器保护单元(MPU)总线接口,.,2.1ARMCortex-M3处理器内核,CM3处理器内核是ARMv7-M体系结构:1.CPU中央处理器(32位)2.先进的系统外设3.中断控制4.内存保护5.系统调试与跟踪功能6.传统Thumb和新型Thumb2指令译码器7.特殊功能寄存器,.,STM32F103系列内部框图,.,2.2处理器工作模式和状态,不同的应用会有不同的模式不同的模式解决不同的问题模式代表解决特定的应用或某类问题的解决方案(手机有正常模式和飞行模式)。CM3的模式用于区别:(1)普通应用程序的代码与异常(2)中断服务例程的代码,.,CM3的操作模式,CM3具有存储器访问的保护机制,它使得普通用户程序代码不能意外地或恶意地执行涉及要害的操作。支持线程和处理者操作模式。(程序类型),.,CM3的操作模式,处理器2种操作模式:处理模式和线程模式程序执行设置2种权限:用户级和特权级。,特权级可以访问任意资源,用户级对有些资源的访问有限制或不允许访问。,.,操作模式状态转换,1、CM3运行主应用程序时(线程模式),可使用特权级或用户级2、处理异常服务例程必须使用特权模式。3、复位后,CM3默认进入线程模式,特权级访问4、从特权模式切换到用户级,修改CONTROL寄存器即可5、用户级切换回特权级,必须执行一条系统调用指令SVC,触发SVC异常,在异常服务例程中修改CONTROL才能回到特权级,.,支持2种模式和2种访问,1.工作模式与访问权限的关系,非私模式,私有模式,私有模式,Handler,Thread,.,特权访问和用户访问,2.特权访问和用户访问之间的相互转换,.,Cortex-M3与ARM7的性能比较,.,Cortex-M3的寄存器集,13个通用寄存器:r0r12分组的堆栈指针r13,别名为SP_process和SP_main链接寄存器r14程序计数器r151个程序状态寄存器xPSR,.,Cortex-M3的寄存器集,CM3采用双堆栈结构,.,通用寄存器,低组寄存器r0-r7高组寄存器r8-r12堆栈指针寄存器r13链接寄存器(LR)r14程序计数器寄存器r15,.,堆栈指针R13,CM3支持2个堆栈,都指向R13主堆栈MSP:默认堆栈指针,系统内核、异常、特权访问时使用。进程堆栈PSP:可在线程模式使用,.,链接寄存器R14(LR),LR用于在调用子程序时存储返回地址,也用于异常返回。PC的最低位LSB始终为0,但LR的LSB可读/写。在这之前,由LR的第0位来指示ARM/Thumb状态,因为有些ARM芯片同时支持ARM状态和Thumb状态。为方便程序移植,CM3需要允许LR的LSB位可读/可写。,.,程序计数器R15(PC),CM3内部使用了三级指令流水线,读PC时返回值是当前指令的地址+4若向PC写入一个数据,就会引起程序分支CM3中的指令时半字节对齐的,所以PC得最低有效位总是读回0.,.,程序状态寄存器,内部分为三个子状态寄存器:1、应用程序PSR(APSR)2、中断状态PSR(IPSR)3、执行状态PSR(EPSR)通过MRS/MSR指令,这三个PSRs可单向访问,也可组合访问。使用三合一访问时的名称为xPSR或PSR。,.,寄存器位域名称,.,APSR各位定义,1、应用状态寄存器(APSR)包含条件代码标志。2、在进入异常之前,Cortex-M3处理器将APSR中的条件代码标志保存在堆栈内(硬件压栈)。3、访问APSR可以使用MSR(2)和MRS(2)指令来。,.,APSR的位分配,1:结果为负数或小于0:结果为正数或大于,1:结果为00:结果为非0,1:进位或借位0:没有进位或借位,1:溢出0:没有溢出,(stickysaturation)标志,某变量值达到上限/下限时被置1,进位/借位标志:,溢出标志:,零标志:,负数或小于标志:,置顶饱和标志:,.,中断状态寄存器(IPSR),中断状态寄存器(IPSR)包含当前激活的异常的ISR编号。,IPSR的位分配,ISRNUMBER基础级别=0Reset=1NMI=2SVCall11.,.,执行状态寄存器(EPSR),为什么需要执行状态寄存器EPSR?,LDM、STM和If-then指令,为多周期指令,如果在执行以上多周期指令时发生异常,处理器会暂时停止以上指令的操作,进入异常,这时需要保护现场。,LDM指令,STEP1,STEP2,STEP3,STEP4,异常,异常程序,.,执行状态寄存器PSR(EPSR)包含两个重叠的区域:,可中断-可继续指令(ICI)区多寄存器加载(LDM)和存储(STM)操作是可中断的。EPSR的ICI区用来保存从产生中断的点继续执行多寄存器加载和存储操作时所必需的信息。,If-then状态区EPSR的IT区包含了If-Then指令的执行状态位。,注:ICI区和IT区是重叠的,因此,If-Then模块内的多寄存器加载或存储操作不具有可中断-可继续功能。,.,EPSR的位分配,可中断-可继续的指令位。如果在执行LDM或STM操作时产生一次中断,则LDM或STM操作暂停,EPSR使用位15:12来保存该操作中下一个寄存器操作数的编号。在中断响应之后,处理器返回由15:12指向的寄存器并恢复操作。如果ICI区指向的寄存器不在指令的寄存器列表中,则处理器对列表中的下一个寄存器(如果有)继续执行LDM/STM操作。,ICI,.,EPSR的位分配,If-Then位。它们是If-Then指令的执行状态位。包含If-Then模块的指令数目和它们的执行条件。,IT,.,EPSR的位分配,用于指示处理器当前是ARM状态还是Thumb状态。由于ARMv7-M架构仅仅支出Thumb指令,所以T位一直为1。操作EPSR寄存器时必须注意,不能清零T位,否则会引起INVSTATE异常。,.,不能直接访问EPSR,若想修改EPSR必须发生以下两个事件之一:,在执行LDM或STM指令时产生一次中断执行If-Then指令,如果出现下列情况,LDM/STM操作重新开始而不是继续执行:,LDM/STM错误LDM/STM指令位于IT内,EPSR访问,.,特殊功能寄存器1,中断屏蔽寄存器(PRIMASK),相当于中断总开关,为1,所有中断被屏蔽;为0,中断能正常响应。只有最低位有效。,PRIMASK,所有中断被屏蔽,中断屏蔽寄存器(只有1位),中断能正常响应,1,0,.,特殊功能寄存器2,异常关闭寄存器(FaultMASK),相当于异常总开关,为1,除NMI外所有异常被屏蔽;为0,异常能正常响应。只有最低位有效。,FaultMASK,除NMI外所有异常被屏蔽,异常关闭寄存器(只有1位),异常能正常响应,1,0,.,特殊功能寄存器3,BASEPRI(最多有9位)定义屏蔽优先级的阀值,优先级号大于/等于阀值的中断被屏蔽。例如,把BASEPRI设置为2,则2和2以上优先级的中断都被屏蔽,只有0和1优先级的中断不会被屏蔽。注:BASEPRI与优先级分组有关,stellaris系列处理器使用高3位来配置。,.,BASEPRI与BASEPRI_MAX为同一寄存器,1、BASEPRI可任意设置新的优先级阀值2、BASEPRI_MAX只允许新的阀值比原来的数字更小。也就是说,修改BASEPRI_MAX时,只能一次次地扩大屏蔽范围。,.,特殊功能寄存器4,控制寄存器(CONTROL),CONTROL寄存器由两个状态位组成:,功能作用:定义特权级别,选择堆栈指针,.,CM3工作模式、堆栈、控制寄存器关系,.,CM3寄存器(特殊功能寄存器),.,CM3总线接口,片上总线标准众多ARM公司开发的AMBA总线规范成为现在的主流AMBA总线规范包括:1、AHB(AdvancedHighpreformanceBus)系统总线,使用于高速设备连接2、APB(AdvancedpreformanceBus)外设总线,使用于低速设备连接,.,包含5个总线接口:1、Icode存储器接口(32位AHB,可访程存空间00000000-1fffffffH)2、Dcode存储器接口(32位AHB,可访程存空间00000000-1fffffffH)3、系统接口(32位AHB,对系存空间20000000-dfffffffH和e010000-ffffffffH的指令、向量、数据和调试访问)4、外部专用外设接口(32位APB,可访外设空间e0040000-1e00ffffH)5、内部专用外设接口(用于访问NVIC、DWT、FPB、MPU),CM3总线接口,.,CM3内部功能描述,内核采用ARMv7-M架构32位CPUNVIC-嵌套向量中断控制器总线矩阵-32位系统总线AHB、外设总线APBFPB-实现硬件断点和代码空间到系统空间的修补访问DWT-实现数据观察断点ITM-指令跟踪宏单元MPU-存储器保护单元ETM-嵌入式跟踪宏单元TPIU-跟踪端口接口单元SW/JTAG-DP-DP接口模块(先把外部信号转换成一个通用的32位调试总线信号。SWJ-DP支持SW与JTAG两种协议,而SW-DP则只支持SW)另外,在CoreSight产品中还可使用一种JTAG-DP,它只支持JTAG协议。DAP总线上的地址是32的,其中高8位用于选择访问哪一个设备,由此可见最多可以在DAP总线上面挂256个设备。在CM3处理器的内部,用去1个设备的地址,剩下的255个都可以用于连接访问端口(AP)到DAP总线上。,.,数据类型,Cortex-M3处理器支持以下数据类型32位字16位半字8位字节,.,存储器格式,小端数据格式(数据高位存入高地址),.,存储器格式,大端数据格式(数据高位存入低地址),.,存储器格式,例如:存储一个数据12345678H时,按大端数据格式存储:按小端数据格式存储:,.,CM3存储器,存储器层次结构,.,CM3存储器组织,.,CM3存储区的有效范围,.,CM3存储器映射,.,别名区和bit_band区的对应关系,通过转换公式计算,.,1MBbit_band区=8Mbit位,位在首地址:片上SRAM:20000000H片上外设区:40000000H,别名首地址:片上SRAM:22000000H片上外设区:42000000H,.,位带别名区=32MB,.,位操作,类似8051单片机例如对P1.2、P1.5置位,对P1.0、P1.3清0有位地址比较方便(采用“读改写”)但对内部一些单元的某位做清0/置1操作时,需要屏蔽其他位,.,CM3位绑定操作,CM3支持位绑定操作:把一个地址的32位变量中的每1位,通过一个简单的地址换算,映射到另一个地址空间,每1位占用1个字地址(字地址低位有效)。这样:操作别名地址就是读/写位地址采用直接读/写,.,CM3位绑定操作,CM3位绑定操作可简化跳转程序:以前判断:读取寄存器掩蔽不需要的位比较跳转。有位绑定判断:从位绑定别名区读取位直接比较判断,并且其他总线活动不能中断位绑定操作。,.,CM3位带写操作,假设:要把位带地址20000000H.2置1:,无位带操作方式,用位带操作方式,.,CM3位带读操作,假设:要读出位带地址20000000H.2:,无位带操作方式,用位带操作方式,.,CM3位带区,位带区操作中,有一个地址映射过程,.,CM3位带区地址范围,位带区每个bit位映射到别名区的1个字,对应的两个位带别名区的地址范围:0 x220000000 x23FFFFFF(SRAM区中32MB)0 x420000000 x43FFFFFF(片上外设区中32MB),.,CM3位带地址换算公式,对SRAM位带地址的bit位,设其所在的字节地址为A,位序号n,则该bit在别名区的字地址为:,对片上外设的位带地址换算为别名地址公式:,位带地址偏移量,位带地址偏移量,.,CM3位带地址别名地址转换例证,例如1:对SRAM中20000204H.3位带地址,换算出对应的别名地址。则A=20000204H,n=3计算位带偏移量为:20000204H20000000H则别名地址=22000000H+204H*32+3*4=22000000H+4080H+0CH=2200408CH,.,CM3别名地址位带地址转换例证,例如1:对SRAM中220003A8H别名地址,换算出对应的位带地址。1、计算别名地址偏移量为:03A8H2、求位带地址偏移量:别名地址偏移量/32得到整数和余数,整数即是位带地址偏移量3、求位序号:余数/4得到位序号4、求位带地址:整合计算数据得到:位带首地址+偏移量+位序号,例如1:对SRAM中220003A8H别名地址,换算出对应的位带地址。1、别名地址偏移量=03A8H2、位带地址偏移量:别名地址偏移量/32=1DH8得到整数=1DH和余数=83、位序号:8/4=24、位带地址=20000000H+1DH+.2=2000001DH.2,.,CM3的ROM存储器表(内部外设),.,指令集指令是CPU的执行命令,是程序编写的语言计算机编程语言是软件的载体软件和硬件是通过指令联系的指令集是计算机硬件与软件的接口,.,ARM指令集,ARM处理器是加载/存储型32位指令集:1、即指令集只能处理寄存器的数据,处理结果放回到寄存器中2、且对系统存储器的访问应通过专门的加载/存储指令ARM指令系统是RISC指令集,指令选取使用频率高、有用又不复杂、长度固定、指令格式种类少、寻址方式少、存储器存取、寄存器间操作、1机器周期指令、以硬布线控制逻辑为主。,.,ARM指令分类,ARM采用长乘法指令、增强的DSP指令,集合了RISC与CISC的优势,中断响应快速,支持虚拟存储系统和高级语言等。ARM指令集分为:1、跳转指令2、数据处理指令3、程序状态寄存器(PSR)处理指令4、加载/存储指令5、协处理器指令6、异常产生指令,.,MRS指令结构,SRd,Rn,Rm指令操作码更新CPSR目的寄存器源操作数,.,Thumb指令集,Thumb是ARM指令集的一个子集,允许指令编码长度为16位,可节省系统存储空间。所有Thumb指令都对应ARM指令,只要遵循原则,它们的子程序可以互相调用。处理器执行ARM程序段时处于ARM工作状态,执行Thumb程序段时,处于Thumb工作状态。Thumb舍弃了ARM指令集的一些特性,但操作数仍是32位的,时间效率和空间效率有变化。,.,Thumb-2指令集,Thumb-2强大、易用、高效,支持16位和32位指令集,是一种突破性指令集,是16位Thumb指令集的一个超集。Thumb-2把16位Thumb指令和32位ARM指令并存,处理器执行程序没有切换的额外开销、可节省执行时间和指令空间;不需要把源代码分成按ARM和Thumb编译,软件开发管理减负,无需反复求证和测试状态何时切换,程序效率高,软件开发容易。,.,CM3的三级指令流水线,指令执行步骤:1、CM3处理器从内存读取指令(Fetch)2、解码(Decode)3、执行(Execute),.,CM3处理器的异常,异常:当内核产生复位、存取失败、遇到未定义指令时,正常执行的程序暂停,转到相应的处理程序执行称为异常。每个异常对应一个异常处理程序。异常程序执行完后,返回当前程序继续执行CM3允许多个异常同时发生,并按固定的优先级进行处理。,.,中断与异常,中断:当CM3内核的外部发生某一事件,产生触发信号,引起CPU暂停当前执行的程序,转到相应的事件中断处理程序去执行。执行完后返回。异常与中断的区别:中断对CM3内核来说是意外突发事件,请求信号来自外部;异常时CM3内核产生的,即在执行指令或存取中产生的。中断与异常名称、概念相似,如不特别说明,按中断性质处理。,.,CM3处理器的异常处理,自动的状态保存和恢复自动读取代码存储器或SRAM中包含ISR地址的向量表入口支持末尾连锁中断优先级可动态重新设置中断数目可配置为1240中断优先级的数目可配置为18位使用C/C+标准的调用规范优先级屏蔽支持临界区,.,CM3处理器的异常类型,.,嵌套向量中断控制器NVIC,NVIC基本功能:支持向量中断、可屏蔽中断、嵌套中断、很短中断延时和动态优先级调整。中断挂起:不能被立即响应的中断。中断挂起的原因:有高优先级中断在执行,或相关屏蔽位被置位。被挂起的中断,对应有一个挂起寄存器保存其中断请求,等到该中断能响应时执行服务程序。传统ARM由产生中断的设备保存住请求信号,CM3由NVIC挂起寄存器来保存。NVIC支持内置睡眠模式的电源管理,调用WFI或WFE指令则进入睡眠,发生中断退出睡眠。Systick定时器:NVIC集成了1个24位Systick定时器,产生时间片,可用于操作系统或预订服务。,.,进入ISR之前,CM3处理器采取的步骤,8个寄存器压栈(xPSR、PC、LR、R12、R3、R2、R1、R0压栈)读中断向量表从中断向量表中读SP更新PC加载流水线更新LR,.,中断、异常过程,在所选的堆栈上把xPSR、PC、LR、R12、R3、R2、R1、R0压栈,读存储器中向量表,地址=向量表基址+(异常号)*4,中断函数入口,在复位时,将SP更新为向量表中第1个字的值,利用向量表读出的位置更新PC,直到第1条指令开始执行时,才能出来迟来异常,从向量表指向的位置加载指令,它与寄存器压栈操作同时执行,LR设置为EXC_RETURN,以便从异常中退出(LR的值并非进入异常程序的地址)。,.,CM3处理器的异常优先级,优先级优先级分组在一个系统中,通常有5种分组,由32位AIRC寄存器的10:8这3位决定使用那一组,.,异常占先示意图,.,抢占之后堆栈中的内容,.,末尾连锁示意图,.,异常迟来示意图,.,异常返回,如果激活异常的优先级比所有被压栈的异常的优先级都高,则处理器会末尾连锁到一个激活异常如果没有激活异常,或者如果被压栈的异常的最高优先级比激活异常的最高优先级还要高,则处理器返回到上一个被压栈的ISR如果没有激活中断或被压栈的异常,则处理器返回线程模式,.,异常

温馨提示

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

评论

0/150

提交评论