版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TEL:2、ARMCortex-M3体系结构第2章Cortex-M3体系结构2、ARMCortex-M3体系结构2.1.CM3微处理器核结构2.2处理器工作模式及状态2.3.寄存器2.4总线接口2.5存储器的组织与映射2.6.指令集2.7.流水线2.8.异常与中断2.9存储器保护单元MPU2.10STM32微控制器概述第2章Cortex-M3体系结构2.1CM3微处理器核结构集成了内核和高级系统外设的分级处理器Cortex-M3内核哈佛体系结构拥有分支预测功能的三级流水线
Thumb®-2指令集和传统的Thumb指令集带有硬件除法和单周期乘法的ALUCortex-M3处理器Cortex-M3内核可配置的中断控制器总线矩阵先进的调试组件可选择的MPU(存储器保护单元)&ETM(嵌入式跟踪宏单元)第2章Cortex-M3体系结构2、ARMCortex-M3体系结构2.1.CM3微处理器核结构2.2处理器工作模式及状态2.3.寄存器2.4总线接口2.5存储器的组织与映射2.6.指令集2.7.流水线2.8.异常与中断2.9存储器保护单元MPU2.10STM32微控制器概述第2章Cortex-M3体系结构工作模式和特权级别处理模式线程模式特权级用户级始终特权级2.2处理器工作模式及状态工作模式用于区别普通应用程序的代码和异常服务例程的代码(包括中断服务例程的代码)特权级别可以提供一种存储器访问的保护机制,使得普通的用户程序代码不能意外地,甚至是恶意地执行涉及到要害的操作。第2章Cortex-M3体系结构特权执行可以访问所有资源。非特权执行时对有些资源的访问受到限制或不允许访问。特权访问和用户访问(非特权访问)的区别FAULTMASKPRIMASKSCS……用户访问特权访问第2章Cortex-M3体系结构2.2处理器工作模式及状态线程模式Cortex-M3处理器支持两种工作模式:线程模式和处理模式处理模式在复位时处理器进入线程模式异常返回时处理器进入线程模式特权和用户(非特权)代码能够在线程模式下运行出现异常时处理器进入处理模式在处理模式中,所有代码都是特权访问的第2章Cortex-M3体系结构2.2处理器工作模式及状态线程模式特权访问复位处理模式特权访问异常线程模式用户访问异常异常退出CONTROL[0]=1CONTROL[0]=0MSR指令置位CONTROL[0]第2章Cortex-M3体系结构CONTROL[0]特权访问用户访问10特权访问和用户访问的切换控制寄存器的第0位在处理模式下,通过MSR指令清零CONTROL[0],退出处理模式进入线程模式时切换到特权访问。
MOVR0#0X00MSRCONTROLR0在处理模式下,通过MSR指令置位CONTROL[0],退出处理模式进入线程模式时切换到用户访问。在线程模式特权访问下,通过MSR指令置位CONTROL[0],即可由特权访问进入用户访问。
MRSR0CONTROLORRR0,R0,#0x01MSRCONTROLR0
第2章Cortex-M3体系结构2、ARMCortex-M3体系结构2.1.CM3微处理器核结构2.2处理器工作模式及状态2.3.寄存器2.4总线接口2.5存储器的组织与映射2.6.指令集2.7.流水线2.8.异常与中断2.9存储器保护单元MPU2.10STM32微控制器概述第2章Cortex-M3体系结构32位CM3寄存器R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)r0~r12,为13个通用目的寄存器低组寄存器,r0-r7可以被指定通用寄存器的所有指令访问高组寄存器,r8-r12可以被指定通用寄存器的所有32位指令访问,16位Thumb指令不能访问它们,32位的Thumb-2指令则不受限制。SP_processSP_main第2章Cortex-M3体系结构分组的堆栈指针(SP)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSRSP_mainSP_process处理模式线程模式可用MSP始终使用主堆栈指针(MSP)也可用进程堆栈指针(PSP)特权级使用用户级使用第2章Cortex-M3体系结构主堆栈和进程堆栈Cortex-M3内核有两个堆栈指针:MSP和PSP结束复位后,所有代码都使用主堆栈所有异常都使用主堆栈异常处理程序(例如SVC)可以通过改变其在退出时使用的EXC_RETURN值来改变线程模式使用的堆栈。在线程模式中,使用MSR指令对CONTROL[1]执行写操作也可以从主堆栈切换到进程堆栈。堆栈指针r13是分组寄存器,在SP_main和SP_process之间切换。在任何时候,进程堆栈和主堆栈中只有一个是可见的,由r13指示。第2章Cortex-M3体系结构堆栈与微处理器模式的对应关系通过异常进行堆栈切换线程模式主堆栈复位处理模式主堆栈产生异常线程模式进程堆栈产生异常异常退出EXC_RETURN[3:0]=0b1101EXC_RETURN[3:0]=0b1001第2章Cortex-M3体系结构堆栈与微处理器模式的对应关系通过MSR指令修改CONTROL[1]进行堆栈切换线程模式主堆栈线程模式进程堆栈CONTROL[1]主堆栈进程堆栈10控制寄存器的第1位一般通过中断返回进行堆栈切换,MSR指令切换用的极少。第2章Cortex-M3体系结构链接寄存器(LR)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)链接寄存器(LR)在执行分支(branch)和链接(BL)指令或带有交换的分支和链接指令(BLX)时,LR用于保存PC的返回地址。
主要用于保存子程序的返回地址。
LR也用于异常返回。第2章Cortex-M3体系结构链接寄存器(LR)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)intmain(){......delay();SetLED1();}voiddelay(){......}BLdelay……delay:......BXLR
….0X20F00X20F4地址R14(LR)0X20F40X10F40X10F4执行BL指令,LR的值同时更新第2章Cortex-M3体系结构寄存器(PC)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSR程序计数器(PC)程序计数器总是指向正在取指的指令。该寄存器的位0始终为0,因此,指令始终与字或半字边界对齐。程序状态寄存器(XPSR)用于指示程序的运行状态。第2章Cortex-M3体系结构CM3的状态寄存器
应用程序PSR(APSR)
中断号PSR(IPSR)
执行PSR(EPSR)第2章Cortex-M3体系结构异常中断寄存器名字
功能描述PRIMASK这是个只有1个位的寄存器。当它置1时,就关掉所有可屏蔽的异常,只剩下NMI和硬fault可以响应。它的缺省值是0,表示没有关中断。FAULTMASK这是个只有1个位的寄存器。当它置1时,只有NMI才能响应,所有其它的异常,包括中断和fault,通通闭嘴。它的缺省值也是0,表示没有关异常。BASEPRI这个寄存器最多有9位(由表达优先级的位数决定)。它定义了被屏蔽优先级的阈值。当它被设成某个值后,所有优先级号大于等于此值的中断都被关(优先级号越大,优先级越低)。但若被设成0,则不关闭任何中断,0也是缺省值。第2章Cortex-M3体系结构控制寄存器(CONTROL)位功能CONTROL[1]堆栈指针选择0=选择主堆栈指针MSP(复位后缺省值)1=选择进程堆栈指针PSP在线程或基础级(没有在响应异常),可以使用PSP。在handler模式下,只允许使用MSP,所以此时不得往该位写1。CONTROL[0]0=特权级的线程模式1=用户级的线程模式Handler模式永远都是特权级的第2章Cortex-M3体系结构2、ARMCortex-M3体系结构2.1.CM3微处理器核结构2.2处理器工作模式及状态2.3.寄存器2.4总线接口2.5存储器的组织与映射2.6.指令集2.7.流水线2.8.异常与中断2.9存储器保护单元MPU2.10STM32微控制器概述第2章Cortex-M3体系结构2.4总线接口总线定义总线是CPU与存储器和设备通信的机制,是计算机各部件之间传送数据、地址和控制信息的公共通道。片内总线或内部总线:连接CPU内部各主要功能部件片外总线:CPU与存储器(RAM和ROM)和I/O接口之间进行信息交换的通道数据总线Dbus地址总线Abus控制总线Cbus按相对于CPU位置划分按功能和信号类型总线分类第2章Cortex-M3体系结构原因:数据宽度:高速总线通常提供较宽的数据连接。成本:高速总线通常采用更昂贵的电路和连接器。桥允许总线独立操作,这样在I/O操作中可提供某些并行性。一个微处理器系统可能含有多条总线高速总线低速总线高速设备低速设备桥总线互联的电路2.4总线接口总线定义总线是CPU与存储器和设备通信的机制,是计算机各部件之间传送数据、地址和控制信息的公共通道。第2章Cortex-M3体系结构AMBA总线片上总线标准种类繁多,而由ARM公司推出的AMBA(AdvancedMicrocontrollerBusArchitecture)片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规范主要包括了AHB(AdvancedHighperformanceBus)系统总线和APB(AdvancedPeripheralBus)外设总线。二者分别适用于高速与相对低速设备的连接。
第2章Cortex-M3体系结构Cortex-M3模块的内部方框图I-Code总线负责在0x0000_0000–0x1FFF_FFFF之间的取指操作D-Code总线负责在0x0000_0000–0x1FFF_FFFF之间的数据访问操作系统总线负责在0x2000_0000–0xDFFF_FFFF和0xE010_0000–0xFFFF_FFFF之间的所有数据传送(取指和数据)外部专用外设总线负责0xE004_0000–0xE00F_FFFF之间的私有外设访问内部专用外设总线负责0xE000_0000–0xE003_FFFF之间的私有外设访问第2章Cortex-M3体系结构2、ARMCortex-M3体系结构2.1.CM3微处理器核结构2.2处理器工作模式及状态2.3.寄存器2.4总线接口2.5存储器的组织与映射2.6.指令集2.7.流水线2.8.异常与中断2.9存储器保护单元MPU2.10STM32微控制器概述第2章Cortex-M3体系结构存储器格式……字节字节字节字节……A+3A+2A+1A存储器半字半字字存储器层次结构RAM静态RAM和动态RAMROMPROM、EPORM、EEPROMFLASHNORFLASH、NANDFLASH第2章Cortex-M3体系结构存储器格式小端存储器系统:在小端格式中,数据的高字节存放在高地址中。大端存储器系统:在大端格式中,数据的高字节存放在低地址中。…………A+3A+2A+1A存储器
小端存储模式下,0x12345678在A地址开始的一个字空间的存储;
1
大端存储模式下,0x12345678在A地址开始的一个字空间的存储;
20x120x340x560x78…………A+3A+2A+1A存储器0x780x560x340x12第2章Cortex-M3体系结构CM3存储器映射第2章Cortex-M3体系结构主系统由以下部分构成:四个驱动单元:─Cortex-M3内核ICode总线(I-bus),DCode总线(D-bus),和系统总线(S-bus)─GP-DMA(通用DMA)四个被动单元─内部SRAM─内部闪存存储器─FSMC─AHB到APB的桥(AHB2APBx),它连接所有的APB设备1.STM32总线结构2.5.4STM32存储器映射第2章Cortex-M3体系结构可访问的存储器空间被分成8
个主要块,每个块为512MB。其他所有没有分配给片上存储器和外设的存储器空间都是保留的地址空间(右图中的阴影部分)片外Flash的起始地址:0x08000000;片内SRAM的起始地址:0x20000000.2STM32存储器映射第2章Cortex-M3体系结构KEIL-MDK中的配置512K128K按芯片实际容量填写,通常MDK会自动配置完成第2章Cortex-M3体系结构2.5.5位绑定操作Cortex-M3存储器空间中包括两个位段区:SRAM区的最低1MB空间和外设存储区的最低1MB空间。这两个位段区分别与两个32M的位段别名区对应,位段区中的每一位映射到位段别名区中的一个字。通过对别名区中某个字的读写操作可以实现对位段区中某一位的读写操作。第2章Cortex-M3体系结构第2章Cortex-M3体系结构位段别名区中的字与位段区的位映射公式bit_word_addr=bit_band_base+(byte_offsetx32)+bit_number×4例如:SRAM位段区中地址为0x20000300的字节中的位2被映射到别名区中的地址为:0x22006008(=0x22000000+(0x300*32)+(2*4))的字。第2章Cortex-M3体系结构对别名区中某个字进行写操作,该字的第0位将影响位段区中对应的位。对别名区中某个字进行读操作,若位段区中对应的位为0则读的结果为0x00,若位段区中对应的位为1则读的结果为0x01。对别名区的读写可以实现对位段区中每一位的原子操作,而且仅只需要一条指令即可实现。第2章Cortex-M3体系结构2、ARMCortex-M3体系结构2.1.CM3微处理器核结构2.2处理器工作模式及状态2.3.寄存器2.4总线接口2.5存储器的组织与映射2.6.指令集2.7.流水线2.8.异常与中断2.9存储器保护单元MPU2.10STM32微控制器概述第2章Cortex-M3体系结构2.6指令集第2章Cortex-M3体系结构2.6.1指令集在过去,做ARM开发必须处理好两个状态。这两个状态是井水不犯河水的,它们是:32位的ARM状态和16位的Thumb状态。当处理器在ARM状态下时,所有的指令均是32位的(哪怕只是个”NOP”指令),此时性能相当高。而在Thumb状态下,所有的指令均是16位的,代码密度提高了一倍。不过,thumb状态下的指令功能只是ARM下的一个子集,结果可能需要更多条的指令去完成相同的工作,导致处理性能下降。伴随着Thumb-2指令集的横空出世,终于可以在单一的操作模式下搞定所有处理了,再也没有来回切换的事来烦你了。事实上,Cortex-M3内核干脆都不支持ARM指令,中断也在Thumb态下处理(以前的ARM总是在ARM状态下处理所有的中断和异常)。这可不是小便宜,它使CM3在好几个方面都比传统的ARM处理器更先进:消灭了状态切换的额外开销,节省了
执行时间和指令空间。不再需要把源代码文件分成按ARM编译的和Thumb编译的,软件开发管理大大减负。无需再反复地求证和测试:究竟该在何时何地切换到何种状态下,我的程序才最有效率。开发软件容易多了。40第2章Cortex-M3体系结构2、ARMCortex-M3体系结构2.1.CM3微处理器核结构2.2处理器工作模式及状态2.3.寄存器2.4总线接口2.5存储器的组织与映射2.6.指令集2.7.流水线2.8.异常与中断2.9存储器保护单元MPU2.10STM32微控制器概述第2章Cortex-M3体系结构带分支预测的3级流水线Cortex-M3的流水线分为3级,分别为:取指译码执行取指译码执行从存储器装载一条指令识别将要被执行的指令处理指令并将结果写回寄存器在译码时进行分支预测,遇跳转指令也不会打断流水线PC值总是指向正在取指的指令第2章Cortex-M3体系结构三级流水线结构的指令执行顺序指令1指令2指令3指令4…………程序存储器周期1周期2周期3周期4周期5周期6取指译码执行取指译码执行取指译码执行取指译码执行周期2周期1周期3周期4处理器执行一条指令的三个阶段
在第1个周期,PC指向指令1,此时指令1进入三级流水线的取指阶段。1第2章Cortex-M3体系结构三级流水线结构的指令执行顺序指令1指令2指令3指令4…………程序存储器周期1周期2周期3周期4周期5周期6取指译码执行取指译码执行取指译码执行取指译码执行周期2周期1周期3周期4处理器执行一条指令的三个阶段
在第2个周期,PC指向指令2,此时指令1进入三级流水线的译码阶段,同时取出指令2。2第2章Cortex-M3体系结构三级流水线结构的指令执行顺序指令1指令2指令3指令4…………程序存储器周期1周期2周期3周期4周期5周期6取指译码执行取指译码执行取指译码执行取指译码执行周期2周期1周期3周期4处理器执行一条指令的三个阶段
在第3个周期,PC指向指令3,此时指令1进入三级流水线的执行阶段,指令2进入译码阶段,取出指令3。3第2章Cortex-M3体系结构三级流水线结构的指令执行顺序指令1指令2指令3指令4…………程序存储器周期1周期2周期3周期4周期5周期6取指译码执行取指译码执行取指译码执行取指译码执行周期2周期1周期3周期4处理器执行一条指令的三个阶段
在第4个周期,指令1执行完成,指令2和指令3流水线推进一级,同时开始指令4的取指处理。4第2章Cortex-M3体系结构2、ARMCortex-M3体系结构2.1.CM3微处理器核结构2.2处理器工作模式及状态2.3.寄存器2.4总线接口2.5存储器的组织与映射2.6.指令集2.7.流水线2.8.异常与中断2.9存储器保护单元MPU2.10STM32微控制器概述第2章Cortex-M3体系结构2.8异常与中断中断:请求信号来自于CM3内核外面,来自片上外设或外扩的外设;异常:是由于CM3内核的活动而产生的
(P52)只要正常的程序被暂时中止,处理器就进入异常模式。异常包括复位、系统故障、外设中断等事件。Cortex-M3处理器中存在多种异常类型,系统复位、NMI(不可屏蔽中断)、硬件故障、存储器管理、总线故障、使用故障、SVCall(软件中断)、调试监控和IRQ中断等。IRQ中断也分为CortexM3内自带的PendSV(系统服务请求)、SysTick(系统节拍定时器),和与芯片外设相关的外部中断。1异常与中断概念第2章Cortex-M3体系结构异常类型表异常类型位置优先级[1]描述-0-复位时载入向量表的第一项作为栈顶地址。复位1-3(最高)在上电和热复位时调用。在执行第一条指令时,优先级将降为最低(也就是所谓的激活(中断)的基础级别)。这是异步的。不可屏蔽中断(NMI)2-2不可停止,也不会被复位之外的任何异常抢占。这是异步的。NMI仅可由软件通过NVIC中断控制状态寄存器来产生。硬故障3-1当故障由于优先级或者是可配置的故障处理程序被禁能的原因而无法激活时,所有类型的故障都会以硬故障的方式激活。这是同步的。存储器管理4可调整MPU不匹配,包括访问冲突(accessviolation)和不匹配。这是同步的。这种异常的优先级可被改变。总线故障5可调整预取指故障、存储器访问故障和其它地址/存储器相关的故障。当为精确的总线故障时是同步的,为不精确的总线故障时是异步的。你可以使能或禁能这种故障。第2章Cortex-M3体系结构异常类型表异常类型位置优先级[1]描述使用故障6可调整使用故障,例如执行未定义的指令或试图进行非法的状态转变。这是同步的。-7-10-保留。SVCall11可调整使用SVC指令的系统服务调用。这是同步的。调试监控器12可调整调试监控器(当没有暂停(Halt)时)。这是同步的,但仅在使能时有效。如果它的优先级比当前激活的处理程序的优先级更低,那么调试监控器不能激活。-13-保留。PendSV14可调整系统服务的可挂起(pendable)请求。这是异步的且仅通过软件挂起。SysTick15可调整系统节拍定时器已启动(fired)。这是异步的。外部中断≥16可调整中断在ARMCortex-M3内核之外发出且通过NVIC返回(区分优先级)。这些都是异步的。
上表其实也是一张完整向量表。当异常产生后,处理器根据中断号从在向量表中取出异常处理函数入口(函数指针)。
第2章Cortex-M3体系结构3中断、异常过程从向量表中读SP更新PC加载流水线更新LR读向量表硬件压栈从向量表中读SP更新PC加载流水线更新LR读向量表硬件压栈利用向量表读出的位置更新PC。直到第一条指令开始执行时,才能处理迟来异常。从向量表指向的位置加载指令。它与寄存器压栈操作同时执行。LR设置为EXC_RETURN,以便从异常中退出。在复位时,将SP更新为向量表中第1个字的值。读存储器中的向量表,地址为向量表基址+(异常号*4)。中断函数入口。在所选的堆栈上将xPSR、PC、LR、R12、R3、R2、R1、R0压栈注意:LR的值并非进入异常程序的地址注:以上步骤由硬件自动完成,仅需12个时钟周期第2章Cortex-M3体系结构4占先用户程序中断1中断2优先级3
优先级2
中断1中断2压栈压栈出栈出栈在异常处理程序中,一个新的异常比当前的异常优先级更高,处理器打断当前的流程,响应优先级更高的异常,此时产生中断嵌套。第2章Cortex-M3体系结构5末尾连锁用户程序中断1中断2优先级3
优先级2
中断1中断2如果此时中断1已经完成,不出栈也不压栈,直接跳至中断2程序压栈出栈中断1结束末尾连锁是处理器用来加速中断响应的一种机制。在结束ISR时,如果存在一个挂起中断,其优先级高于正在返回的ISR或线程,那么就会跳过出栈操作,转而将控制权让给新的ISR。第2章Cortex-M3体系结构不用未尾连锁的情况用户程序中断1中断2优先级3
优先级2
中断1压栈1出栈1压栈2出栈2中断2此时压栈2与出栈1的内容完全相同,所以末尾连锁时可省去。在中断1完成后,紧跟着发生中断2第2章Cortex-M3体系结构
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现代职场礼仪与商务交际指南
- 催办售后服务进度事宜函7篇
- 交通影响评价专业培训考核大纲
- 2025年广东省普宁市勤建学校中考二模语文试题(含答案)
- 互联网平台用户个人信息转移权的实现障碍研究报告
- 商务谈判专家谈判技巧进阶指导书
- 通讯及信息传递标准流程与规范
- 团队项目执行效果评价报告模板
- 班级荣誉墙:展示我们的成长与进步小学主题班会课件
- 资产质量透明化管理承诺书8篇
- 注册安全工程师初级考试题库及答案
- 安宁疗护服务创新创业项目商业计划书
- 2025年湖南省初中学业水平考试中考(会考)地理试卷(真题+答案)
- 中国舞系列课件大全
- 适合小学生讲的党史课件
- 高中政治七本教材核心知识点-2025届高考政治三轮冲刺统编版
- 水利工程建设资金管理办法
- 职业性肌肉骨骼疾患课件
- DB3301∕T 0423-2023 公共服务领域外文译写规范
- cnc刀具库管理制度
- 循环水控制管理制度
评论
0/150
提交评论