2-ARM-Cortex-M体系结构课件_第1页
2-ARM-Cortex-M体系结构课件_第2页
2-ARM-Cortex-M体系结构课件_第3页
2-ARM-Cortex-M体系结构课件_第4页
2-ARM-Cortex-M体系结构课件_第5页
已阅读5页,还剩127页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章ARMCortex-M体系结构2.1ARMCortex体系概述2.2Cortex-M4内核基础2.3存储器系统2.4异常和中断习题第2章ARMCortex-M体系结构2.1ARMCo2.1ARMCortex体系概述2.1ARMCortex体系概述2.1ARMCortex体系概述ARM公司在经典处理器ARM11以后的产品都改用Cortex命名,主要分成A、R和M三类,旨在为各种不同的市场提供服务,A

系列处理器面向尖端的基于虚拟内存的操作系统和用户应用;R系列处理器针对实时系统;M系列处理器针对微控制器。2.1ARMCortex体系概述ARM公司在经典处理器A2.1ARMCortex体系概述指令的强弱是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。从现阶段的主流体系结构来讲,指令集可分为复杂指令集(CISC)和精简指令集(RISC)两部分。2.1.1CISC和RISC1.CISC机器CISC体系的指令特征为使用微代码,计算机性能的提高往往是通过增加硬件的复杂性来获得的。优点:指令丰富,功能强大,寻址方式灵活,能够有效缩短新指令的微代码设计时间,允许设计师实现CISC体系机器的向上相容。缺点:指令集及晶片的设计比上一代产品更复杂,不同的指令需要不同的时钟周期来完成,执行较慢的指令,将影响整台机器的执行效率。2.1ARMCortex体系概述指令的强弱是CPU的重要2.1ARMCortex体系概述2.1.1CISC和RISC2.RISC机器RISC体系的指令特征:RISC包含简单、基本的指令,这些简单、基本的指令可以组合成复杂指令。优点:在使用相同的晶片技术和相同运行时钟下,RISC系统的运行速度是CISC系统的运行速度的2~4倍。由于RISC处理器的指令集是精简的,它的存储管理单元、浮点单元等都能设计在同一块芯片上。缺点:多指令的操作使得程式开发者必须小心地选用合适的编译器,而且编写的代码量会变得非常大。另外就是RISC处理器需要更快的存储器,并将其集成于处理器内部,如一级缓存(L1Cache)。2.1ARMCortex体系概述2.1.1CISC和R2.1ARMCortex体系概述2.1.1CISC和RISC3.RISC和CISC比较项目RISCCISC指令系统简单、精简复杂、丰富指令数目一般小于100条一般大于200条指令格式少多寻址方式少多指令字长基本等长不固定可访存指令主要是Load/Store不加限制各种指令使用频率相差不大相差很大各种指令执行时间大部分单周期相差很大优化编译实现较容易难表2-1

RISC和CISC特点对比2.1ARMCortex体系概述2.1.1CISC和R2.1ARMCortex体系概述1985年,RogerWilson和SteveFurber设计了第一代32位、6MHz的处理器,做出了一台RISC指令集的计算机,简称ARM(AcornRISCMachine)——ARM的由来。1990年,Acorn公司正式改组为ARM计算机公司。ARM公司生产的芯片,称为ARM芯片。ARM公司的业务一直是出售IP核。ARM控股的ARM处理器家庭的突出例子包括ARM7,ARM9,ARM11andCortex-M,Cortex-A系列。2.1.2

ARM架构发展史2.1ARMCortex体系概述1985年,RogerARM推出新款ARMv8架构。包括Cortex-A53、Cortex-A57、Cortex-A73、Cortex-A75、Cortex-A76等处理器。ARM处理器架构发展进程2.1ARM系统概述2.1.2

ARM架构发展史ARM推出新款ARMv8架构。包括Cortex-A53、Co2.1ARM系统概述2.1.3ARM体系结构类型ARM处理器分为6类:Cortex-A系列处理器、Cortex-R系列处理器、Cortex-M系列处理器、MachineLearning系列处理器、SecurCore系列处理器、Neoverse系列处理器。项目Cortex-A系列处理器Cortex-R系列处理器Cortex-M系列处理器设计特点高时钟频率,长流水线,高性能,对媒体处理支持(NEON指令集扩展)高时钟频率,较长的流水线,高确定性(中断延迟低)较短的流水线,超低功耗系统特性内存管理单元(MMU),cachememory,ARMTrustZone®安全扩展内存保护单元(MPU),cachememory,紧耦合内存(TCM)内存保护单元(MPU),嵌套向量中断控制器(NVIC),唤醒中断控制器(WIC),最新ARMTrustZone®安全扩展目标市场移动计算、智能手机、高能效服务器、高端微处理器工业微控制器、汽车电子、硬盘控制器微控制器、深度嵌入系统(如传感器、MEMS、混合信号IC、IoT)表2-2

Cortex系列处理器的主要特征2.1ARM系统概述2.1.3ARM体系结构类型ARM处2.1ARM系统概述2.1.3ARM体系结构类型图2-1

Cortex系列处理器发展历程简图2.1ARM系统概述2.1.3ARM体系结构类型图2-12.1ARM系统概述2.1.4Cortex-M系列处理器表2-2

Cortex系列处理器的主要特征处理器主要特性Cortex-M0处理器面向低成本,超低功耗的微控制器和深度嵌入应用的非常小的处理器(最小12K门电路)Cortex-M0+处理器针对小型嵌入式系统的最高能效的处理器,尺寸大小和编程模式与Cortex-M0处理器相近,但是具有扩展功能,如单周期I/O接口和向量表重定位功能Cortex-M1处理器针对FPGA设计优化的小处理器,利用FPGA上的存储器块实现了紧耦合内存(TCM)和Cortex-M0处理器有相同的指令集Cortex-M3处理器针对低功耗微控制器设计的处理器,面积小但是性能强劲,支持可以处理器快速处理复杂任务的丰富指令集,具有硬件除法器和乘加指令(MAC)。并且,由于Cortex-M3处理器支持全面的调试和跟踪功能,软件开发者可以快速地开发他们的应用2.1ARM系统概述2.1.4Cortex-M系列处理2.1ARM系统概述2.1.4Cortex-M系列处理器表2-2

Cortex系列处理器的主要特征-续处理器主要特性Cortex-M4处理器不但具备Cortex-M3处理器的所有功能,而且扩展了面向数字信号处理(DSP)的指令集,如单指令多数据指令(SMID)和更快的单周期MAC操作。此外,它还有一个可选的支持IEEE754浮点标准的单精度浮点运算单元Cortex-M7处理器针对高端微控制器和数据处理密集的应用开发的高性能处理器,具备Cortex-M4处理器支持的所有指令功能,扩展支持双精度浮点运算,并且具备扩展的存储器功能,如Cache和紧耦合存储器(TCM)Cortex-M23处理器面向超低功耗、低成本应用设计的小尺寸处理器,和Cortex-M0处理器相似,但是支持各种增强的指令集和系统层面的功能特性。Cortex-M23处理器还支持TrustZone安全扩展Cortex-M33处理器主流的处理器设计,与之前的Cortex-M3处理器和Cortex-M4处理器类似,但系统设计更灵活,能耗比更高效,性能更高。Cortex-M33处理器还支持TrustZone安全扩展2.1ARM系统概述2.1.4Cortex-M系列处理2.2Cortex-M4内核基础2.2Cortex-M4内核基础2.2Cortex-M4内核基础Cortex-M4处理器已设计具有适用于数字信号控制市场的多种高效信号处理功能。Cortex-M4处理器采用扩展的单周期MAC指令、优化的SIMD指令、饱和运算指令和一个可选的单精度浮点单元(FPU)。硬件体系结构单周期16位、32位MAC用于指令提取的32位AHB-Lite接口用于数据和调试访问的32位AHB-Lite接口大范围的MAC32位或64位累加选择指令在单个周期中执行单周期SIMD单周期双16位MAC4路并行8位加法或减法2路并行16位加法或减法指令在单个周期中执行2路并行16位MAC32位或64位累加选择指令在单个周期中执行浮点单元其他符合IEEE754标准单精度浮点单元用于获得更高精度的融合MAC饱和数学桶形移位器

表2-4

Cortex-M4系列处理器数字信号处理功能图2-2

Cortex-M4系列微控制器内部构造2.2Cortex-M4内核基础Cortex-M4处理器已基于Cortex-M3/M4的微控制器芯片2.2Cortex-M4内核基础基于Cortex-M3/M4的微控制器芯片2.2Corte2.2Cortex-M4内核基础32-bit微控制器:

32-bit

寄存器组、存储器接口。哈佛架构:独立的指令总线和数据总线。存储空间:4GB。寄存器:寄存器(R0到R15)和

特殊功能寄存器。运行模式:线程模式和处理模式;特权级和用户级。中断和异常:内置嵌套向量中断控制器;支持11种系统异常外加240种外部IRQ。总线接口:若干总线接口允许Cortex-M4同时取指令和取数据。MPU:一个可选的存储器保护单元允许对特权访问和用户程序访问制定访问规则。指令集:Thumb-2指令集;允许32位指令和16位指令被同时使用。内部调试组件:提供在线调试功能,例如:断点、单步、变量查看。2.2Cortex-M4内核基础32-bit微控制器:32.2.1寄存器组r0~r12,为13个通用目的寄存器低组寄存器,r0-r7可以被指定通用寄存器的所有指令访问高组寄存器,r8-r12可以被指定通用寄存器的所有32位指令访问,16位Thumb指令不能访问它们,32位的Thumb-2指令则不受限制。2.2Cortex-M4内核基础1、R0-R122.2.1寄存器组r0~r12,为13个通用目的寄存器2、R13,两个堆栈指针处理模式线程模式可用MSP始终使用主堆栈指针(MSP)也可用进程堆栈指针(PSP)2.2Cortex-M4内核基础2、R13,两个堆栈指针处理模式线程模式可用MSP始终使用主堆栈和进程堆栈Cortex-M3内核有两个堆栈指针:MSP和PSP结束复位后,所有代码都使用主堆栈所有异常都使用主堆栈异常处理程序(例如SVC)可以通过改变其在退出时使用的EXC_RETURN值来改变线程模式使用的堆栈。在线程模式中,使用MSR指令对CONTROL[1]执行写操作也可以从主堆栈切换到进程堆栈。堆栈指针r13是分组寄存器,在SP_main和SP_process之间切换。在任何时候,进程堆栈和主堆栈中只有一个是可见的,由r13指示。2.2Cortex-M4内核基础2、R13,两个堆栈指针主堆栈和进程堆栈Cortex-M3内核有两个堆栈指针:MSP堆栈与微控制器模式的对应关系2.2Cortex-M4内核基础通过MSR指令修改CONTROL[1]进行堆栈切换CONTROL[1]主堆栈进程堆栈10控制寄存器的第1位一般通过中断返回进行堆栈切换,MSR指令切换用的极少。2、R13,两个堆栈指针堆栈与微控制器模式的对应关系2.2Cortex-M4内核基CONTROL[1]=0:

使用MSP线程模式handler模式线程模式(使用MSP)

(使用MSP)

(使用MSP)线程模式handler模式线程模式(使用PSP)

(使用MSP)

(使用PSP)CONTROL[1]=1:

线程模式使用PSPHandler模式使用MSP2.2Cortex-M4内核基础2、R13,两个堆栈指针CONTROL[1]=0:线程模式intmain(){......delay();SetLED1();}voiddelay(){......}BLdelay……delay:......BXLR….0X20F00X20F4地址0X10F40X10F4执行BL指令,LR的值同时更新(0X20F4))2.2Cortex-M4内核基础3、链接寄存器(LR)C代码汇编代码intmain()BLdelay0X20F00X程序计数器(PC)程序计数器总是指向正在取指的指令。该寄存器的位0始终为0,因此,指令始终与字或半字边界对齐。2.2Cortex-M4内核基础4、

程序寄存器(PC)R15

是程序计数器。可以在汇编语言中通过R15或PC访问。程序计数器(PC)2.2Cortex-M4内核基础4、2.2Cortex-M4内核基础2.2.2堆栈操作1.栈的作用(1)用于在正在执行的函数需要使用寄存器(寄存器组)进行数据处理时,临时存储数据的初始值,这些数据在函数结束时可以被恢复出来,以免调用函数的程序丢失数据。(2)用于函数或子程序中的信息传递。(3)用于存储局部变量。(4)用于在中断等异常产生时保存处理器状态和寄存器数值。①满递减堆栈。②满递增堆栈。③空递增堆栈。④空递减堆栈。四种类型:2.2Cortex-M4内核基础2.2.2堆栈操作1.栈2.2Cortex-M4内核基础默认:满递减堆栈2、入栈3、出栈2.2.2堆栈操作2.2Cortex-M4内核基础默认:满递减堆栈2、入栈3链接寄存器(LR)在执行分支(branch)和链接(BL)指令或带有交换的分支和链接指令(BLX)时,LR用于保存PC的返回地址。

主要用于保存子程序的返回地址。

LR也用于异常返回。2.2Cortex-M4内核基础3、

链接寄存器(LR)链接寄存器(LR)2.2Cortex-M4内核基础3、2.2.3特殊功能寄存器2.2Cortex-M4内核基础在Cortex-M3/M4处理器中的特殊寄存器包括:1.程序状态寄存器(PSRs)2.中断屏蔽寄存器(PRIMASK,FAULTMASK,andBASEPRI)3.控制寄存器(CONTROL)2.2.3特殊功能寄存器2.2Cortex-M4内核基1程序状态寄存器(PSRs)313029282726:252423:2019:1615:10987654:0xPSRNZCVQICI/ITTICI/ITExceptionNo.313029282726:252423:2019:1615:10987654:0APSRNZCVQIPSRExceptionNo.EPSRICI/ITTICI/IT2.2Cortex-M4内核基础程序状态寄存器可以分为三个状态寄存器:1.应用PSR(APSR)

[负、零、进/借、溢、饱和(用于饱和运算)]2.中断PSR(IPSR)3.执行PSR(EPSR)

[ICI/IT:ICI指令/IT指令状态位;T总为1]1程序状态寄存器(PSRs)313029282726:22中断屏蔽寄存器PRIMASK、FAULTMASK和BASEPRI用来开放/禁用异常Cortex-M3/M4中断屏蔽寄存器寄存器名描述PRIMASK一个1-bit寄存器。1:仅允许NMI和硬件默认异常,所有其他的中断和异常将被屏蔽;0:开放中断FAULTMASK一个1-bit寄存器。1:仅允许NMI,所有中断和默认异常处理包括硬件异常被忽略。BASEPRI一个9位寄存器。它定义了屏蔽优先级。

当设置为某值时,所有大于或等于该值的中断被屏蔽(值越大,优先级越低)。全为0(默认值):不屏蔽任何中断。2.2Cortex-M4内核基础2中断屏蔽寄存器PRIMASK、FAULTMASK和B3控制寄存器Cortex-M3/M4控制寄存器位功能CONTROL[1]堆栈指针选择0=选择主堆栈指针MSP(复位后缺省值)1=选择进程堆栈指针PSP在线程或基础级(没有在响应异常),可以使用PSP。在handler模式下,只允许使用MSP,所以此时不得往该位写1。CONTROL[0]0=特权级的线程模式1=用户级的线程模式handler模式永远都是特权级的。2.2Cortex-M4内核基础被用来定义特权级和堆栈指针的选择。这个寄存器有两位。特权级用户级主堆栈进程堆栈3控制寄存器Cortex-M3/M4控制寄存器位功能CO2.3.4操作模式两种模式和两种特权等级。操作模式决定控制器运行正常程序或运行异常处理程序。特权用户当运行一个异常(中断)程序处理者模式错误的用法当运行主应用程序线程模式线程模式在Cortex-M3/M4中的操作模式和权限级别特权级别提供了一种机制来保障访问存储器的关键区域,同时还提供了一个基本的安全模式。通过写Controlregister[0]=1,软件在特权访问级别可以使程序转换到用户访问级别。

用户程序不能够通过写控制寄存器直接变回特权状态。它要经过一个异常处理程序设置Controlregister[0]=0使得处理器切换回特权访问级别。2.2Cortex-M4内核基础特权级用户级线程模式处理器模式2.3.4操作模式特权用户当运行一个异常(中断)程序处理者工作模式和特权级别处理器模式线程模式特权级用户级始终特权级工作模式用于区别普通应用程序的代码和异常服务例程的代码(包括中断服务例程的代码)特权级别可以提供一种存储器访问的保护机制,使得普通的用户程序代码不能意外地,甚至是恶意地执行涉及到要害的操作。2.2Cortex-M4内核基础2.3.4操作模式工作模式和特权级别处理器模式线程模式特权级用户级始终特权级工特权执行可以访问所有资源。非特权执行时对有些资源的访问受到限制或不允许访问。特权访问和用户访问(非特权访问)的区别用户访问特权访问2.2Cortex-M4内核基础1特权级别特权执行可以访问所有资源。特权访问和用户访问(非特权访问)线程模式线程模式和处理器模式处理器模式在复位时控制器进入线程模式异常返回时控制器进入线程模式特权和用户(非特权)代码能够在线程模式下运行出现异常时控制器进入处理器模式在处理器模式中,所有代码都是特权访问的2工作模式2.2Cortex-M4内核基础线程模式线程模式和处理器模式处理器模式在复位时控制器进入线CONTROL[0]特权访问用户访问10控制寄存器的第0位3特权级和工作模式转换2.2Cortex-M4内核基础工作模式状态转换特权模式下通过MSR指令修改CONTROL[0]状态CONTROL[0]特权访问用户访问10控制寄存器的第0位33特权级和工作模式转换2.2Cortex-M4内核基础3特权级和工作模式转换2.2Cortex-M4内核基础当CONTROL[0]=0时,在异常处理的始末,只发生了工作模式的转换。线程模式handler模式线程模式(特权级)

(特权级)

(特权级)线程模式handler模式线程模式(用户级)

(特权级)

(用户级)若CONTROL[0]=1(线程模式+用户级),则在中断响应的始末,工作模式和特权等极都要发生变化。2.2Cortex-M4内核基础3特权级和工作模式转换当CONTROL[0]=0时,在异常处理的始末,只发生了工2.3存储器系统2.3存储器系统2.3存储器系统Cortex-M4内核的存储器系统的主要特性如下:(1)可寻址4GB线性地址物理空间。(2)支持小端和大端的存储器系统。Cortex-M4处理器可以选择使用小端或者大端的存储器系统。(3)位段访问。(4)写缓冲。对可缓冲存储器区域写操作需要花费几个周期时间,Cortex-M4处理器的写缓冲可以把写操作缓存起来,因此处理器可以继续执行下一条指令,从而提高了程序的执行速度。(5)存储器保护单元(MPU)。MPU定义了各存储器区域的访问权限,且为可编程。Cortex-M4处理器中的MPU支持8个可编程区域,可在嵌入式操作系统中提高系统的健壮性。Cortex-M4处理器中的MPU是可选的。多数应用不会用到MPU,可以忽略。(6)非对齐传输支持。ARMv7-M架构的所有处理器(包括Cortex-M4处理器)支持非对齐传输。2.3存储器系统Cortex-M4内核的存储器系统的主要特2存储器格式……字节字节字节字节……A+3A+2A+1A存储器半字半字字Cortex-M4处理器支持以下数据类型:32位字、16位半字、8位字节。2.3存储器系统2.3.1数据类型存储器介质:RAM:SRAM和DRAMROM:ROM、PROM、EPROM、EEPROMFLASH:NORFLASH、NANDFLASH2存储器格式……A+3A+2A+1A存储器半字半字字Cor2存储器格式……字节字节字节字节……A+3A+2A+1A存储器半字半字字存储器介质RAMSRAM和DRAMROMROM、PROM、EPROM、EEPROMFLASHNORFLASH、NANDFLASH2.3存储器系统2存储器格式……A+3A+2A+1A存储器半字半字字存储器小端存储…………A+3A+2A+1A存储器0x120x340x560x78…………A+3A+2A+1A存储器0x780x560x340x122.3存储器系统大端存储0x12345678存储器地址存储器地址2.3.2存储形式小端存储……A+3A+2A+1A存储器……A+3A+2A+1Cortex-M4处理器有一个固定的存储映射。这一点极大地方便了软件在各种M4微控制器间的移植。例:各款M4微控制器的NVIC和MPU都在相同的位置布设寄存器,使得它们变得通用。2.3.3

存储器映射2.3存储器系统Block0Block1Block2Block3-4Block5-6Block7Cortex-M4处理器有一个固定的存储映射。这一点极大地Cortex-M4支持位带操作,可以使用普通的加载/存储指令来对单一的比特进行读写。在Cortex-M4中,有两个区中实现了位带:(1)SRAM区的最低1MB范围(0x20000000~0x20100000)。(2)片内外设区的最低1MB范围(0x40000000~0x40100000)。这两个区中的地址除了可以像普通的RAM一样使用外,它们还都有自己的“位带别名区”,位带别名区把每个比特膨胀成一个32位的字。(1)32MBSRAM位带别名区(0x22000000~0x23FFFFFF)。(2)32MB外设位带别名区(0x42000000~0x43FFFFFF)。它们可以通过一个单独的被称为bit-bandalias的存储区域被访问。2.3存储器系统2.3.4位带区2.3存储器系统2.3.4位带区位通过Bit-BandAlias访问Bit-BandRegion2.3存储器系统位带别名区SRAM位带区位通过Bit-BandAlias访问Bit-BandRe位带别名区中的字与位带区的位映射公式bit_word_addr=bit_band_base+(byte_offsetx32)+bit_number×42.3存储器系统例如:SRAM位带区中地址为0x20000300

的字节中的位2

被映射到别名区中的地址为:0x22006008(=0x22000000+(0x300*32)+(2*4))的字。76543210位带区别名区一个存储单元的8个位一个字(4个字节)0x200003000x22006008一个字(4个字节)0x22006004位带别名区中的字与位带区的位映射公式bit_word_addSRAM

区域的Bit-Band地址重映射外设存储区Bit-Band地址重映射

Bit-Band区域别名等效0x20000000bit[0]0x22000000bit[0]0x20000000bit[1]0x22000004bit[0]0x20000000bit[2]0x22000008bit[0]……0x20000000bit[31]0x2200007Cbit[0]0x20000004bit[0]0x22000080bit[0]……0x20000004bit[31]0x220000FCbit[0]……0x200FFFFCbit[31]0x23FFFFFCbit[0]Bit-Band区域别名等效0x40000000bit[0]0x42000000bit[0]0x40000000bit[1]0x42000004bit[0]0x40000000bit[2]0x42000008bit[0]……0x40000000bit[31]0x4200007Cbit[0]0x40000004bit[0]0x42000080bit[0]……0x40000004bit[31]0x420000FCbit[0]……0x400FFFFCbit[31]0x43FFFFFCbit[0]2.3存储器系统SRAM区域的Bit-Band地址重映射外设存储区Bi#defineBITBAND(addr,bitnum)((addr&0xF0000000)+0x2000000+((addr&0xFFFFF)<<5)+(bitnum<<2))#defineMEM_ADDR(addr) *((volatileunsignedint*)(adr))MEM_ADDR(BITBAND(DEVICE_REG0,1))=0x1;2.3存储器系统C语言中宏定义位带操作位带操作定义:位带操作定义:#defineDEVICE_REG0 0x40000000(将单元0x40000000的1位置位)*((volatileunsignedint*)(0x40000000))|=(0x00000001<<1);普通操作(读修改写):#defineBITBAND(addr,bitnum)2.4异常和中断2.4异常和中断中断:请求信号来自于CM4内核外面,来自片上外设或外扩的外设;异常:是由于CM4内核的活动而产生的

。只要正常的程序被暂时中止,微控制器就进入处理器模式。包括复位、系统故障、中断等事件。2.4异常和中断图2-15异常和中断程序状态切换图异常和中断的作用是指示系统中的某个地方发生一些事件,需要引起处理器(包括正在执行的程序和任务)的注意。当中断和异常发生时,典型的结果是迫使处理器将控制从当前正在执行的程序或任务转移到另一个例程或任务中,该例程叫作中断服务程序(ISR),或者异常处理程序。中断:请求信号来自于CM4内核外面,来自片上外设或外扩的外设2.4异常和中断2.4.1向量表异常类型位置位移向量优先级描述N/A00x0000初始堆栈指针值N/A在复位时栈顶从向量表的第一个入口加载复位10x0004重置-3(高)在上电和热复位时调用;在第一条指令上优先级下降到低(线程模式);是异步的不可屏蔽的中断20x0008NMI-2可以通过一个外设或由软件触发发出信号;不能被除复位之外的任何异常停止或占先;是异步的硬故障30x000C硬故障-1异常处理期间有错误的异常,或者因为异常不能被任何异常机制管理;是同步的存储器管理40x0010内存管理故障可调整MPU不匹配,包括违反访问规范及不匹配;即使MPU被禁止或不存在,也可以用它来支持默认的存储器映射的XN区域;是同步的总线故障50x0014总线故障可调整预取故障、存储器访问故障,以及其他相关的地址/存储故障;精确时是同步的,不精确时是异步的使用故障60x0018应用故障可调整使用故障,如执行未定义的指令或尝试不合法的状态转换;是同步的表2-11异常类型表2.4异常和中断2.4.1向量表异常类型位置位移向量优先2.4异常和中断2.4.1向量表异常类型位置位移向量优先级描述N/A7:10N/A重置N/A保留SVCall11N/ASVCall可调整利用SVC指令调用系统服务,在操作系统环境下,应用程序可以使用SVC指令来访问操作系统内核函数和器件驱动;是同步的调试监控12N/A保留可调整调试监控,在处理器没有停止时出现;是同步的,但只在使能时是有效的;如果它的优先级比当前有效的异常的优先级要低,则不能被激活—13N/A保留N/A保留PendSV14N/APendSV可调整可挂起的系统服务请求;在操作系统环境下,使用PendSV作为背景切换时,没有其他异常活动;是异步的,只能由软件来实现挂起SysTick150x0038SysTick可调整当系统定时器达到零产生,软件也可以生成一个SysTick异常;在操作系统环境下,处理器可以使用该异常作为系统时钟;是异步的表2-11异常类型表-续12.4异常和中断2.4.1向量表异常类型位置位移向量优先2.4异常和中断2.4.1向量表表2-11异常类型表-续2异常类型位置位移向量优先级描述外部中断16及

以上0x003CIRQ0可调整在内核的外部产生,外围​​信号或者通过软件请求生成。INTISR[239:0],通过NVIC(设置优先级)输入,都是异步的0x0040IRQ10x0044IRQ20x0048IRQ30x004CIRQ42.4异常和中断2.4.1向量表表2-11异常类型表-2.4.2优先级2.4异常和中断1.优先级概述所有异常都有其相关的优先级,具有以下特点。(1)一个较低的优先级值,表示较高的优先级;(2)可配置的优先事项为除复位、硬件复位和NMI处的所有异常。在处理器的异常模型中,优先级决定了处理器何时及怎样处理异常。优先级分两组,抢占优先级和响应优先级,程序能够指定中断的优先级。NVIC支持由软件指定的优先级,可以将中断的优先级指定为0~255。硬件优先级随着中断号的增加而降低,0优先级高,255优先级低。指定软件优先级后,硬件优先级无效。2.4.2优先级2.4异常和中断1.优先级概述在处理器的2.4.2优先级2.4异常和中断2.优先级分组为了对具有大量中断的系统加强优先级控制,NVIC支持优先级分组机制,分为抢占优先级区和响应优先区。分组位置表示抢占优先级的位段表示亚优先级的位段0[7:1][0:0]1[7:2][1:0]2[7:3][2:0]3[7:4][3:0]4[7:5][4:0]5[7:6][5:0]6[7:7][6:0]7无[7:0](所有位)表2-13抢占优先级和亚优先级的表达位数与分组位置的关系2.4.2优先级2.4异常和中断2.优先级分组分组位置表2.4.2优先级2.4异常和中断在大多数实际微控制器中只用到了部分优先级分组。例如,在STM32F429微控制器中对应于中断的8位优先级寄存器(IP)只用到高4位,而低4位保留。这样优先级分组的值只能设置为3~7。下面通过一个例子来加深对优先级分组的应用。图2-16

STM32F429微控制器抢占优先级和次优先级在优先级寄存器中的位数关系假设将STM32F429微控制器优先级分组的值设置为4(从bit4处分组,5~7位是占先优先级,0~4位是次优先级,但是0~3位保留不用),则可得到3级抢占优先级,且在每个抢占优先级的内部有1个次优先级。STM32F429微控制器抢占优先级和次优先级在优先级寄存器中的位数关系如图2-16所示。2.4.2优先级2.4异常和中断在大多数实际微控制器中只2.4.3响应过程注意:LR的值被从新定义并非进入异常程序的地址2.4异常和中断1、

响应流程2.4.3响应过程注意:2.4异常和中断1、响应流程2.4.3响应过程2.4异常和中断2.退出异常步骤(1)根据EXC_RETURN指示的堆栈,弹出进入中断时被压栈的八个寄存器。(2)从刚出栈的IPSR寄存器[8:0]位检测恢复到哪个异常(此时为嵌套中断中),若为0则恢复到线程模式。(3)根据EXC_RETURN,选择使用相应堆栈指针。2.4.3响应过程2.4异常和中断2.退出异常步骤(1)2.4异常和中断在中断处理程序中,一个新的中断比当前的中断优先级更高,处理器打断当前的中断处理程序流程,去响应优先级更高的中断,此时产生抢占或中断嵌套。3.抢占图2-17

Cortex-M4处理器中断抢占状态转换2.4异常和中断在中断处理程序中,一个新的中断比当前的中断4.末尾连锁

末尾连锁是处理器用来加速中断响应的一种机制。在一个ISR正在执行时,如果有另一个中断请求,其优先级低于正在执行的ISR,那么这个新的中断会被挂起。当前执行的ISR结束后,会跳过出栈操作,直接将控制权让给新的ISR。2.4异常和中断图2-18非末尾连锁和末尾连锁技术之间的区别4.末尾连锁末尾连锁是处理器用来加速中断响应5.返回在没有挂起异常或没有比被压栈的ISR优先级更高的挂起异常时,处理器执行出栈操作,并返回到被压栈的ISR或线程模式。在响应ISR之后,处理器通过出栈操作自动将处理器状态恢复为进入ISR之前的状态。如果在状态恢复过程中出现一个新的中断,并且该中断的优先级比正在返回的ISR或线程更高,则处理器放弃状态恢复操作并将新的中断作为末尾连锁来处理。2.4异常和中断5.返回在没有挂起异常或没有比被压栈的ISR优先级更高的挂起处理器复位后,它会从存储器中读取两个字:1.从地址0x0000

0000处取出MSP的初始值。2.从地址0x0000

0004处取出PC的初始值——这个值是复位向量。然后从这个值所对应的地址处取指。MSP的初始值必须是堆栈内存的末地址加1。例:如果堆栈区域在0x20007C00‐0x20007FFF之间,则MSP的初始值就必须是0x20008000。2.4异常和中断2.4.4

复位处理器复位后,它会从存储器中读取两个字:MSP的初始值必须初始MSP及PC初始化的一个范例MSP=堆栈内存末地址+1PC初始化=启动代码的首地址+1(CM3在Thumb状态执行)2.4异常和中断初始MSP及PC初始化的一个范例MSP=堆栈内存末地址习题习题习题1.列举出三家公司生产的Cortex-M3和Cortex-M4内核控制器。2.列举Corte-M3/M4处理器使用的寄存器组,并说明R13、R14、R15的功能。3.试说明Corte-M3/M4处理器堆栈操作。4.试说明Corte-M3/M4处理器两种模式和两种特权的使用。5.什么是大端模式和小端模式?6.试说明存储器分类及其用途。7.编写C语言,将存储空间0x40000004单元的3位置位(普通方式和位带操作)。8.试说明异常响应过程。9.Corte-M3/M4处理器中断向量处存放的是对应中断的什么信息?习题1.列举出三家公司生产的Cortex-M3和Cortex习题10.Corte-M3/M4处理器复位后执行的第一项操作是什么?第二项操作是什么?

11.意法半导体STM32F0系列微控制器使用的内核是________,STM32F1系列微控制器使用的内核是________,STM32F4系列微控制器使用的内核是________。12.意法半导体低功耗系列微控制器有________系列、________系列、________系列。13.STM32F4系列微控制器主要应用于________。14.进行STM32F4系列微控制器程序开发一般需要准备________、________、________。15.常用ARM程序开发集成开发环境有________、________。16.STM32F系列微控制器基于函数库的程序设计与直接寄存器操作程序设计有什么区别?习题10.Corte-M3/M4处理器复位后执行的第一项操作第2章ARMCortex-M体系结构2.1ARMCortex体系概述2.2Cortex-M4内核基础2.3存储器系统2.4异常和中断习题第2章ARMCortex-M体系结构2.1ARMCo2.1ARMCortex体系概述2.1ARMCortex体系概述2.1ARMCortex体系概述ARM公司在经典处理器ARM11以后的产品都改用Cortex命名,主要分成A、R和M三类,旨在为各种不同的市场提供服务,A

系列处理器面向尖端的基于虚拟内存的操作系统和用户应用;R系列处理器针对实时系统;M系列处理器针对微控制器。2.1ARMCortex体系概述ARM公司在经典处理器A2.1ARMCortex体系概述指令的强弱是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。从现阶段的主流体系结构来讲,指令集可分为复杂指令集(CISC)和精简指令集(RISC)两部分。2.1.1CISC和RISC1.CISC机器CISC体系的指令特征为使用微代码,计算机性能的提高往往是通过增加硬件的复杂性来获得的。优点:指令丰富,功能强大,寻址方式灵活,能够有效缩短新指令的微代码设计时间,允许设计师实现CISC体系机器的向上相容。缺点:指令集及晶片的设计比上一代产品更复杂,不同的指令需要不同的时钟周期来完成,执行较慢的指令,将影响整台机器的执行效率。2.1ARMCortex体系概述指令的强弱是CPU的重要2.1ARMCortex体系概述2.1.1CISC和RISC2.RISC机器RISC体系的指令特征:RISC包含简单、基本的指令,这些简单、基本的指令可以组合成复杂指令。优点:在使用相同的晶片技术和相同运行时钟下,RISC系统的运行速度是CISC系统的运行速度的2~4倍。由于RISC处理器的指令集是精简的,它的存储管理单元、浮点单元等都能设计在同一块芯片上。缺点:多指令的操作使得程式开发者必须小心地选用合适的编译器,而且编写的代码量会变得非常大。另外就是RISC处理器需要更快的存储器,并将其集成于处理器内部,如一级缓存(L1Cache)。2.1ARMCortex体系概述2.1.1CISC和R2.1ARMCortex体系概述2.1.1CISC和RISC3.RISC和CISC比较项目RISCCISC指令系统简单、精简复杂、丰富指令数目一般小于100条一般大于200条指令格式少多寻址方式少多指令字长基本等长不固定可访存指令主要是Load/Store不加限制各种指令使用频率相差不大相差很大各种指令执行时间大部分单周期相差很大优化编译实现较容易难表2-1

RISC和CISC特点对比2.1ARMCortex体系概述2.1.1CISC和R2.1ARMCortex体系概述1985年,RogerWilson和SteveFurber设计了第一代32位、6MHz的处理器,做出了一台RISC指令集的计算机,简称ARM(AcornRISCMachine)——ARM的由来。1990年,Acorn公司正式改组为ARM计算机公司。ARM公司生产的芯片,称为ARM芯片。ARM公司的业务一直是出售IP核。ARM控股的ARM处理器家庭的突出例子包括ARM7,ARM9,ARM11andCortex-M,Cortex-A系列。2.1.2

ARM架构发展史2.1ARMCortex体系概述1985年,RogerARM推出新款ARMv8架构。包括Cortex-A53、Cortex-A57、Cortex-A73、Cortex-A75、Cortex-A76等处理器。ARM处理器架构发展进程2.1ARM系统概述2.1.2

ARM架构发展史ARM推出新款ARMv8架构。包括Cortex-A53、Co2.1ARM系统概述2.1.3ARM体系结构类型ARM处理器分为6类:Cortex-A系列处理器、Cortex-R系列处理器、Cortex-M系列处理器、MachineLearning系列处理器、SecurCore系列处理器、Neoverse系列处理器。项目Cortex-A系列处理器Cortex-R系列处理器Cortex-M系列处理器设计特点高时钟频率,长流水线,高性能,对媒体处理支持(NEON指令集扩展)高时钟频率,较长的流水线,高确定性(中断延迟低)较短的流水线,超低功耗系统特性内存管理单元(MMU),cachememory,ARMTrustZone®安全扩展内存保护单元(MPU),cachememory,紧耦合内存(TCM)内存保护单元(MPU),嵌套向量中断控制器(NVIC),唤醒中断控制器(WIC),最新ARMTrustZone®安全扩展目标市场移动计算、智能手机、高能效服务器、高端微处理器工业微控制器、汽车电子、硬盘控制器微控制器、深度嵌入系统(如传感器、MEMS、混合信号IC、IoT)表2-2

Cortex系列处理器的主要特征2.1ARM系统概述2.1.3ARM体系结构类型ARM处2.1ARM系统概述2.1.3ARM体系结构类型图2-1

Cortex系列处理器发展历程简图2.1ARM系统概述2.1.3ARM体系结构类型图2-12.1ARM系统概述2.1.4Cortex-M系列处理器表2-2

Cortex系列处理器的主要特征处理器主要特性Cortex-M0处理器面向低成本,超低功耗的微控制器和深度嵌入应用的非常小的处理器(最小12K门电路)Cortex-M0+处理器针对小型嵌入式系统的最高能效的处理器,尺寸大小和编程模式与Cortex-M0处理器相近,但是具有扩展功能,如单周期I/O接口和向量表重定位功能Cortex-M1处理器针对FPGA设计优化的小处理器,利用FPGA上的存储器块实现了紧耦合内存(TCM)和Cortex-M0处理器有相同的指令集Cortex-M3处理器针对低功耗微控制器设计的处理器,面积小但是性能强劲,支持可以处理器快速处理复杂任务的丰富指令集,具有硬件除法器和乘加指令(MAC)。并且,由于Cortex-M3处理器支持全面的调试和跟踪功能,软件开发者可以快速地开发他们的应用2.1ARM系统概述2.1.4Cortex-M系列处理2.1ARM系统概述2.1.4Cortex-M系列处理器表2-2

Cortex系列处理器的主要特征-续处理器主要特性Cortex-M4处理器不但具备Cortex-M3处理器的所有功能,而且扩展了面向数字信号处理(DSP)的指令集,如单指令多数据指令(SMID)和更快的单周期MAC操作。此外,它还有一个可选的支持IEEE754浮点标准的单精度浮点运算单元Cortex-M7处理器针对高端微控制器和数据处理密集的应用开发的高性能处理器,具备Cortex-M4处理器支持的所有指令功能,扩展支持双精度浮点运算,并且具备扩展的存储器功能,如Cache和紧耦合存储器(TCM)Cortex-M23处理器面向超低功耗、低成本应用设计的小尺寸处理器,和Cortex-M0处理器相似,但是支持各种增强的指令集和系统层面的功能特性。Cortex-M23处理器还支持TrustZone安全扩展Cortex-M33处理器主流的处理器设计,与之前的Cortex-M3处理器和Cortex-M4处理器类似,但系统设计更灵活,能耗比更高效,性能更高。Cortex-M33处理器还支持TrustZone安全扩展2.1ARM系统概述2.1.4Cortex-M系列处理2.2Cortex-M4内核基础2.2Cortex-M4内核基础2.2Cortex-M4内核基础Cortex-M4处理器已设计具有适用于数字信号控制市场的多种高效信号处理功能。Cortex-M4处理器采用扩展的单周期MAC指令、优化的SIMD指令、饱和运算指令和一个可选的单精度浮点单元(FPU)。硬件体系结构单周期16位、32位MAC用于指令提取的32位AHB-Lite接口用于数据和调试访问的32位AHB-Lite接口大范围的MAC32位或64位累加选择指令在单个周期中执行单周期SIMD单周期双16位MAC4路并行8位加法或减法2路并行16位加法或减法指令在单个周期中执行2路并行16位MAC32位或64位累加选择指令在单个周期中执行浮点单元其他符合IEEE754标准单精度浮点单元用于获得更高精度的融合MAC饱和数学桶形移位器

表2-4

Cortex-M4系列处理器数字信号处理功能图2-2

Cortex-M4系列微控制器内部构造2.2Cortex-M4内核基础Cortex-M4处理器已基于Cortex-M3/M4的微控制器芯片2.2Cortex-M4内核基础基于Cortex-M3/M4的微控制器芯片2.2Corte2.2Cortex-M4内核基础32-bit微控制器:

32-bit

寄存器组、存储器接口。哈佛架构:独立的指令总线和数据总线。存储空间:4GB。寄存器:寄存器(R0到R15)和

特殊功能寄存器。运行模式:线程模式和处理模式;特权级和用户级。中断和异常:内置嵌套向量中断控制器;支持11种系统异常外加240种外部IRQ。总线接口:若干总线接口允许Cortex-M4同时取指令和取数据。MPU:一个可选的存储器保护单元允许对特权访问和用户程序访问制定访问规则。指令集:Thumb-2指令集;允许32位指令和16位指令被同时使用。内部调试组件:提供在线调试功能,例如:断点、单步、变量查看。2.2Cortex-M4内核基础32-bit微控制器:32.2.1寄存器组r0~r12,为13个通用目的寄存器低组寄存器,r0-r7可以被指定通用寄存器的所有指令访问高组寄存器,r8-r12可以被指定通用寄存器的所有32位指令访问,16位Thumb指令不能访问它们,32位的Thumb-2指令则不受限制。2.2Cortex-M4内核基础1、R0-R122.2.1寄存器组r0~r12,为13个通用目的寄存器2、R13,两个堆栈指针处理模式线程模式可用MSP始终使用主堆栈指针(MSP)也可用进程堆栈指针(PSP)2.2Cortex-M4内核基础2、R13,两个堆栈指针处理模式线程模式可用MSP始终使用主堆栈和进程堆栈Cortex-M3内核有两个堆栈指针:MSP和PSP结束复位后,所有代码都使用主堆栈所有异常都使用主堆栈异常处理程序(例如SVC)可以通过改变其在退出时使用的EXC_RETURN值来改变线程模式使用的堆栈。在线程模式中,使用MSR指令对CONTROL[1]执行写操作也可以从主堆栈切换到进程堆栈。堆栈指针r13是分组寄存器,在SP_main和SP_process之间切换。在任何时候,进程堆栈和主堆栈中只有一个是可见的,由r13指示。2.2Cortex-M4内核基础2、R13,两个堆栈指针主堆栈和进程堆栈Cortex-M3内核有两个堆栈指针:MSP堆栈与微控制器模式的对应关系2.2Cortex-M4内核基础通过MSR指令修改CONTROL[1]进行堆栈切换CONTROL[1]主堆栈进程堆栈10控制寄存器的第1位一般通过中断返回进行堆栈切换,MSR指令切换用的极少。2、R13,两个堆栈指针堆栈与微控制器模式的对应关系2.2Cortex-M4内核基CONTROL[1]=0:

使用MSP线程模式handler模式线程模式(使用MSP)

(使用MSP)

(使用MSP)线程模式handler模式线程模式(使用PSP)

(使用MSP)

(使用PSP)CONTROL[1]=1:

线程模式使用PSPHandler模式使用MSP2.2Cortex-M4内核基础2、R13,两个堆栈指针CONTROL[1]=0:线程模式intmain(){......delay();SetLED1();}voiddelay(){......}BLdelay……delay:......BXLR….0X20F00X20F4地址0X10F40X10F4执行BL指令,LR的值同时更新(0X20F4))2.2Cortex-M4内核基础3、链接寄存器(LR)C代码汇编代码intmain()BLdelay0X20F00X程序计数器(PC)程序计数器总是指向正在取指的指令。该寄存器的位0始终为0,因此,指令始终与字或半字边界对齐。2.2Cortex-M4内核基础4、

程序寄存器(PC)R15

是程序计数器。可以在汇编语言中通过R15或PC访问。程序计数器(PC)2.2Cortex-M4内核基础4、2.2Cortex-M4内核基础2.2.2堆栈操作1.栈的作用(1)用于在正在执行的函数需要使用寄存器(寄存器组)进行数据处理时,临时存储数据的初始值,这些数据在函数结束时可以被恢复出来,以免调用函数的程序丢失数据。(2)用于函数或子程序中的信息传递。(3)用于存储局部变量。(4)用于在中断等异常产生时保存处理器状态和寄存器数值。①满递减堆栈。②满递增堆栈。③空递增堆栈。④空递减堆栈。四种类型:2.2Cortex-M4内核基础2.2.2堆栈操作1.栈2.2Cortex-M4内核基础默认:满递减堆栈2、入栈3、出栈2.2.2堆栈操作2.2Cortex-M4内核基础默认:满递减堆栈2、入栈3链接寄存器(LR)在执行分支(branch)和链接(BL)指令或带有交换的分支和链接指令(BLX)时,LR用于保存PC的返回地址。

主要用于保存子程序的返回地址。

LR也用于异常返回。2.2Cortex-M4内核基础3、

链接寄存器(LR)链接寄存器(LR)2.2Cortex-M4内核基础3、2.2.3特殊功能寄存器2.2Cortex-M4内核基础在Cortex-M3/M4处理器中的特殊寄存器包括:1.程序状态寄存器(PSRs)2.中断屏蔽寄存器(PRIMASK,FAULTMASK,andBASEPRI)3.控制寄存器(CONTROL)2.2.3特殊功能寄存器2.2Cortex-M4内核基1程序状态寄存器(PSRs)313029282726:252423:2019:1615:10987654:0xPSRNZCVQICI/ITTICI/ITExceptionNo.313029282726:252423:2019:1615:10987654:0APSRNZCVQIPSRExceptionNo.EPSRICI/ITTICI/IT2.2Cortex-M4内核基础程序状态寄存器可以分为三个状态寄存器:1.应用PSR(APSR)

[负、零、进/借、溢、饱和(用于饱和运算)]2.中断PSR(IPSR)3.执行PSR(EPSR)

[ICI/IT:ICI指令/IT指令状态位;T总为1]1程序状态寄存器(PSRs)313029282726:22中断屏蔽寄存器PRIMASK、FAULTMASK和BASEPRI用来开放/禁用异常Cortex-M3/M4中断屏蔽寄存器寄存器名描述PRIMASK一个1-bit寄存器。1:仅允许NMI和硬件默认异常,所有其他的中断和异常将被屏蔽;0:开放中断FAULTMASK一个1-bit寄存器。1:仅允许NMI,所有中断和默认异常处理包括硬件异常被忽略。BASEPRI一个9位寄存器。它定义了屏蔽优先级。

当设置为某值时,所有大于或等于该值的中断被屏蔽(值越大,优先级越低)。全为0(默认值):不屏蔽任何中断。2.2Cortex-M4内核基础2中断屏蔽寄存器PRIMASK、FAULTMASK和B3控制寄存器Cortex-M3/M4控制寄存器位功能CONTROL[1]堆栈指针选择0=选择主堆栈指针MSP(复位后缺省值)1=选择进程堆栈指针PSP在线程或基础级(没有在响应异常),可以使用PSP。在handler模式下,只允许使用MSP,所以此时不得往该位写1。CONTROL[0]0=特权级的线程模式1=用户级的线程模式handler模式永远都是特权级的。2.2Cortex-M4内核基础被用来定义特权级和堆栈指针的选择。这个寄存器有两位。特权级用户级主堆栈进程堆栈3控制寄存器Cortex-M3/M4控制寄存器位功能CO2.3.4操作模式两种模式和两种特权等级。操作模式决定控制器运行正常程序或运行异常处理程序。特权用户当运行一个异常(中断)程序处理者模式错误的用法当运行主应用程序线程模式线程模式在Cortex-M3/M4中的操作模式和权限级别特权级别提供了一种机制来保障访问存储器的关键区域,同时还提供了一个基本的安全模式。通过写Controlregister[0]=1,软件在特权访问级别可以使程序转换到用户访问级别。

用户程序不能够通过写控制寄存器直接变回特权状态。它要经过一个异常处理程序设置Controlregister[0]=0使得处理器切换回特权访问级别。2.2Cortex-M4内核基础特权级用户级线程模式处理器模式2.3.4操作模式特权用户当运行一个异常(中断)程序处理者工作模式和特权级别处理器模式线程模式特权级用户级始终特权级工作模式用于区别普通应用程序的代码和异常服务例程的代码(包括中断服务例程的代码)特权级别可以提供一种存储器访问的保护机制,使得普通的用户程序代码不能意外地,甚至是恶意地执行涉及到要害的操作。2.2Cortex-M4内核基础2.3.4操作模式工作模式和特权级别处理器模式线程模式特权级用户级始终特权级工特权执行可以访问所有资源。非特权执行时对有些资源的访问受到限制或不允许访问。特权访问和用户访问(非特权访问)的区别用户访问特权访问2.2Cortex-M4内核基础1特权级别特权执行可以访问所有资源。特权访问和用户访问(非特权访问)线程模式线程模式和处理器模式处理器模式在复位时控制器进入线程模式异常返回时控制器进入线程模式特权和用户(非特权)代码能够在线程模式下运行出现异常时控制器进入处理器模式在处理器模式中,所有代码都是特权访问的2工作模式2.2Cortex-M4内核基础线程模式线程模式和处理器模式处理器模式在复位时控制器进入线CONTROL[0]特权访问用户访问10控制寄存器的第0位3特权级和工作模式转换2.2Cortex-M4内核基础工作模式状态转换特权模式下通过MSR指令修改CONTROL[0]状态CONTROL[0]特权访问用户访问10控制寄存器的第0位33特权级和工作模式转换2.2Cortex-M4内核基础3特权级和工作模式转换2.2Cortex-M4内核基础当CONTROL[0]=0时,在异常处理的始末,只发生了工作模式的转换。线程模式handler模式线程模式(特权级)

(特权级)

(特权级)线程模式handler模式线程模式(用户级)

(特权级)

(用户级)若CONTROL[0]=1(线程模式+用户级),则在中断响应的始末,工作模式和特权等极都要发生变化。2.2Cortex-M4内核基础3特权级和工作模式转换当CONTROL[0]=0时,在异常处理的始末,只发生了工2.3存储器系统2.3存储器系统2.3存储器系统Cortex-M4内核的存储器系统的主要特性如下:(1)可寻址4GB线性地址物理空间。(2)支持小端和大端的存储器系统。Cortex-M4处理器可以选择使用小端或者大端的存储器系统。(3)位段访问。(4)写缓冲。对可缓冲存储器区域写操作需要花费几个周期时间,Cortex-M4处理器的写缓冲可以把写操作缓存起来,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论