




已阅读5页,还剩141页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第2章S3C2410A微处理器组成与程序员模型,1,2,本章重点:,S3C2410A微处理器概述;S3C2410A微处理器组成、芯片封装、引脚编号与引脚信号名、特殊功能寄存器简介;ARM920T简介、指令系统特点、功能模块;ARM920T的程序员模型、处理器操作状态、存储器格式和数据类型、处理器操作方式、寄存器等。,3,2.1ARM体系结构简介,ARM即AdvancedRISCMachines的缩写。ARM公司是设计公司,是知识产权(IP:IntellectualProperty)供应商,靠转让设计许可由合作伙伴来生产各具特色的芯片。有30多家半导体公司与ARM签订了硬件技术使用许可协议。ARM处理器的3大特点:小体积、低功耗、成本低、高性能16位32位双指令集全球众多的合作伙伴,3,4,4,ARM公司以知识产权核(IP核)为主营业务,IP核以三种形式存在。硬核软核固核ARM公司研发的处理器核以上面的三种形式销售,5,5,ARM公司的IP销售与服务,ARM公司,大学/研究所/企业,IC制造商,OEM生产商,6,ARM处理器的使用量,7,采用RISC架构的ARM微处理器一般具有如下特点:支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件。Thumb指令集比通常的8位和16位CISC/RISC处理器具有更好的代码密度;指令执行采用3级流水线/5级流水线技术;带有指令Cache和数据Cache,大量使用寄存器,指令执行速度更快。大多数数据操作都在寄存器中完成。寻址方式灵活简单,执行效率高。指令长度固定(在ARM状态下是32位,在Thumb状态下是16位,7,8,支持大端格式和小端格式两种方法存储字数据;支持Byte(字节,8位)、Halfword(半字,16位)和Word(字,32位)三种数据类型。支持用户、快中断、中断、管理、中止、系统和未定义等7种处理器模式,除了用户模式外,其余的均为特权模式;处理器芯片上都嵌入了在线仿真ICE-RT逻辑,便于通过JTAG来仿真调试ARM体系结构芯片,可以避免使用昂贵的在线仿真器。另外,在处理器核中还可以嵌入跟踪宏单元ETM,用于监控内部总线,实时跟踪指令和数据的执行;具有片上总线AMBA(AdvancedMicro-controllerBusArchitecture)。,8,9,AMBA定义了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,10,一个典型的ARM体系结构方框图如图2.1所示,包含有32位ALU、31个32位通用寄存器及6位状态寄存器、328位乘法器3232位桶形移位寄存器、指令译码及控制逻辑、指令流水线和数据地址寄存器等。,10,11,图2.1ARM体系结构方框图,11,12,1ALUARM体系结构的ALU与常用的ALU逻辑结构基本相同,由两个操作数锁存器、加法器、逻辑功能、结果及零检测逻辑构成。ALU的最小数据通路周期包含寄存器读时间、移位器延迟、ALU延迟、寄存器写建立时间、双相时钟间非重叠时间等几部分。2桶形移位寄存器ARM采用了3232位桶形移位寄存器,左移右移n位、环移n位和算术右移n位等都可以一次完成,可以有效的减少移位的延迟时间。在桶形移位寄存器中,所有的输入端通过交叉开关(Crossbar)与所有的输出端相连。交叉开关采用NMOS晶体管来实现。3高速乘法器ARM为了提高运算速度,采用两位乘法的方法,2位乘法可根据乘数的2位来实现“加移位”运算。ARM的高速乘法器采用328位的结构,完成322位乘法也只需5个时钟周期。,12,13,4浮点部件在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个状态寄存器。,13,14,14,ARM体系结构的扩充,ARM32位处理器体系结构是市场占有率高的32位嵌入式RISC微处理器结构市场占有率大约为75%所有ARM处理器共享同一个体系结构。ARM体系结构的扩充包括:Thumb:16位指令集,用以改善代码密度;DSP:用于DSP应用的算术运算指令集;Jazeller:允许直接执行Java字节码的扩充。,15,2.1.2ARM微处理器系列,ARM7系列ARM9系列ARM9E系列ARM10E系列ARM11系列SecurCore系列Cortex系列Inter的StrongARM和Xscale系列,15,16,掌握ARM处理器的注意点,初学者要弄清楚三个基本概念ARM体系结构版本ARM公司规定,长期使用ARM处理器核型号ARM公司规定,中期使用ARM处理器型号多个公司生产,各个公司自行规定,16,17,V4ARM7TDMI、ARM710T、ARM720T典型产品如Samsung公司的S3C4510BARM9TDMI、ARM920T、ARM922T、ARM940T典型产品如Samsung公司的S3C2410A/X、S3C2440A/X,18,2.2S3C2410A微处理器组成与引脚信号,2.2.1S3C2410A微处理器组成S3C2410A微处理器组成S3C2410A组成框图如图2.3所示。,19,20,图2.3中,S3C2410A片内组成可以分为三部分:ARM920T、连接在AHB总线上的控制器,以及连接在APB总线上的控制器或外设。其中ARM920T在2.3节中详述。AHB(AdvancedHigh_performanceBus,先进高性能总线)是一种片上总线,用于连接高时钟频率和高性能的系统模块,支持突发传输、支持流水线操作,也支持单个数据传输,所有的时序都是以单一时钟的前沿为基准操作。,21,APB(AdvancedPeripheralBus,先进外设总线)也是一种片上总线,为低性能、慢速外设提供了较为简单的接口,不支持流水线操作。4通道DMA与总线桥支持存储器到存储器、I/O到存储器、存储器到I/O、I/O到I/O的DMA传输;它将AHB/APB的信号转换为合适的形式,以满足连接到APB上设备的要求。桥能够锁存地址、数据及控制信号,同时进行二次译码,选择相应的APB设备。,22,AMBA总线,高级微控制器总线协议(AMBA)是1996年提出的,被ARM处理器做为片上总线结构;最初的AMBA总线包含ARM系统总线(ASB)和ARM外设总线(APB);ARM高性能总线(AHB)是新的标准,可以支持64位和128位宽度的ARM总线;,23,AHB总线连接的控制器简介,存储器控制器支持小端/大端数据存储格式全部寻址空间为1GB,分为8个banks,每个128MBbank1bank7支持可编程的8/16/32位数据总线宽度,bank0支持可编程的16/32位数据总线宽度bank0bank7支持ROM/SRAM,其中bank6和bank7也支持SDRAM,24,每个bank存储器访问周期可编程对ROM/SRAM,支持外部等待信号(nWAIT)扩展总线周期在Power_down,支持SDRAM自己刷新(self_refresh)模式支持使用NorFlash、EEPROM等作为引导ROM支持存储器与I/O端口统一寻址,25,NandFlash控制器支持从NandFlash存储器进行引导有4KBSRAM内部缓冲区,用于引导时保存从NandFlash读出的程序支持NandFlash存储器4KB(引导区)以后的区域作为一般NandFlash使用,26,中断控制器支持55个中断源,包括S3C2410A芯片外部,由引脚引入的24个中断源;其余为芯片内部中断源,看门狗(1个)、定时器(5个)、UART(9个)、DMA(4个)、RTC(2个)、ADC(2个)、IIC(1个)、SPI(2个)、SDI(1个)、USB(2个)、LCD(1个)以及电源失效(1个)外部中断源通过编程,可选择中断请求信号使用电平或边沿触发方式电平或边沿触发信号极性可编程对于非常紧急的中断请求,支持快速中断请求FIQ,27,LCD控制器LCD控制器支持STNLCD显示以及TFTLCD显示,显示缓冲区使用系统存储器(内存),支持专用LCDDMA将显示缓冲区数据传送到LCD控制器缓冲区。STNLCD显示特点:支持4位双扫描、4位单扫描、8位单扫描显示类型STNLCD面板支持单色、4灰度级、16灰度级、256色、4096色STNLCD显示,28,支持多种屏幕尺寸,典型的有640480、320240、160160等最大虚拟屏显示存储器空间为4MB,在256色模式,支持的虚拟屏尺寸有40961024、20482048、10244096等,29,TFTLCD显示特点:支持1、2、4或8BPP(BitPerPixel)面板彩色显示支持16BPP真彩显示在24BPP模式,支持最大16M色支持多种屏幕尺寸,典型的有640480、320240、160160等最大虚拟屏显示存储器空间为4MB,在64K色模式,支持的虚拟屏尺寸有20481024等,30,USB主控制器2个端口的USB主(Host)控制器兼容OHCIRev1.0兼容USBV1.1支持低速和全速设备,31,时钟与电源管理S3C2410A片内有MPLL(MainPhaseLockedLoop,主锁相环)和UPLL(USBPLL,USB锁相环)UPLL产生的时钟用于USB主/设备控制器操作MPLL产生的时钟在内核供电电压为2.0V时,最大频率为266MHz时钟信号能够通过软件有选择地送到(或不送)每个功能模块电源管理支持NORMAL、SLOW、IDLE和Power_OFF模式由EINT15:0或RTC报警中断,能够从Power_OFF模式中将MCU唤醒,32,ExtMaster对由S3C2410A芯片外部另一个总线主设备提出,并送到S3C2410A的请求控制局部总线的请求,以及S3C2410A的响应,进行管理。,33,APB总线连接的部件简介,通用异步收发器(UART0、1、2)3通道UART,支持基于查询、基于DMA或基于中断方式操作支持5/6/7/8位串行数据发送/接收(Tx/Rx)支持外部时钟(UEXTCLK)用于UART操作可编程的波特率支持红外通信协议IrDA1.0,34,通用I/O端口(GPIO)GPIO端口共有117位,其中24位可用于外部中断请求源通过编程,可以将各端口的不同位,设置为不同功能定时器/脉宽调制4通道16位脉宽调制定时器,1通道16位内部定时器,均支持基于DMA或基于中断方式操作,35,实时时钟(RTC)看门狗定时器(WDT)A/D转换器与触摸屏IIC(IntelIntegratedCircuit,内部集成电路)总线接口IIS(IntelICSound,集成电路内部声音)总线接口SPI(SerialPeripheralInterface,串行外设接口)MMC/SD/SDIO主控制器USB设备控制器,36,操作电压、频率和封装,操作电压内核:1.8V,用于S3C2410A-20,最高200MHz;2.0V,用于S3C2410A-26,最高266MHz存储器与I/O:3.3V操作频率最高到266MHz芯片封装272-FBGA,精细倾斜球栅阵列封装,37,2.2.2S3C2410A芯片封装、引脚编号与引脚信号名,S3C2410A芯片封装形式S3C2410A芯片有272个引脚,FBGA封装,底视图见图2.2。图2.2中每个引脚所在行、列对应的字母、数字,是分配给该引脚的编号,例如左下引脚为A1,左上引脚为U1。,38,39,S3C2410A引脚编号与引脚信号名,S3C2410A各引脚编号与对应的引脚信号名,见表2-1。表2-1中,如果一个引脚编号对应一个引脚信号名,那么这个引脚信号名就代表该引脚的缺省功能;如果一个引脚编号对应多个引脚信号名,那么带下划线的引脚信号名,代表该引脚的缺省功能。缺省功能是指Reset后,该引脚第一次配置前的功能。,40,2.3ARM920T核,ARM920T核也称ARM920T处理器、CPU、内核,或直接称为ARM920T。S3C2410A微处理器组成中包含了ARM920T核。ARM920T是通用微处理器ARM9TDMI系列中的一员,ARM9TDMI系列包含:ARM9TDMI(ARM9TDMI核)ARM940T(ARM9TDMI核、Cache和保护单元)ARM920T(ARM9TDMI核、Cache和MMU),41,ARM9TDMI,Harvard架构增加了可用的存储器宽度,指令存储器接口数据存储器接口指令Cache和数据Cache各自使用单独的地址线和单独的数据线。可以实现对指令和数据存储器的同时访问5级流水线:由取指、译码、执行、存储(数据缓冲)和回写组成实现了以下改进:改进CPI到1.5提高了最大时钟频率,42,Cache和紧耦合器,冯诺伊曼结构数据和指令共用一个缓存;哈佛体系结构有独立的指令和数据缓存;Cache改善了系统的整体性能,但也使程序的执行时间变得不可预测,对实时系统而言,代码执行的确定性装载和存储指令或数据的时间必须是可预测的;ARM采用紧耦合器TCM实现可预测,TCM紧靠内核,保证取指或数据操作的时钟周期数。TCM位于存储器的地址映射中,可作为快速存储器访问;结合Cache和TCM,ARM即能改善性能,又能够获得可预测的实时响应;,43,ARM流水线,ADD,SUB,ADD,CMP,SUB,ADD,取指,译码,执行,时间,周期1,周期2,周期3,44,ARM流水线的级数,ARM9流水线增加到5级,增加了存储器访问段和回写段,使ARM9处理能力平均可达到1.1Dhrystone,指令吞吐量增加了约13%。随着流水线深度(级数)的增加,每一段的工作量被削减了,这使得处理器可以工作在更高的频率,同时改进了性能;负面作用是增加了系统的延时,即内核在执行一条指令前,需要更多的周期来填充流水线;流水线级数的增加也意味着在某些段之间会产生数据相关;,45,ARM流水线结构的发展,46,ARM微处理器特性,47,存储器管理,无保护模式:没有存储器的硬件保护,只能提供非常有限的灵活性。通常用于小的、简单的嵌入式系统,不要求存储器保护;提供有限保护的存储器保护单元(MPU):MPU使用一个只用到少量存储区域的简单系统,这些区域由一组特殊的协处理器寄存器控制,每一个区域定义了专门的访问权限。适用于要求有存储器保护但没有复杂存储器系统映射的系统;提供全面保护的存储器管理单元(MMU):MMU使用一组转化表,以提供精细的存储器控制。这些表保存在主存里,并且提供虚拟地址与物理地址的映射和访问权限。MMU适用于支持多任务的复杂操作系统平台。,48,ARM9TDMI流水线的变化,49,带Cache的ARM9TDMI,ARM9TDMI,DCache,ICache,MMU,GLUE,外部存储器,ARM920T2x16KcachesMMU支持虚拟地址和内存保护写缓冲,ARM940T2x4KcachesMPU写缓冲,ARM9xxT,50,ARM微处理器的选型,ARM内核的选择系统的工作频率片内存储器的容量片内外围电路的选择,51,ARM920T接口与AMBA总线架构兼容,ARM920T既可以作为全兼容的AMBA总线的主设备,又可以在测试该产品时作为从设备。,52,2.3.2ARM920T指令系统特点,S3C2410A微处理器中含有ARM920T核,使用的指令系统就是ARM920T的指令系统。ARM920T有两种指令集:32位的ARM指令集和16位的Thumb指令集。ARM指令集的主要特点有:所有的指令都是32位固定长度,便于译码和流水线实现,并且在内存中以4字节边界地址对齐保存;只有LOAD-STORE类型的指令才可以访问内存;所有的指令都可以条件执行;使用了桶型(barrel)移位器,可以在一个指令周期内完成移位操作和ALU(算术逻辑)操作。,53,Thumb指令集虽然是一个16位的指令集,但能够在32位结构的ARM920T处理器上运行。Thumb指令集是32位ARM指令集中最常用的指令功能上的一个子集。执行效率高、代码密度高。Thumb指令使用了32位核的全部优点:32位地址空间;32位寄存器;32位移位器和ALU单元;32位存储器传送器。,54,2.3.3ARM920T功能模块,ARM920T功能模块图见图2.3。,55,协处理器,协处理器可以附属于ARM处理器,一个协处理器通过扩展指令或提供配置寄存器来扩展内核处理功能;协处理器可以通过一组专门的、提供load-store类型接口的ARM指令来访问。如协处理器15(CP15),用于控制Cache、TCM和存储器管理;协处理器也能通过提供一组专门的新指令来扩展指令集,如,处理向量浮点运算的指令集;这些指令在ARM流水线的译码阶段被处理,如果在译码阶段发现是一条协处理器指令,则把它送给相应的协处理器。如果该协处理器不存在,或不认识该指令,则ARM认为发生未定义指令异常;,56,ARM920T内部包含了两个协处理器:CP14,CP14允许软件访问,作为调试(debug)通信通道使用。在CP14中定义的寄存器允许使用ARM的MCR和MRC指令访问(CP14在图2.3中未画出)。CP15,系统控制协处理器,提供了附加的寄存器,被用于配置和控制Cache、MMU、保护系统(即MPU)、时钟模式及ARM920T其他系统选择(如大/小端操作等)。,57,ARM920T也有外部协处理器接口,允许在同一芯片上附加一个紧密耦合的协处理器,如浮点部件。连接到外部协处理器接口的任何协处理器提供的寄存器和操作,可以使用适当的ARM协处理器指令去访问和指定。,58,2.4ARM920T的程序员模型,2.4.1处理器操作状态ARM920T处理器的两种操作状态ARM状态,在这种状态执行32位长度的、字边界对齐的ARM指令。Thumb状态,在这种状态执行16位长度的、半字边界对齐的Thumb指令。在Thumb状态,程序计数器PC使用bit1来选择切换半字。在ARM和Thumb之间转换状态,不影响处理器操作方式或寄存器内容。,59,状态转换,使用ARM指令集的BX指令、并且BX指令指定寄存器的bit0=1,能够从ARM状态进入到Thumb状态。使用Thumb指令集的BX指令、并且BX指令指定寄存器的bit0=0,能够从Thumb状态进入到ARM状态。无论处理器在ARM状态或Thumb状态,发生了异常,进入异常处理程序处理器一定是在ARM状态。如果一个异常在Thumb状态出现,处理器要转换到ARM状态,异常处理完返回时自动转换回Thumb状态。,60,刚进入异常处理程序后处理器处在ARM状态,如果需要,异常处理程序能够转换到Thumb状态,但是异常处理程序结束前,处理器必须转换到ARM状态,在ARM状态才允许异常处理程序正确的终止。,61,2.4.2存储器格式和数据类型,存储器格式ARM920T处理器把存储器看作一个以字节编号的单元的线性集合,编号即存储器地址,每个存储器单元能够存放1字节数据,对应一个地址。地址从0开始,连续上升,例如:地址从0到3的单元保存了第1个存储字;地址从4到7的单元保存了第2个存储字。凡是地址的最低2位二进制数为00,从这个地址开始,用连续4个单元保存一个字数据的,称为一个字数据存放在字边界对齐的地址单元中,简称地址是字边界对齐的。,62,ARM920T处理器允许使用大、小端格式,它能够对存储在存储器中的字以大端或小端格式访问。缺省格式是小端格式。大端或小端格式是指一个字数据中的4个字节数据,必须被放在字边界对齐的存储器地址A开始的连续4个字节地址单元中的什么位置。在数据以字存放在存储器中,而以字节或半字访问时,对CPU被配置为大端或小端格式要特别注意。,63,小端格式,在小端格式,处理器寄存器中的32位二进制数用bit31:0表示,其中bit31为最高位,bit0为最低位,分为4字节,bit31:24为数据的最高字节,bit7:0为数据的最低字节。当寄存器的内容以字格式保存在字边界对齐的存储器地址A中时,存储器4个地址对应的单元中保存的字节数据与寄存器bit31:0的对应关系见图2.4。,64,大端格式,在大端格式,当寄存器的内容以字格式保存在字边界对齐的存储器地址A中时,存储器4个地址对应的单元中保存的字节数据与寄存器bit31:0的对应关系见图2.5。,65,数据类型,ARM920T处理器支持三种数据类型:字,32位;半字,16位;字节,8位。所谓的边界对齐必须遵循:字数据必须以4字节为边界对齐存取;半字数据必须以2字节为边界对齐存取;字节数据可以使用任意字节地址存取。存储器系统支持上述三种数据类型的存取。,66,67,2.4.3处理器工作模式(1),ARM处理器有7种工作模式,68,处理器工作模式(2),特权模式,除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。,69,处理器工作模式(3),用户和系统模式,这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。,70,2.4.4寄存器,ARM920T共有37个寄存器。其中:31个是32位的通用寄存器,6个是32位的状态寄存器。在同一时间内这37个寄存器不是全部都可以存取的。处理器操作状态(ARM或Thumb)和操作方式(用户、中断等7种)确定哪些寄存器对程序员是可存取的。,71,ARM状态各模式下的寄存器,72,ARM状态各模式下的寄存器,所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。,73,ARM状态各模式下可以访问的寄存器,74,一般的通用寄存器,在汇编语言中寄存器R0R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。,75,一般的通用寄存器,其中R0R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。,76,一般的通用寄存器,寄存器R8R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器,77,一般的通用寄存器,寄存器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。,78,一般的通用寄存器,寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。,79,堆栈指针寄存器R13(SP),寄存器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。,80,链接寄存器R14(LR),R14为链接寄存器(LR),在结构上有两个特殊功能:在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。,81,链接寄存器R14(LR),R14(LR)寄存器与子程序调用,MOVPC,LR,R14(地址A),1.程序A执行过程中调用程序B;,操作流程,2.程序跳转至标号Lable,执行程序B。同时硬件将“BLLable”指令的下一条指令所在地址存入R14(LR);,3.程序B执行最后,将R14寄存器的内容放入PC,返回程序A;,82,链接寄存器R14(LR),R14寄存器与异常发生,异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。区别在于有些异常有一个小常量的偏移。,83,链接寄存器R14(LR),R14寄存器注意要点,当发生异常嵌套时,这些异常之间可能会发生冲突。例如:如果用户在用户模式下执行程序时发生了IRQ中断,用户模式寄存器不会被破坏。但是如果允许在IRQ模式下的中断处理程序重新使能IRQ中断,并且发生了嵌套的IRQ中断时,外部中断处理程序保存在R14_irq中的任何值都将被嵌套中断的返回地址所覆盖。,84,链接寄存器R14(LR),R14寄存器注意要点,a,return,地址A,1.执行用户模式下的程序;,2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;,3.IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;,未被破坏,R14_irq,85,链接寄存器R14(LR),R14寄存器注意要点,a,地址A,1.执行用户模式下的程序;,2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;,3.IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;,未被破坏,a,return,地址B,4.如果在IRQ处理程序中打开IRQ中断,并且再次发生IRQ中断;,5.硬件将返回地址保存在R14_irq寄存器中,原来保存的返回地址将被覆盖,造成错误;,R14_irq被破坏,6.在程序B返回到程序A,然后在返回到用户模式下被中断的程序时,发生错误,将不能正确返回;,return,return,解决办法是确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将R14入栈),或者切换到其它处理器模式下。,86,当处理器执行在ARM状态:所有指令32bits宽所有指令必须word对齐所以pc值由bits31:2决定,bits1:0未定义(所以指令不能halfword/byte对齐).当处理器执行在Thumb状态:所有指令16bits宽所有指令必须halfword对齐所以pc值由bits31:1决定,bits0未定义(所以指令不能byte对齐).当处理器执行在Jazelle状态:所有指令8bits宽处理器执行word存取一次取4条指令,程序计数器R15(PC),87,程序计数器R15(PC),寄存器R15为程序计数器(PC),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的。,88,程序计数器R15(PC),读R15的限制,正常操作时,从R15读取的值是处理器正在取指的地址,即当前正在执行指令的地址加上8个字节(两条ARM指令的长度)。由于ARM指令总是以字为单位,所以R15寄存器的最低两位总是为0。,89,程序计数器R15(PC),读R15的限制,当使用STR或STM指令保存R15时,会有一个例外。这些指令可能将当前指令地址加8字节或加12字节保存(将来可能还有其它数字)。偏移量是8还是12取决于具体的ARM芯片,但是对于一个确定的芯片,这个值是一个常量。所以最好避免使用STR和STM指令来保存R15,如果很难做到,那么应当在程序中计算出该芯片的偏移量。,90,程序计数器R15(PC),写R15的限制,正常操作时,写入R15的值被当作一个指令地址,程序从这个地址处继续执行(相当于执行一次无条件跳转)。,91,程序计数器R15(PC),写R15的限制,由于ARM指令以字节为边界,因此写入R15的值最低两位通常为0b00。具体的规则取决于内核结构的版本:在ARM结构V3版及以下版本中,写入R15的值的最低两位被忽略,因此跳转地址由指令的实际目标地址(写入R15的值)和0 xFFFFFFFC相与得到;在ARM结构V4版及以上版本中,写入R15的值的最低两位为0,如果不是,结果将不可预测。,92,在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称为高寄存器组。,93,2.Thumb状态下的寄存器,Thumb状态下的寄存器集如图所示,是ARM状态下的寄存器集的子集。程序员可以直接访问8个通用寄存器(R0R7)、PC、SP、LR和CPSR。每一种特权模式都有一组SP、LR和SPSR。Thumb状态R0R7与ARM状态R0R7是一致的。Thumb状态CPSR和SPSR与ARM的状态CPSR和SPSR是一致的。Thumb状态SP映射到ARM状态R13。Thumb状态LR映射到ARM状态R14。Thumb状态PC映射到ARM状态PC(R15)。,94,95,Thumb状态寄存器在Arm状态寄存器上的映射,低寄存器,高寄存器,96,在Thumb状态下访问高寄存器组,在Thumb状态下,高寄存器组r8-r15不是标准寄存器组的一部分。汇编语言程序员访问它们受到了限制,但是能够使用它们作为快速暂时存储器。程序员可以使用专门的MOV、CMP和ADD指令,其中MOV指令,可以从范围在r0-r7的低寄存器组传送一个值到高寄存器组;或从高寄存器组传送一个值到低寄存器组。CMP指令允许比较高低两个寄存器组中的寄存器的值。ADD指令允许将高寄存器组中寄存器的值与低寄存器组中寄存器的值相加。MOV、CMP和ADD指令也允许使用的两个寄存器都在高寄存器组中。,97,2.4.5程序状态寄存器,ARM9TDMI处理器包含当前程序状态寄存器(CPSR),加上5个程序状态保存寄存器SPSR,当异常发生时,用于保存CPSR的状态。这些程序状态寄存器有以下功能:保存最近执行过的ALU操作的信息;控制允许或禁止中断;设置处理器操作方式。程序状态寄存器每一位含义表示在图2.9中。,98,ARM处理器的CPSR寄存器和SPSR寄存器的位定义格式图解,99,CPSR和SPSR的格式含义,1.条件码标志N、Z、C、V(Negative、Zero、Carry、oVerflow)均为条件码标志位(ConditionCodeFlags),它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。CPSR中的条件码标志可由大多数指令检测以决定指令是否执行。在ARM状态下,绝大多数的指令都是有条件执行的。在Thumb状态下,仅有分支指令是有条件执行的。通常条件码标志通过执行比较指令(CMN、CMP、TEQ、TST)、一些算术运算、逻辑运算和传送指令进行修改。,99,100,条件码标志的通常含义,N:如果结果是带符号二进制补码,那么,若结果为负数,则N=1;若结果为正数或0,则N0。Z:若指令的结果为0,则置1(通常表示比较的结果为“相等”),否则置0。C:可用如下4种方法之一设置:加法(包括比较指令CMN)。若加法产生进位(即无符号溢出),则C置1;否则置0。减法(包括比较指令CMP)。若减法产生借位(即无符号溢出),则C置0;否则置1。对于结合移位操作的非加法减法指令,C置为移出值的最后1位。对于其他非加法减法指令,C通常不改变。V:可用如下两种方法设置,即对于加法或减法指令,当发生带符号溢出时,V置1,认为操作数和结果是补码形式的带符号整数。对于非加法减法指令,V通常不改变。,100,101,2.控制位,程序状态寄存器的最低8位I、F、T和M4:0统称控制位。它们是:(1)中断禁止位;(2)T状态位;(3)方式位。当异常出现时,控制位改变。当处理器在特权方式操作时,软件能够操作这些位。,102,中断禁止位I和F位是中断禁止位:当I位被置1时,IRQ中断被禁止;当F位被置1时,FIQ中断被禁止;当I位被清0时,IRQ中断被允许;当F位被清0时,FIQ中断被允许。,103,T位T位反映了处理器当前所处的操作状态:当T位被置1时,处理器在Thumb状态执行;当T位被清0时,处理器在ARM状态执行。操作状态由外部信号TBIT反映。要注意的是,决不能使用MSR指令去强制改变在CPSR中的T位的状态,如果这样做了,处理器进入不可预知的状态。,104,方式位M4:0确定处理器的操作方式,如表2.3所示。不是所有方式位的组合都用来定义合法的处理器操作方式,仅仅使用了方式位组合中的一部分,如下表所示。,105,表2.3不同方式位对应的不同操作方式,106,保留位在CPSR和SPSR中,保留位没有用处,仅仅用于保留。当改变CPSR或SPSR标志位或控制位时,要确认这些保留位没有被改变。同样要确认程序不依赖保留位所含的专门值,因为后续处理器可能将这些位置1或清0。,107,2.5ARM异常处理,在一个正常的程序流程执行过程中,由内部或外部源产生的一个事件使正常的程序产生暂时的停止时,称之为异常。异常是由内部或外部源产生并引起处理器处理一个事件,例如一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,当异常处理完成之后,恢复保留的当前处理器状态,继续执行当前程序。多个异常同时发生时,处理器将会按固定的优先级进行处理。,108,异常和中断,异常可分为两类:同步异常(synchronousexceptions)和异步异常(asynchronousexceptions);,109,同步异常,同步异常是由内部事件(如处理器指令运行产生的事件)引起的异常称为同步异常,包括:在某些处理器体系结构中,对于确定的数据尺寸必须从内存的偶数地址进行读和写操作。从一个奇数内存地址的读或写操作将引起存储器存取一个错误事件并且引起一个异常;造成被零除的算术运算引发一个异常,110,异步异常,异步异常是由外部事件(如处理器指令执行不相关的事件)引起的异常称为异步异常,一般这些外部事件与硬件信号相关,又称为中断,包括:复位异常,按下嵌入式板上的复位按钮,触发一个异步的异常;如串口、网口等通讯模块,接收数据包产生异常;,111,异常分类,异常可分为4类:中断(interrupt)、陷井(trap)、故障(fault)和终止(abort),112,中断,113,陷井,陷井是有意的异常,通常在用户程序和内核之间提供系统调用。,114,故障,故障是由错误情况引起的,它可能被故障处理程序修正,如缺页异常,115,终止,终止是不可恢复的致命错误造成的结果,如硬件错误,DRAM或SRAM位损坏时发生的奇偶错误。,116,异常类型,FIQIRQ(InterruptReQuest)未定义指令预取中止数据中止复位软件中断Softwareinterrupt通过软件中断产生进行管理员模式中获得通常要求特殊的管理功能,如操作系统支持,117,未定义的指令陷井当ARM接受到一条不能处理的指令,ARM把这条指令提供给任何一个协处理器执行如果协处理器可以执行这条指令但此时协处理器忙,ARM将等待直到协处理器准备好或中断发生如果没有协处理器处理这条指令,那么ARM将处理未定义的指令陷井,118,异常处理进入异常,当异常产生时,ARMcore:拷贝CPSR到SPSR_设置适当的CPSR位:改变处理器状态进入ARM态改变处理器模式进入相应的异常模式设置中断禁止位禁止相应中断(如需要)保存返回地址到LR_设置PC为相应的异常向量,119,异常处理退出异常,当异常结束时,异常处理程序必须:从SPSR_恢复到CPSR从LR_恢复PC:将LR(R14)中的值减去偏移量后存入PC,偏移量根据异常的类型而有所不同;清除在进入异常时被设置的中断禁止标志。注:异常处理不必确定进入异常前的状态。这些操作只能在ARM态执行。将SPSR值恢复到CPSR的同时,自动地将T位的值恢复成进入异常前的值。,120,进入异常的操作,R14_=ReturnLinkSPSR_=CPSRCPSR4:0=ExceptionModeNumberCPSR5=0;当运行于ARM状态时IF=ResetorFIQthen;当响应FIQ异常时,禁止新的FIQ异常CPSR6=1;CPSR7=1;PC=ExceptionVectorAddress,121,例子:用户模式到FIQ模式*,r14_fiq,r13_fiq,r12_fiq,r10_fiq,r11_fiq,r9_fiq,r8_fiq,用户模式CPSR复制到FIQ模式SPSR,返回一个从用户模式计算的地址,PC值存储在FIQ模式,用户模式,FIQ模式,122,表2.4汇总了异常进入时保存在r14中的PC值和退出异常处理时推荐使用的返回指令。,123,表2.4异常进入和退出,124,异常向量和优先级(表2-5),125,图示进入异常过程,1.程序在系统模式下运行用户程序,假定当前处理器状态为Thumb状态、允许IRQ中断;,2.用户程序运行时发生IRQ中断,硬件完成以下动作:,置位I位(禁止IRQ中断)清零T位(进入ARM状态)设置MOD位,切换处理器模式至IRQ模式,将下一条指令的地址存入IRQ模式的LR寄存器,将CPSR寄存器内容存入IRQ模式的SPSR寄存器,将跳转地址存入PC,实现跳转,BackAddr,JumpAddr,“?”表示对该位不关心,126,在异常处理结束后,异常处理程序完成以下动作:,图示退出异常过程,将SPSR寄存器的值复制回CPSR寄存器;,将LR寄存的值减去一个常量后复制到PC寄存器,跳转到被中断的用户程序。,BackAddr,JumpAddr,return,BackAddr-4,“?”表示对该位不关心,127,ARM的中断,ARM微处理器有两种中断类型:硬件中断(IRQ或FIQ)和软件中断(SWI);软件中断SWI用于用户模式下的程序切换到特权模式;IRQ中断用于通用中断,优先级低,中断延迟长;FIQ中断通常为要求快速响应的个别中断源保留,如DMA传输等;,128,中断延迟,中断延迟是指从外部中断请求信号发出到取出对应的中断服务程序(ISR)的第一条指令,期间的间隔时间;软件可采用两种方法减小中断延迟:嵌套中断和中断优先级。,3级嵌套中断,129,中断优先级,中断优先级是对中断进行分级,高优先级的中断可以打断正在执行的中断服务;这种工作方式要求每个中断处理程序中重新允许中断(由进入每个中断处理程序硬件自动关中断),以保证高级别的中断处理程序能够执行;与低优先级中断相比,高优先级中断平均中断延迟时间少;,130,快速中断请求(FIQ)适用于对一个突发事件的快速响应(数据传输和通道处理)保护的需要(这可以加速上下文切换的速度)。通过处理器上的FIQ输入引脚,由外部产生FIQ异常。不管异常入口是来自ARM状态还是Thumb状态,FIQ处理程序都会通过执行下面的指令从中断返回:SUBSPC,R14_fiq,#4在一个特权模式中,可以通过置位CPSR中的F位来禁止FIQ异常。若F位清零,则ARM在执行完当前指令后时检查FIQ输入引脚。,快速中断请求(FIQ)异常,131,中断
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46216-2025圆钢相控阵超声检测方法
- 2025年4月重庆医科大学附属第三医院招聘医师、医技、护理、行政、其他岗位考前自测高频考点模拟试题参考答案详解
- 2025年湖南师范大学附属小学第二轮非事业编制教师招聘考前自测高频考点模拟试题及一套答案详解
- 2025年生长激素项目立项申请报告模板
- 2025江苏苏州市相城城市建设投资(集团)有限公司人员招聘模拟试卷及一套答案详解
- 企业运营效率评估与资源整合方案
- 科研项目合作协议保障责任承诺书8篇
- 从课本中人物学到的人生哲理议论文7篇
- 学会感恩议论文的写作指南6篇
- 我的妈妈作文二年级8篇
- 中职对口高考-机械类专业综合模拟卷( 湖北适用) 第5卷(答案版)
- 小米公司介绍课件
- 部编六年级上册快乐读书吧《童年》测试题(3份)(有答案)
- 霍尼韦尔Honeywell温控器UDC2500中文手册
- 留置胃管课件
- 核反应堆热工分析课程设计
- ISO 56005-2020创新管理-知识产权管理的工具和方法-指南(中文版)
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蚀工程施工及验收规范
- DL-T5017-2007水电水利工程压力钢管制造安装及验收规范
- 招标代理员工合同
- 深度学习技术基础与实践 课件 第1-3章 深度学习概述、深度学习原理、深度学习框架介绍
评论
0/150
提交评论