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

下载本文档

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

文档简介

1、第第2章章 ARM Cortex-M3 体系结构体系结构主讲 朱兆优Cortex-M3 内核的主要特点 n功耗低-2uwn内核的门数少,具有优异的性价比n中断延迟短 n调试成本低n具有嵌套向量中断控制器(NVIC)n处理器采用ARMv7-M 架构n具有可裁减的存储器保护单元(MPU)n总线接口2.1 ARM Cortex-M3 处理器内核 CM3处理器内核是ARMv7-M体系结构:1. CPU中央处理器(32位)2. 先进的系统外设3. 中断控制4. 内存保护5. 系统调试与跟踪功能6. 传统Thumb和新型Thumb2指令译码器7. 特殊功能寄存器STM32F103 系列内部框图 2.2 处

2、理器工作模式和状态CM3的操作模式CM3的操作模式特权级可以访问任意资源,用户级对有些资源的访问有限制或不允许访问。操作模式状态转换支持2种模式和2种访问1. 工作模式与访问权限的关系非私模式私有模式私有模式HandlerThread特权访问和用户访问2. 特权访问和用户访问之间的相互转换Cortex-M3 与ARM7 的性能比较 Cortex-M3的寄存器集 n13个通用寄存器:r0r12n分组的堆栈指针r13,别名为SP_process和SP_mainn链接寄存器r14n程序计数器r15n1个程序状态寄存器xPSRCortex-M3的寄存器集 CM3采用双堆栈结构通用寄存器n低组寄存器r0

3、-r7n高组寄存器r8-r12n堆栈指针寄存器r13n链接寄存器(LR)r14n程序计数器寄存器r15堆栈指针R13CM3支持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、值是当前指令的地址+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的

5、位分配 1:结果为负数或小于0:结果为正数或大于 1:结果为00:结果为非0 1:进位或借位0:没有进位或借位 1:溢出0:没有溢出 (sticky saturation)标志 ,某变量值达到上限/下限时被置131 3029282726 - 0 NZCVQ保留进位/借位标志:溢出标志:零标志:负数或小于标志:置顶饱和标志:中断状态寄存器中断状态寄存器(IPSR)(IPSR) 中断状态寄存器(IPSR)包含当前激活的异常的ISR编号。 IPSR的位分配 ISR NUMBER 基础级别 =0Reset =1NMI =2SVCall 11 .31 - 9 8 - 0 保留中断号执行状态寄存器执行状态

6、寄存器(EPSR)(EPSR)为什么需要执行状态寄存器为什么需要执行状态寄存器EPSREPSR? LDM、STM和If-then指令,为多周期指令,如果在执行以上多周期指令时发生异常,处理器会暂时停止以上指令的操作,进入异常,这时需要保护现场。LDM指令STEP1STEP2STEP3STEP4异常 异常程序执行状态寄存器执行状态寄存器PSR(EPSR)PSR(EPSR)包含两个重叠的区域包含两个重叠的区域 :可中断可中断- -可继续指令(可继续指令(ICIICI)区)区 多寄存器加载(LDM)和存储(STM)操作是可中断的。EPSR的ICI区用来保存从产生中断的点继续执行多寄存器加载和存储操作

7、时所必需的信息。 If-thenIf-then状态区状态区 EPSR的IT区包含了If-Then指令的执行状态位。 注:ICI区和IT区是重叠的,因此,If-Then模块内的多寄存器加载或存储操作不具有可中断-可继续功能。EPSR的位分配 可中断-可继续的指令位。如果在执行LDM或STM操作时产生一次中断,则LDM或STM操作暂停,EPSR使用位15:12来保存该操作中下一个寄存器操作数的编号。在中断响应之后,处理器返回由15:12指向的寄存器并恢复操作。如果ICI区指向的寄存器不在指令的寄存器列表中,则处理器对列表中的下一个寄存器(如果有)继续执行LDM/STM操作。31 2726 2524

8、23 1615 10 9 0保留ICI/ITT保留ICI/IT保留ICIEPSR的位分配 If-Then位。它们是If-Then指令的执行状态位。包含If-Then模块的指令数目和它们的执行条件。31 2726 252423 1615 10 9 0保留ICI/ITT保留ICI/IT保留ITEPSR的位分配 用于指示处理器当前是ARM状态还是Thumb状态。由于ARMv7-M架构仅仅支出Thumb指令,所以T位一直为1。操作EPSR寄存器时必须注意,不能清零T位,否则会引起INVSTATE异常。31 2726 252423 1615 10 9 0保留ICI/IT T保留ICI/IT保留不能直接访

9、问EPSR,若想修改EPSR必须发生以下两个事件之一: 在执行LDM或STM指令时产生一次中断 执行If-Then指令如果出现下列情况,LDM/STM操作重新开始而不是继续执行: LDM/STM错误 LDM/STM指令位于IT内EPSR访问特殊功能寄存器特殊功能寄存器1 1中断屏蔽寄存器( PRIMASK )相当于中断总开关,为1,所有中断被屏蔽;为0,中断能正常响应。只有最低位有效。PRIMASK所有中断被屏蔽中断屏蔽寄存器(只有1位)中断能正常响应10特殊功能寄存器特殊功能寄存器2 2异常关闭寄存器( FaultMASK )相当于异常总开关,为1,除NMI外所有异常被屏蔽;为0,异常能正常

10、响应。只有最低位有效。FaultMASK除NMI外所有异常被屏蔽异常关闭寄存器(只有1位)异常能正常响应10特殊功能寄存器特殊功能寄存器3 3BASEPRIBASEPRI(最多有最多有9 9位位)定义屏蔽优先级的阀值优先级号大于/等于阀值的中断被屏蔽。 例如,把BASEPRI设置为2,则2和2以上优先级的中断都被屏蔽,只有0和1优先级的中断不会被屏蔽。注: BASEPRI与优先级分组有关,stellaris系列处理器使用高3位来配置。BASEPRI2优先级0优先级1优先级2优先级3优先级4.中断被屏蔽中断可响应BASEPRI与与BASEPRI_MAX为为同一寄存器同一寄存器1、BASEPRI可

11、任意设置新的优先级阀值2、BASEPRI_MAX只允许新的阀值比原来的数字更小。也就是说,修改BASEPRI_MAX时,只能一次次地扩大屏蔽范围。特殊功能寄存器特殊功能寄存器4 4控制寄存器( CONTROL)CONTROL寄存器由两个状态位组成:CONTROL0CONTROL10特权模式主堆栈1用户模式进程堆栈功能作用:定义特权级别,选择堆栈指针CM3工作模式、堆栈、控制寄存器关系 CM3寄存器(特殊功能寄存器)CM3 总线接口 片上总线标准众多ARM公司开发的AMBA总线规范成为现在的主流AMBA总线规范包括:1、AHB(Advanced High preformance Bus)系统总线

12、,使用于高速设备连接2、APB(Advanced preformance Bus)外设总线,使用于低速设备连接包含5个总线接口:1、Icode存储器接口(32位AHB,可访程存空间0000 0000-1fff ffffH)2、Dcode存储器接口(32位AHB,可访程存空间0000 0000-1fff ffffH)3、系统接口(32位AHB,对系存空间2000 0000-dfff ffffH和e010000-ffff ffffH的指令、向量、数据和调试访问)4、外部专用外设接口(32位APB,可访外设空间e004 0000-1e00 ffffH)5、内部专用外设接口(用于访问NVIC、DWT、

13、FPB、MPU)CM3 总线接口 CM3内部功能描述n内核采用ARMv7-M 架构32位 CPUnNVIC-嵌套向量中断控制器n总线矩阵-32位系统总线AHB、外设总线APBnFPB-实现硬件断点和代码空间到系统空间的修补访问 nDWT-实现数据观察断点 nITM-指令跟踪宏单元 nMPU-存储器保护单元nETM-嵌入式跟踪宏单元 nTPIU-跟踪端口接口单元 nSW/JTAG-DP-DP 接口模块(先把外部信号转换成一个通用的32 位调试总线信号。SWJ-DP支持SW与JTAG 两种协议,而SW-DP则只支持SW) 另外,在CoreSight产品中还可使用一种JTAG-DP,它只支持JTAG

14、协议。DAP 总线上的地址是32的,其中高8 位用于选择访问哪一个设备,由此可见最多可以在DAP 总线上面挂256个设备。在CM3 处理器的内部,用去1个设备的地址,剩下的255 个都可以用于连接访问端口(AP)到DAP 总线上。数据类型 Cortex-M3处理器支持以下数据类型 l32位字l16位半字l8位字节存储器格式小端数据格式(数据高位存入高地址)地址 F 的字节 33124162315870地址 E 的字节 2地址 D 的字节 1地址C 的字节0地址 E 的半字 1地址 C 的半字 0地址C 的字地址 B 的字节3地址A 的字节2地址9 的字节 1地址 8 的字节 0地址 A 的半字

15、 1地址 8 的半字 0地址7 的字节 3地址6 的字节2地址5 的字节1地址 4 的字节 0地址 6 的半字 1地址 4 的半字 0地址3 的字节 3地址 2 的字节2地址 1 的字节1地址 0 的字节 0地址 2 的半字 1地址 0 的半字 0地址4 的字地址 8 的字地址0 的字存储器格式大端数据格式(数据高位存入低地址)存储器格式例如:存储一个数据12345678H时,按大端数据格式存储:按小端数据格式存储:CM3存储器存储器层次结构CM3存储器组织CM3存储区的有效范围CM3存储器映射别名区和bit_band区的对应关系 通过转换公式计算1MB bit_band区=8M bit位位在

16、首地址:位在首地址:片上SRAM:2000 0000H片上外设区:4000 0000H别名首地址:别名首地址:片上SRAM:2200 0000H片上外设区:4200 0000H位带别名区=32MB位操作 类似8051单片机例如对P1.2、P1.5置位,对P1.0、P1.3清0有位地址比较方便(采用“读改写”) 但对内部一些单元的某位做清0/置1操作时,需要屏蔽其他位CM3位绑定操作 CM3支持位绑定操作:把一个地址的32位变量中的每1位,通过一个简单的地址换算,映射到另一个地址空间,每1位占用1个字地址(字地址低位有效)。这样:操作别名地址就是读/写位地址 采用直接读/写CM3位绑定操作 CM

17、3位绑定操作可简化跳转程序:以前判断:读取寄存器掩蔽不需要的位比较跳转。有位绑定判断:从位绑定别名区读取位直接比较判断,并且其他总线活动不能中断位绑定操作。CM3位带写操作 假设:要把位带地址2000 0000H.2置1:无位带操作方式用位带操作方式CM3位带读操作 假设:要读出位带地址2000 0000H.2:无位带操作方式用位带操作方式CM3位带区 位带区操作中,有一个地址映射过程CM3位带区 地址范围位带区位带区每个bit位映射到别名区别名区的1个字对应的对应的两个位带别名区两个位带别名区的地址范围的地址范围:0 x2200 00000 x23FF FFFF(SRAM区中32MB)0 x

18、4200 00000 x43FF FFFF(片上外设区中32MB)CM3位带地址换算公式对SRAM位带地址的bit位,设其所在的字节地址为A,位序号n,则该bit在别名区的字地址为:对片上外设的对片上外设的位带地址位带地址换算为换算为别名地址别名地址公式:公式:位带地址偏移量位带地址偏移量CM3位带地址别名地址转换例证例如1:对SRAM中2000 0204H.3位带地址,换算出对应的别名地址。则A=2000 0204H,n=3计算位带偏移量为:2000 0204H2000 0000H则别名地址=2200 0000H+204H*32+3*4 =2200 0000H+4080H+0CH =2200

19、 408CHCM3别名地址位带地址转换例证例如1:对SRAM中2200 03A8H别名地址,换算出对应的位带地址。1、计算别名地址偏移量为:03A8H2、求位带地址偏移量:别名地址偏移量/32得到整数和余数,整数即是位带地址偏移量3、求位序号:余数/4得到位序号4、求位带地址:整合计算数据得到: 位带首地址+偏移量+位序号例如1:对SRAM中2200 03A8H别名地址,换算出对应的位带地址。1、别名地址偏移量=03A8H2、位带地址偏移量:别名地址偏移量/32=1DH8得到整数=1DH和余数=83、位序号:8/4=24、位带地址=2000 0000H+1DH+.2 =2000 001DH.2

20、CM3的ROM存储器表(内部外设) 指令集指令集指令是指令是CPU的执行命令,是程序编写的语言的执行命令,是程序编写的语言计算机编程语言是软件的载体计算机编程语言是软件的载体软件和硬件是通过指令联系的软件和硬件是通过指令联系的指令集是计算机硬件与软件的接口指令集是计算机硬件与软件的接口ARM指令集ARM处理器是加载/存储型32位指令集: 1、即指令集只能处理寄存器的数据,处理结果放回到寄存器中 2、且对系统存储器的访问应通过专门的加载/存储指令 ARM指令系统是RISC指令集,指令选取使用频率高、有用又不复杂、长度固定、指令格式种类少、寻址方式少、存储器存取、寄存器间操作、1机器周期指令、以硬

21、布线控制逻辑为主。ARM指令分类 ARM采用长乘法指令、增强的DSP指令,集合了RISC与CISC的优势,中断响应快速,支持虚拟存储系统和高级语言等。ARM指令集分为: 1、跳转指令 2、数据处理指令 3、程序状态寄存器(PSR)处理指令 4、加载/存储指令 5、协处理器指令 6、异常产生指令MRS指令结构 S Rd , Rn , Rm 指令操作码 更新CPSR 目的寄存器 源操作数Thumb指令集 Thumb是ARM指令集的一个子集,允许指令编码长度为16位,可节省系统存储空间。 所有Thumb指令都对应ARM指令,只要遵循原则,它们的子程序可以互相调用。 处理器执行ARM程序段时处于ARM

22、工作状态,执行Thumb程序段时,处于Thumb工作状态。 Thumb舍弃了ARM指令集的一些特性,但操作数仍是32位的,时间效率和空间效率有变化。Thumb-2指令集 Thumb-2强大、易用、高效,支持16位和32位指令集,是一种突破性指令集,是16位Thumb指令集的一个超集。 Thumb-2把16位Thumb指令和32位ARM指令并存,处理器执行程序没有切换的额外开销、可节省执行时间和指令空间;不需要把源代码分成按ARM和Thumb编译,软件开发管理减负,无需反复求证和测试状态何时切换,程序效率高,软件开发容易。CM3的三级指令流水线 指令执行步骤: 1、CM3处理器从内存读取指令(F

23、etch) 2、解码(Decode) 3、执行(Execute)CM3处理器的异常 l异常:当内核产生复位、存取失败、遇到未定义指令时,正常执行的程序暂停,转到相应的处理程序执行称为异常。每个异常对应一个异常处理程序。l异常程序执行完后,返回当前程序继续执行lCM3允许多个异常同时发生,并按固定的优先级进行处理。中断与异常 l中断:当CM3内核的外部发生某一事件,产生触发信号,引起CPU暂停当前执行的程序,转到相应的事件中断处理程序去执行。执行完后返回。l异常与中断的区别:中断对CM3内核来说是意外突发事件,请求信号来自外部;异常时CM3内核产生的,即在执行指令或存取中产生的。l中断与异常名称

24、、概念相似,如不特别说明,按中断性质处理。CM3处理器的异常处理 l自动的状态保存和恢复l自动读取代码存储器或SRAM中包含ISR地址的向量表入口l支持末尾连锁l中断优先级可动态重新设置l中断数目可配置为1240l中断优先级的数目可配置为18位l使用C/C+标准的调用规范l优先级屏蔽支持临界区CM3处理器的异常类型嵌套向量中断控制器NVIC lNVIC基本功能:支持向量中断、可屏蔽中断、嵌套中断、很短中断延时和动态优先级调整。l中断挂起:不能被立即响应的中断。l中断挂起的原因:有高优先级中断在执行,或相关屏蔽位被置位。l被挂起的中断,对应有一个挂起寄存器保存其中断请求,等到该中断能响应时执行服

25、务程序。传统ARM由产生中断的设备保存住请求信号,CM3由NVIC挂起寄存器来保存。lNVIC支持内置睡眠模式的电源管理,调用WFI或WFE指令则进入睡眠,发生中断退出睡眠。lSystick定时器:NVIC集成了1个24位Systick定时器,产生时间片,可用于操作系统或预订服务。进入ISR之前,CM3处理器采取的步骤 l8个寄存器压栈(xPSR、PC、LR、R12、 R3、R2、R1、R0压栈)l读中断向量表l从中断向量表中读SPl更新PCl加载流水线l更新LR中断、异常过程 在所选的堆栈上把xPSR、PC、LR、R12、R3、R2、R1、R0压栈读存储器中向量表,地址=向量表基址+(异常号

26、)*4,中断函数入口在复位时,将SP更新为向量表中第1个字的值利用向量表读出的位置更新PC,直到第1条指令开始执行时,才能出来迟来异常从向量表指向的位置加载指令,它与寄存器压栈操作同时执行LR设置为EXC_RETURN,以便从异常中退出(LR的值并非进入异常程序的地址)。CM3处理器的异常优先级 n优先级n优先级分组 在一个系统中,通常有5种分组,由32位AIRC寄存器的10:8这3位决定使用那一组异常占先示意图抢占之后堆栈中的内容末尾连锁示意图异常迟来示意图异常返回l如果激活异常的优先级比所有被压栈的异常的优先级都高,则处理器会末尾连锁到一个激活异常l如果没有激活异常,或者如果被压栈的异常的最高优先级比激活异常的最高优先级还要高,则处理

温馨提示

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

评论

0/150

提交评论