




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、主讲:曹珍贯主讲:曹珍贯TELTEL :13855476051138554760512、ARM Cortex-M3 体系结构体系结构安徽理工大学电气与信息工程学院安徽理工大学电气与信息工程学院2、ARM Cortex-M3 体系结构体系结构2.1. CM3微处理器核结构2.2 处理器工作模式及状态2.3. 寄存器2.4 总线接口2.5 存储器的组织与映射2.6. 指令集2.7. 流水线2.8. 异常与中断2.9 存储器保护单元MPU2.10 STM32微控制器概述2.1 CM3微处理器核结构微处理器核结构t集成了内核和高级系统外设的分级处理器集成了内核和高级系统外设的分级处理器 Cortex-
2、M3 内核内核哈佛体系结构哈佛体系结构拥有分支预测功能的三级流水线拥有分支预测功能的三级流水线 Thumb-2 指令集和传统的指令集和传统的 Thumb指指令集令集带有带有 硬件除法和硬件除法和 单周期乘法的单周期乘法的ALUCortex-M3 处理器处理器Cortex-M3 内核内核可配置的中断控制器可配置的中断控制器 总线矩阵总线矩阵先进的调试组件先进的调试组件 可选择的可选择的 MPU(存储器保护单元)(存储器保护单元) & ETM(嵌入式跟踪宏单元)(嵌入式跟踪宏单元)2、ARM Cortex-M3 体系结构体系结构2.1. CM3微处理器核结构2.2 处理器工作模式及状态2.
3、3. 寄存器2.4 总线接口2.5 存储器的组织与映射2.6. 指令集2.7. 流水线2.8. 异常与中断2.9 存储器保护单元MPU2.10 STM32微控制器概述工作模式和特权级别处理模式线程模式特权级用户级始终特权级2.2 2.2 处理器工作模式及状态处理器工作模式及状态工作模式用于区别普通应用程序的代码和异常服务例程的代码(包括中断服务例程的代码)特权级别可以提供一种存储器访问的保护机制,使得普通的用户程序代码不能意外地,甚至是恶意地执行涉及到要害的操作。特权执行可以访问所有资源。 非特权执行时对有些资源的访问受到限制或不允许访问。特权访问和用户访问(非特权访问)的区别FAULTMAS
4、KPRIMASKSCS用户访问特权访问特权访问2.2 处理器工作模式及状态处理器工作模式及状态 线程模式线程模式Cortex-M3处理器支持两种工作模式:处理器支持两种工作模式:线程模式和处理模式线程模式和处理模式 处理模式处理模式u在复位时处理器进入线程模式在复位时处理器进入线程模式u异常返回时处理器进入线程模式异常返回时处理器进入线程模式u特权和用户(非特权)代码能够在线程模式下运行特权和用户(非特权)代码能够在线程模式下运行u出现异常时处理器进入处理模式出现异常时处理器进入处理模式u在处理模式中,所有代码都是特权访问的在处理模式中,所有代码都是特权访问的2.2 处理器工作模式及状态处理器
5、工作模式及状态线程模式特权访问复位处理模式特权访问异常线程模式用户访问异常异常退出CONTROL0 = 1CONTROL0 = 0MSR指令置位CONTROL0 CONTROL0特权访问用户访问10特权访问和用户访问的切换控制寄存器的第控制寄存器的第0位位在在处理模式处理模式下,通过下,通过MSR指令指令清零清零CONTROL0,退出退出处理模处理模式进入线程模式时切换到式进入线程模式时切换到特权访问特权访问 。 MOV R0 #0X00 MSR CONTROL R0在在处理模式处理模式下,通过下,通过MSR指令指令置位置位CONTROL0,退出退出处理模式进入线程模处理模式进入线程模式时切换
6、到用户访问式时切换到用户访问 。在在线程模式特权访问线程模式特权访问下,通过下,通过MSR指令指令置位置位CONTROL0,即可由特权访问进入用户即可由特权访问进入用户访问访问 。 MRS R0 CONTROL ORR R0, R0, #0 x01 MSR CONTROL R0 2、ARM Cortex-M3 体系结构体系结构2.1. CM3微处理器核结构2.2 处理器工作模式及状态2.3. 寄存器2.4 总线接口2.5 存储器的组织与映射2.6. 指令集2.7. 流水线2.8. 异常与中断2.9 存储器保护单元MPU2.10 STM32微控制器概述32位位 CM3寄存器寄存器R0R1R2R3
7、R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)r0r12 ,为为13个通用目的寄存器个通用目的寄存器 低组寄存器低组寄存器 , r0-r7可以被指可以被指定通用寄存器的所有指令访问定通用寄存器的所有指令访问 高组寄存器高组寄存器 , r8-r12可以被指可以被指定通用寄存器的所有定通用寄存器的所有32位指令访位指令访问问 ,16位位Thumb指令不能访问它指令不能访问它们,们,32位的位的Thumb2指令则不受指令则不受限制。限制。 SP_processSP_main分组的堆栈指针(分组的堆栈指针(SP)R0R1R2R3R4R5R6R7R8R9R10R11
8、R12R13(SP)R14(LR)R15(PC)XPSRSP_mainSP_process处理模式线程模式可用 MSP始终使用主堆栈指针(MSP)也可用进程堆栈指针(PSP)特权级使用用户级使用主堆栈和进程堆栈主堆栈和进程堆栈 Cortex-M3内核有两个堆栈指针:内核有两个堆栈指针:MSP和和PSP 结束复位后,所有代码都使用主堆栈结束复位后,所有代码都使用主堆栈 所有异常都使用主堆栈所有异常都使用主堆栈 异常处理程序(例如异常处理程序(例如SVC)可以通过改变其在退出时)可以通过改变其在退出时使用的使用的EXC_RETURN值来改变线程模式使用的堆栈。值来改变线程模式使用的堆栈。 在线程模
9、式中,使用在线程模式中,使用MSR指令对指令对CONTROL1执行写执行写操作也可以从主堆栈切换到进程堆栈。操作也可以从主堆栈切换到进程堆栈。 堆栈指针堆栈指针r13是分组寄存器,在是分组寄存器,在SP_main和和SP_process之间切换。在任何时候,进程堆栈和主之间切换。在任何时候,进程堆栈和主堆栈中只有一个是可见的,由堆栈中只有一个是可见的,由r13指示。指示。 堆栈与微处理器模式的对应关系通过异常进行堆栈切换线程模式主堆栈复位处理模式主堆栈产生异常线程模式进程堆栈产生异常异常退出EXC_RETURN3:0 = 0b1101EXC_RETURN3:0 = 0b1001堆栈与微处理器模
10、式的对应关系通过MSR指令修改CONTROL1进行堆栈切换线程模式主堆栈线程模式进程堆栈CONTROL1主堆栈进程堆栈10控制寄存器的第1位一般通过中断返回进行堆栈切换,MSR指令切换用的极少。链接寄存器(LR)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)链接寄存器链接寄存器 (LR) 在执行分支(branch)和链接(BL)指令或带有交换的分支和链接指令(BLX)时,LR用于保存PC的返回地址。 主要用于保存子程序的 返回地址。 LR也用于异常返回。 链接寄存器(LR)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(S
11、P)R14(LR)R15(PC)int main ( ) . delay( ); SetLED1( );void delay( ) .BL delaydelay: . BX LR .0X20F00X20F4地址R14(LR)0X20F40X10F40X10F4执行BL指令,LR的值同时更新寄存器(PC)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSR程序计数器程序计数器 (PC)程序计数器 总是指向正在取指的指令。该寄存器的位0始终为0,因此,指令始终与字或半字边界对齐。 程序状态寄存器程序状态寄存器 (XPSR)用于指示程序的运行状
12、态。CM3的状态寄存器的状态寄存器 应用程序 PSR(APSR) 中断号 PSR(IPSR) 执行 PSR(EPSR)异常中断寄存器名字名字 功能描述功能描述PRIMASK PRIMASK 这是个只有这是个只有1 1 个位的寄存器。当它置个位的寄存器。当它置1 1 时,就关掉所有可屏蔽时,就关掉所有可屏蔽的异常,只剩下的异常,只剩下NMINMI和硬和硬fault fault 可以响应。它的缺省值是可以响应。它的缺省值是0 0,表,表示没有关中断。示没有关中断。FAULTMASK FAULTMASK 这是个只有这是个只有1 1 个位的寄存器。当它置个位的寄存器。当它置1 1 时,只有时,只有NM
13、I NMI 才能响应,才能响应,所有其它的异常,包括中断和所有其它的异常,包括中断和faultfault,通通闭嘴。它的缺省值,通通闭嘴。它的缺省值也是也是0 0,表示没有关异常。,表示没有关异常。BASEPRI BASEPRI 这个寄存器最多有这个寄存器最多有9 9 位(由表达优先级的位数决定)。它定义位(由表达优先级的位数决定)。它定义了被屏蔽优先级的阈值。当它被设成某个值后,所有优先级号了被屏蔽优先级的阈值。当它被设成某个值后,所有优先级号大于等于此值的中断都被关(优先级号越大,优先级越低)。大于等于此值的中断都被关(优先级号越大,优先级越低)。但若被设成但若被设成0 0,则不关闭任何中
14、断,则不关闭任何中断,0 0 也是缺省值。也是缺省值。控制寄存器(控制寄存器(CONTROL)位位功能功能CONTROL1 堆栈指针选择堆栈指针选择0=选择主堆栈指针选择主堆栈指针MSP(复位后缺省值)(复位后缺省值)1=选择进程堆栈指针选择进程堆栈指针PSP在线程或基础级(没有在响应异常),可以在线程或基础级(没有在响应异常),可以使用使用PSP。在。在handler 模式下,只允许使用模式下,只允许使用MSP,所以此时不得往该位写,所以此时不得往该位写1。CONTROL0 0=特权级的线程模式特权级的线程模式1=用户级的线程模式用户级的线程模式Handler 模式永远都是特权级的模式永远都
15、是特权级的2、ARM Cortex-M3 体系结构体系结构2.1. CM3微处理器核结构2.2 处理器工作模式及状态2.3. 寄存器2.4 总线接口2.5 存储器的组织与映射2.6. 指令集2.7. 流水线2.8. 异常与中断2.9 存储器保护单元MPU2.10 STM32微控制器概述2.4总线接口总线定义总线定义总线是总线是CPUCPU与与存储器存储器和和设备设备通信的机制,是计算机各部通信的机制,是计算机各部件之间传送数据、地址和控制信息的件之间传送数据、地址和控制信息的公共通道公共通道。片内总线或内部总线:连接片内总线或内部总线:连接CPUCPU内部各主要功能部件内部各主要功能部件片外总
16、线:片外总线:CPUCPU与存储器与存储器(RAMRAM和和ROMROM)和)和I/OI/O接口之接口之间进行信息交换的通道间进行信息交换的通道数据总线数据总线DbusDbus地址总线地址总线AbusAbus控制总线控制总线CbusCbus总总线线分分类类原因:l数据宽度:高速总线通常提供较宽的数据连接。数据宽度:高速总线通常提供较宽的数据连接。l成本:高速总线通常采用更昂贵的电路和连接器。成本:高速总线通常采用更昂贵的电路和连接器。l桥允许总线独立操作,这样在桥允许总线独立操作,这样在I/OI/O操作中可提供某些并操作中可提供某些并行性。行性。一个微处理器系统可能含有多条总线一个微处理器系统
17、可能含有多条总线高速总线高速总线低速总线低速总线高速设备高速设备低速设备低速设备桥桥总线互联的电路总线互联的电路2.42.4总线接口总线接口总线定义总线定义总线是总线是CPUCPU与与存储器存储器和和设备设备通信的机制,是计算机各部件通信的机制,是计算机各部件之间传送数据、地址和控制信息的之间传送数据、地址和控制信息的公共通道公共通道。AMBA总线总线片上总线标准种类繁多,而由片上总线标准种类繁多,而由ARM公司推出公司推出的的AMBA(Advanced Microcontroller Bus Architecture )片上总线受到了广大)片上总线受到了广大IP开发商和开发商和SoC系统集成
18、者的青睐,已成为一种流行的工业系统集成者的青睐,已成为一种流行的工业标准片上结构。标准片上结构。AMBA规范主要包括了规范主要包括了AHB(Advanced High performance Bus)系统总线系统总线和和APB(Advanced Peripheral Bus)外设总线。二外设总线。二者分别适用于高速与相对低速设备的连接。者分别适用于高速与相对低速设备的连接。 Cortex-M3模块的内部方框图模块的内部方框图I-CodeI-Code总线负责在总线负责在0 x0000_0000 0 x0000_0000 0 x1FFF_FFFF0 x1FFF_FFFF之间的取指操作之间的取指操作
19、D-CodeD-Code总线负责在总线负责在0 x0000_0000 0 x0000_0000 0 x1FFF_FFFF0 x1FFF_FFFF之间的数据访问操作之间的数据访问操作系统总线负责在系统总线负责在0 x2000_0000 0 x2000_0000 0 xDFFF_FFFF 0 xDFFF_FFFF和和0 xE010_0000 0 xE010_0000 0 xFFFF_FFFF 0 xFFFF_FFFF之间的所之间的所有数据传送(取指和数据)有数据传送(取指和数据)外部专用外设总线外部专用外设总线负负责责0 xE004_0000 0 xE004_0000 0 xE00F_FFFF0
20、xE00F_FFFF之间的私有外设访问之间的私有外设访问内部专用外设总线内部专用外设总线负负责责0 xE000 xE000 0_0000 _0000 0 xE000 xE003 3_FFFF_FFFF之间的私有外设访问之间的私有外设访问2、ARM Cortex-M3 体系结构体系结构2.1. CM3微处理器核结构2.2 处理器工作模式及状态2.3. 寄存器2.4 总线接口2.5 存储器的组织与映射2.6. 指令集2.7. 流水线2.8. 异常与中断2.9 存储器保护单元MPU2.10 STM32微控制器概述存储器格式字节字节字节字节A+3A+2A+1A存储器半字半字字存储器层次结构RAM静态R
21、AM和动态RAMROMPROM、EPORM、EEPROMFLASHNOR FLASH、NAND FLASH存储器格式小端存储器系统: 在小端格式中,数据的高字节存放在高地址中。大端存储器系统: 在大端格式中,数据的高字节存放在低地址中。A+3A+2A+1A存储器 小端存储模式下,0 x12345678在A地址开始的一个字空间的存储; 1 大端存储模式下,0 x12345678在A地址开始的一个字空间的存储; 20 x120 x340 x560 x78A+3A+2A+1A存储器0 x780 x560 x340 x12CM3存储器映射主系统由以下部分构成:主系统由以下部分构成:四个驱动单元:四个驱
22、动单元: Cortex-M3内核内核ICode总线总线(I-bus),DCode总线总线(D-bus),和系统总线,和系统总线(S-bus) GP-DMA(通用通用DMA)四个被动单元四个被动单元 内部内部SRAM 内部闪存存储器内部闪存存储器 FSMC AHB到到APB的桥的桥(AHB2APBx),它连接所有的,它连接所有的APB设备设备1. STM32 总线结构2.5.4 STM32存储器映射存储器映射可访问的存储器空间可访问的存储器空间被分成被分成 8 8 个主要块,每个个主要块,每个块为块为512 512 MBMB。其他所有没。其他所有没有分配给片上存储器和外有分配给片上存储器和外设的
23、存储器空间都是保留设的存储器空间都是保留的地址空间的地址空间( (右图中的阴右图中的阴影部分影部分) )片外片外FlashFlash的起始地址:的起始地址:0 x0800 00000 x0800 0000;片内片内SRAMSRAM的起始地址:的起始地址:0 x2000 00000 x2000 0000. .2 STM32存储器映射存储器映射KEIL-MDK中的配置512K128K按芯片实际容量填写按芯片实际容量填写,通常通常MDK会自动配置完成会自动配置完成2.5.5 位绑定操作Cortex-M3 存储器空间中包括两个位段区:SRAM 区的最低 1MB空间和外设存储区的最低 1MB 空间。这两
24、个位段区分别与两个 32M 的位段别名区对应,位段区中的每一位映射到位段别名区中的一个字。通过对别名区中某个字的读写操作可以实现对位段区中某一位的读写操作。位段别名区中的字与位段区的位映射公式bit_word_addr = bit_band_base + (byte_offset x 32) + bit_number 4例如:SRAM 位段区中地址为 0 x20000300 的字节中的位 2 被映射到别名区中的地址为:0 x22006008(= 0 x22000000 + (0 x300*32) + (2*4))的字。对别名区中某个字进行写操作,该字的第 0位将影响位段区中对应的位。对别名区中
25、某个字进行读操作,若位段区中对应的位为 0 则读的结果为 0 x00,若位段区中对应的位为 1 则读的结果为0 x01。对别名区的读写可以实现对位段区中每一位的原子操作,而且仅只需要一条指令即可实现。2、ARM Cortex-M3 体系结构体系结构2.1. CM3微处理器核结构2.2 处理器工作模式及状态2.3. 寄存器2.4 总线接口2.5 存储器的组织与映射2.6. 指令集2.7. 流水线2.8. 异常与中断2.9 存储器保护单元MPU2.10 STM32微控制器概述2.6 指令集2.6.1 2.6.1 指令集指令集l在过去,做做ARM开发必须处理好两个状态开发必须处理好两个状态。这两个状
26、态是井水不犯河水的,它们是:32位的位的ARM状态和状态和16位的位的Thumb状态状态。当处理器在ARM状态下时,所有的指令均是32位的(哪怕只是个”NOP”指令),此时性能相当高。而在Thumb状态下,所有的指令均是16位的,代码密度提高了一倍。不过,thumb状态下的指令功能只是ARM下的一个子集,结果可能需要更多条的指令去完成相同的工作,导致处理性能下降。l伴随着Thumb-2指令集的横空出世,终于可以在单一的操作模式下搞定终于可以在单一的操作模式下搞定所有处理了所有处理了,再也没有来回切换的事来烦你了。事实上,Cortex-M3内核干脆都不支持ARM指令,中断也在Thumb态下处理(
27、以前的ARM总是在ARM状态下处理所有的中断和异常)。这可不是小便宜,它使CM3在好几个方面都比传统的ARM处理器更先进:u消灭了状态切换的额外开销,节省了消灭了状态切换的额外开销,节省了 执行时间和指令空间。执行时间和指令空间。u不再需要把源代码文件分成按不再需要把源代码文件分成按ARM编译的和编译的和Thumb编译的,软件开发编译的,软件开发管理大大减负。管理大大减负。u无需再反复地求证和测试:究竟该在何时何地切换到何种状态下,我的无需再反复地求证和测试:究竟该在何时何地切换到何种状态下,我的程序才最有效率。开发软件容易多了。程序才最有效率。开发软件容易多了。402、ARM Cortex-
28、M3 体系结构体系结构2.1. CM3微处理器核结构2.2 处理器工作模式及状态2.3. 寄存器2.4 总线接口2.5 存储器的组织与映射2.6. 指令集2.7. 流水线2.8. 异常与中断2.9 存储器保护单元MPU2.10 STM32微控制器概述带分支预测的3级流水线lCortex-M3 的流水线分为的流水线分为3级,分别为:级,分别为:取指译码执行取指译码执行从存储器装载一条指令识别将要被执行的指令处理指令并将结果写回寄存器在译码时进行分支预测,遇跳转指令也不会打断流水线PC值总是指向正在取指的指令三级流水线结构的指令执行顺序指令1指令2指令3指令4程序存储器周期1周期2周期3周期4周期
29、5周期6取指 译码 执行取指 译码 执行取指 译码 执行取指 译码 执行周期周期2周期周期1周期周期3周期周期4处理器执行一条指令的三个阶段 在第1个周期,PC指向指令1,此时指令1进入三级流水线的取指阶段。1三级流水线结构的指令执行顺序指令1指令2指令3指令4程序存储器周期1周期2周期3周期4周期5周期6取指 译码 执行取指 译码 执行取指 译码 执行取指 译码 执行周期周期2周期周期1周期周期3周期周期4处理器执行一条指令的三个阶段 在第2个周期,PC指向指令2,此时指令1进入三级流水线的译码阶段,同时取出指令2。2三级流水线结构的指令执行顺序指令1指令2指令3指令4程序存储器周期1周期2
30、周期3周期4周期5周期6取指 译码 执行取指 译码 执行取指 译码 执行取指 译码 执行周期周期2周期周期1周期周期3周期周期4处理器执行一条指令的三个阶段 在第3个周期,PC指向指令3,此时指令1进入三级流水线的执行阶段,指令2进入译码阶段,取出指令3。3三级流水线结构的指令执行顺序指令1指令2指令3指令4程序存储器周期1周期2周期3周期4周期5周期6取指 译码 执行取指 译码 执行取指 译码 执行取指 译码 执行周期周期2周期周期1周期周期3周期周期4处理器执行一条指令的三个阶段 在第4个周期,指令1执行完成,指令2和指令3流水线推进一级,同时开始指令4的取指处理。42、ARM Corte
31、x-M3 体系结构体系结构2.1. CM3微处理器核结构2.2 处理器工作模式及状态2.3. 寄存器2.4 总线接口2.5 存储器的组织与映射2.6. 指令集2.7. 流水线2.8. 异常与中断2.9 存储器保护单元MPU2.10 STM32微控制器概述2.8 异常与中断异常与中断中断:请求信号来自于中断:请求信号来自于CM3CM3内核外面,来自片上外设或外内核外面,来自片上外设或外扩的外设;扩的外设;异常:是由于异常:是由于CM3CM3内核的活动而产生的内核的活动而产生的 (P52P52)只要正常的程序被暂时中止,处理器就进入异常模式。异只要正常的程序被暂时中止,处理器就进入异常模式。异常包
32、括复位、系统故障、外设中断等事件。常包括复位、系统故障、外设中断等事件。Cortex-M3Cortex-M3处理器中存在多种异常类型,系统复位、处理器中存在多种异常类型,系统复位、NMINMI(不可屏蔽中断)、硬件故障、存储器管理、总线故障、使(不可屏蔽中断)、硬件故障、存储器管理、总线故障、使用故障、用故障、SVCallSVCall(软件中断)、调试监控和(软件中断)、调试监控和IRQIRQ中断等。中断等。IRQIRQ中断也分为中断也分为CortexM3CortexM3内自带的内自带的PendSVPendSV(系统服务请求)、(系统服务请求)、SysTick(SysTick(系统节拍定时器系
33、统节拍定时器) ),和与芯片外设相关的外部中断。,和与芯片外设相关的外部中断。1 异常与中断概念异常与中断概念异常类型表异常类型表异常类型异常类型位置位置优先级优先级1描述描述-0-复位时载入向量表的第一项作为栈顶地址。复位时载入向量表的第一项作为栈顶地址。复位复位1-3(最高)(最高)在上电和热复位时调用。在执行第一条指令时,在上电和热复位时调用。在执行第一条指令时,优先级将降为最低(也就是所谓的激活(中断)优先级将降为最低(也就是所谓的激活(中断)的基础级别)。这是异步的。的基础级别)。这是异步的。不可屏蔽中不可屏蔽中断(断(NMI)2-2不可停止,也不会被复位之外的任何异常抢占。不可停止
34、,也不会被复位之外的任何异常抢占。这是异步的。这是异步的。NMI仅可由软件通过仅可由软件通过NVIC中断控制状态寄存器中断控制状态寄存器来产生。来产生。硬故障硬故障3-1当故障由于优先级或者是可配置的故障处理程序当故障由于优先级或者是可配置的故障处理程序被禁能的原因而无法激活时,所有类型的故障都被禁能的原因而无法激活时,所有类型的故障都会以硬故障的方式激活。这是同步的。会以硬故障的方式激活。这是同步的。存储器管理存储器管理4可调整可调整MPU不匹配,包括访问冲突不匹配,包括访问冲突(access violation)和和不匹配。这是同步的。不匹配。这是同步的。这种异常的优先级可被改变。这种异常
35、的优先级可被改变。总线故障总线故障5可调整可调整预取指故障、存储器访问故障和其它地址预取指故障、存储器访问故障和其它地址/存储存储器相关的故障。当为精确的总线故障时是同步的,器相关的故障。当为精确的总线故障时是同步的,为不精确的总线故障时是异步的。为不精确的总线故障时是异步的。你可以使能或禁能这种故障。你可以使能或禁能这种故障。异常类型表异常类型表异常类型异常类型位置位置优先级优先级1描述描述使用故障使用故障6可调整可调整使用故障,例如执行未定义的指令或试图进行使用故障,例如执行未定义的指令或试图进行非法的状态转变。这是同步的。非法的状态转变。这是同步的。-7-10-保留。保留。SVCall1
36、1可调整可调整使用使用SVC指令的系统服务调用。这是同步的。指令的系统服务调用。这是同步的。调试监控器调试监控器12可调整可调整调试监控器(当没有暂停调试监控器(当没有暂停(Halt)时)。这是同时)。这是同步的,但仅在使能时有效。如果它的优先级比步的,但仅在使能时有效。如果它的优先级比当前激活的处理程序的优先级更低,那么调试当前激活的处理程序的优先级更低,那么调试监控器不能激活。监控器不能激活。-13-保留。保留。PendSV14可调整可调整系统服务的可挂起系统服务的可挂起(pendable)请求。这是异步请求。这是异步的且仅通过软件挂起。的且仅通过软件挂起。SysTick15可调整可调整系
37、统节拍定时器已启动系统节拍定时器已启动(fired)。这是异步的。这是异步的。外部中断外部中断16可调整可调整中断在中断在ARM Cortex-M3内核之外发出且通过内核之外发出且通过NVIC返回(区分优先级)。这些都是异步的。返回(区分优先级)。这些都是异步的。 上表其实也是一张完整向量表。当异常产生后,处理器根据中断上表其实也是一张完整向量表。当异常产生后,处理器根据中断号从在向量表中取出异常处理函数入口(函数指针)。号从在向量表中取出异常处理函数入口(函数指针)。 3 3 中断、异常过程中断、异常过程从向量表中读SP更新PC加载流水线更新LR读向量表硬件压栈从向量表中读SP更新PC加载流
38、水线更新LR读向量表硬件压栈利用向量表读出的位置更新利用向量表读出的位置更新PCPC。直到第。直到第一条指令开始执行时,才能处理迟来一条指令开始执行时,才能处理迟来异常。异常。 从向量表指向的位置加载指令。它与寄从向量表指向的位置加载指令。它与寄存器压栈操作同时执行。存器压栈操作同时执行。 LRLR设置为设置为EXC_RETURNEXC_RETURN,以便从异常中退,以便从异常中退出出 。在复位时,将在复位时,将SPSP更新为向量表中第更新为向量表中第1 1个字个字的值。的值。读存储器中的向量表,地址为向量表基读存储器中的向量表,地址为向量表基址址+(+(异常号异常号* *4)4)。中断函数入
39、口。中断函数入口。在所选的堆栈上将在所选的堆栈上将 xPSRxPSR、 PCPC、 LR LR 、 R12R12、 R3R3、 R2R2、 R1R1、 R0 R0 压栈压栈注意:注意:LRLR的值并非进入异常程序的地址的值并非进入异常程序的地址注:以上步骤由硬件自动完成,仅需12个时钟周期4 4 占先占先用户程序中断1 中断2优先级3 优先级2 中断1中断2压栈压栈出栈出栈在异常处理程序中,一个新的异常比当前的异常优在异常处理程序中,一个新的异常比当前的异常优先级更高,处理器打断当前的流程,响应优先级更高先级更高,处理器打断当前的流程,响应优先级更高的异常,此时产生中断嵌套。的异常,此时产生中
40、断嵌套。5 5 末尾连锁末尾连锁用户程序中断1 中断2优先级3 优先级2 中断1中断2如果此时中断1 已经完成,不出栈也不压栈,直接跳至中断2程序压栈出栈中断1结束末尾连锁是处理器用来加速中断响应的一种机制。在结末尾连锁是处理器用来加速中断响应的一种机制。在结束束ISRISR时,如果存在一个挂起中断,其优先级高于正在返回时,如果存在一个挂起中断,其优先级高于正在返回的的ISRISR或线程,那么就会跳过出栈操作,转而将控制权让给或线程,那么就会跳过出栈操作,转而将控制权让给新的新的ISRISR。 不用未尾连锁的情况用户程序中断1 中断2优先级3 优先级2 中断1压栈1出栈1压栈2出栈2中断2此时此时压栈压栈2与与出栈出栈1的内容完全的内容完全相同,所以末尾连相同,所以末尾连锁时锁时 可省去。可省去。在中断1完成后,紧跟着发生中断2 迟来是处理器用来加速占先的一种机制。如果在迟来是处理器用来加速占先的一种机制。如果在保存前一个占先的状态时出现一个优先级更高的中断,保存前一个占先的状态时出现一个优先级更高的中断,则处理器转去处理优先级更高的中断,开始该中断的取则处理器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年心理学研究方法与统计考试试题及答案
- 2025年网页设计与开发相关知识考试试卷及答案
- 西藏山南地区浪卡子县2024-2025学年三年级数学第二学期期末综合测试试题含解析
- 西藏拉萨市墨竹工卡县2025届小升初考试数学试卷含解析
- 柳州市重点中学2024-2025学年高三下学期第一次联考语文试题试卷含解析
- 洛阳职业技术学院《新型生物质炭材料》2023-2024学年第二学期期末试卷
- 泰州职业技术学院《篮球理论与实践二》2023-2024学年第二学期期末试卷
- 外贸电话订单课件
- 物联网设备技术研发成果共享与商业秘密保护合同
- 医疗机构数字孪生健康档案管理与维护合同
- JGJ-T221-2010纤维混凝土应用技术规程
- 2024届上海奉贤区高三一模英语试题及答案
- 2024年农业经理人(中级)技能认证考试复习题库(含答案)
- 水利水电工程建设用地设计标准(征求意见稿)
- 【上海市机电产品出口现状及优化建议探析8600字(论文)】
- JJG 621-2012 液压千斤顶行业标准
- 从院感控制看抗生素的合理应用
- 深圳科技馆(新馆)展教工程常设展区整体展教方案
- 研发成果商业化转化模板
- 《幼儿舞蹈创编与教学I-IV》课程标准
- 施工图设计组织实施方案样本
评论
0/150
提交评论