您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 第2章 CM3嵌入式系统体系结构
第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.工作模式与访问权限的关系非私模式私有模式私有模式HandlerThread特权访问和用户访问2.特权访问和用户访问之间的相互转换Cortex-M3与ARM7的性能比较Cortex-M3的寄存器集13个通用寄存器:r0~r12分组的堆栈指针r13,别名为SP_process和SP_main链接寄存器r14程序计数器r151个程序状态寄存器xPSRCortex-M3的寄存器集r0r1r2r3r4r5r8r7r9r6r12r11r10r13(SP)r14(LR)r15(PC)xPSR程序状态寄存器r13(SP)高寄存器低寄存器SP_processSP_mainCM3采用双堆栈结构通用寄存器低组寄存器r0-r7高组寄存器r8-r12堆栈指针寄存器r13链接寄存器(LR)r14程序计数器寄存器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若向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:结果为非01:进位或借位0:没有进位或借位1:溢出0:没有溢出(stickysaturation)标志,某变量值达到上限/下限时被置1313029282726----0NZCVQ保留进位/借位标志:溢出标志:零标志:负数或小于标志:置顶饱和标志:中断状态寄存器(IPSR)中断状态寄存器(IPSR)包含当前激活的异常的ISR编号。IPSR的位分配ISRNUMBER基础级别=0Reset=1NMI=2SVCall=11......31----98--0保留中断号执行状态寄存器(EPSR)为什么需要执行状态寄存器EPSR?LDM、STM和If-then指令,为多周期指令,如果在执行以上多周期指令时发生异常,处理器会暂时停止以上指令的操作,进入异常,这时需要保护现场。LDM指令STEP1STEP2STEP3STEP4异常异常程序执行状态寄存器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操作。31272625242316151090保留ICI/ITT保留ICI/IT保留ICIEPSR的位分配If-Then位。它们是If-Then指令的执行状态位。包含If-Then模块的指令数目和它们的执行条件。31272625242316151090保留ICI/ITT保留ICI/IT保留ITEPSR的位分配用于指示处理器当前是ARM状态还是Thumb状态。由于ARMv7-M架构仅仅支出Thumb指令,所以T位一直为1。操作EPSR寄存器时必须注意,不能清零T位,否则会引起INVSTATE异常。31272625242316151090保留ICI/ITT保留ICI/IT保留不能直接访问EPSR,若想修改EPSR必须发生以下两个事件之一:在执行LDM或STM指令时产生一次中断执行If-Then指令如果出现下列情况,LDM/STM操作重新开始而不是继续执行:LDM/STM错误LDM/STM指令位于IT内EPSR访问特殊功能寄存器1中断屏蔽寄存器(PRIMASK)相当于中断总开关,为1,所有中断被屏蔽;为0,中断能正常响应。只有最低位有效。PRIMASK所有中断被屏蔽中断屏蔽寄存器(只有1位)中断能正常响应10特殊功能寄存器2异常关闭寄存器(FaultMASK)相当于异常总开关,为1,除NMI外所有异常被屏蔽;为0,异常能正常响应。只有最低位有效。FaultMASK除NMI外所有异常被屏蔽异常关闭寄存器(只有1位)异常能正常响应10特殊功能寄存器3BASEPRI(最多有9位)定义屏蔽优先级的阀值优先级号大于/等于阀值的中断被屏蔽。例如,把BASEPRI设置为2,则2和2以上优先级的中断都被屏蔽,只有0和1优先级的中断不会被屏蔽。注:BASEPRI与优先级分组有关,stellaris系列处理器使用高3位来配置。BASEPRI2优先级0优先级1优先级2优先级3优先级4….中断被屏蔽中断可响应BASEPRI与BASEPRI_MAX为同一寄存器1、BASEPRI可任意设置新的优先级阀值2、BASEPRI_MAX只允许新的阀值比原来的数字更小。也就是说,修改BASEPRI_MAX时,只能一次次地扩大屏蔽范围。特殊功能寄存器4控制寄存器(CONTROL)CONTROL寄存器由两个状态位组成:CONTROL[0]CONTROL[1]0特权模式主堆栈1用户模式进程堆栈功能作用:定义特权级别,选择堆栈指针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位字节存储器格式小端数据格式(数据高位存入高地址)地址F的字节33124162315870地址E的字节2地址D的字节1地址C的字节0地址E的半字1地址C的半字0地址C的字地址B的字节3地址A的字节2地址9的字节1地址8的字节0地址A的半字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的字存储器格式大端数据格式(数据高位存入低地址)地址F的字节03124162315870地址E的字节1地址D的字节2地址C的字节3地址E的0地址C的半字1地址C的字地址B的字节0地址A的字节1地址9的字节2地址8的字节3地址A的半字0地址8的半字1地址7的字节0地址6的字节1地址5的字节2地址4的字节3地址6的半字0地址4的半字1地址3的字节0地址2的字节1地址1的字节2地址0的字节3地址2的半字0地址0的半字1地址4的字地址8的字地址0的字存储器格式例如:存储一个数据12345678H时,按大端数据格式存储:按小端数据格式存储:78H56H34H12H高位地址低位地址12H34H56H78H高位地址低位地址CM3存储器存储器层次结构寄存器组内核板卡级芯片级外设TCMCache写缓存SRAMDRAMFlash和其他非易失级缓存硬盘、磁带和网络存储速度存储量CM3存储器组织CM3存储区的有效范围CM3存储器映射ROM表外部PPBETMTPIU保留NVIC保留FPBDWTITM0xE00FFFFF0xE00FF0000xE00420000xE00410000xE00400000xE003FFFF0xE000F000
本文标题:第2章 CM3嵌入式系统体系结构
链接地址:https://www.777doc.com/doc-3275614 .html