北航《嵌入式系统》课件_

上传人:e****s 文档编号:245979382 上传时间:2024-10-11 格式:PPT 页数:122 大小:1.60MB
返回 下载 相关 举报
北航《嵌入式系统》课件__第1页
第1页 / 共122页
北航《嵌入式系统》课件__第2页
第2页 / 共122页
北航《嵌入式系统》课件__第3页
第3页 / 共122页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,3,C H A P T E R,ARM7体系结构,第3章 目录,1.简介,的模块和内部框图,4.体系结构直接支持的数据类型,5.处理器状态,6.处理器模式,7.内部存放器,8. 程序状态存放器,9.,异常,10.,复位,11.,存储器及存储器映射,I/O,第3章 目录,1.简介,的模块和内部框图,4.体系结构直接支持的数据类型,5.处理器状态,6.处理器模式,7.内部存放器,8. 程序状态存放器,9.,异常,10.,复位,11.,存储器及存储器映射,I/O,3.1 ARM简介,ARM公司简介,ARM是Advanced RISC Machines的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC 精简指令集处理器。,公司的特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供效劳。,3.1 ARM简介,ARM公司简介,将技术授权给其它芯片厂商,形成各具特色的ARM芯片,. . .,3.1 ARM简介,微处理器是整个系统的核心,通常由3大局部组成:控制单元、算术逻辑单元和存放器。,算术逻辑单元,寄存器,控制单元,微处理器,存储器,输入,输出,3.1 ARM简介,ARM处理器的应用,当前主要应用于消费类电子领域;,到目前为止,基于ARM技术的微处理器应用约占据了32位嵌入式微处理器75以上的市场份额,全球80%的GSM/3G 、99%的CDMA 以及绝大多数PDA产品均采用ARM体系的嵌入式处理器,,“掌上计算相关的所有领域皆为其所主宰。,ARM技术正在逐步渗入到我们生活的各个方面。,3.1 ARM简介,ARM体系结构,ARM处理器为RISC芯片,其简单的结构使ARM内核非常小,这使得器件的功耗也非常低。它具有经典RISC的特点:,大的、统一的寄存器文件;,装载,/,保存结构,数据处理 操作只针对寄存器的内容,而不直接对存储器进行操作;,简单的寻址模式,;,统一和固定长度的指令域,简化了指令的译码,便于指令流水线设计。,3.1 ARM简介,ARM体系结构,ARM体系结构的特点:,每条数据处理指令都对算术逻辑单元和移位器控制,实现了,ALU,和移位器的最大利用;,地址自动增加和减少寻址模式,优化程序循环;,多寄存器装载和存储指令实现最大数据吞吐量,;,所有指令的条件执行实现最快速的代码执行。,3.1 ARM简介,各ARM体系结构版本,ARM体系结构从最初开发到现在有了很大的改进,并仍在完善和开展。为了清楚的表达每个ARM应用实例所使用的指令集,ARM公司定义了6种主要的ARM指令集体系结构版本,以版本号V1V6表示。,3.1 ARM简介,各ARM体系结构版本,V1,该版本的ARM体系结构,只有26位的寻址空间,没有商业化,其特点为:,根本的数据处理指令不包括乘法;,字节、字和半字加载/存储指令;,具有分支指令,包括在子程序调用中使用的分支和链接指令;,在操作系统调用中使用的软件中断指令。,3.1 ARM简介,各ARM体系结构版本,V2,同样为26位寻址空间,现在已经废弃不再使用,它相对V1版本有以下改进:,具有乘法和乘加指令;,支持协处理器;,快速中断模式中的两个以上的分组存放器;,具有原子性加载/存储指令SWP和SWPB。,3.1 ARM简介,各ARM体系结构版本,V3,寻址范围扩展到32位目前已废弃,具有独立的程序:,具有乘法和乘加指令;,支持协处理器;,快速中断模式中具有的两个以上的分组存放器;,具有原子性加载/存储指令SWP和SWPB。,3.1 ARM简介,各ARM体系结构版本,V4,不在为了与以前的版本兼容而支持26位体系结构,并明确了哪些指令会引起未定义指令异常发生,它相对V3版本作了以下的改进:,半字加载/存储指令;,字节和半字的加载和符号扩展指令;,具有可以转换到Thumb状态的指令BX;,增加了用户模式存放器的新的特权处理器模式。,3.1 ARM简介,各ARM体系结构版本,V5,在V4版本的根底上,对现在指令的定义进行了必要的修正,对V4版本的体系结构进行了扩展并并增加了指令,具体如下:,改进了ARM/Thumb状态之间的切换效率;,E-增强型DSP指令集,包括全部算法操作和16位乘法操作;,J-支持新的JAVA,提供字节代码执行的硬件和优化软件加速功能。,3.1 ARM简介,ARM处理器核简介,ARM公司开发了很多系列的ARM处理器核,目前最新的系列已经是ARM11了,而ARM6核以及更早的系列已经很罕见了。目前应用比较广泛的系列是:,ARM7,ARM9,ARM9E,ARM10,SecurCore,Xscale,ARM11,Cortex,预取,(Fetch),译码,(Decode),执行,(Execute),预取,(Fetch),译码,(Decode),执行,(Execute),访存,(Memory),写入,(Write),预取,(Fetch),译码,(Decode),发送,(Issue),预取,(Fetch),预取,(Fetch),执行,(Execute),访存,(Memory),写入,(Write),译码(Decode),发送,(Issue),执行,(Execute),转换,(Snny),访存,(Memory),写入,(Write),ARM7,ARM9,ARM10,ARM11,3.1 ARM简介,项目,ARM7,ARM9,ARM10,ARM11,流水线,3,5,6,8,典型频率(MHz),80,150,260,335,功耗(mW/MHz),0.06,0.19(+cache),0.5,(+cache),0.4,(+cache),性能MIPS*/MHz,0.97,1.1,1.3,1.2,架构,冯,诺伊曼,哈佛,哈佛,哈佛,3.1 ARM简介,ARM系列,微处理器核,特点,ARM7,ARM7TDMI,:整数处理核ARM7TDMI 处理器的可综合版本;,ARM720T,:带MMU的处理器核心,支持操作系统;,ARM7EJ-S,:带有DSP和Jazelle,TM,技术,能够实现Java加速功能,冯,诺伊曼体系结构;,ARMTDMI,是目前应用最广的微处理器核,ARM720T,带有,MMU,和,8KB,的指令数据混合,cache,;,ARM7EJ-,执行,ARMv5TEJ,指令,,5,级流水线,提供,Java,加速指令,没有存储器保护。,ARM9,ARM920T,:带有独立的16KB 数据和指令Cache;,ARM922T,:带有独立的8位KB 数据和指令Cache;,ARM940T,包括更小数据和指令Cache和一个MPU,基于,ARM9TDMI,,带,16,位的,Thumb,指令集,增强代码密度最多到,35%,;,在,0.13m,工艺下最高性能可达到,300MIPS,(,Dhrystone 2.1,测试标准);,集成了数据和指令,Chche,;,32,位,AMBA,总线接口的,MMU,支持;,可在,0.18m,、,0.15m,和,0.13m,工艺的硅芯片上实现。,3.1 ARM简介,ARM9E,ARM926EJ-S,:Jazelle 技术,有MMU,可配置的数据和指令Cache,TCM接口;,ARM946E-S,:可配置的数据和指令Cache及TCM;,ARM966E-S,:针对要求高性能和低功耗的可预测的指令执行时间的硬实时应用设计,ARM968E-S,:最小、功耗最小的ARM9E系列处理器,针对嵌入式实时应用设计;,ARM9E,是针对微控制器、,DSP,和,Java,的单处理器解决方案;,ARM,Jazelle,技术提供,8,倍的,Java,加速性能,(ARM926EJ-S),;,5-,级整数流水线;,在,0.13m,工艺下最高性能可达到,300MIPS,(,Dhrystone 2.1,测试标准);,可选择的向量浮点单元,VFP9,协处理器指令优秀海浮点性能,对于,3D,图形加速和实时控制可达到,215MFLOPS,。,高性能的,AHB,总线,带,MMU,可在,0.18m, 0.15m, 0.13m,工艺的硅芯片上实现。,ARM10E,ARM1020E,:带DSP指令集,在片调试功能,独立的32KB数据和指令Cache,MMU支持;,ARM1022E,:与ARM1020E相同,只是独立的数据和指令Cache变为16KB;,ARM1026EJ-S,:同时具有MPU和MMU,可综合版本;,带分支预测的,6,级整数流水线;,在,0.13m,工艺下最高性能可达到,430MIPS,(,Dhrystone 2.1,测试标准);,对于,3D,图形运算和实时控制采用,VFP,协处理器,浮点运算性能最高可达,650MFLOPS,;,双,64,位,AMBA,总线接口和,64,位内部总路线接口;,优化的缓存结构提高了处理器访问低速存储器的性能;,可在,0.18m, 0.15m, 0.13m,工艺的硅芯片上实现,3.1 ARM简介,ARM11,ARM11 MPCore,:可综合的多处理器核,1至4个处理器可配置;,ARM1136J(F)-S,:可配置的数据和指令Cache,可提供1.9位的MPEG4编码加速功能;,ARM1156T2(F)-S,:带集成浮点协处理器,带内存保护单元MPU;,ARM1176JZ(F)-S,:带针对CPU和系统安全架构扩展的TrustZone技术。,增强的,Thumb,、,Jazelle,、,DSP,扩展支持;,带片上和系统安全,TrustZone,技术支持 ;,在,0.13m,工艺下最高可达到,550MHz,;,MPCore,在,0.13m,工艺下最高性能可达到,740MIPS,(,Dhrystone 2.1,测试标准);,支持多媒体指令,SIMD,;,采用三种电源模式:全速,/,待命,/,休眠,集成,DMA,的,TCM,低功耗、高性能。,SecurCore,SC100,:第一个32位安全处理器;、,SC110,:在SC100上增加密钥协处理器;,SC200,:带Jazelle技术的高级安全处理器;,SC210,:在SC200上增加密钥协处理器,SecurCore,是专门为智能卡、安全,IC,提供的,32,位安全处理器, 为电子商务、银行、网络、移动多媒体、公共交通提供安全解决方案;,体积小、功耗低,代码压缩密度高;,为快速增长的,Java,卡平台提供,Java,加速功能;,3.1 ARM简介,Cortex,Cortex-A,:面向应用的微处理器,针对复杂操作系统和应用程序设计;,Cortex-R,:针对实时系统的嵌入式处理器;,Cortex-M,:针对成本敏感应用优化的深度嵌入式处理器;,2004,年发布,提供增强的媒体和数字处理能力,增加了系统性能;,支持,ARM,、,Thumb,、,Thumb-2,指令集;,Thumb-2,指令集提供了更高的代码存储密度,进一步降低成本;,Intel系列,StrongARM,:ARMv4体系,XScale,:ARMv5TE体系,增加MMX指令,StrongARM,主要应用于手持设备和,PDA,,,5,级流水线,具有独立的数据和指令,Cache,,不支持,Thumb,指令集,目前已停产;,XScale,是目前,Intel,公司主推的高性能嵌入式处理器,分通用处理器、网络处理器和,I/O,处理器三类。其中通用处理器有,PXA25x,、,PXA26x,、,PXA27x,三个系列,被广泛应用于智能手机、,PDA,领域。,3.1 ARM简介,第3章 目录,1.简介,的模块和内部框图,4.体系结构直接支持的数据类型,5.处理器状态,6.处理器模式,7.内部存放器,8. 程序状态存放器,9.,异常,10.,复位,11.,存储器及存储器映射,I/O,3.2 ARM7TDMI,简介,ARM7TDMI基于ARM体系结构V4版本,是目前低端的ARM核。具有广泛的应用,其最显著的应用为数字移动 。,注意:“ARM核并不是芯片,ARM核与其它部件如RAM、ROM、片内外设组合在一起才能构成现实的芯片。,3.2 ARM7TDMI,简介,ARM7TDMI支持32位寻址范围,并弥补了ARM6不能在低于5V电源电压下工作的缺乏。ARM7TDMI的后缀意义为:,支持高密度16位的Thumb指令集;,支持片上调试;,支持64位乘法;,支持Embeded-ICE观察硬件;,ARM7TDMI 的可综合(synthesizable)版本(软核),对应用工程师来说其编程模型与ARM7TDMI 一致;,ARM7,T D M I - S,3.2 ARM7TDMI,简介,ARM7TDMI处理器是ARM通用32位微处理器家族的成员之一。它具有优异的性能,但功耗却很低,使用门的数量也很少。它属于精简指令集计算机RISC,比复杂指令集计算机CISC要简单得多。这样的简化实现了:,高的指令吞吐量;,出色的实时中断响应;,小的、高性价比的处理器宏单元。,3.2 ARM7TDMI,三级流水线,ARM7TDMI处理器使用流水线来增加处理器指令流的速度。这样可使几个操作同时进行,并使处理和存储器系统连续操作,能提供的指令执行速度。,ARM7TDMI的流水线分3级,分别为:,取指,译码,执行,3.2 ARM7TDMI,存储器访问,ARM7TDMI处理器使用了冯诺依曼Von Neumann结构,指令和数据共用一条32位总线。只有装载、存储和交换指令可以对存储器中的数据进行访问。,数据可以是字节 8位、半字 16位或者字32位。,第3章 目录,1.简介,的模块和内部框图,4.体系结构直接支持的数据类型,5.处理器状态,6.处理器模式,7.内部存放器,8. 程序状态存放器,9.,异常,10.,复位,11.,存储器及存储器映射,I/O,3.3 系统内部结构图,ARM7TDMI处理器部件和主要信号路径的框图如下图。它内部由处理器核、用于边界扫描的TAP控制器和在线仿真器ICE组成。双向数据总线D31:0被分割成单向输入和输出总线,以便于与外部存储器兼容。,3.3 ARM7TDMI的模块和内核框图,ARM7TDMI模块,地址存放器,存放器组,31*32位存放器,6个状态存放器,地址增量器,乘法器,桶形移位器,32位ALU,写数据存放器,指令流水线读数据存放器,Thumb指令译码器,指令译码,和,逻辑控制,ADDR31:0,CLK,CLEN,CFGBIGEND,nIRQ,nFIQ,nRESET,ABORT,LOCK,WRITE,SIZE1:0,PROT1:0,TRANS1:0,DBG输出,DBG输入,CP控制,CP握手,WDATA31:0,RDATA31:0,扫描调试,控制,A总线,B总线,ALU,总线,增量器总线,PC,总线,3.3 ARM7TDMI功能信号图,ARM7TDMI,第3章 目录,1.简介,的模块和内部框图,4.体系结构直接支持的数据类型,5.处理器状态,6.处理器模式,7.内部存放器,8. 程序状态存放器,9.,异常,10.,复位,11.,存储器及存储器映射,I/O,3.4 体系结构直接支持的数据类型,体系结构直接支持的数据类型,ARM处理器支持以下数据类型:,字节 8位,半字 16位必须分配为占用两个字节,字 32位必须分配为占用4各字节,1,1,1,2,3,4,2,体系结构直接支持的数据类型,注意:,V4版本之后的ARM结构都支持这3种结构包括V4版本,而以前的版本只支持字节和字;,当数据类型定义为无符号型时,N位数据值使用正常的二进制格式表示范围为02N-1的非负整数;,当数据类型定义为有符号型时,N位数据值使用2的补码格式表示范围为-2N-1+2N-1-1的整数;,3.4 体系结构直接支持的数据类型,体系结构直接支持的数据类型,注意:,所有数据操作,例如ADD,都以字为单位;,装载和保存指令可以对字节、半字和字进行操作,当装载字节或半字时自动实现零扩展或符号扩展;,ARM指令的长度刚好是1个字分配为占用4个字节,Thumb指令的长度刚好是半字占用2个字节。,3.4 体系结构直接支持的数据类型,第3章 目录,1.简介,的模块和内部框图,4.体系结构直接支持的数据类型,5.处理器状态,6.处理器模式,7.内部存放器,8. 程序状态存放器,9.,异常,10.,复位,11.,存储器及存储器映射,I/O,3.5 处理器状态,处理器状态,ARM7TDMI处理器内核使用V4T版本的ARM结构,该结构包含32位ARM指令集和16位Thumb指令集。因此ARM7TDMI处理器有两种操作状态:,ARM,状态:,32,位,这种状态下执行的是字方式的,ARM,指令;,Thumb,状态:,16,位,这种状态下执行半字方式的,ARM,指令。,注意:两个状态之间的切换并不影响处理器模式或存放器内容。,3.5 处理器状态,处理器状态,使用BX指令将ARM7TDMI内核的操作状态在ARM状态和Thumb状态之间进行切换详见第4章 ,程序如下所示。,;从Arm状态切换到Thumb状态,LDR R0,=Lable+1,BX R0,;从Thumb状态切换到ARM状态,LDR R0,=Lable,BX R0,地址最低位为1,表示切换到Thumb状态,地址最低位为0,表示切换到ARM状态,跳转地址标号,第3章 目录,1.简介,的模块和内部框图,4.体系结构直接支持的数据类型,5.处理器状态,6.处理器模式,7.内部存放器,8. 程序状态存放器,9.,异常,10.,复位,11.,存储器及存储器映射,I/O,处理器模式,说明,备注,用户 (usr),正常程序执行模式,不能直接切换到其它模式,系统 (sys),运行操作系统的特权任务,与用户模式类似,但具有可以直接切换到其它模式等特权,快中断 (fiq),支持高速数据传输及通道处理,FIQ异常响应时进入此模式,中断 (irq),用于通用中断处理,IRQ异常响应时进入此模式,管理 (svc),操作系统保护模式,系统复位和软件中断响应时进入此模式,中止 (abt),用于支持虚拟内存和/或存储器保护,在ARM7TDMI没有大用处,未定义 (und),支持硬件协处理器的软件仿真,未定义指令异常响应时进入此模式,3.6 处理器模式,处理器7种模式,3.6 处理器模式,特权模式,处理器模式,说明,备注,用户 (usr),正常程序工作模式,不能直接切换到其它模式,系统 (sys),用于支持操作系统的特权任务等,与用户模式类似,但具有可以直接切换到其它模式等特权,快中断 (fiq),支持高速数据传输及通道处理,FIQ异常响应时进入此模式,中断 (irq),用于通用中断处理,IRQ异常响应时进入此模式,管理 (svc),操作系统保护代码,系统复位和软件中断响应时进入此模式,中止 (abt),用于支持虚拟内存和/或存储器保护,在ARM7TDMI没有大用处,未定义 (und),支持硬件协处理器的软件仿真,未定义指令异常响应时进入此模式,除用户模式外,其它模式均为特权模式。ARM内部存放器和一些片内外设在硬件设计上只允许或者可选为只允许特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。,未定义 (und),中止 (abt),管理 (svc),中断 (irq),快中断 (fiq),系统 (sys),3.6 处理器模式,异常模式,处理器模式,说明,备注,用户 (usr),正常程序工作模式,不能直接切换到其它模式,系统 (sys),用于支持操作系统的特权任务等,与用户模式类似,但具有可以直接切换到其它模式等特权,快中断 (fiq),支持高速数据传输及通道处理,FIQ异常响应时进入此模式,中断 (irq),用于通用中断处理,IRQ异常响应时进入此模式,管理 (svc),操作系统保护代码,系统复位和软件中断响应时进入此模式,中止 (abt),用于支持虚拟内存和/或存储器保护,在ARM7TDMI没有大用处,未定义 (und),支持硬件协处理器的软件仿真,未定义指令异常响应时进入此模式,未定义 (und),中止 (abt),管理 (svc),中断 (irq),快中断 (fiq),这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的存放器,以防止异常退出时用户模式的状态不可靠。,3.6 处理器模式,用户和系统模式,处理器模式,说明,备注,用户 (usr),正常程序工作模式,不能直接切换到其它模式,系统 (sys),用于支持操作系统的特权任务等,与用户模式类似,但具有可以直接切换到其它模式等特权,快中断 (fiq),支持高速数据传输及通道处理,FIQ异常响应时进入此模式,中断 (irq),用于通用中断处理,IRQ异常响应时进入此模式,管理 (svc),操作系统保护代码,系统复位和软件中断响应时进入此模式,中止 (abt),用于支持虚拟内存和/或存储器保护,在ARM7TDMI没有大用处,未定义 (und),支持硬件协处理器的软件仿真,未定义指令异常响应时进入此模式,这两种模式都不能由异常进入,而且它们使用完全相同的存放器组。,系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的存放器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。,系统 (sys),用户 (usr),第3章 目录,1.简介,的模块和内部框图,4.体系结构直接支持的数据类型,5.处理器状态,6.处理器模式,7.内部存放器,8. 程序状态存放器,9.,异常,10.,复位,11.,存储器及存储器映射,I/O,3.7 内部存放器,简介,在ARM7TDMI处理器内部有37个用户可见的存放器。,在不同的工作模式和处理器状态下,程序员可以访问的存放器也不尽相同。,寄存器类别,寄存器在汇编中的名称,各模式下实际访问的寄存器,用户,系统,管理,中止,未定义,中断,快中断,通用寄存器和程序计数器,R0(a1),R0,R1(a2),R1,R2(a3),R2,R3(a4),R3,R4(v1),R4,R5(v2),R5,R6(v3),R6,R7(v4),R7,R8(v5),R8,R8_fiq *,R9(SB,v6),R9,R9_fiq *,R10(SL,v7),R10,R10_fiq *,R11(FP,v8),R11,R11_fiq *,R12(IP),R12,R12_fiq *,R13(SP),R13,R13_svc*,R13_abt *,R13_und *,R13_irq *,R13_fiq *,R14(LR),R14,R14_svc *,R14_abt *,R14_und *,R14_irq *,R14_fiq *,R15(PC),R15,状态寄存器,R16(CPSR),CPSR,SPSR,无,SPSR_abt,SPSR_abt,SPSR_und,SPSR_irq,SPSR_fiq,ARM状态各模式下的存放器,寄存器类别,寄存器在汇编中的名称,各模式下实际访问的寄存器,用户,系统,管理,中止,未定义,中断,快中断,通用寄存器和程序计数器,R0(a1),R0,R1(a2),R1,R2(a3),R2,R3(a4),R3,R4(v1),R4,R5(v2),R5,R6(v3),R6,R7(v4),R7,R8(v5),R8,R8_fiq,R9(SB,v6),R9,R9_fiq,R10(SL,v7),R10,R10_fiq,R11(FP,v8),R11,R11_fiq,R12(IP),R12,R12_fiq,R13(SP),R13,R13_svc,R13_abt,R13_und,R13_irq,R13_fiq,R14(LR),R14,R14_svc,R14_abt,R14_und,R14_irq,R14_fiq,R15(PC),R15,状态寄存器,CPSR,CPSR,SPSR,无,SPSR_abt,SPSR_abt,SPSR_und,SPSR_irq,SPSR_fiq,ARM状态各模式下的存放器,SPSR_fiq,SPSR_irq,SPSR_und,SPSR_abt,SPSR_abt,CPSR,R15,R14_fiq,R14_irq,R14_und,R14_abt,R14_svc,R14,R13_fiq,R13_irq,R13_und,R13_abt,R13_svc,R13,R12_fiq,R12,R11_fiq,R11,R10_fiq,R10,R9_fiq,R9,R8_fiq,R8,R7,R6,R5,R4,R3,R2,R1,R0,所有的37个存放器,分成两大类:,31个通用32位存放器;,6个状态存放器。,寄存器类别,寄存器在汇编中的名称,各模式下实际访问的寄存器,用户,系统,管理,中止,未定义,中断,快中断,通用寄存器和程序计数器,R0(a1),R0,R1(a2),R1,R2(a3),R2,R3(a4),R3,R4(v1),R4,R5(v2),R5,R6(v3),R6,R7(v4),R7,R8(v5),R8,R8_fiq,R9(SB,v6),R9,R9_fiq,R10(SL,v7),R10,R10_fiq,R11(FP,v8),R11,R11_fiq,R12(IP),R12,R12_fiq,R13(SP),R13,R13_svc,R13_abt,R13_und,R13_irq,R13_fiq,R14(LR),R14,R14_svc,R14_abt,R14_und,R14_irq,R14_fiq,R15(PC),R15,状态寄存器,CPSR,CPSR,SPSR,无,SPSR_abt,SPSR_abt,SPSR_und,SPSR_irq,SPSR_fiq,无,CPSR,R15,R14,R13,R12,R11,R10,R9,R8,R7,R6,R5,R4,R3,R2,R1,R0,用户,无,CPSR,R15,R14,R13,R12,R11,R10,R9,R8,R7,R6,R5,R4,R3,R2,R1,R0,系统,SPSR_abt,CPSR,R15,R14_svc,R13_svc,R12,R11,R10,R9,R8,R7,R6,R5,R4,R3,R2,R1,R0,管理,SPSR_abt,CPSR,R15,R14_abt,R13_abt,R12,R11,R10,R9,R8,R7,R6,R5,R4,R3,R2,R1,R0,中止,SPSR_und,CPSR,R15,R14_und,R13_und,R12,R11,R10,R9,R8,R7,R6,R5,R4,R3,R2,R1,R0,未定义,SPSR_irq,CPSR,R15,R14_irq,R13_irq,R12,R11,R10,R9,R8,R7,R6,R5,R4,R3,R2,R1,R0,中断,SPSR_fiq,CPSR,R15,R14_fiq,R13_fiq,R12_fiq,R11_fiq,R10_fiq,R9_fiq,R8_fiq,R7,R6,R5,R4,R3,R2,R1,R0,快中断,ARM状态各模式下可以访问的存放器,寄存器类别,寄存器在汇编中的名称,各模式下实际访问的寄存器,用户,系统,管理,中止,未定义,中断,快中断,通用寄存器和程序计数器,R0(a1),R0,R1(a2),R1,R2(a3),R2,R3(a4),R3,R4(v1),R4,R5(v2),R5,R6(v3),R6,R7(v4),R7,R8(v5),R8,R8_fiq,R9(SB,v6),R9,R9_fiq,R10(SL,v7),R10,R10_fiq,R11(FP,v8),R11,R11_fiq,R12(IP),R12,R12_fiq,R13(SP),R13,R13_svc,R13_abt,R13_und,R13_irq,R13_fiq,R14(LR),R14,R14_svc,R14_abt,R14_und,R14_irq,R14_fiq,R15(PC),R15,状态寄存器,CPSR,CPSR,SPSR,无,SPSR_abt,SPSR_abt,SPSR_und,SPSR_irq,SPSR_fiq,一般的通用存放器,R13_fiq,R13_irq,R13_und,R13_abt,R13_svc,R13,R12_fiq,R12,R11_fiq,R11,R10_fiq,R10,R9_fiq,R9,R8_fiq,R8,R7,R6,R5,R4,R3,R2,R1,R0,在汇编语言中存放器R0R13为保存数据或地址值的通用存放器。它们是完全通用的存放器,不会被体系结构作为特殊用途,并且可用于任何使用通用存放器的指令。,寄存器类别,寄存器在汇编中的名称,各模式下实际访问的寄存器,用户,系统,管理,中止,未定义,中断,快中断,通用寄存器和程序计数器,R0(a1),R0,R1(a2),R1,R2(a3),R2,R3(a4),R3,R4(v1),R4,R5(v2),R5,R6(v3),R6,R7(v4),R7,R8(v5),R8,R8_fiq,R9(SB,v6),R9,R9_fiq,R10(SL,v7),R10,R10_fiq,R11(FP,v8),R11,R11_fiq,R12(IP),R12,R12_fiq,R13(SP),R13,R13_svc,R13_abt,R13_und,R13_irq,R13_fiq,R14(LR),R14,R14_svc,R14_abt,R14_und,R14_irq,R14_fiq,R15(PC),R15,状态寄存器,CPSR,CPSR,SPSR,无,SPSR_abt,SPSR_abt,SPSR_und,SPSR_irq,SPSR_fiq,一般的通用存放器,R13_fiq,R13_irq,R13_und,R13_abt,R13_svc,R13,R12_fiq,R12,R11_fiq,R11,R10_fiq,R10,R9_fiq,R9,R8_fiq,R8,R7,R6,R5,R4,R3,R2,R1,R0,R7,R6,R5,R4,R3,R2,R1,R0,其中R0R7为未分组的存放器,也就是说对于任何处理器模式,这些存放器都对应于相同的32位物理存放器。,寄存器类别,寄存器在汇编中的名称,各模式下实际访问的寄存器,用户,系统,管理,中止,未定义,中断,快中断,通用寄存器和程序计数器,R0(a1),R0,R1(a2),R1,R2(a3),R2,R3(a4),R3,R4(v1),R4,R5(v2),R5,R6(v3),R6,R7(v4),R7,R8(v5),R8,R8_fiq,R9(SB,v6),R9,R9_fiq,R10(SL,v7),R10,R10_fiq,R11(FP,v8),R11,R11_fiq,R12(IP),R12,R12_fiq,R13(SP),R13,R13_svc,R13_abt,R13_und,R13_irq,R13_fiq,R14(LR),R14,R14_svc,R14_abt,R14_und,R14_irq,R14_fiq,R15(PC),R15,状态寄存器,CPSR,CPSR,SPSR,无,SPSR_abt,SPSR_abt,SPSR_und,SPSR_irq,SPSR_fiq,一般的通用存放器,R14_fiq,R14_irq,R14_und,R14_abt,R14_svc,R14,R13_fiq,R13_irq,R13_und,R13_abt,R13_svc,R13,R12_fiq,R12,R11_fiq,R11,R10_fiq,R10,R9_fiq,R9,R8_fiq,R8,存放器R8R14为分组存放器。它们所对应的物理存放器取决于当前的处理器模式,几乎所有允许使用通用存放器的指令都允许使用分组存放器,寄存器类别,寄存器在汇编中的名称,各模式下实际访问的寄存器,用户,系统,管理,中止,未定义,中断,快中断,通用寄存器和程序计数器,R0(a1),R0,R1(a2),R1,R2(a3),R2,R3(a4),R3,R4(v1),R4,R5(v2),R5,R6(v3),R6,R7(v4),R7,R8(v5),R8,R8_fiq,R9(SB,v6),R9,R9_fiq,R10(SL,v7),R10,R10_fiq,R11(FP,v8),R11,R11_fiq,R12(IP),R12,R12_fiq,R13(SP),R13,R13_svc,R13_abt,R13_und,R13_irq,R13_fiq,R14(LR),R14,R14_svc,R14_abt,R14_und,R14_irq,R14_fiq,R15(PC),R15,状态寄存器,CPSR,CPSR,SPSR,无,SPSR_abt,SPSR_abt,SPSR_und,SPSR_irq,SPSR_fiq,一般的通用存放器,R12_fiq,R12,R11_fiq,R11,R10_fiq,R10,R9_fiq,R9,R8_fiq,R8,存放器R8R12有两个分组的物理存放器。一个用于除FIQ模式之外的所有存放器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。,寄存器类别,寄存器在汇编中的名称,各模式下实际访问的寄存器,用户,系统,管理,中止,未定义,中断,快中断,通用寄存器和程序计数器,R0(a1),R0,R1(a2),R1,R2(a3),R2,R3(a4),R3,R4(v1),R4,R5(v2),R5,R6(v3),R6,R7(v4),R7,R8(v5),R8,R8_fiq,R9(SB,v6),R9,R9_fiq,R10(SL,v7),R10,R10_fiq,R11(FP,v8),R11,R11_fiq,R12(IP),R12,R12_fiq,R13(SP),R13,R13_svc,R13_abt,R13_und,R13_irq,R13_fiq,R14(LR),R14,R14_svc,R14_abt,R14_und,R14_irq,R14_fiq,R15(PC),R15,状态寄存器,CPSR,CPSR,SPSR,无,SPSR_abt,SPSR_abt,SPSR_und,SPSR_irq,SPSR_fiq,一般的通用存放器,存放器R13、R14分别有6个分组的物理存放器。一个用于用户和系统模式,其余5个分别用于5种异常模式。,R14_fiq,R14_irq,R14_und,R14_abt,R14_svc,R14,R13_fiq,R13_irq,R13_und,R13_abt,R13_svc,R13,寄存器类别,寄存器在汇编中的名称,各模式下实际访问的寄存器,用户,系统,管理,中止,未定义,中断,快中断,通用寄存器和程序计数器,R0(a1),R0,R1(a2),R1,R2(a3),R2,R3(a4),R3,R4(v1),R4,R5(v2),R5,R6(v3),R6,R7(v4),R7,R8(v5),R8,R8_fiq,R9(SB,v6),R9,R9_fiq,R10(SL,v7),R10,R10_fiq,R11(FP,v8),R11,R11_fiq,R12(IP),R12,R12_fiq,R13(SP),R13,R13_svc,R13_abt,R13_und,R13_irq,R13_fiq,R14(LR),R14,R14_svc,R14_abt,R14_und,R14_irq,R14_fiq,R15(PC),R15,状态寄存器,CPSR,CPSR,SPSR,无,SPSR_abt,SPSR_abt,SPSR_und,SPSR_irq,SPSR_fiq,堆栈指针存放器R13SP,存放器R13常作为堆栈指针SP。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。,寄存器类别,寄存器在汇编中的名称,各模式下实际访问的寄存器,用户,系统,管理,中止,未定义,中断,快中断,通用寄存器和程序计数器,R0(a1),R0,R1(a2),R1,R2(a3),R2,R3(a4),R3,R4(v1),R4,R5(v2),R5,R6(v3),R6,R7(v4),R7,R8(v5),R8,R8_fiq,R9(SB,v6),R9,R9_fiq,R10(SL,v7),R10,R10_fiq,R11(FP,v8),R11,R11_fiq,R12(IP),R12,R12_fiq,R13(SP),R13,R13_svc,R13_abt,R13_und,R13_irq,R13_fiq,R14(LR),R14,R14_svc,R14_abt,R14_und,R14_irq,R14_fiq,R15(PC),R15,状态寄存器,CPSR,CPSR,SPSR,无,SPSR_abt,SPSR_abt,SPSR_und,SPSR_irq,SPSR_fiq,链接存放器R14LR,R14为链接存放器LR,在结构上有两个特殊功能:,在每种模式下,模式自身的R14版本用于保存子程序返回地址;,当发生异常时,将R14对应的异常模式版本设置为异常返回地址有些异常有一个小的固定偏移量。,Lable,程序A,程序B,R14,3.7 内部存放器,R14LR存放器与子程序调用,BL Lable,地址A,?,MOV PC,LR,R14(地址,A),Lable,?,1.,程序A执行过程中调用程序B;,操作流程,2.程序跳转至标号Lable,执行程序B。同时硬件将“BL Lable指令的下一条指令所在地址存入R14LR;,3.程序B执行最后,将R14存放器的内容放入PC,返回程序A;,3.7 内部存放器,R14存放器与异常发生,异常发生时,程序要跳转至异常效劳程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。区别在于有些异常有一个小常量的偏移。,3.7 内部存放器,R14存放器注意要点,当发生异常嵌套时,这些异常之间可能会发生冲突。,例如:如果用户在用户模式下执行程序时发生了IRQ中断,用户模式存放器不会被破坏。但是如果允许在IRQ模式下的中断处理程序重新使能IRQ中断,并且发生了嵌套的IRQ中断时,外部中断处理程序保存在R14_irq中的任何值都将被嵌套中断的返回地址所覆盖。,3.7 内部存放器,R14存放器注意要点,R14,R14_irq,用户模式下的程序,IRQ模式下的程序A,a,return,B,.,X,A,地址A,地址A,1.执行用户模式下的程序;,2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq存放器,用户模式下的R14没有被破坏;,3. IRQ效劳程序A执行完毕,将R14_irq存放器的内容减去某个常量后存入PC,返回之前被中断的程序;,未被破坏,R14_irq,3.7 内部存放器,R14存放器注意要点,R14,R14_irq,用户模式下的程序,IRQ模式下的程序A,a,B,.,X,A,地址A,地址A,1.执行用户模式下的程序;,2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq存放器,用户模式下的R14没有被破坏;,3. IRQ效劳程序A执行完毕,将R14_irq存放器的内容减去某个常量后存入PC,返回之前被中断的程序;,未被破坏,IRQ模式下的程序B,a,return,B,.,X,A,地址B,地址B,4. 如果在IRQ处理程序中翻开IRQ中断,并且再次发生IRQ中断;,5. 硬件将返回地址保存在R14_irq存放器中,原来保存的返回地址将被覆盖,造成错误;,R14_irq,被破坏,6. 在程序B返回到程序A,然后在返回到用户模式下被中断的程序时,发生错误,将不能正确返回;,return,return,解决方法是确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值将R14入栈,或者切换到其它处理器模式下。,寄存器类别,寄存器在汇编中的名称,各模式下实际访问的寄存器,用户,系统,管理,中止,未定义,中断,快中断,通用寄存器和程序计数器,R0(a1),R0,R1(a2),R1,R2(a3),R2,R3(a4),R3,R4(v1),R4,R5(v2),R5,R6(v3),R6,R7(v4),R7,R8(v5),R8,R8_fiq,R9(SB,v6),R9,R9_fiq,R10(SL,v7),R10,R10_fiq,R11(FP,v8),R11,R11_fiq,R12(IP),R12,R12_fiq,R13(SP),R13,R13_svc,R13_abt,R13_und,R13_irq,R13_fiq,R14(LR),R14,R14_svc,R14_abt,R14_und,R14_irq,R14_fiq,R15(PC),R15,状态寄存器,CPSR,CPSR,SPSR,无,SPSR_abt,SPSR_abt,SPSR_und,SPSR_irq,SPSR_fiq,程序计数器R15PC,存放器R15为程序计数器PC,它指向正在取指的地址。可以认为它是一个通用存放器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的。,3.7 内部存放器,读R15的限制,正常操作时,从R15读取的值是处理器正在取指的地址,即当前正在执行指令的地址加上8个字节两条ARM指令的长度。由于ARM指令总是以字为单位,所以R15存放器的最低两位总是为0。,LDR R0,PC,?,?,PC,PC-4,PC-8,正在执行,正在译码,正在取指,流水线状态,地址,程序代码,3.7 内部存放器,读R15的限制,当使用STR或STM指令保存R15时,会有一个例外。这些指令可能将当前指令地址加8字节或加12字节保存将来可能还有其它数字。偏移量是8还是12取决于具体的ARM芯片,但是对于一个确定的芯片,这个值是一个常量。,所以最好防止使用STR和STM指令来保存R15,如果很难做到,那么应当在程序中计算出该芯片的偏移量。,3.7 内部存放器,读R15的限制,计算偏移量(,PC,值和当前指令地址的差)程序代码:,SUBR1,PC,#4;R1=下面STR指令的地址,STRPC,R0;保存STR指令地址+偏移量,LDRR0,R0;然后重装,SUBR0,R0,R1;计算偏移量,0,4,8,12,ARM状态,3.7 内部存放器,写R15的限制,正常操作时,写入R15 的值被当作一个指令地址,程序从这个地址处继续执行相当于执行一次无条件跳转。,3.7 内部存放器,写R15的限制,由于ARM指令以字节为边界,因此写入R15的值最低两位通常为0b00。具体的规那么取决于内核结构的版本:,在ARM结构V3版及以下版本中,写入R15的值的最低两位被忽略,因此跳转地址由指令的实际目标地址写入R15的值和0xFFFFFFFC相与得到;,在ARM结构V4版及以上版本中,写入R15的值的最低两位为0,如果不是,结果将不可预测。,寄存器类别,寄存器在汇编中的名称,各模式下实际访问的寄存器,用户,系统,管理,中止,未定义,中断,快中断,通用寄存器和程序计数器,R0(a1),R0,R1(a2),R1,R2(a3),R2,R3(a4),R3,R4(
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 幼儿教育


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!