第2章-cm3嵌入式系统体系结构

上传人:F****n 文档编号:109741164 上传时间:2019-10-27 格式:PPT 页数:89 大小:3.26MB
返回 下载 相关 举报
第2章-cm3嵌入式系统体系结构_第1页
第1页 / 共89页
第2章-cm3嵌入式系统体系结构_第2页
第2页 / 共89页
第2章-cm3嵌入式系统体系结构_第3页
第3页 / 共89页
第2章-cm3嵌入式系统体系结构_第4页
第4页 / 共89页
第2章-cm3嵌入式系统体系结构_第5页
第5页 / 共89页
点击查看更多>>
资源描述

《第2章-cm3嵌入式系统体系结构》由会员分享,可在线阅读,更多相关《第2章-cm3嵌入式系统体系结构(89页珍藏版)》请在金锄头文库上搜索。

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

2、2 处理器工作模式和状态,不同的应用会有不同的模式 不同的模式解决不同的问题 模式代表解决特定的应用或某类问题的解决方案(手机有正常模式和飞行模式)。 CM3的模式用于区别: (1)普通应用程序的代码与异常 (2)中断服务例程的代码,CM3的操作模式,CM3具有存储器访问的保护机制,它使得普通用户程序代码不能意外地或恶意地执行涉及要害的操作。支持线程和处理者操作模式。(程序类型),CM3的操作模式,处理器2种操作模式: 处理模式和线程模式 程序执行设置2种权限: 用户级和特权级。,特权级可以访问任意资源,用户级对有些资源的访问有限制或不允许访问。,操作模式状态转换,1、CM3运行主应用程序时(

3、线程模式),可使用特权级或用户级 2、处理异常服务例程必须使用特权模式。 3、复位后,CM3默认进入线程模式,特权级访问 4、从特权模式切换到用户级,修改CONTROL寄存器即可 5、用户级切换回特权级,必须执行一条系统调用指令SVC,触发SVC异常,在异常服务例程中修改CONTROL才能回到特权级,支持2种模式和2种访问,1. 工作模式与访问权限的关系,非私模式,私有模式,私有模式,Handler,Thread,特权访问和用户访问,2. 特权访问和用户访问之间的相互转换,Cortex-M3 与ARM7 的性能比较,Cortex-M3的寄存器集,13个通用寄存器:r0r12 分组的堆栈指针r1

4、3,别名为SP_process和SP_main 链接寄存器r14 程序计数器r15 1个程序状态寄存器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位来

5、指示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。,寄存器位域

6、名称,APSR各位定义,1、应用状态寄存器(APSR)包含条件代码标志。 2、在进入异常之前,Cortex-M3处理器将APSR中的条件代码标志保存在堆栈内(硬件压栈)。 3、访问APSR可以使用MSR(2)和MRS(2)指令来。,APSR的位分配,1:结果为负数或小于 0:结果为正数或大于,1:结果为0 0:结果为非0,1:进位或借位 0:没有进位或借位,1:溢出 0:没有溢出,(sticky saturation)标志 , 某变量值达到上限/下限时被置1,进位/借位标志:,溢出标志:,零标志:,负数或小于标志:,置顶饱和标志:,中断状态寄存器(IPSR),中断状态寄存器(IPSR)包含当前

7、激活的异常的ISR编号。,IPSR的位分配,ISR NUMBER 基础级别 =0 Reset =1 NMI =2 SVCall 11 ,执行状态寄存器(EPSR),为什么需要执行状态寄存器EPSR?,LDM、STM和If-then指令,为多周期指令,如果在执行以上多周期指令时发生异常,处理器会暂时停止以上指令的操作,进入异常,这时需要保护现场。,LDM指令,STEP1,STEP2,STEP3,STEP4,异常,异常程序,执行状态寄存器PSR(EPSR)包含两个重叠的区域 :,可中断-可继续指令(ICI)区 多寄存器加载(LDM)和存储(STM)操作是可中断的。EPSR的ICI区用来保存从产生中

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

9、I,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访问

10、,特殊功能寄存器1,中断屏蔽寄存器( PRIMASK ),相当于中断总开关, 为1,所有中断被屏蔽; 为0,中断能正常响应。 只有最低位有效。,PRIMASK,所有中断被屏蔽,中断屏蔽寄存器(只有1位),中断能正常响应,1,0,特殊功能寄存器2,异常关闭寄存器( FaultMASK ),相当于异常总开关,为1,除NMI外所有异常被屏蔽; 为0,异常能正常响应。只有最低位有效。,FaultMASK,除NMI外所有异常被屏蔽,异常关闭寄存器(只有1位),异常能正常响应,1,0,特殊功能寄存器3,BASEPRI(最多有9位)定义屏蔽优先级的阀值,优先级号大于/等于阀值的中断被屏蔽。 例如,把BASE

11、PRI设置为2,则2和2以上优先级的中断都被屏蔽,只有0和1优先级的中断不会被屏蔽。 注: BASEPRI与优先级分组有关,stellaris系列处理器使用高3位来配置。,BASEPRI与BASEPRI_MAX为同一寄存器,1、BASEPRI可任意设置新的优先级阀值 2、BASEPRI_MAX只允许新的阀值比原来的数字更小。也就是说,修改BASEPRI_MAX时,只能一次次地扩大屏蔽范围。,特殊功能寄存器4,控制寄存器( CONTROL),CONTROL寄存器由两个状态位组成:,功能作用:定义特权级别,选择堆栈指针,CM3工作模式、堆栈、控制寄存器关系,CM3寄存器(特殊功能寄存器),CM3

12、总线接口,片上总线标准众多 ARM公司开发的AMBA总线规范成为现在的主流 AMBA总线规范包括: 1、AHB(Advanced High preformance Bus)系统总线,使用于高速设备连接 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

13、-ffff ffffH的指令、向量、数据和调试访问) 4、外部专用外设接口(32位APB,可访外设空间e004 0000-1e00 ffffH) 5、内部专用外设接口(用于访问NVIC、DWT、FPB、MPU),CM3 总线接口,CM3内部功能描述,内核采用ARMv7-M 架构32位 CPU NVIC-嵌套向量中断控制器 总线矩阵-32位系统总线AHB、外设总线APB FPB-实现硬件断点和代码空间到系统空间的修补访问 DWT-实现数据观察断点 ITM-指令跟踪宏单元 MPU-存储器保护单元 ETM-嵌入式跟踪宏单元 TPIU-跟踪端口接口单元 SW/JTAG-DP-DP 接口模块(先把外部信

14、号转换成一个通用的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位字节,存储器格式,小端数据格式(数据高位存入高地址),存储器格式,大端数据格式(数据高位存入低地址),存

15、储器格式,例如:存储一个数据12345678H时, 按大端数据格式存储: 按小端数据格式存储:,CM3存储器,存储器层次结构,CM3存储器组织,CM3存储区的有效范围,CM3存储器映射,别名区和bit_band区的对应关系,通过转换公式计算,1MB bit_band区=8M bit位,位在首地址: 片上SRAM:2000 0000H 片上外设区:4000 0000H,别名首地址: 片上SRAM:2200 0000H 片上外设区:4200 0000H,位带别名区=32MB,位操作,类似8051单片机 例如对P1.2、P1.5置位,对P1.0、P1.3清0 有位地址比较方便(采用“读改写”) 但对

16、内部一些单元的某位做清0/置1操作时,需要屏蔽其他位,CM3位绑定操作,CM3支持位绑定操作: 把一个地址的32位变量中的每1位,通过一个简单的地址换算,映射到另一个地址空间,每1位占用1个字地址(字地址低位有效)。 这样:操作别名地址就是读/写位地址 采用直接读/写,CM3位绑定操作,CM3位绑定操作可简化跳转程序: 以前判断:读取寄存器掩蔽不需要的位比较跳转。 有位绑定判断:从位绑定别名区读取位直接比较判断,并且其他总线活动不能中断位绑定操作。,CM3位带写操作,假设:要把位带地址2000 0000H.2置1:,无位带操作方式,用位带操作方式,CM3位带读操作,假设:要读出位带地址2000 0000H.2:,无位带操作方式,用位带操作方式,CM3位带区,位带区操作中,有一个地址映射过程,CM3位带区 地址范围,位带区每个bit位映射到别名区的1个字,对应的两个位带别名区的地址范围: 0x2200 00000x23FF FFFF(SR

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 小学教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号