您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > STM32讲义2..
STM32ARM讲义第2章Cortex-M3体系结构Cortex-M3Systemstructure2014.9第2章Cotex-M3体系结构主要内容CM3微处理器核结构处理器的工作模式和状态寄存器、总线接口存储器的组织与映射指令集、流水线、异常和中断存储器保护单元STM32微控制器概述2.1CM3微处理器核结构主要内容CM3微控制器结构CM3微处理器结构CM3微处理器核结构CM3微处理器特点2.1.1CM3内核微控制器结构CM3核调试模块外设存储器时钟和复位I/O内部总线CM3CPU2.1.2CM3微处理器结构CM3内核2.1.3CM3微处理器内核结构控制逻辑32位ALU乘法器除法器NVIC接口总线接口跟踪调试接口Thunb解码器Thunb-2解码器运算器2.1.4CM3微处理器的特点•功耗低•具有门数目少(价格低)•调试成本低(多种先进的调试手段)•中断延迟短•中断响应快速且支持多级中断嵌套•处理器采用先进的ARMv7-M架构•可裁剪的存储器保护单元(MPU)•ARMv7-M:Thumb-2ISA子集,包含所有基本的16位和32位Thumb-2指令。•只有SP是分组的,寄存器集比ARM7简单。•硬件除法指令,SDIV和UDIV(Thumb-2指令)•处理模式(handlermode)和线程模式(threadmode)•Thumb状态和调试状态•可中断-可继续的LDM/STM、PUSH/POP指令,实现低中断延迟。•中断时自动保存和恢复处理器状态•支持8位、16位和32位等非对齐访问。2.1.4CM3微处理器的特点---指令方面•外部中断可配置为1~240个•优先级位可配置为1~8位•中断优先级可动态地重新配置。•优先级分组,分为占先中断等级和非占先中断等级。•支持末尾连锁(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微处理器的特点---调试方面ARM7TDMICortex-M3架构ARMv4T(冯.若依曼)ARMv7-M(哈佛)ISA支持Thumb/ARMThumb/Thumb-2流水线3级3级+分支预测中断FIQ/IRQ240个物理中断中断延时24—42个时钟周期12个时钟(末尾连锁仅6个)休眠保护无内置存储器保护无8段存储器保护单元硬件除法无2—12个时钟周期运行速度0.95DMIPS/MHz1.25DMIPS/MHz功耗0.28mW/MHz0.19mW/MHz面积0.62mm2(仅内核)0.86mm2(内核+外设)2.1.4CM3微处理器的特点---与ARM7TDMI比较ARM7TDMI的苦恼执行效率高代码密度低ARM指令执行效率低代码密度高Thumb指令鱼与熊掌不可兼得两者之间的切换相当的麻烦2.2CM3的工作模式及状态访问级别:特权级和用户级出于安全考虑,防止意外、恶意访问破坏重要数据。工作模式:处理模式和线程模式分别用于处理异常和普通程序工作状态:Thumb状态和调试状态Thumb状态:16位和32位“半字对齐”的Thumb和Thumb-2指令的执行状态。调试状态:处理器停止并进行调试的状态。特权(级)访问和用户(级)访问处理模式线程模式特权访问用户访问始终特权访问特权执行可以访问所有资源。非特权对有些资源的访问受到限制或不允许访问。如部分指令(设置FAULTMASK和PRIMASK的CPS指令)。对系统控制空间(SCS)的大部分寄存器的访问。特权访问和用户访问(非特权访问)的区别FAULTMASKPRIMASKSCS……用户访问特权访问1.线程模式CM3处理器支持两种工作模式:线程模式和处理模式2.处理模式在复位时处理器进入线程模式异常返回时处理器进入线程模式在线程模式下,所有代码可由特权级和用户级访问出现异常时处理器进入处理模式在处理模式中,所有代码只能由特权级访问CM3操作模式的转换线程模式特权访问复位处理模式特权访问异常线程模式用户访问异常退出CONTROL[0]=1CONTROL[0]=0MSR指令置位CONTROL[0]2.4Cortex-M3的编程模式通过MSR指令修改CONTROL[1]进行堆栈切换线程模式主堆栈线程模式进程堆栈CONTROL[1]主堆栈进程堆栈10控制寄存器的第1位一般通过中断返回进行堆栈切换,MSR指令切换用的极少。三种执行模式的比较执行模式进入方式堆栈SP用途特权线程模式1.复位2.在特权处理模式下使用MSR指令清零CONTROL[0]使用SP_main:1.复位后默认2.在退出特权处理模式前,修改返回值EXC_RETURN[3:0]为0b10013.清零CONTROL[1]使用SP_process:1.在退出特权处理模式前,修改返回值EXC_RETURN[3:0]为0b11012.置位CONTROL[1]线程模式(特权或非特权)+SP_process多用于操作系统的任务状态。非特权线程模式在特权线程模式或特权处理模式下使用MSR指令置位CONTROL[0]特权处理模式出现异常只能使用SP_main特权处理模式+SP_main在前后台和操作系统中用于中断状态2.3CM3的寄存器通用寄存器(R0—R7、R8—R12)堆栈指针(R13)链接寄存器(R14)程序计数器(R15)程序状态寄存器(APSR、IPSR、EPSR)异常中断寄存器(PRIMASK、FAULTMASK、BASEPRI)控制寄存器(CONTROL)32位通用寄存器R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSRr0~r12,为13个通用寄存器低寄存器,r0-r7可以被指定通用寄存器的所有指令访问高寄存器,r8-r12可以被指定通用寄存器的所有32位指令访问,不能被16位指令访问。SP_processSP_main分组的堆栈指针(SP)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSRSP_mainSP_process处理模式线程模式可用MSP始终使用MSP也可用PSP进程堆栈指针主堆栈指针链接寄存器(LR)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSR链接寄存器(LR)在执行分支(branch)和链接(BL)指令或带有交换的分支和链接指令(BLX)时,LR用于保存PC的返回地址。主要用于保存子程序的返回地址。LR也用于异常返回。PC和XPSRR0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSR程序计数器(PC)程序计数器总是指向正在取指的指令。程序状态寄存器(XPSR)用于指示程序的运行状态。特殊用途程序状态寄存器寄存器名称功能编号APSR应用状态寄存器0IAPSRAPSR和IPSR的组合1EAPSRAPSR和EPSR的组合2XPSRAPSR、EPSR和IPSR的组合3IPSR中断状态寄存器5EPSR执行状态寄存器6IEPSRIPSR和EPSR的组合7MSP主堆栈指针8PSP进程堆栈指针9PRIMASK中断屏蔽寄存器16BASEPRI可屏蔽等于和低于某个优先级的中断17BASEPRI_MAXBASEPRI允许设置的最大值18FAULTMASK错误屏蔽寄存器19CONTROL控制寄存器20APSR的位分配负数或小于标志:1:结果为负数或小于0:结果为正数或大于零标志:1:结果为00:结果为非0溢出标志:1:溢出0:没有溢出进位/借位标志:1:进位或借位0:没有进位或借位饱和(stickysaturation)标志应用状态寄存器(APSR)3130292827260NZCVQ保留中断状态寄存器(IPSR)IPSR为当前激活(被响应)的异常的ISR编号。IPSR的位分配ISRNUMBER基础级别=0Reset=1NMI=2SVCall=11......31980保留中断号执行状态寄存器(EPSR)为什么需要执行状态寄存器EPSR?LDM、STM和If-then指令,为多周期指令,如果在执行以上多周期指令时发生异常,处理器会暂时停止以上指令的操作,进入异常,这时需要保护现场。LDM指令STEP1STEP2STEP3STEP4异常异常程序EPSR使用的是[26:24]和[15:10]位特殊功能寄存器中断屏蔽寄存器(PRIMASK)相当于中断总开关,为1,所有中断被屏蔽;为0,中断能正常响应。PRIMASK屏蔽所有中断响应中断10只有最低位有效中断屏蔽寄存器BASEPRI可屏蔽等于和低于某个优先级的中断。例如,把BASEPRI设置为0X40(即25),则2和2以上优先级的中断被屏蔽,只有0和1优先级的中断不被屏蔽。注:BASEPRI与优先级分组有关,stellaris系列处理器使用高3位来配置。BASEPRI2优先级0优先级1优先级2优先级3优先级4….中断被屏蔽中断可响应控制寄存器CONTROLCONTROL[1:0]由两个状态位组成:CONTROL[1]CONTROL[0]0主堆栈特权级1进程堆栈用户级2.4CM3的总线接口主要内容ARM的总线标准CM3的总线结构2.4.1ARM总线标准ARM微控制器使用的是AMBA总线体系结构AMBA(AdvancedMicrocontrollerBusArchitecture)是ARM公司公布的总线标准,先进的AMBA规范定义了三种总线:•AHB总线(AdvancedHigh-performanceBus):用于连接高性能系统模块。它支持突发数据传输(不间断的连续传输)方式及单个数据传输方式,所有时序参考同一个时钟沿。•ASB总线(AdvancedSystemBus):用于连接高性能系统模块,它支持突发数据传输模式。•APB总线(AdvancePeripheralBus):是一个简单接口支持低性能的外围接口。第二讲到此22.4.2CM3总线结构指令存储区总线(0x0—0x1fffffff,两条AHB)ICode:传送指令DCode:传送数据、调试数据系统总线(AHB)访问存储区、片上设备、片外设备访问区域:0x20000000—0xdfffffff,0xe0100000—0xffffffff内部专用外设总线(0xe0000000--0xe003ffff,AHB)访问CM3内部组件:NVIC、DWT、FPB、MPU外部专用外设总线(0xe0040000--0xe00fffff,APB)访问CM3外部组件:ETM、TPIU、ROM表Cortex-M3模块的内部方框图NVICCM3内核MPUFPBSW/JTAG-DPAHB-AP总线矩阵DWTAPBi/fITMTPIUROM表ETM中断睡眠调试指令数据跟踪端口串行线或多管脚专用外设总线(外部)I-code总线D-code总线系统总线触发专用外设总线(内部)Cor
本文标题:STM32讲义2..
链接地址:https://www.777doc.com/doc-1723201 .html