第2章 S3C2410微处理器组成及程序员模型_第1页
第2章 S3C2410微处理器组成及程序员模型_第2页
第2章 S3C2410微处理器组成及程序员模型_第3页
第2章 S3C2410微处理器组成及程序员模型_第4页
第2章 S3C2410微处理器组成及程序员模型_第5页
已阅读5页,还剩141页未读 继续免费阅读

下载本文档

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

文档简介

第2章S3C2410A微处理器组成与程序员模型1本章重点:⑴S3C2410A微处理器概述;⑵S3C2410A微处理器组成、芯片封装、引脚编号与引脚信号名、特殊功能寄存器简介;⑶ARM920T简介、指令系统特点、功能模块;⑷ARM920T的程序员模型、处理器操作状态、存储器格式和数据类型、处理器操作方式、寄存器等。22.1ARM体系结构简介ARM

即AdvancedRISCMachines的缩写。ARM公司是设计公司,是知识产权(IP:IntellectualProperty)供应商,靠转让设计许可由合作伙伴来生产各具特色的芯片。有30多家半导体公司与ARM签订了硬件技术使用许可协议。ARM处理器的3大特点:小体积、低功耗、成本低、高性能16位/32位双指令集全球众多的合作伙伴34ARM公司以知识产权核(IP核)为主营业务IP核以三种形式存在。硬核软核固核ARM公司研发的处理器核以上面的三种形式销售5ARM公司的IP销售与服务ARM公司大学/研究所/企业IC制造商OEM生产商图例:服务付款技术支持ARM处理器的使用量6采用RISC架构的ARM微处理器一般具有如下特点:支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件。Thumb指令集比通常的8位和16位CISC/RISC处理器具有更好的代码密度;指令执行采用3级流水线/5级流水线技术;带有指令Cache和数据Cache,大量使用寄存器,指令执行速度更快。大多数数据操作都在寄存器中完成。寻址方式灵活简单,执行效率高。指令长度固定(在ARM状态下是32位,在Thumb状态下是16位7支持大端格式和小端格式两种方法存储字数据;支持Byte(字节,8位)、Halfword(半字,16位)和Word(字,32位)三种数据类型。支持用户、快中断、中断、管理、中止、系统和未定义等7种处理器模式,除了用户模式外,其余的均为特权模式;处理器芯片上都嵌入了在线仿真ICE-RT逻辑,便于通过JTAG来仿真调试ARM体系结构芯片,可以避免使用昂贵的在线仿真器。另外,在处理器核中还可以嵌入跟踪宏单元ETM,用于监控内部总线,实时跟踪指令和数据的执行;具有片上总线AMBA(AdvancedMicro-controllerBusArchitecture)。8AMBA定义了3组总线:先进高性能总线AHB(AdvancedHighperformanceBus);先进系统总线ASB(AdvancedSystemBus);先进外围总线APB(AdvancedPeripheralBus)。通过AMBA可以方便地扩充各种处理器及I/O,可以把DSP、其他处理器和I/O(如UART、定时器和接口等)都集成在一块芯片中;采用存储器映像I/O的方式,即把I/O端口地址作为特殊的存储器地址;具有协处理器接口。ARM允许接16个协处理器,如CP15用于系统控制,CP14用于调试控制器;采用了降低电源电压,可工作在3.0V以下;减少门的翻转次数,当某个功能电路不需要时禁止门翻转;减少门的数目,即降低芯片的集成度;降低时钟频率等一些措施降低功耗;体积小、低成本、高性能。9一个典型的ARM体系结构方框图如图2.1所示,包含有32位ALU、31个32位通用寄存器及6位状态寄存器、32×8位乘法器32×32位桶形移位寄存器、指令译码及控制逻辑、指令流水线和数据/地址寄存器等。10图2.1ARM体系结构方框图111.ALUARM体系结构的ALU与常用的ALU逻辑结构基本相同,由两个操作数锁存器、加法器、逻辑功能、结果及零检测逻辑构成。ALU的最小数据通路周期包含寄存器读时间、移位器延迟、ALU延迟、寄存器写建立时间、双相时钟间非重叠时间等几部分。2.桶形移位寄存器ARM采用了32×32位桶形移位寄存器,左移/右移n位、环移n位和算术右移n位等都可以一次完成,可以有效的减少移位的延迟时间。在桶形移位寄存器中,所有的输入端通过交叉开关(Crossbar)与所有的输出端相连。交叉开关采用NMOS晶体管来实现。3.高速乘法器ARM为了提高运算速度,采用两位乘法的方法,2位乘法可根据乘数的2位来实现“加-移位”运算。ARM的高速乘法器采用32×8位的结构,完成32×2位乘法也只需5个时钟周期。124.浮点部件在ARM体系结构中,浮点部件作为选件可根据需要选用,FPA10浮点加速器以协处理器方式与ARM相连,并通过协处理器指令的解释来执行。浮点的Load/Store指令使用频度要达到67%,故FPA10内部也采用Load/Store结构,有8个80位浮点寄存器组,指令执行也采用流水线结构。5.控制器ARM的控制器采用硬接线的可编程逻辑阵列PLA,其输入端有14根、输出端有40根,分别控制Load/Store多路乘法器、协处理器以及地址寄存器、ALU和移位器。6.寄存器ARM内含37个寄存器,包括31个通用32位寄存器和6个状态寄存器。1314ARM体系结构的扩充ARM32位处理器体系结构是市场占有率高的32位嵌入式RISC微处理器结构市场占有率大约为75%所有ARM处理器共享同一个体系结构。ARM体系结构的扩充包括:Thumb:16位指令集,用以改善代码密度;DSP:用于DSP应用的算术运算指令集;Jazeller:允许直接执行Java字节码的扩充。2.1.2

ARM微处理器系列ARM7系列ARM9系列ARM9E系列ARM10E系列ARM11系列SecurCore系列Cortex系列Inter的StrongARM和Xscale系列……15掌握ARM处理器的注意点初学者要弄清楚三个基本概念ARM体系结构版本ARM公司规定,长期使用ARM处理器核型号ARM公司规定,中期使用ARM处理器型号多个公司生产,各个公司自行规定16V4ARM7TDMI、ARM710T、ARM720T典型产品如Samsung公司的S3C4510BARM9TDMI、ARM920T、ARM922T、ARM940T典型产品如Samsung公司的S3C2410A/X、S3C2440A/X172.2S3C2410A微处理器

组成与引脚信号2.2.1S3C2410A微处理器组成⒈S3C2410A微处理器组成S3C2410A组成框图如图2.3所示。1819图2.3中,S3C2410A片内组成可以分为三部分:ARM920T、连接在AHB总线上的控制器,以及连接在APB总线上的控制器或外设。其中ARM920T在2.3节中详述。AHB(AdvancedHigh_performanceBus,先进高性能总线)是一种片上总线,用于连接高时钟频率和高性能的系统模块,支持突发传输、支持流水线操作,也支持单个数据传输,所有的时序都是以单一时钟的前沿为基准操作。20APB(AdvancedPeripheralBus,先进外设总线)也是一种片上总线,为低性能、慢速外设提供了较为简单的接口,不支持流水线操作。4通道DMA与总线桥支持存储器到存储器、I/O到存储器、存储器到I/O、I/O到I/O的DMA传输;它将AHB/APB的信号转换为合适的形式,以满足连接到APB上设备的要求。桥能够锁存地址、数据及控制信号,同时进行二次译码,选择相应的APB设备。21AMBA总线高级微控制器总线协议(AMBA)是1996年提出的,被ARM处理器做为片上总线结构;最初的AMBA总线包含ARM系统总线(ASB)和ARM外设总线(APB);ARM高性能总线(AHB)是新的标准,可以支持64位和128位宽度的ARM总线;22⒉AHB总线连接的控制器简介⑴存储器控制器·支持小端/大端数据存储格式·全部寻址空间为1GB,分为8个banks,每个128MB·bank1~bank7支持可编程的8/16/32位数据总线宽度,bank0支持可编程的16/32位数据总线宽度·bank0~bank7支持ROM/SRAM,其中bank6和bank7也支持SDRAM23·每个bank存储器访问周期可编程·对ROM/SRAM,支持外部等待信号(nWAIT)扩展总线周期·在Power_down,支持SDRAM自己刷新(self_refresh)模式·支持使用NorFlash、EEPROM等作为引导ROM·支持存储器与I/O端口统一寻址24⑵NandFlash控制器·支持从NandFlash存储器进行引导·有4KBSRAM内部缓冲区,用于引导时保存从NandFlash读出的程序·支持NandFlash存储器4KB(引导区)以后的区域作为一般NandFlash使用25⑶中断控制器·支持55个中断源,包括S3C2410A芯片外部,由引脚引入的24个中断源;其余为芯片内部中断源,看门狗(1个)、定时器(5个)、UART(9个)、DMA(4个)、RTC(2个)、ADC(2个)、IIC(1个)、SPI(2个)、SDI(1个)、USB(2个)、LCD(1个)以及电源失效(1个)·外部中断源通过编程,可选择中断请求信号使用电平或边沿触发方式·电平或边沿触发信号极性可编程·对于非常紧急的中断请求,支持快速中断请求FIQ26⑷LCD控制器LCD控制器支持STNLCD显示以及TFTLCD显示,显示缓冲区使用系统存储器(内存),支持专用LCDDMA将显示缓冲区数据传送到LCD控制器缓冲区。STNLCD显示特点:·支持4位双扫描、4位单扫描、8位单扫描显示类型STNLCD面板·支持单色、4灰度级、16灰度级、256色、4096色STNLCD显示27·支持多种屏幕尺寸,典型的有640×480、320×240、160×160等·最大虚拟屏显示存储器空间为4MB,在256色模式,支持的虚拟屏尺寸有4096×1024、2048×2048、1024×4096等28TFTLCD显示特点:

·支持1、2、4或8BPP(BitPerPixel)面板彩色显示

·支持16BPP真彩显示·在24BPP模式,支持最大16M色·支持多种屏幕尺寸,典型的有640×480、320×240、160×160等·最大虚拟屏显示存储器空间为4MB,在64K色模式,支持的虚拟屏尺寸有2048×1024等29⑸USB主控制器·2个端口的USB主(Host)控制器·兼容OHCIRev1.0·兼容USBV1.1·支持低速和全速设备30⑹时钟与电源管理·S3C2410A片内有MPLL(MainPhaseLockedLoop,主锁相环)和UPLL(USBPLL,USB锁相环)·UPLL产生的时钟用于USB主/设备控制器操作·MPLL产生的时钟在内核供电电压为2.0V时,最大频率为266MHz·时钟信号能够通过软件有选择地送到(或不送)每个功能模块·电源管理支持NORMAL、SLOW、IDLE和Power_OFF模式·由EINT[15:0]或RTC报警中断,能够从Power_OFF模式中将MCU唤醒31⑺ExtMaster对由S3C2410A芯片外部另一个总线主设备提出,并送到S3C2410A的请求控制局部总线的请求,以及S3C2410A的响应,进行管理。32⒊APB总线连接的部件简介⑴通用异步收发器(UART0、1、2)·3通道UART,支持基于查询、基于DMA或基于中断方式操作·支持5/6/7/8位串行数据发送/接收(Tx/Rx)·支持外部时钟(UEXTCLK)用于UART操作·可编程的波特率·支持红外通信协议IrDA1.033⑵通用I/O端口(GPIO)·GPIO端口共有117位,其中24位可用于外部中断请求源·通过编程,可以将各端口的不同位,设置为不同功能⑶定时器/脉宽调制·4通道16位脉宽调制定时器,1通道16位内部定时器,均支持基于DMA或基于中断方式操作34⑷实时时钟(RTC)⑸看门狗定时器(WDT)⑹A/D转换器与触摸屏⑺IIC(IntelIntegratedCircuit,内部集成电路)总线接口⑻IIS(IntelICSound,集成电路内部声音)总线接口⑼SPI(SerialPeripheralInterface,串行外设接口)⑽MMC/SD/SDIO主控制器⑾USB设备控制器35⒋操作电压、频率和封装⑴操作电压内核:1.8V,用于S3C2410A-20,最高200MHz;2.0V,用于S3C2410A-26,最高266MHz存储器与I/O:3.3V⑵操作频率最高到266MHz⑶芯片封装272-FBGA,精细倾斜球栅阵列封装362.2.2S3C2410A芯片封装、

引脚编号与引脚信号名⒈S3C2410A芯片封装形式S3C2410A芯片有272个引脚,FBGA封装,底视图见图2.2。图2.2中每个引脚所在行、列对应的字母、数字,是分配给该引脚的编号,例如左下引脚为A1,左上引脚为U1。3738⒉S3C2410A引脚编号与引脚信号名S3C2410A各引脚编号与对应的引脚信号名,见表2-1。表2-1中,如果一个引脚编号对应一个引脚信号名,那么这个引脚信号名就代表该引脚的缺省功能;如果一个引脚编号对应多个引脚信号名,那么带下划线的引脚信号名,代表该引脚的缺省功能。缺省功能是指Reset后,该引脚第一次配置前的功能。392.3ARM920T核ARM920T核也称ARM920T处理器、CPU、内核,或直接称为ARM920T。S3C2410A微处理器组成中包含了ARM920T核。ARM920T是通用微处理器ARM9TDMI系列中的一员,ARM9TDMI系列包含:ARM9TDMI(ARM9TDMI核)ARM940T(ARM9TDMI核、Cache和保护单元)ARM920T(ARM9TDMI核、Cache和MMU)40ARM9TDMIHarvard架构增加了可用的存储器宽度,指令存储器接口数据存储器接口指令Cache和数据Cache各自使用单独的地址线和单独的数据线。可以实现对指令和数据存储器的同时访问5级流水线:由取指、译码、执行、存储(数据缓冲)和回写组成实现了以下改进:改进CPI到~1.5提高了最大时钟频率41Cache和紧耦合器冯诺伊曼结构数据和指令共用一个缓存;哈佛体系结构有独立的指令和数据缓存;Cache改善了系统的整体性能,但也使程序的执行时间变得不可预测,对实时系统而言,代码执行的确定性——装载和存储指令或数据的时间必须是可预测的;ARM采用紧耦合器TCM实现可预测,TCM紧靠内核,保证取指或数据操作的时钟周期数。TCM位于存储器的地址映射中,可作为快速存储器访问;结合Cache和TCM,ARM即能改善性能,又能够获得可预测的实时响应;42ARM流水线ADDSUBADDCMPSUBADD取指译码执行时间周期1周期2周期343ARM流水线的级数ARM9流水线增加到5级,增加了存储器访问段和回写段,使ARM9处理能力平均可达到1.1Dhrystone,指令吞吐量增加了约13%。随着流水线深度(级数)的增加,每一段的工作量被削减了,这使得处理器可以工作在更高的频率,同时改进了性能;负面作用是增加了系统的延时,即内核在执行一条指令前,需要更多的周期来填充流水线;流水线级数的增加也意味着在某些段之间会产生数据相关;44ARM流水线结构的发展预取(Fetch)译码(Decode)执行(Execute)预取(Fetch)译码(Decode)执行(Execute)访存(Memory)写入(Write)预取(Fetch)译码(Decode)发送(Issue)预取(Fetch)预取(Fetch)执行(Execute)访存(Memory)写入(Write)译码(Decode)发送(Issue)执行(Execute)转换(Snny)访存(Memory)写入(Write)ARM7ARM9ARM10ARM1145ARM微处理器特性项目ARM7ARM9ARM10ARM11流水线3568典型频率(MHz)80150260335功耗(mW/MHz)0.060.19(+cache)0.5(+cache)0.4(+cache)性能MIPS**/MHz0.971.11.31.2架构冯

诺伊曼哈佛哈佛哈佛乘法器8

328

3216

3216

3246存储器管理无保护模式:没有存储器的硬件保护,只能提供非常有限的灵活性。通常用于小的、简单的嵌入式系统,不要求存储器保护;提供有限保护的存储器保护单元(MPU):MPU使用一个只用到少量存储区域的简单系统,这些区域由一组特殊的协处理器寄存器控制,每一个区域定义了专门的访问权限。适用于要求有存储器保护但没有复杂存储器系统映射的系统;提供全面保护的存储器管理单元(MMU):MMU使用一组转化表,以提供精细的存储器控制。这些表保存在主存里,并且提供虚拟地址与物理地址的映射和访问权限。MMU适用于支持多任务的复杂操作系统平台。47ARM9TDMI流水线的变化InstructionFetch

Shift+ALUMemoryAccessRegWriteRegReadRegDecodeFETCHDECODEEXECUTEMEMORYWRITEARM9TDMIARMorThumb

InstDecodeRegSelectRegReadShiftALURegWriteThumb®ARM

decompressARMdecodeInstructionFetchFETCHDECODEEXECUTEARM7TDMI48带Cache的ARM9TDMIARM9TDMIDCacheICacheMMUGLUE外部存储器ARM920T2x16KcachesMMU支持虚拟地址和内存保护写缓冲ARM940T2x4KcachesMPU写缓冲ARM9xxT49ARM微处理器的选型ARM内核的选择系统的工作频率片内存储器的容量片内外围电路的选择50ARM920T接口与AMBA总线架构兼容,ARM920T既可以作为全兼容的AMBA总线的主设备,又可以在测试该产品时作为从设备。512.3.2ARM920T指令系统特点S3C2410A微处理器中含有ARM920T核,使用的指令系统就是ARM920T的指令系统。ARM920T有两种指令集:32位的ARM指令集和16位的Thumb指令集。ARM指令集的主要特点有:所有的指令都是32位固定长度,便于译码和流水线实现,并且在内存中以4字节边界地址对齐保存;只有LOAD-STORE类型的指令才可以访问内存;所有的指令都可以条件执行;使用了桶型(barrel)移位器,可以在一个指令周期内完成移位操作和ALU(算术逻辑)操作。52Thumb指令集虽然是一个16位的指令集,但能够在32位结构的ARM920T处理器上运行。Thumb指令集是32位ARM指令集中最常用的指令功能上的一个子集。执行效率高、代码密度高。Thumb指令使用了32位核的全部优点:·32位地址空间;·32位寄存器;·32位移位器和ALU单元;·32位存储器传送器。532.3.3ARM920T功能模块ARM920T功能模块图见图2.3。54协处理器协处理器可以附属于ARM处理器,一个协处理器通过扩展指令或提供配置寄存器来扩展内核处理功能;协处理器可以通过一组专门的、提供load-store类型接口的ARM指令来访问。如协处理器15(CP15),用于控制Cache、TCM和存储器管理;协处理器也能通过提供一组专门的新指令来扩展指令集,如,处理向量浮点运算的指令集;这些指令在ARM流水线的译码阶段被处理,如果在译码阶段发现是一条协处理器指令,则把它送给相应的协处理器。如果该协处理器不存在,或不认识该指令,则ARM认为发生未定义指令异常;55ARM920T内部包含了两个协处理器:·CP14,CP14允许软件访问,作为调试(debug)通信通道使用。在CP14中定义的寄存器允许使用ARM的MCR和MRC指令访问(CP14在图2.3中未画出)。·CP15,系统控制协处理器,提供了附加的寄存器,被用于配置和控制Cache、MMU、保护系统(即MPU)、时钟模式及ARM920T其他系统选择(如大/小端操作等)。56ARM920T也有外部协处理器接口,允许在同一芯片上附加一个紧密耦合的协处理器,如浮点部件。连接到外部协处理器接口的任何协处理器提供的寄存器和操作,可以使用适当的ARM协处理器指令去访问和指定。572.4ARM920T的程序员模型2.4.1处理器操作状态⒈ARM920T处理器的两种操作状态·ARM状态,在这种状态执行32位长度的、字边界对齐的ARM指令。·Thumb状态,在这种状态执行16位长度的、半字边界对齐的Thumb指令。在Thumb状态,程序计数器PC使用bit[1]来选择切换半字。在ARM和Thumb之间转换状态,不影响处理器操作方式或寄存器内容。58⒉状态转换使用ARM指令集的BX指令、并且BX指令指定寄存器的bit[0]=1,能够从ARM状态进入到Thumb状态。使用Thumb指令集的BX指令、并且BX指令指定寄存器的bit[0]=0,能够从Thumb状态进入到ARM状态。无论处理器在ARM状态或Thumb状态,发生了异常,进入异常处理程序处理器一定是在ARM状态。如果一个异常在Thumb状态出现,处理器要转换到ARM状态,异常处理完返回时自动转换回Thumb状态。59刚进入异常处理程序后处理器处在ARM状态,如果需要,异常处理程序能够转换到Thumb状态,但是异常处理程序结束前,处理器必须转换到ARM状态,在ARM状态才允许异常处理程序正确的终止。602.4.2

存储器格式和数据类型⒈存储器格式ARM920T处理器把存储器看作一个以字节编号的单元的线性集合,编号即存储器地址,每个存储器单元能够存放1字节数据,对应一个地址。地址从0开始,连续上升,例如:地址从0到3的单元保存了第1个存储字;地址从4到7的单元保存了第2个存储字。凡是地址的最低2位二进制数为00,从这个地址开始,用连续4个单元保存一个字数据的,称为一个字数据存放在字边界对齐的地址单元中,简称地址是字边界对齐的。61ARM920T处理器允许使用大、小端格式,它能够对存储在存储器中的字以大端或小端格式访问。缺省格式是小端格式。大端或小端格式是指一个字数据中的4个字节数据,必须被放在字边界对齐的存储器地址A开始的连续4个字节地址单元中的什么位置。在数据以字存放在存储器中,而以字节或半字访问时,对CPU被配置为大端或小端格式要特别注意。62⑴小端格式在小端格式,处理器寄存器中的32位二进制数用bit[31:0]表示,其中bit[31]为最高位,bit[0]为最低位,分为4字节,bit[31:24]为数据的最高字节,bit[7:0]为数据的最低字节。当寄存器的内容以字格式保存在字边界对齐的存储器地址A中时,存储器4个地址对应的单元中保存的字节数据与寄存器bit[31:0]的对应关系见图2.4。63⑵大端格式在大端格式,当寄存器的内容以字格式保存在字边界对齐的存储器地址A中时,存储器4个地址对应的单元中保存的字节数据与寄存器bit[31:0]的对应关系见图2.5。64⒉数据类型ARM920T处理器支持三种数据类型:·字,32位;·半字,16位;·字节,8位。所谓的边界对齐必须遵循:·字数据必须以4字节为边界对齐存取;·半字数据必须以2字节为边界对齐存取;·字节数据可以使用任意字节地址存取。存储器系统支持上述三种数据类型的存取。6566处理器模式说明备注用户(usr)正常程序执行模式不能直接切换到其它模式系统(sys)运行操作系统的特权任务与用户模式类似,但具有可以直接切换到其它模式等特权快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式中断(irq)用于通用中断处理IRQ异常响应时进入此模式管理(svc)操作系统保护模式系统复位和软件中断响应时进入此模式中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式2.4.3处理器工作模式(1)ARM处理器有7种工作模式67处理器工作模式(2)特权模式处理器模式说明备注用户(usr)正常程序工作模式不能直接切换到其它模式系统(sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式中断(irq)用于通用中断处理IRQ异常响应时进入此模式管理(svc)操作系统保护代码系统复位和软件中断响应时进入此模式中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式

除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。未定义(und)中止(abt)管理(svc)中断(irq)快中断(fiq)系统(sys)68处理器工作模式(3)用户和系统模式处理器模式说明备注用户(usr)正常程序工作模式不能直接切换到其它模式系统(sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式中断(irq)用于通用中断处理IRQ异常响应时进入此模式管理(svc)操作系统保护代码系统复位和软件中断响应时进入此模式中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式

这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。系统(sys)用户(usr)692.4.4寄存器ARM920T共有37个寄存器。其中:31个是32位的通用寄存器,6个是32位的状态寄存器。在同一时间内这37个寄存器不是全部都可以存取的。处理器操作状态(ARM或Thumb)和操作方式(用户、中断等7种)确定哪些寄存器对程序员是可存取的。70寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiq*R9(SB,v6)R9R9_fiq*R10(SL,v7)R10R10_fiq*R11(FP,v8)R11R11_fiq*R12(IP)R12R12_fiq*R13(SP)R13R13_svc*R13_abt*R13_und*R13_irq*R13_fiq*R14(LR)R14R14_svc*R14_abt*R14_und*R14_irq*R14_fiq*R15(PC)R15状态寄存器R16(CPSR)CPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq⒈ARM状态各模式下的寄存器71寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM状态各模式下的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abtCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。72寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用户无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系统SPSR_abtCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定义SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中断SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中断ARM状态各模式下可以访问的寄存器73寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0在汇编语言中寄存器R0~R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。74寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0其中R0~R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。75寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8~R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器76寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8~R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。77寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR1378寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆栈指针寄存器R13(SP)寄存器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。79寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq链接寄存器R14(LR)

R14为链接寄存器(LR),在结构上有两个特殊功能:在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。80Lable程序A程序BR14链接寄存器R14(LR)R14(LR)寄存器与子程序调用BLLable地址A???MOVPC,LRR14(地址A)Lable???1.程序A执行过程中调用程序B;操作流程2.程序跳转至标号Lable,执行程序B。同时硬件将“BLLable”指令的下一条指令所在地址存入R14(LR);3.程序B执行最后,将R14寄存器的内容放入PC,返回程序A;81链接寄存器R14(LR)R14寄存器与异常发生异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。区别在于有些异常有一个小常量的偏移。82链接寄存器R14(LR)R14寄存器注意要点当发生异常嵌套时,这些异常之间可能会发生冲突。例如:如果用户在用户模式下执行程序时发生了IRQ中断,用户模式寄存器不会被破坏。但是如果允许在IRQ模式下的中断处理程序重新使能IRQ中断,并且发生了嵌套的IRQ中断时,外部中断处理程序保存在R14_irq中的任何值都将被嵌套中断的返回地址所覆盖。83链接寄存器R14(LR)R14寄存器注意要点R14R14_irq用户模式下的程序IRQ模式下的程序AareturnB...XA地址A地址A1.执行用户模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3.IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;未被破坏R14_irq84链接寄存器R14(LR)R14寄存器注意要点R14R14_irq用户模式下的程序IRQ模式下的程序AaB...XA地址A地址A1.执行用户模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3.IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;未被破坏IRQ模式下的程序BareturnB...XA地址B地址B4.如果在IRQ处理程序中打开IRQ中断,并且再次发生IRQ中断;5.硬件将返回地址保存在R14_irq寄存器中,原来保存的返回地址将被覆盖,造成错误;R14_irq被破坏6.在程序B返回到程序A,然后在返回到用户模式下被中断的程序时,发生错误,将不能正确返回;returnreturn

解决办法是确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将R14入栈),或者切换到其它处理器模式下。85当处理器执行在ARM状态:所有指令32bits宽所有指令必须word对齐所以pc值由bits[31:2]决定,bits[1:0]未定义(所以指令不能halfword/byte对齐).当处理器执行在Thumb状态:所有指令16bits宽所有指令必须halfword

对齐所以pc值由bits[31:1]决定,bits[0]未定义(所以指令不能

byte对齐).当处理器执行在Jazelle状态:所有指令8bits宽处理器执行

word存取一次取4条指令程序计数器R15(PC)86寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序计数器R15(PC)寄存器R15为程序计数器(PC),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的。87程序计数器R15(PC)读R15的限制

正常操作时,从R15读取的值是处理器正在取指的地址,即当前正在执行指令的地址加上8个字节(两条ARM指令的长度)。由于ARM指令总是以字为单位,所以R15寄存器的最低两位总是为0。LDRR0,PC??????PCPC-4PC-8正在执行正在译码正在取指流水线状态地址程序代码88程序计数器R15(PC)读R15的限制当使用STR或STM指令保存R15时,会有一个例外。这些指令可能将当前指令地址加8字节或加12字节保存(将来可能还有其它数字)。偏移量是8还是12取决于具体的ARM芯片,但是对于一个确定的芯片,这个值是一个常量。所以最好避免使用STR和STM指令来保存R15,如果很难做到,那么应当在程序中计算出该芯片的偏移量。89程序计数器R15(PC)写R15的限制

正常操作时,写入R15的值被当作一个指令地址,程序从这个地址处继续执行(相当于执行一次无条件跳转)。

90程序计数器R15(PC)写R15的限制

由于ARM指令以字节为边界,因此写入R15的值最低两位通常为0b00。具体的规则取决于内核结构的版本:在ARM结构V3版及以下版本中,写入R15的值的最低两位被忽略,因此跳转地址由指令的实际目标地址(写入R15的值)和0xFFFFFFFC相与得到;在ARM结构V4版及以上版本中,写入R15的值的最低两位为0,如果不是,结果将不可预测。91⒊在ARM状态下和在Thumb状态下寄存器之间的关系在Thumb状态下的寄存器与在ARM状态下寄存器的关系,遵照以下规定:Thumb状态下的r0-r7与ARM状态下的r0-r7是相同的;Thumb状态下的CPSR和SPSR与ARM状态下的CPSR和SPSR是相同的;Thumb状态下的SP映射到ARM状态下的r13;Thumb状态下的LR映射到ARM状态下的r14;Thumb状态下的PC映射到ARM状态下的PC(r15)。上述关系用图2.8表示。另外,在Thumb状态下,寄存器r0-r7称为低寄存器组,寄存器r8-r15称为高寄存器组。922.Thumb状态下的寄存器Thumb状态下的寄存器集如图所示,是ARM状态下的寄存器集的子集。程序员可以直接访问8个通用寄存器(R0~R7)、PC、SP、LR和CPSR。每一种特权模式都有一组SP、LR和SPSR。Thumb状态R0~R7与ARM状态R0~R7是一致的。Thumb状态CPSR和SPSR与ARM的状态CPSR和SPSR是一致的。Thumb状态SP映射到ARM状态R13。Thumb状态LR映射到ARM状态R14。Thumb状态PC映射到ARM状态PC(R15)。9394Thumb状态寄存器在Arm状态寄存器上的映射R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R0

堆栈指针(R13)

连接寄存器(R14)

程序计数器(R15)

低寄存器高寄存器95⒋在Thumb状态下访问高寄存器组在Thumb状态下,高寄存器组r8-r15不是标准寄存器组的一部分。汇编语言程序员访问它们受到了限制,但是能够使用它们作为快速暂时存储器。程序员可以使用专门的MOV、CMP和ADD指令,其中MOV指令,可以从范围在r0-r7的低寄存器组传送一个值到高寄存器组;或从高寄存器组传送一个值到低寄存器组。CMP指令允许比较高低两个寄存器组中的寄存器的值。ADD指令允许将高寄存器组中寄存器的值与低寄存器组中寄存器的值相加。MOV、CMP和ADD指令也允许使用的两个寄存器都在高寄存器组中。

962.4.5程序状态寄存器

ARM9TDMI处理器包含当前程序状态寄存器

(CPSR),加上5个程序状态保存寄存器SPSR,当异常发生时,用于保存CPSR的状态。这些程序状态寄存器有以下功能:保存最近执行过的ALU操作的信息;控制允许或禁止中断;设置处理器操作方式。程序状态寄存器每一位含义表示在图2.9中。97ARM处理器的CPSR寄存器和SPSR寄存器的位定义格式图解98CPSR和SPSR的格式含义1.条件码标志N、Z、C、V(Negative、Zero、Carry、oVerflow)均为条件码标志位(ConditionCodeFlags),它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。CPSR中的条件码标志可由大多数指令检测以决定指令是否执行。在ARM状态下,绝大多数的指令都是有条件执行的。在Thumb状态下,仅有分支指令是有条件执行的。通常条件码标志通过执行比较指令(CMN、CMP、TEQ、TST)、一些算术运算、逻辑运算和传送指令进行修改。9999条件码标志的通常含义N:如果结果是带符号二进制补码,那么,若结果为负数,则N=1;若结果为正数或0,则N=0。Z:若指令的结果为0,则置1(通常表示比较的结果为“相等”),否则置0。C:可用如下4种方法之一设置:①加法(包括比较指令CMN)。若加法产生进位(即无符号溢出),则C置1;否则置0。②减法(包括比较指令CMP)。若减法产生借位(即无符号溢出),则C置0;否则置1。③对于结合移位操作的非加法/减法指令,C置为移出值的最后1位。④对于其他非加法/减法指令,C通常不改变。V:可用如下两种方法设置,即①对于加法或减法指令,当发生带符号溢出时,V置1,认为操作数和结果是补码形式的带符号整数。②对于非加法/减法指令,V通常不改变。1001002.控制位程序状态寄存器的最低8位I、F、T和M[4:0]

统称控制位。它们是:(1)中断禁止位;(2)T状态位;(3)方式位。当异常出现时,控制位改变。当处理器在特权方式操作时,软件能够操作这些位。101⑴中断禁止位I和F位是中断禁止位:当I位被置1时,IRQ中断被禁止;当F位被置1时,FIQ中断被禁止;当I位被清0时,IRQ中断被允许;当F位被清0时,FIQ中断被允许。102⑵T位

T位反映了处理器当前所处的操作状态:当T位被置1时,处理器在Thumb状态执行;当T位被清0时,处理器在ARM状态执行。操作状态由外部信号TBIT反映。要注意的是,决不能使用MSR指令去强制改变在CPSR中的T位的状态,如果这样做了,处理器进入不可预知的状态。103⑶方式位M[4:0]确定处理器的操作方式,如表2.3所示。不是所有方式位的组合都用来定义合法的处理器操作方式,仅仅使用了方式位组合中的一部分,如下表所示。104表2.3不同方式位对应的不同操作方式M[4:0]Mode(方式)Thumb状态可见寄存器ARM状态可见寄存器10000User(用户)r0-r7、SP、LR、PC、CPSRr0-r14、PC、CPSR10001FIQ(快速中断请求)r0-r7、SP_fiq、LR_fiq、PC、CPSR、SPSR_fiqr0-r7、r8_fiq-r14_fiq、PC、CPSR、SPSR_fiq10010IRQ(中断请求)r0-r7、SP_irq、LR_irq、PC、CPSR、SPSR_irqr0-r12、r13_irq、r14_irq、PC、CPSR、SPSR_irq10011Supervisor(管理)r0-r7、SP_svc、LR_svc、PC、CPSR、SPSR_svcr0-r12、r13_svc、r14_svc、PC、CPSR、SPSR_svc10111Abort(中止)r0-r7、SP_abt、LR_abt、PC、CPSR、SPSR_abtr0-r12、r13_abt、r14_abt、PC、CPSR、SPSR_abt11011Undefined(未定义)r0-r7、SP_und、LR_und、PC、CPSR、SPSR_undr0-r12、r13_und、r14_und、PC、CPSR、SPSR_und11111System(系统)r0-r7、SP、LR、PC、CPSRr0-r14、PC、CPSR105⒊保留位在CPSR和SPSR中,保留位没有用处,仅仅用于保留。当改变CPSR或SPSR标志位或控制位时,要确认这些保留位没有被改变。同样要确认程序不依赖保留位所含的专门值,因为后续处理器可能将这些位置1或清0。1062.5ARM异常处理在一个正常的程序流程执行过程中,由内部或外部源产生的一个事件使正常的程序产生暂时的停止时,称之为异常。异常是由内部或外部源产生并引起处理器处理一个事件,例如一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,当异常处理完成之后,恢复保留的当前处理器状态,继续执行当前程序。多个异常同时发生时,处理器将会按固定的优先级进行处理。107异常和中断异常可分为两类:同步异常(synchronousexceptions)和异步异常(asynchronousexceptions);108同步异常同步异常是由内部事件(如处理器指令运行产生的事件)引起的异常称为同步异常,包括:在某些处理器体系结构中,对于确定的数据尺寸必须从内存的偶数地址进行读和写操作。从一个奇数内存地址的读或写操作将引起存储器存取一个错误事件并且引起一个异常;造成被零除的算术运算引发一个异常109异步异常异步异常是由外部事件(如处理器指令执行不相关的事件)引起的异常称为异步异常,一般这些外部事件与硬件信号相关,又称为中断,包括:复位异常,按下嵌入式板上的复位按钮,触发一个异步的异常;如串口、网口等通讯模块,接收数据包产生异常;110异常分类异常可分为4类:中断(interrupt)、陷井(trap)、故障(fault)和终止(abort)类别原因异步/同步返回行为中断来自I/O设备的信号异步总是返回到下一条指令陷井有意的异常同步总是返回到下一条指令故障潜在可恢复的错误同步可能返回到当前指令终止不可恢复的错误同步不会返回111中断IcurrInext(1)在当前指令的执行过程中,中断的管脚电压变高了(2)在当前指令完成后控制传递给处理程序(3)中断处理程序运行(4)处理程序返回到下一条指令112陷井syscallInext(1)应用程序执行一次系统调用(2)控制传递给处理程序(3)陷井处理程序运行(4)处理程序返回到Syscall之后的指令陷井是有意的异常,通常在用户程序和内核之间提

温馨提示

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

评论

0/150

提交评论