嵌入式微处理器结构与应用:ARM体系结构_第1页
嵌入式微处理器结构与应用:ARM体系结构_第2页
嵌入式微处理器结构与应用:ARM体系结构_第3页
嵌入式微处理器结构与应用:ARM体系结构_第4页
嵌入式微处理器结构与应用:ARM体系结构_第5页
已阅读5页,还剩157页未读 继续免费阅读

下载本文档

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

文档简介

2CHAPTERARM体系结构第2章目录1.简介2.ARM7TDMI3.ARM7TDMI的模块和内部框图4.体系结构直接支持的数据类型5.处理器状态6.处理器模式7.内部寄存器8.程序状态寄存器9.异常10.复位11.存储器及存储器映射I/O第2章目录1.简介2.ARM7TDMI3.ARM7TDMI的模块和内部框图4.体系结构直接支持的数据类型5.处理器状态6.处理器模式7.内部寄存器8.程序状态寄存器9.异常10.复位11.存储器及存储器映射I/O2.1ARM简介ARM公司简介ARM是AdvancedRISCMachines的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC(精简指令集)处理器。公司的特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供服务。2.1ARM简介ARM(AdvancedRISCMachines)不仅是公司名字,也是一类微处理器的通称ARM公司1991年成立于英国剑桥知识产权(IP)ARM公司本身不直接从事芯片生产,靠转让设计许可全世界有几十家大的半导体公司都使用ARM公司的微处理器核(TI、NXP、Atmel、ST、Freescale等)市场份额基于ARM技术的微处理器占32位RISC微处理器75%以上的市场份额2.1ARM简介ARM公司简介将技术授权给其它芯片厂商形成各具特色的ARM芯片...2.1ARM简介微处理器是整个系统的核心,通常由3大部分组成:控制单元、算术逻辑单元和寄存器。

算术逻辑单元寄存器控制单元微处理器存储器输入输出2.1ARM简介ARM处理器的特点功耗低、成本低、性能高支持Thumb(16位)/ARM(32位)双指令集Cortex支持Thumb-2(16/32位混合指令系统)指令长度固定(32位/16位)大量使用寄存器,指令执行速度更快寻址方式灵活简单,执行效率高C5000:0.5mW/MHzARM7TDMI:0.28mW/MHzCortex-M3:0.19mW/MHz2.1ARM简介ARM处理器的应用当前主要应用于消费类电子领域;到目前为止,基于ARM技术的微处理器应用约占据了32位嵌入式微处理器75%以上的市场份额全球80%的GSM/3G手机、99%的CDMA手机以及绝大多数PDA产品均采用ARM体系的嵌入式处理器,“掌上计算”相关的所有领域皆为其所主宰。ARM技术正在逐步渗入到我们生活的各个方面。2.1ARM简介ARM体系结构ARM处理器为RISC芯片,其简单的结构使ARM内核非常小,这使得器件的功耗也非常低。它具有经典RISC的特点:大的、统一的寄存器文件;装载/保存结构,数据处理操作只针对寄存器的内容,而不直接对存储器进行操作;简单的寻址模式;统一和固定长度的指令域,简化了指令的译码,便于指令流水线设计。2.1ARM简介ARM体系结构ARM体系结构的特点:每条数据处理指令都对算术逻辑单元和移位器控制,实现了ALU和移位器的最大利用;地址自动增加和减少寻址模式,优化程序循环;多寄存器装载和存储指令实现最大数据吞吐量;所有指令的条件执行实现最快速的代码执行。2.1ARM简介各ARM体系结构版本ARM体系结构从最初开发到现在有了很大的改进,并仍在完善和发展。为了清楚的表达每个ARM应用实例所使用的指令集,ARM公司定义了7种主要的ARM指令集体系结构版本,以版本号V1~V7表示。2.1ARM简介各ARM体系结构版本——V1

该版本的ARM体系结构,只有26位的寻址空间,没有商业化,其特点为:基本的数据处理指令(不包括乘法);字节、字和半字加载/存储指令;具有分支指令,包括在子程序调用中使用的分支和链接指令;在操作系统调用中使用的软件中断指令。2.1ARM简介各ARM体系结构版本——V2

同样为26位寻址空间,现在已经废弃不再使用,它相对V1版本有以下改进:具有乘法和乘加指令;支持协处理器;快速中断模式中的两个以上的分组寄存器;具有原子性加载/存储指令SWP和SWPB。2.1ARM简介各ARM体系结构版本——V3

寻址范围扩展到32位(目前已废弃),具有独立的程序:具有乘法和乘加指令;支持协处理器;快速中断模式中具有的两个以上的分组寄存器;具有原子性加载/存储指令SWP和SWPB。2.1ARM简介各ARM体系结构版本——V4

不在为了与以前的版本兼容而支持26位体系结构,并明确了哪些指令会引起未定义指令异常发生,它相对V3版本作了以下的改进:半字加载/存储指令;字节和半字的加载和符号扩展指令;具有可以转换到Thumb状态的指令(BX);增加了用户模式寄存器的新的特权处理器模式。2.1ARM简介各ARM体系结构版本——V5

在V4版本的基础上,对现在指令的定义进行了必要的修正,对V4版本的体系结构进行了扩展并并增加了指令,具体如下:改进了ARM/Thumb状态之间的切换效率;E---增强型DSP指令集,包括全部算法操作和16位乘法操作;J----支持新的JAVA,提供字节代码执行的硬件和优化软件加速功能。2.1ARM简介各ARM体系结构版本——V62001年推出ARMv6,它在许多方面做了改进。如内存系统、异常处理和较好地支持多处理器。具体如下:SIMD扩展使得广大的软件应用如Video和Audiocodec的性能提高了4倍;Thumb-2和TrustZone技术也用于ARMv6中。ARMv6第一个实现是2002年春推出的ARM1136J(F)-STM处理器,2003年又推出了

ARM1156T2(F)-S

和ARM1176JZ(F)-S处理器。2.1ARM简介各ARM体系结构版本——V7

ARMv7定义了3种不同的处理器配置(processorprofiles):

ProfileA—面向复杂、基于虚拟内存的OSProfileR—针对实时系统的ProfileM—针对低成本应用的微控制器的所有ARMv7profiles实现Thumb-2技术,同时还包括了NEON™技术的扩展,提高DSP和多媒体处理吞吐量400%

,并提供浮点支持以满足下一代3D图形、游戏以及传统嵌入式控制应用的需要。2.1ARM简介ARM处理器核简介ARM公司开发了很多系列的ARM处理器核,目前最新的系列已经是ARM11了,而ARM6核以及更早的系列已经很罕见了。目前应用比较广泛的系列是:ARM7ARM9ARM9EARM10SecurCoreXscaleARM11Cortex2.1ARM微处理器系列ARM微处理器目前包括下面几个系列通用系列1ARM7系列2ARM9系列3ARM9E系列4ARM10E系列5ARM11系列6Cortex系列安全系列7SecurCore系列体系结构版本(Architecture)ARMv4TARMv5TEARMv6ARMCortex(v7)ProcessorFamilyARM7ARM9ARM10ARM11ARMCortex按应用特征分类应用处理器

ApplicationProcessor实时控制处理器

Real-timeController微控制器

Micro-controller特征:MMU,Cache最快频率、最高性能、合理功耗特征:MPU,Cache实时响应、合理性能、较低功耗特征:nosub-memorysystem一般性能、最低成本、极低功耗ARMFamilyARM7™FamilyARM9™FamilyARM10™FamilyARM11™Family150DMIPS300DMIPS500DMIPS1000DMIPSARMCortex™FamilyARM720TARM1136JARM1176JZARM1026EARM920T/ARM922TARM926EJCortexAApplicationProcessorARM7TDMIARM1156T2ARM1026EARM946ECortexREmbeddedRTControllerARM7TDMIARM966EARM968ECortexMMicro-controllerARMArchitecture系列相应产品性能特点ARM7系列ARM7TDMI,ARM7TDMI-S,ARM720T,ARM7EJ三级流水性能:0.9MIPS/MHz,可达到130MIPs(Dhrystone2.1)

ARM9系列ARM920T,ARM922T

五级流水,性能:1.1MIPS/MHz,可达300MIPS(Dhrystone2.1),单32-bitAMBAbus接口,支持MMUARM9E系列ARM926EJ-S,RM946E-S,ARM966E-S,ARM968E-S,ARM996HS

五级流水,支持DSP指令。性能:1.1MIPS/MHz,可达300MIPS(Dhrystone2.1),高性能AHB,软核(softIP)

ARM10系列ARM1020E,ARM1022EARM1026EJ-S

6级流水支持分支预测(branchprediction),支持DSP指令。性能:1.35MIPS/MHz,可达430+Dhrystone2.1

MIPS,可选支持高性能浮点操作,双64位总线接口,内部64位数据通路系列相应产品性能特点ARM11系列ARM11MPCore,ARM1136J(F)-S,ARM1156T2(F)-S,ARM1176JZ(F)-S

8级流水线(9级ARM1156T2(F)-S),独立的load-store和arithmetic流水线,支持分支预测和返回栈(ReturnStack)。强大的ARMv6指令集,支持DSP,SIMD(SingleInstructionMultipleData)扩展,支持ARMTrustZone、Thumb-2核心技术。740Dhrystone2.1MIPS,低功耗0.6mW/MHz(0.13µm,1.2V)Cortex系列Cortex-A9MPCoreCortex-A9SingleCoreProcessorCortex-A8,Cortex-M3,Cortex-R4Cortex-A系列:面向用于复杂OS和应用的应用处理器(applicationsprocessors),支持ARM,ThumbandThumb-2指令集。Cortex-R系列:面向嵌入式实时领域的嵌入式处理器,支持ARM,Thumb,和Thumb-2指令集。Cortex-M系列:面向深嵌入式价格敏感的嵌入式处理器,只支持Thumb-2指令集SecurCore系列SecurCoreSC100,SecurCoreSC200用于SmartCard和SecureIC的32-bit解决方案。支持ARM和Thumb

指令集,软核。具有安全特征和低成本安全存储保护单元

当前的主流ARM处理器ARM7世界上最为广泛使用的CPU之一<100MHzARM9100-300MHzARMPowerdshipmentinyearof2005,31%isARM9based.ARM11芯片广泛应用ARM11300-700+MHzSIMD指令扩展支持更丰富的多媒体应用40家授权芯片公司,一些已开始量产FOMAN902iFirstARM11basedphoneOMAP2420i.MX31/i.MX31L目前最快的嵌入式处理器之一最快的处理器A9提供超过10,000DMIPS的性能运行于2GHz频率(40nm制造工艺)功耗小于1.9WARMCortexA9ApplicationProcessor目前最快的嵌入式处理器之一ARMCortexA9ApplicationProcessorTI获得首家ARMCortex-A9授权

OMAP4430的芯片将提供比目前的OMAP3系列芯片强大一倍的性能,使应用程序在移动设备上运行的速度更快。双核芯片将给移动设备带来1080p高清视频重放等功能。处理器的时钟速度最多可达到1GHz,耗电量比它以前的产品减少50%。Cortex-M3实现$1

ARM芯片ARMCortexArchitectureThumb-2ISA3StagePipeline1.22DMIPS/MHz–30%overARM7TDMI33Kgates–30%smallerthanARM7TDMILuminaryMicro的Stellaris系列MCU产品售价仅1美元ARMCortex-M3微控制器内核,专门针对MCU应用领域而设计,突出低成本、低功耗和高效率。预取(Fetch)译码(Decode)执行(Execute)预取(Fetch)译码(Decode)执行(Execute)访存(Memory)写入(Write)预取(Fetch)译码(Decode)发送(Issue)预取(Fetch)预取(Fetch)执行(Execute)访存(Memory)写入(Write)译码(Decode)发送(Issue)执行(Execute)转换(Snny)访存(Memory)写入(Write)ARM7ARM9ARM10ARM112.1ARM简介各版本指令情况项目ARM7ARM9ARM10ARM11流水线3568典型频率(MHz)80150260335功耗(mW/MHz)0.060.19(+cache)0.5(+cache)0.4(+cache)性能MIPS**/MHz0.971.11.31.2架构冯

诺伊曼哈佛哈佛哈佛2.1ARM简介各版本情况一览1ARM7系列ARM7微处理器系列特点极低的功耗(0.28mW/MHz),适合对功耗要求较高的应用具有嵌入式ICE-RT逻辑,调试开发方便能够提供0.9MIPS/MHz的三级流水线结构支持的操作系统:uC/OS-II、uCLinux等性能最高可达130MIPSC5000:0.5mW/MHzARMT7DMI:0.28mW/MHzCortex-M3:0.19mW/MHz1ARM7系列(续)ARM7系列微处理器的主要应用领域为工业控制、网络和调制解调器移动电话、消费电子等ARM7系列包括如下几种类型ARM7TDMI、ARM7TDMI-SARM7TMDI是目前使用最广泛的32位嵌入式处理器,属低端ARM处理器核TDMI的基本含义为T:支持16位压缩指令集ThumbD:支持片上DebugM:内嵌硬件乘法器(Multiplier)I:嵌入式ICE,支持片上断点和调试点ATMELARM7框图2ARM9系列ARM9系列微处理器具有以下特点5级流水线,指令执行效率更高提供1.1MIPS/MHz的加速能力全性能的MMU,支持WindowsCE、EmbeddedLinux等支持数据Cache和指令Cache性能最高可达300MIPS2ARM9系列(续)ARM9系列微处理器主要应用无线设备机顶盒高端打印机、数字照相机和数字摄像机汽车电子ARM9系列微处理器类型ARM920TARM922TATMELARM9框图3ARM9E系列ARM9E系列微处理器的主要特点支持DSP指令集(MAC)5级整数流水线,指令执行效率更高支持VFP9浮点处理协处理器全性能的MMU,支持WindowsCE、EmbeddedLinux等支持数据Cache和指令Cache性能最高可达300MIPS3ARM9E系列(续)ARM9系列微处理器主要应用工业控制无线设备和网络设备数字消费品、图像处理设备、存储设备ARM9E系列微处理器类型ARM926EJ-SARM946E-SARM966E-S、ARM968E-SARM996HS4ARM10E系列ARM10E系列微处理器的主要特点支持DSP指令集(MAC)6级整数流水线,指令执行效率更高支持VFP10浮点处理协处理器全性能的MMU,支持WindowsCE、EmbeddedLinux支持数据Cache和指令Cache性能最高可达400MIPS4ARM10E系列(续)ARM10E系列微处理器主要应用手持设备工业控制数字消费品、汽车电子图像处理设备ARM10E系列微处理器类型ARM1020EARM1022EARM1026EJ-S5ARM11系列高性能8级流水增强的ARMv6体系结构与同等的ARM10相比较,在同样的时钟频率下,性能提高了近50%时钟频率达到500~750MHz低功耗ARM11系列微处理器采用了两种先进的节能方式,使其功耗极低0.6mW/MHz(0.13µm,1.2V)C5000:0.5mW/MHzARMT7DMI:0.28mW/MHzCortex-M3:0.19mW/MHz5ARM11系列ARM11系列微处理器主要应用消费电子、汽车电子数据存储、图像处理设备网络基础、无线设备ARM11系列微处理器类型ARM11MPCore(多核处理器)ARM1136J(F)-SARM1156T2(F)-SARM1176JZ(F)-S三星S3C6410处理器ARM1176JZF-S核最高主频可达667MHz魅族M8Appleiphone6Cortex系列ARMCortex-A

Series——高性能应用ApplicationsprocessorsforcomplexOSanduserapplications支持ARM、Thumb和Thumb-2指令集带MMU,运行Linux、WindowsCE等操作系统TIOMAP35xx,ST(意法半导体)ARMCortex-RSeries——实时性应用Embeddedprocessorsforreal-timesystems支持ARM、Thumb和Thumb-2指令集不带MMU,运行Vxworks等实时操作系统6、Cortex系列(续)ARMCortex-MSeries——低成本应用EmbeddedprocessorsoptimizedforcostsensitiveapplicationsSupportstheThumb-2instructionsetonly不带MMU,不加载或者加载简单嵌入式操作系统AcceleratedTechnology公司的NucleusPLUSuC/OS-II、FreeRTOS典型芯片TI—Stellaris

LM3Sxxxx系列NXPLPC1000系列,ATMEL—SAM3系列C5000:0.5mW/MHzARM7TDMI:0.28mW/MHzCortex-M3:0.19mW/MHz6、Cortex系列(续)爱可视7(320G)¥4150采用600MHz超标量ARMCortex-A8处理器的OMAP3实施方案OMAP3430处理器ARMCortex-A87SecurCore系列SecurCore系列微处理器专为安全需要而设计具有ARM体系结构的低功耗、高性能的特点提供了完善的32位RISC技术的安全解决方案SecurCore系列微处理器在系统安全方面的特点带有灵活的保护单元,以确保操作系统和应用数据的安全采用软处理器内核技术(处理器布局随机化),防止外部对其进行扫描探测可集成用户自己的安全特性和其他协处理器7SecurCore系列(续)SecurCore系列微处理器的应用领域电子商务电子银行电子政务网络和认证系统SecurCore系列微处理器包含四种类型SecurCoreSC100SecurCoreSC110SecurCoreSC200SecurCoreSC210ARM微处理器的应用选型ARM微处理器内核结构的选择带有MMU功能的ARM内核ARM720T、ARM92xT、Cortex-A8支持WinCE、EmbeddedLinux等操作系统不含有MMU功能的ARM内核ARM7TDMI、Cortex-M3、Cortex-R4支持uCLinux操作系统不支持WindowsCE、EmbeddedLinux等操作系统是否支持DSP或Java是否支持浮点协处理器VFPARM微处理器应用选型(续)系统的工作频率ARM7系列的典型处理速度为0.9MIPS/MHz系统主时钟为20MHz-133MHzARM9系列的典型处理速度为1.1MIPS/MHz系统主时钟频率为100MHz-233MHzARM10系统主时钟高达400MHzARM11系统主时钟高达750MHzCortex-M3—1.25MIPS/MHz,频率高达100MHzCortex-R4—1.6MIPS/MHz,频率高达400MHzCortex-A8—2.0MIPS/MHz,频率高达1GHzARM微处理器应用选型(续)芯片内存储器的容量大多数的ARM微处理器片内存储器的容量都不太大,需要用户在设计系统时外扩存储器有部分芯片具有相对较大的片内存储空间如ATMEL的AT91F40162就具有高达2MB的片内程序存储空间用户在设计时可考虑选用这种类型,以简化系统的设计ARM微处理器应用选型(续)片内外围电路的选择几乎所有的ARM芯片均根据各自不同的应用领域,扩展了相关功能模块,并集成在芯片之中片内外围电路:USB接口、IIS(音频)接口、LCD控制器、键盘接口、RTC(实时时钟)、ADC和DAC、DSP协处理器等设计者应分析系统的需求,尽可能采用片内外围电路完成所需的功能,这样既可简化系统的设计,同时提高系统的可靠性IIS:Inter-ICSoundbusRTC:Real-TimeClock2024/6/1754第2章目录1.简介2.ARM7TDMI3.ARM7TDMI的模块和内部框图4.体系结构直接支持的数据类型5.处理器状态6.处理器模式7.内部寄存器8.程序状态寄存器9.异常10.复位11.存储器及存储器映射I/O2.2ARM7TDMI简介ARM7TDMI基于ARM体系结构V4版本,是目前低端的ARM核。具有广泛的应用,其最显著的应用为数字移动电话。注意:“ARM核”并不是芯片,ARM核与其它部件如RAM、ROM、片内外设组合在一起才能构成现实的芯片。2.2ARM7TDMI简介ARM7TDMI支持32位寻址范围,并弥补了ARM6不能在低于5V电源电压下工作的不足。ARM7TDMI的后缀意义为:支持高密度16位的Thumb指令集;支持片上调试;支持64位乘法;支持Embeded-ICE观察硬件;ARM7TDMI的可综合(synthesizable)版本(软核),对应用工程师来说其编程模型与ARM7TDMI一致;ARM7TDMI-S2.2ARM7TDMI简介ARM7TDMI处理器是ARM通用32位微处理器家族的成员之一。它具有优异的性能,但功耗却很低,使用门的数量也很少。它属于精简指令集计算机(RISC),比复杂指令集计算机(CISC)要简单得多。这样的简化实现了:高的指令吞吐量;出色的实时中断响应;小的、高性价比的处理器宏单元。2.2ARM7TDMI三级流水线ARM7TDMI处理器使用流水线来增加处理器指令流的速度。这样可使几个操作同时进行,并使处理和存储器系统连续操作,能提供0.9MIPS/MHz的指令执行速度。

ARM7TDMI的流水线分3级,分别为:取指

译码

执行2.2ARM7TDMI存储器访问ARM7TDMI处理器使用了冯·诺依曼(VonNeumann)结构,指令和数据共用一条32位总线。只有装载、存储和交换指令可以对存储器中的数据进行访问。数据可以是字节(8位)、半字(16位)或者字(32位)。第2章目录1.简介2.ARM7TDMI3.ARM7TDMI的模块和内部框图4.体系结构直接支持的数据类型5.处理器状态6.处理器模式7.内部寄存器8.程序状态寄存器9.异常10.复位11.存储器及存储器映射I/O2.3系统内部结构图ARM7TDMI处理器部件和主要信号路径的框图如图所示。它内部由处理器核、用于边界扫描的TAP控制器和在线仿真器ICE组成。双向数据总线D[31:0]被分割成单向输入和输出总线,以便于与外部存储器兼容。2.3ARM7TDMI的模块和内核框图ARM7TDMI模块地址寄存器寄存器组31*32位寄存器(6个状态寄存器)地址增量器乘法器桶形移位器32位ALU写数据寄存器指令流水线读数据寄存器Thumb指令译码器指令译码和逻辑控制ADDR[31:0]CLKCLENCFGBIGENDnIRQnFIQnRESETABORTLOCKWRITESIZE[1:0]PROT[1:0]TRANS[1:0]DBG输出DBG输入CP控制CP握手WDATA[31:0]RDATA[31:0]扫描调试控制A总线B总线ALU总线增量器总线PC总线2.3ARM7TDMI功能信号图ARM7TDMI第2章目录1.简介2.ARM7TDMI3.ARM7TDMI的模块和内部框图4.体系结构直接支持的数据类型5.处理器状态6.处理器模式7.内部寄存器8.程序状态寄存器9.异常10.复位11.存储器及存储器映射I/O2.4体系结构直接支持的数据类型体系结构直接支持的数据类型ARM处理器支持下列数据类型:字节8位半字16位(必须分配为占用2个字节)字32位(必须分配为占用4个字节)1112342体系结构直接支持的数据类型注意:V4版本之后的ARM结构都支持这3种结构(包括V4版本),而以前的版本只支持字节和字;当数据类型定义为无符号型时,N位数据值使用正常的二进制格式表示范围为0~2N-1的非负整数;当数据类型定义为有符号型时,N位数据值使用2的补码格式表示范围为-2N-1~+2N-1-1的整数;2.4体系结构直接支持的数据类型体系结构直接支持的数据类型注意:所有数据操作,例如ADD,都以字为单位;装载和保存指令可以对字节、半字和字进行操作,当装载字节或半字时自动实现零扩展或符号扩展;ARM指令的长度刚好是1个字(分配为占用4个字节),Thumb指令的长度刚好是半字(占用2个字节)。2.4体系结构直接支持的数据类型第2章目录1.简介2.ARM7TDMI3.ARM7TDMI的模块和内部框图4.体系结构直接支持的数据类型5.处理器状态6.处理器模式7.内部寄存器8.程序状态寄存器9.异常10.复位11.存储器及存储器映射I/O2.5处理器状态处理器状态ARM7TDMI处理器内核使用V4T版本的ARM结构,该结构包含32位ARM指令集和16位Thumb指令集。因此ARM7TDMI处理器有两种操作状态:ARM状态:32位,这种状态下执行的是字方式的ARM指令;Thumb状态:16位,这种状态下执行半字方式的ARM指令。注意:两个状态之间的切换并不影响处理器模式或寄存器内容。2.5处理器状态处理器状态

使用BX指令将ARM7TDMI内核的操作状态在ARM状态和Thumb状态之间进行切换(详见第3章),程序如下所示。;从Arm状态切换到Thumb状态

LDRR0,=Lable+1BXR0;从Thumb状态切换到ARM状态

LDRR0,=LableBXR0地址最低位为1,表示切换到Thumb状态地址最低位为0,表示切换到ARM状态跳转地址标号第2章目录1.简介2.ARM7TDMI3.ARM7TDMI的模块和内部框图4.体系结构直接支持的数据类型5.处理器状态6.处理器模式7.内部寄存器8.程序状态寄存器9.异常10.复位11.存储器及存储器映射I/O处理器模式说明备注

用户(usr)正常程序执行模式不能直接切换到其它模式

系统(sys)运行操作系统的特权任务与用户模式类似,但具有可以直接切换到其它模式等特权

快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式

中断(irq)用于通用中断处理IRQ异常响应时进入此模式

管理(svc)操作系统保护模式系统复位和软件中断响应时进入此模式

中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处

未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式2.6处理器模式处理器7种模式2.6处理器模式特权模式处理器模式说明备注

用户(usr)正常程序工作模式不能直接切换到其它模式

系统(sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权

快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式

中断(irq)用于通用中断处理IRQ异常响应时进入此模式

管理(svc)操作系统保护代码系统复位和软件中断响应时进入此模式

中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处

未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式

除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。

未定义(und)

中止(abt)

管理(svc)

中断(irq)

快中断(fiq)

系统(sys)2.6处理器模式异常模式处理器模式说明备注

用户(usr)正常程序工作模式不能直接切换到其它模式

系统(sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权

快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式

中断(irq)用于通用中断处理IRQ异常响应时进入此模式

管理(svc)操作系统保护代码系统复位和软件中断响应时进入此模式

中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处

未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式

未定义(und)

中止(abt)

管理(svc)

中断(irq)

快中断(fiq)

这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。2.6处理器模式用户和系统模式处理器模式说明备注

用户(usr)正常程序工作模式不能直接切换到其它模式

系统(sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权

快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式

中断(irq)用于通用中断处理IRQ异常响应时进入此模式

管理(svc)操作系统保护代码系统复位和软件中断响应时进入此模式

中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处

未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式

这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。

系统(sys)

用户(usr)如何知道处理器正处于什么模式?NZCV——IM0M1M2M3M4TF—...313029282726876543210如何知道处理器正处于什么模式?程序状态寄存器(CPSR)的M0-M4位有记录控制位模式位ModeM0M1M2M3M4CPSR寄存器的格式M[4:0]模式10000用户10001快中断10010中断10011管理10111中止11011未定义11111系统CPSR模式位设置表模式的切换切换至系统模式

mrsr0,cpsr bicr0,r0,#0x1f orrr0,r0,#0x1f msrcpsr_cxfs,r0第2章目录1.简介2.ARM7TDMI3.ARM7TDMI的模块和内部框图4.体系结构直接支持的数据类型5.处理器状态6.处理器模式7.内部寄存器8.程序状态寄存器9.异常10.复位11.存储器及存储器映射I/O2.7内部寄存器ARM处理器中有大量的寄存器可供编程人员使用,如用户模式下:(r0-r14为寄存器名称) movr0,#1 movr1,#2 movr2,#3 movr3,#4 movr4,#5 movr5,#6 movr6,#7 movr7,#8 movr8,#9 movr9,#10 movr10,#11 movr11,#12 movr12,#13 movr13,#14 movr14,#152.7内部寄存器简介

在ARM7TDMI处理器内部有37个用户可见的寄存器。在不同的工作模式和处理器状态下,程序员可以访问的寄存器也不尽相同。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM状态各模式下的寄存器寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定义SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中断SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中断ARM状态各模式下可以访问的寄存器寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0

在汇编语言中寄存器R0~R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0

其中R0~R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8

寄存器R8~R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8

寄存器R8~R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器

寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆栈指针寄存器R13(SP)

寄存器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq链接寄存器R14(LR)R14为链接寄存器(LR),在结构上有两个特殊功能:在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。Lable程序A程序BR142.7内部寄存器R14(LR)寄存器与子程序调用BLLable地址A???MOVPC,LRR14(地址A)Lable???1.程序A执行过程中调用程序B;操作流程2.程序跳转至标号Lable,执行程序B。同时硬件将“BLLable”指令的下一条指令所在地址存入R14(LR);2.程序B执行最后,将R14寄存器的内容放入PC,返回程序A;2.7内部寄存器R14寄存器与异常发生

异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。区别在于有些异常有一个小常量的偏移。2.7内部寄存器R14寄存器注意要点

当发生异常嵌套时,这些异常之间可能会发生冲突。例如:如果用户在用户模式下执行程序时发生了IRQ中断,用户模式寄存器不会被破坏。但是如果允许在IRQ模式下的中断处理程序重新使能IRQ中断,并且发生了嵌套的IRQ中断时,外部中断处理程序保存在R14_irq中的任何值都将被嵌套中断的返回地址所覆盖。2.7内部寄存器R14寄存器注意要点R14R14_irq用户模式下的程序IRQ模式下的程序AareturnB...XA地址A地址A1.执行用户模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;2.IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;未被破坏R14_irq2.7内部寄存器R14寄存器注意要点R14R14_irq用户模式下的程序IRQ模式下的程序AaB...XA地址A地址A1.执行用户模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;2.IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;未被破坏IRQ模式下的程序BareturnB...XA地址B地址B4.如果在IRQ处理程序中打开IRQ中断,并且再次发生IRQ中断;5.硬件将返回地址保存在R14_irq寄存器中,原来保存的返回地址将被覆盖,造成错误;R14_irq被破坏6.在程序B返回到程序A,然后在返回到用户模式下被中断的程序时,发生错误,将不能正确返回;returnreturn

解决办法是确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将R14入栈),或者切换到其它处理器模式下。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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使用的方式超出了这些限制,那么结果将是不可预测的。2.7内部寄存器读R15的限制

正常操作时,从R15读取的值是处理器正在取指的地址,即当前正在执行指令的地址加上8个字节(两条ARM指令的长度)。由于ARM指令总是以字为单位,所以R15寄存器的最低两位总是为0。LDRR0,PC??????PCPC-4PC-8正在执行正在译码正在取指流水线状态地址程序代码2.7内部寄存器读R15的限制

当使用STR或STM指令保存R15时,会有一个例外。这些指令可能将当前指令地址加8字节或加12字节保存(将来可能还有其它数字)。偏移量是8还是12取决于具体的ARM芯片,但是对于一个确定的芯片,这个值是一个常量。所以最好避免使用STR和STM指令来保存R15,如果很难做到,那么应当在程序中计算出该芯片的偏移量。2.7内部寄存器读R15的限制计算偏移量(PC值和当前指令地址的差)程序代码:SUB R1,PC,#4 ;R1=下面STR指令的地址STR PC,[R0] ;保存STR指令地址+偏移量LDR R0,[R0] ;然后重装SUB R0,R0,R1 ;计算偏移量04812ARM状态2.7内部寄存器写R15的限制

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

由于ARM指令以字节为边界,因此写入R15的值最低两位通常为0b00。具体的规则取决于内核结构的版本:在ARM结构V3版及以下版本中,写入R15的值的最低两位被忽略,因此跳转地址由指令的实际目标地址(写入R15的值)和0xFFFFFFFC相与得到;在ARM结构V4版及以上版本中,写入R15的值的最低两位为0,如果不是,结果将不可预测。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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程序状态寄存器CPSR

寄存器CPSR为程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。详细描述参看2.8小节。2.7内部寄存器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)。Thumb状态寄存器在Arm状态寄存器上的映射R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R0

堆栈指针(R13)

连接寄存器(R14)

程序计数器(R15)

低寄存器高寄存器2.7内部寄存器在Thumb状态中访问高寄存器

在Thumb状态中,高寄存

温馨提示

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

评论

0/150

提交评论