《北京航空航天大学嵌入式系统ARM微处理器体系结构课件》由会员分享,可在线阅读,更多相关《北京航空航天大学嵌入式系统ARM微处理器体系结构课件(128页珍藏版)》请在金锄头文库上搜索。
1、3C H A P T E RARM7体系结构体系结构北京航空航天大学嵌入式系统ARM微处理器体系结构课件第3章目录q1.简介q2.ARM7TDMIq3.ARM7TDMI的模块和内部框图q4.体系结构直接支持的数据类型q5.处理器状态q6.处理器模式q7.内部寄存器q8.程序状态寄存器q9.异常q10.复位q11.存储器及存储器映射I/O北京航空航天大学嵌入式系统ARM微处理器体系结构课件第3章目录q1.简介q2.ARM7TDMIq3.ARM7TDMI的模块和内部框图q4.体系结构直接支持的数据类型q5.处理器状态q6.处理器模式q7.内部寄存器q8.程序状态寄存器q9.异常q10.复位q11.
2、存储器及存储器映射I/O北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.1ARM简介nARM公司简介 ARM(Advanced RISC Machines)既可以认为是一个公司的名字,也可以认为是对一种微处理器体系结构的通称 。1991年ARM公司成立于英国剑桥,设计了大量高性能、廉价、耗能低的RISC (精简指令集)处理器。 公司的特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供服务。 公司也提供基于ARM架构的开发设计技术:软件工具, 评估板, 调试工具,应用软件;总线架构, 外围设备单元等。 北京航空航天大学嵌入式系统ARM微处理器体系结
3、构课件3.1ARM简介nARM公司简介将技术授权给其它芯片厂商形成各具特色的ARM芯片.北京航空航天大学嵌入式系统ARM微处理器体系结构课件授权费IPARM 创造和设计IP产品,例如:芯片Partner把ARM IP 和其他 IP 集成进产品版权费单价OEM 用来自ARM Partner的芯片设计制造最终用户产品业务拓展 / 市场需求3.1ARM简介(商业模式)北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.1ARM简介n微处理器是整个系统的核心,通常由3大部分组成:控制单元、算术逻辑单元和寄存器组。算术逻辑单元算术逻辑单元寄存器组寄存器组控制单元控制单元微处理器微处理器存储器存储器输
4、入输入输出输出北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.1ARM简介nARM处理器的应用n当前主要应用于消费类电子领域;n到目前为止,基于ARM技术的微处理器应用约占据了32位嵌入式微处理器75以上的市场份额n全球80%的GSM/3G手机、99%的CDMA手机以及绝大多数PDA产品均采用ARM体系的嵌入式处理器,n“掌上计算”相关的所有领域皆为其所主宰。nARM技术正在逐步渗入到我们生活的各个方面。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.1ARM简介nARM体系结构 ARM处理器为RISC芯片,其简单的结构使ARM内核非常小,这使得器件的功耗也非常低。它具有经典R
5、ISC的特点:大的、统一的寄存器文件;装载/保存结构,数据处理 操作只针对寄存器的内容,而不直接对存储器进行操作;简单的寻址模式;统一和固定长度的指令域,简化了指令的译码,便于指令流水线设计。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.1ARM简介nARM体系结构ARM体系结构的特点:每条数据处理指令都对算术逻辑单元和移位器控制,实现了ALU和移位器的最大利用;地址自动增加和减少寻址模式,优化程序循环;多寄存器装载和存储指令实现最大数据吞吐量;所有指令的条件执行实现最快速的代码执行。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.1ARM简介n各ARM体系结构版本 ARM体
6、系结构从最初开发到现在有了很大的改进,并仍在完善和发展。为了清楚的表达每个ARM应用实例所使用的指令集,ARM公司定义了6种主要的ARM指令集体系结构版本,以版本号V1V6表示。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.1ARM简介n各ARM体系结构版本V1 该版本的ARM体系结构,只有26位的寻址空间,没有商业化,其特点为:基本的数据处理指令(不包括乘法);字节、字和半字加载/存储指令;具有分支指令,包括在子程序调用中使用的分支和链接指令;在操作系统调用中使用的软件中断指令。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.1ARM简介n各ARM体系结构版本V2 同样为2
7、6位寻址空间,现在已经废弃不再使用,它相对V1版本有以下改进:具有乘法和乘加指令;支持协处理器;快速中断模式中的两个以上的分组寄存器;具有原子性加载/存储指令SWP和SWPB。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.1ARM简介n各ARM体系结构版本V3 寻址范围扩展到32位(目前已废弃),与以前的版本兼容:具有乘法和乘加指令;支持协处理器;快速中断模式中具有的两个以上的分组寄存器;具有原子性加载/存储指令SWP和SWPB。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.1ARM简介n各ARM体系结构版本V4 不在为了与以前的版本兼容而支持26位体系结构,并明确了哪些指
8、令会引起未定义指令异常发生,它相对V3版本作了以下的改进:半字加载/存储指令;字节和半字的加载和符号扩展指令;具有可以转换到Thumb状态的指令(BX);增加了用户模式寄存器的新的特权处理器模式。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.1ARM简介n各ARM体系结构版本V5 在V4版本的基础上,对现在指令的定义进行了必要的修正,对V4版本的体系结构进行了扩展并并增加了指令,具体如下:改进了ARM/Thumb状态之间的切换效率;E-增强型DSP指令集,包括全部算法操作和16位乘法操作;J-支持新的JAVA,提供字节代码执行的硬件和优化软件加速功能。北京航空航天大学嵌入式系统ARM
9、微处理器体系结构课件3.1ARM简介nARM处理器核简介 ARM公司开发了很多系列的ARM处理器核,目前最新的系列已经是ARM11了,而ARM6核以及更早的系列已经很罕见了。目前应用比较广泛的系列是:ARM7ARM9ARM9EARM10SecurCoreXscaleARM11Cortex北京航空航天大学嵌入式系统ARM微处理器体系结构课件预取(Fetch)译码(Decode)执行(Execute)预取(Fetch)译码(Decode)执行(Execute)访存(Memory)写入(Write)预取(Fetch)译码(Decode)发送(Issue)预取(Fetch)预取(Fetch)执行(Ex
10、ecute)访存(Memory)写入(Write)译码(Decode)发送(Issue)执行(Execute)转换(Snny)访存(Memory)写入(Write)ARM7ARM9ARM10ARM113.1ARM简介北京航空航天大学嵌入式系统ARM微处理器体系结构课件项目ARM7ARM9ARM10ARM11流水线3568典型频率(MHz)80150260335功耗(mW/MHz)0.060.19(+cache)0.5(+cache)0.4(+cache)版本V4V5V5V6架构冯诺伊曼哈佛哈佛哈佛3.1ARM简介北京航空航天大学嵌入式系统ARM微处理器体系结构课件ARM系列微处理器核特点ARM
11、7ARM7TDMI:整数处理核ARM7TDMI处理器的可综合版本;ARM720T:带MMU的处理器核心,支持操作系统;ARM7EJ-S:带有DSP和JazelleTM技术,能够实现Java加速功能冯诺伊曼体系结构;ARMTDMI是目前应用最广的微处理器核ARM720T带有MMU和8KB的指令数据混合cache;ARM7EJ-执行ARMv5TEJ指令,5级流水线,提供Java加速指令,没有存储器保护。ARM9ARM920T:带有独立的16KB数据和指令Cache;ARM922T:带有独立的8KB数据和指令Cache;ARM940T包括更小数据和指令Cache和一个MPU(MemoryProtec
12、tionUnit)基于ARM9TDMI,带16位的Thumb指令集,增强代码密度最多到35%;在0.13m工艺下最高性能可达到300MIPS(Dhrystone2.1测试标准);集成了数据和指令Cache;32位AMBA总线接口的MMU支持;可在0.18m、0.15m和0.13m工艺的硅芯片上实现。3.1ARM简介北京航空航天大学嵌入式系统ARM微处理器体系结构课件ARM9EARM926EJ-S:Jazelle技术,有MMU,可配置的数据和指令Cache,TCM接口;ARM946E-S:可配置的数据和指令Cache及TCM;ARM966E-S:针对要求高性能和低功耗的可预测的指令执行时间的硬实
13、时应用设计ARM968E-S:最小、功耗最小的ARM9E系列处理器,针对嵌入式实时应用设计;ARM9E是针对微控制器、DSP和Java的单处理器解决方案;ARMJazelle技术提供8倍的Java加速性能(ARM926EJ-S);5-级整数流水线;在0.13m工艺下最高性能可达到300MIPS(Dhrystone2.1测试标准);可选择的向量浮点单元VFP9协处理器指令优秀海浮点性能,对于3D图形加速和实时控制可达到215MFLOPS。高性能的AHB总线,带MMU可在0.18m,0.15m,0.13m工艺的硅芯片上实现。ARM10EARM1020E:带DSP指令集,在片调试功能,独立的32KB
14、数据和指令Cache,MMU支持;ARM1022E:与ARM1020E相同,只是独立的数据和指令Cache变为16KB;ARM1026EJ-S:同时具有MPU和MMU,可综合版本;带分支预测的6级整数流水线;在0.13m工艺下最高性能可达到430MIPS(Dhrystone2.1测试标准);对于3D图形运算和实时控制采用VFP协处理器,浮点运算性能最高可达650MFLOPS;双64位AMBA总线接口和64位内部总路线接口;优化的缓存结构提高了处理器访问低速存储器的性能;可在0.18m,0.15m,0.13m工艺的硅芯片上实现3.1ARM简介北京航空航天大学嵌入式系统ARM微处理器体系结构课件A
15、RM11ARM11MPCore:可综合的多处理器核,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(Dhrystone2.1测试标准);支持多媒体指令SIMD;采用三种电源模
16、式:全速/待命/休眠集成DMA的TCM低功耗、高性能。SecurCoreSC100:第一个32位安全处理器;SC110:在SC100上增加密钥协处理器;SC200:带Jazelle技术的高级安全处理器;SC210:在SC200上增加密钥协处理器SecurCore是专门为智能卡、安全IC提供的32位安全处理器,为电子商务、银行、网络、移动多媒体、公共交通提供安全解决方案;体积小、功耗低,代码压缩密度高;为快速增长的Java卡平台提供Java加速功能;3.1ARM简介北京航空航天大学嵌入式系统ARM微处理器体系结构课件CortexCortex-A(ARMv7A):面向应用的微处理器,针对复杂操作系
17、统和应用程序设计;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
18、/O处理器三类。其中通用处理器有PXA25x、PXA26x、PXA27x三个系列,被广泛应用于智能手机、PDA领域。3.1ARM简介北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.1ARM简介nARM内核的选择n系统的工作频率n片内存储器的容量n片内外围电路的选择nMMU,USB接口/以太网接口,GPIO数量,中断控制器,IIS音频接口,nWAIT信号,RTC,LCD控制器,ADC和DAC,PS2,CAN总线,IIC接口,UART和IrDA,时钟计数器和看门狗计数器,电源管理功能,DMA控制器北京航空航天大学嵌入式系统ARM微处理器体系结构课件第3章目录q1.简介q2.ARM7TDMI
19、q3.ARM7TDMI的模块和内部框图q4.体系结构直接支持的数据类型q5.处理器状态q6.处理器模式q7.内部寄存器q8.程序状态寄存器q9.异常q10.复位q11.存储器及存储器映射I/O北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.2ARM7TDMIn简介 ARM7TDMI基于ARM体系结构V4版本,是目前低端的ARM核。具有广泛的应用,其最显著的应用为数字移动电话。注意:“ARM核”并不是芯片,ARM核与其它部件如RAM、ROM、片内外设组合在一起才能构成现实的芯片。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.2ARM7TDMIn简介 ARM7TDMI支持32位寻
20、址范围,并弥补了ARM6不能在低于5V电源电压下工作的不足。ARM7TDMI的后缀意义为:支持高密度16位的Thumb指令集;支持片上调试;支持64位乘法;支持ICE-RT观察硬件,实现在片调试;ARM7TDMI的可综合(synthesizable)版本(软核),对应用工程师来说其编程模型与ARM7TDMI一致;ARM7 T D M I - S北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.2ARM7TDMIn简介 ARM7TDMI处理器是ARM通用32位微处理器家族的成员之一。它具有优异的性能,但功耗却很低,使用门的数量也很少。它属于精简指令集计算机(RISC),比复杂指令集计算机(
21、CISC)要简单得多。这样的简化实现了:高的指令吞吐量;出色的实时中断响应;小的、高性价比的处理器宏单元。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.2ARM7TDMIn三级流水线 ARM7TDMI处理器使用流水线来增加处理器指令流的速度。这样可使几个操作同时进行,并使处理和存储器系统连续操作,能提供0.9MIPS/MHz的指令执行速度。 ARM7TDMI的流水线分3级,分别为:取指译码执行北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.2ARM7TDMIADDSUBADDCMPSUBADD取指译码执行时间周期1周期2周期3n三级流水线北京航空航天大学嵌入式系统ARM微处理
22、器体系结构课件3.2ARM7TDMIn存储器访问 ARM7TDMI处理器使用了冯诺依曼(Von Neumann)结构,指令和数据共用一条32位总线。只有装载、存储和交换指令可以对存储器中的数据进行访问。 数据可以是字节( 8位)、半字( 16位)或者字(32位)。 ARM存储器接口非常适合于片内和片外与ATMEL的Flash存储器模块接口,例如AT91 微控制器 。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.2ARM7TDMInARM指令集nARM和Thumb指令集n传统的16/32位微处理器结构nThumb指令集n32位体系结构上的16位指令集,以ARM指令集一半的存储空间,换取
23、接近ARM指令集的性能(约有10左右的性能损失)n16位指令集对应相同功能的32位指令,是ARM指令的子集,在32位的体系结构上实现16位指令集n实时解压缩,全32位操作nARM/THUMB代码快速切换(子程序调用的时间,3时钟周期)n使用于有存储器限制而性能要求较高的场合北京航空航天大学嵌入式系统ARM微处理器体系结构课件第3章目录q1.简介q2.ARM7TDMIq3.ARM7TDMI的模块和内部框图q4.体系结构直接支持的数据类型q5.处理器状态q6.处理器模式q7.内部寄存器q8.程序状态寄存器q9.异常q10.复位q11.存储器及存储器映射I/O北京航空航天大学嵌入式系统ARM微处理器
24、体系结构课件3.3系统内部结构图nARM7TDMI处理器部件和主要信号路径的框图如图所示。它内部由处理器核、用于边界扫描的TAP控制器和在线仿真器ICE组成。双向数据总线D31:0被分割成单向输入和输出总线,以便于与外部存储器兼容。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.3ARM7TDMI的模块和内核框图ARM7TDMI模块地址寄存器寄存器组31*32位寄存器(6个状态寄存器)地址增量器32*8乘法器桶形移位器32位ALU写数据寄存器指令流水线、读数据寄存器Thumb指令译码器指令译码和控制逻辑ADDR31:0CLKCLKENBIGENDnIRQnFIQnRESETABORTn
25、WAITWRITESIZE1:0ECLKnMREQDBG输出DBG输入CPACPBWDATA31:0RDATA31:0扫描调试控制A总线B总线ALU总线增量器总线PC总线ALEABE北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.3ARM7TDMI功能信号图ARM7TDMI北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.3ARM7TDMI功能信号n存储器接口信号n(1)A31:0(address) 这是32位地址总线。当地址总线有效时,用ALE、ABE和APE信号来控制。n(2)D31:0(data bus) 用于处理器与外部存储器之间的数据传送。n(3)DIN31:0 (da
26、ta input bus) 用于从存储器向处理器传送指令和数据的单向总线。该总线仅当BUSEN为高时使用。n(4)DOUT31:0 (data output bus) 用于从处理器向存储器传送数据的单向总线。该总线仅当BUSEN为高时使用。n(5)nMREQ(not memory request)当处理器请求存储器访问时,它为低。n(6)nRW(not read/write) 当处理器正在执行读周期时,它为低。n(7)LOCK(locked operation) 当处理器正在执行带锁的存储器访问时,它为高电平,用于防止存储控制器允许其他器件访问存储器。n(8)MAS1:0(Memory Acc
27、ess Size) 用于指示存储器在读和写周期要求的数据传送的大小。n(9)BL3:0(byte latch control) 当这些信号为高时,数据总线的值在MCLK的下降沿锁存。对于大多数设计,这些信号必须接高电平。n(10)SEQ(sequential address) 当下一个存储器周期的地址与上一次存储器访问的地址紧密相关时,SEQ为高。在ARM状态,新地址可以是相同的字或下一个。在Thumb状态,新地址可以是相同的半字或下一个。与低位地址线配合,它可用于指示下一个周期可使用快速存储器模式(例如DRAM页模式),或用于旁路地址转换系统。北京航空航天大学嵌入式系统ARM微处理器体系结构
28、课件3.3ARM7TDMI功能信号n总线控制信号n(1)ALE(Address Latch Enable) 该信号为低时可以锁存地址总线A31:0、LOCK、MAS1:0、nRW等信号,使这些信号在整个存储器访问周期内都有效。n(2)APE(Address Pipeline Enable) 选择地址线A31:0、LOCK、MAS1:0、nRW等信号是操作在流水线方式(APE为高)还是非流水线方式(APE为低)。n(3)ABE(Address Bus Enable)当它为低时禁止总线驱动,即使地址线A31:0、LOCK、MAS1:0、nRW等信号线进入高阻状态。若系统没有要求,ABE必须接高电平
29、。n(4)BIGEND(big endian configuration) 当该信号为高时,是大端格式;为低时,是小端格式。n(5)BUSEN(data bus configuration) 该信号静态配置,用于选择是用双向数据总线(D31:0)还是用单向数据总线(DIN31:0和DOUT31:0)在处理器与存储器间传送数据。当该信号为低时,选用D31:0,并将DOUT31:0的信号置为低,将DIN31:0信号忽略并必须接低电平;当该信号为高时,选用DIN31:0和DOUT31:0,将D31:0忽略,并必须悬空不接。n(6)DBE(Data Bus Enable)当数据出现在双向或单向数据总线
30、上时,DBE必须为高。当DBE为低时,双向数据总线进入高阻状态,在单向数据总线上阻止数据输出。n(7)nENIN(not enable input) 在写周期,为了驱动数据总线,nENIN必须为低,可与nENOUT配合使用,以在写周期期间控制数据总线。n(8)nENOUT(not enable output) 在写周期,在MCLK上升沿之前将该信号驱动为低,且在整个周期保持低电平。n(9)nENOUTI(not enable output) 在从嵌入式ICE-RT通信通道协处理器到ARM核的协处理器寄存器传送的C周期,这个信号变低。n(10)当TBE为低时,D31:0、A31:0、LOCK、M
31、AS1:0、nRW、nTRANS和nOPC置高阻抗,类似于将ABE和DBE驱动为低的效果。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.3ARM7TDMI功能信号n边界扫描信号n(1)TDI(Test Data Input) 提供给扫描链的串行数据。n(2)TDO(Test Data Output) 来自扫描链的串行数据。n(3)TMS扫描链的模式选择。n(4)TAPSM3:0(TAP controller state machine) 反映TAP控制器状态机的当前状态。这些位在TCK的上升沿改变。n(5)TCK 所有测试电路的时钟信号。在调试状态,它用于产生DCLK、TCK1和TC
32、K2。n(6)TCK1(TCK,phase one) 当TCK为高时,该信号为高。n(7)TCK2(TCK,phase two) 当TCK为低时,该信号为高。这是TCK1的非重叠反相。n(8)nTRST(not test reset) 边界扫描逻辑的复位信号。这个引脚必须是脉冲型的或驱动为低电平,以得到正常的器件操作,以及正常的器件复位nRESET。北京航空航天大学嵌入式系统ARM微处理器体系结构课件ARM7TDMI功能信号说明四n时钟、中断等信号n(1)MCLK(memory clock input) 所有存储器访问和处理器操作的主时钟。时钟速度可以减慢到允许访问慢速外设或存储器。另外,nW
33、AIT可与自由运行的MCLK一起使用以允许访问慢速外设或存储器。n(2)nWAIT(not wait) 当它为低时,处理器将其访问时间延长几个MCLK周期,这对访问低速存储器或外围设备有用。在内部,nWAIT与MCLK进行逻辑与,且必须仅在MCLK为低时改变。当nWAIT不使用时,必须接高。n(3)nFIQ(not fast interrupt request) 如果处理器相应的使能是激活的,则该信号为低将引起处理器中断。这个信号是电平敏感的,在接到处理器的适当响应之前,必须保持为低电平。根据ISYNC信号的状态,nFIQ可与MCLK同步或异步。n(3)nIRQ(not interrupt r
34、equest) 如同nFIQ,但优先级更低。当相应使能是激活时,可将nIRQ置低以中断处理器。根据ISYNC信号的状态,nIRQ可与MCLK同步或异步。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.3ARM7TDMI功能信号n其他信号n(1)nM4:0(not processor mode) 这些是内部状态位的反码,用于指示当前处理器的工作模式。n(2)TBIT 当处理器执行Thumb指令集时,TBIT为高;当处理器执行ARM指令集时,TBIT为低。n(3)VDD(power supply) 给器件提供电源。n(4)VSS(ground) 所有信号的参考地。北京航空航天大学嵌入式系统
35、ARM微处理器体系结构课件第3章目录q1.简介q2.ARM7TDMIq3.ARM7TDMI的模块和内部框图q4.体系结构直接支持的数据类型q5.处理器状态q6.处理器模式q7.内部寄存器q8.程序状态寄存器q9.异常q10.复位q11.存储器及存储器映射I/O北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.4体系结构直接支持的数据类型n体系结构直接支持的数据类型ARM处理器支持下列数据类型:字节 8位半字 16位(必须分配为占用两个字节)字 32位(必须分配为占用4各字节)1112342北京航空航天大学嵌入式系统ARM微处理器体系结构课件n体系结构直接支持的数据类型注意:V4版本之后的
36、ARM结构都支持这3种结构(包括V4版本),而以前的版本只支持字节和字;当数据类型定义为无符号型时,N位数据值使用正常的二进制格式表示范围为02N-1的非负整数;当数据类型定义为有符号型时,N位数据值使用2的补码格式表示范围为-2N-1+2N-1-1的整数;3.4体系结构直接支持的数据类型北京航空航天大学嵌入式系统ARM微处理器体系结构课件n体系结构直接支持的数据类型注意:所有数据操作,例如ADD,都以字为单位;装载和保存指令可以对字节、半字和字进行操作,当装载字节或半字时自动实现零扩展或符号扩展;ARM指令的长度刚好是1个字(分配为占用4个字节),Thumb指令的长度刚好是半字(占用2个字节
37、)。3.4体系结构直接支持的数据类型北京航空航天大学嵌入式系统ARM微处理器体系结构课件第3章目录q1.简介q2.ARM7TDMIq3.ARM7TDMI的模块和内部框图q4.体系结构直接支持的数据类型q5.处理器状态q6.处理器模式q7.内部寄存器q8.程序状态寄存器q9.异常q10.复位q11.存储器及存储器映射I/O北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.5处理器状态n处理器状态 ARM7TDMI处理器内核使用V4T版本的ARM结构,该结构包含32位ARM指令集和16位Thumb指令集。因此ARM7TDMI处理器有两种操作状态:ARM状态:32位,这种状态下执行的是字方式的
38、ARM指令(地址1:0为0);Thumb状态:16位,这种状态下执行半字方式的ARM指令(地址0为0) 。如果处理器在Thumb状态进入异常(自动切换到ARM状态),则当异常处理返回时,自动切换到Thumb状态。注意:两个状态之间的切换并不影响处理器模式或寄存器内容。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.5处理器状态n处理器状态 使用BX指令将ARM7TDMI内核的操作状态在ARM状态和Thumb状态之间进行切换(详见第4章) ,程序如下所示。;从Arm状态切换到Thumb状态 LDR R0,=Lable+1 BX R0;从Thumb状态切换到ARM状态 LDR R0,=La
39、ble BX R0 Label MOV R1,#6地址最低位为1,表示切换到Thumb状态地址最低位为0,表示切换到ARM状态跳转地址标号Label标号地址北京航空航天大学嵌入式系统ARM微处理器体系结构课件第3章目录q1.简介q2.ARM7TDMIq3.ARM7TDMI的模块和内部框图q4.体系结构直接支持的数据类型q5.处理器状态q6.处理器模式q7.内部寄存器q8.程序状态寄存器q9.异常q10.复位q11.存储器及存储器映射I/O北京航空航天大学嵌入式系统ARM微处理器体系结构课件处理器模式说明备注用户(usr)正常程序执行模式不能直接切换到其它模式系统(sys)运行操作系统的特权任务
40、与用户模式类似,但具有可以直接切换到其它模式等特权快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式中断(irq)用于通用中断处理IRQ异常响应时进入此模式管理(svc)操作系统保护模式系统复位和软件中断响应时进入此模式中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式3.6处理器模式n处理器7种模式北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.6处理器模式n特权模式处理器模式说明备注用户(usr)正常程序工作模式不能直接切换到其它模式系统(sys)用于支持操作系统的特权
41、任务等与用户模式类似,但具有可以直接切换到其它模式等特权快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式中断(irq)用于通用中断处理IRQ异常响应时进入此模式管理(svc)操作系统保护代码系统复位和软件中断响应时进入此模式中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式 除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内资源在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。未定义(und
42、)中止(abt)管理(svc)中断(irq)快中断(fiq)系统(sys)北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.6处理器模式n异常模式处理器模式说明备注用户(usr)正常程序工作模式不能直接切换到其它模式系统(sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式中断(irq)用于通用中断处理IRQ异常响应时进入此模式管理(svc)操作系统保护代码系统复位和软件中断响应时进入此模式中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处未定义(und)支持硬件
43、协处理器的软件仿真未定义指令异常响应时进入此模式未定义(und)中止(abt)管理(svc)中断(irq)快中断(fiq) 这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.6处理器模式n用户和系统模式处理器模式说明备注用户(usr)正常程序工作模式不能直接切换到其它模式系统(sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权快中断(fiq)支持高速数据传输及通
44、道处理FIQ异常响应时进入此模式中断(irq)用于通用中断处理IRQ异常响应时进入此模式管理(svc)操作系统保护代码系统复位和软件中断响应时进入此模式中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式 这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。 系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。系统(sys)用户(usr)北京航空航天大学嵌入式系统ARM微处理器体系结构课件第3章
45、目录q1.简介q2.ARM7TDMIq3.ARM7TDMI的模块和内部框图q4.体系结构直接支持的数据类型q5.处理器状态q6.处理器模式q7.内部寄存器q8.程序状态寄存器q9.异常q10.复位q11.存储器及存储器映射I/O北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.7内部寄存器n简介 在ARM7TDMI处理器内部有37个用户可见的寄存器。 在不同的工作模式和处理器状态下,程序员可以访问的寄存器也不尽相同。北京航空航天大学嵌入式系统ARM微处理器体系结构课件寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R
46、0R1(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_abtS
47、PSR_undSPSR_irqSPSR_fiqARM状态各模式下的寄存器北京航空航天大学嵌入式系统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_undR
48、13_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_fiqR9
49、R8_fiqR8R7R6R5R4R3R2R1R0所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。北京航空航天大学嵌入式系统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)R
50、13R13_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_svcR12R11R10R9R8R7R6R5R4R3R2R1
51、R0管理管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定义未定义SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中断中断SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中断快中断ARM状态各模式下可以访问的寄存器北京航空航
52、天大学嵌入式系统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_
53、undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0 在汇编语言中寄存器R0R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。北京航空航天大学嵌入式系统ARM微处理器体系结构课件寄存器类别寄
54、存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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
55、状态寄存器CPSRCPSRSPSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0 其中R0R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。北京航空航天大学嵌入式系统ARM微处理器体系结构课件寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快
56、中断通用寄存器和程序计数器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_abtS
57、PSR_undSPSR_irqSPSR_fiq一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器北京航空航天大学嵌入式系统ARM微处理器体系结构课件寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0
58、(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_irq
59、SPSR_fiq一般的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。北京航空航天大学嵌入式系统ARM微处理器体系结构课件寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9
60、(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
61、_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13北京航空航天大学嵌入式系统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_fiqR1
62、3(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的指令。北京航空航天大学嵌入式系统ARM微处理器体系结构课件寄存器类别寄存器在汇编中的名称各模式下实
63、际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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状态寄存器CPSRCPSRS
64、PSR无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq链接寄存器R14(LR) R14为链接寄存器(LR),在结构上有两个特殊功能:在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。北京航空航天大学嵌入式系统ARM微处理器体系结构课件Lable程序A程序BR143.7内部寄存器nR14(LR)寄存器与子程序调用BL Lable地址A?MOV PC,LRR14(地址A)Lable?1.程序A执行过程中调用程序B;操作流程2.程序跳转至标号Lable,执行程序B。同
65、时硬件将“BL Lable”指令的下一条指令所在地址存入R14(LR);3.程序B执行最后,将R14寄存器的内容放入PC,返回程序A;北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.7内部寄存器nR14寄存器与异常发生 异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。区别在于有些异常有一个小常量的偏移。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.7内部寄存器nR14寄存器注意要点 当发生异常嵌套时,这些异常之间可能会发生冲突。例如:如果用户在用户模式下执行程序时发生了IRQ中断,用户模式寄存器不会被破坏。但是如果允许在IRQ模式下的
66、中断处理程序重新使能IRQ中断,并且发生了嵌套的IRQ中断时,外部中断处理程序保存在R14_irq中的任何值都将被嵌套中断的返回地址所覆盖。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.7内部寄存器nR14寄存器注意要点R14R14_irq用户模式下的程序IRQ模式下的程序AareturnB.XA地址A地址A1.执行用户模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3. IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;未被破坏R14_irq北京航空航天大学嵌入式
67、系统ARM微处理器体系结构课件3.7内部寄存器nR14寄存器注意要点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寄存器中,原来保存的返回地址将被覆盖,造成错误;
68、R14_irq 被破坏6. 在程序B返回到程序A,然后在返回到用户模式下被中断的程序时,发生错误,将不能正确返回;returnreturn 解决办法是确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将R14入栈),或者切换到其它处理器模式下。北京航空航天大学嵌入式系统ARM微处理器体系结构课件寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_f
69、iqR10(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),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R
70、15使用的方式超出了这些限制,那么结果将是不可预测的。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.7内部寄存器n读R15的限制 正常操作时,从R15读取的值是处理器正在取指的地址,即当前正在执行指令的地址加上8个字节(两条ARM指令的长度)。由于ARM指令总是以字为单位,所以R15寄存器的最低两位总是为0。LDR R0,PC?PCPC-4PC-8正在执行正在译码正在取指流水线状态地址程序代码北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.7内部寄存器n读R15的限制 当使用STR或STM指令保存R15时,会有一个例外。这些指令可能将当前指令地址加8字节或加12字节保存(将来
71、可能还有其它数字)。偏移量是8还是12取决于具体的ARM芯片,但是对于一个确定的芯片,这个值是一个常量。 所以最好避免使用STR和STM指令来保存R15,如果很难做到,那么应当在程序中计算出该芯片的偏移量。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.7内部寄存器n写R15的限制 正常操作时,写入R15 的值被当作一个指令地址,程序从这个地址处继续执行(相当于执行一次无条件跳转)。 北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.7内部寄存器n写R15的限制 由于ARM指令以字节为边界,因此写入R15的值最低两位通常为0b00。具体的规则取决于内核结构的版本:在ARM结构V3
72、版及以下版本中,写入R15的值的最低两位被忽略,因此跳转地址由指令的实际目标地址(写入R15的值)和0xFFFFFFFC相与得到;在ARM结构V4版及以上版本中,写入R15的值的最低两位为0,如果不是,结果将不可预测。北京航空航天大学嵌入式系统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
73、_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的当前值,异常退出
74、时可通过它恢复CPSR。详细描述参看3.8小节。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.7内部寄存器nARM状态和Thumb状态之间寄存器的关系 Thumb状态寄存器与ARM状态寄存器有如下的关系:Thumb状态R0R7与ARM状态R0R7相同;Thumb状态CPSR和SPSR与ARM状态CPSR和SPSR相同;Thumb状态SP映射到ARM状态R13;Thumb状态LR映射到ARM状态R14;Thumb状态PC映射到ARM状态PC(R15)。北京航空航天大学嵌入式系统ARM微处理器体系结构课件Thumb状态寄存器在Arm状态寄存器上的映射R1R2R3R4R5R6R7R8R9R
75、10R11R12R0堆栈指针 (R13)连接寄存器 (R14)程序计数器 (R15)低寄存器高寄存器北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.7内部寄存器n在Thumb状态中访问高寄存器 在Thumb状态中,高寄存器(R8R15)不是标准寄存器集的一部分。汇编语言程序员对它们的访问受到限制。 可以使用MOV、CMP和ADD指令对高寄存器操作,详见第4章。北京航空航天大学嵌入式系统ARM微处理器体系结构课件第3章目录q1.简介q2.ARM7TDMIq3.ARM7TDMI的模块和内部框图q4.体系结构直接支持的数据类型q5.处理器状态q6.处理器模式q7.内部寄存器q8.程序状态寄存
76、器q9.异常q10.复位q11.存储器及存储器映射I/O北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.8程序状态寄存器n简介 ARM7TDMI内核包含1个CPSR和5个供异常处理程序使用的SPSR。CPSR反映了当前处理器的状态,其包含:4个条件代码标志(负(N)、零(Z)、进位(C)和溢出(V) );2个中断禁止位,分别控制一种类型的中断; 5个对当前处理器模式进行编码的位;1个用于指示当前执行指令(ARM还是Thumb)的位。 北京航空航天大学嵌入式系统ARM微处理器体系结构课件NZCV IM0M1M2M3M4TF. . .31 30 29 28 27 26 8 7 6 5 4
77、3 2 1 03.8程序状态寄存器n简介条件代码标志保留控制位溢出标志 oVerflow进位或借位扩展 Carry零 Zero负或小于 NegativeIRQ禁止 InterruptFIQ禁止 Fast状态位 Thumb模式位 ModeNZCVIM0M1M2M3M4TFCPSR寄存器的格式北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.8程序状态寄存器n条件代码标志 大多数“数值处理指令”可以选择是否影响条件代码标志位。通常如果指令带S后缀,则该指令的执行会影响条件代码标志;但有一些指令的执行总是会影响条件代码标志。 N、 Z、 C和V位都是条件代码标志。算术操作、逻辑操作、MSR或者
78、LDM指令可以对这些位进行设置。所有ARM指令都可按条件来执行,而Thumb指令中只有分支指令可按条件执行。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.8程序状态寄存器n条件代码标志各标志位的含义如下:N 运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;Z 指令结果为0时Z=1(通常表示比较结果“相等”),否则Z=0;北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.8程序状态寄存器n条件代码标志各标志位的含义如下:C 当进行加法运算(包括CMN指令),并且最高位产生进位时C=1,否则C=0。当进行减法运算(包括CMP 指令)
79、,并且最高位产生借位时C=0,否则C=1。对于结合移位操作的非加法/减法指令,C为从最高位最后移出的值,其它指令C不变; V当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不变。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.8程序状态寄存器n控制位 CPSR的最低8位为控制位,当发生异常时,这些位被硬件改变。当处理器处于一个特权模式时,可用软件操作这些位。 它们分别是:中断禁止位;T位;模式位。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.8程序状态寄存器n控制位中断禁止位包括I和F位:当I位置位时,IRQ中断被禁止;当F位置位时,FIQ中断被禁
80、止。T位反映了正在操作的状态:当T位为1时,处理器运行在Thumb状态;当T位清零时,处理器运行在ARM状态。CPTBIT输出信号反映当前状态(1:Thumb)不要使用MSR指令改变T位,否则处理器状态不可预测北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.8程序状态寄存器n控制位模式位包括M4、M3、M2、M1和M0,这些位决定处理器的操作模式。注意:不是所有模式位的组合都定义了有效的处理器模式,如果使用了错误的设置,将引起一个无法恢复的错误。北京航空航天大学嵌入式系统ARM微处理器体系结构课件M4:0模式可见的Thumb状态寄存器可见的ARM状态寄存器10000用户R0R7,SP,
81、LR,PC,CPSRR0R14,PC,CPSR10001快中断R0R7,SP_fiq,LR_fiq,PC,CPSR,SPSR_fiqR0R7,R8_fiqR14_fiq,PC,CPSR,SPSR_fiq10010中断R0R7,SP_irq,LR_irq,PC,CPSR,SPSR_fiqR0R12,R13_irq,R14_irq,PC,CPSR,SPSR_irq10011管理R0R7,SP_svc,LR_svc,PC,CPSR,SPSR_svcR0R12,R13_svc,R14_svc,PC,CPSR,SPSR_svc10111中止R0R7,SP_abt,LR_abt,PC,CPSR,SPSR_
82、abtR0R12,R13_abt,R14_abt,PC,CPSR,SPSR_abt11011未定义R0R7,SP_und,LR_und,PC,CPSR,SPSR_undR0R12,R13_und,R14_und,PC,CPSR,SPSR_und11111系统R0R7,SP,LR,PC,CPSRR0R14,PC,CPSRCPSR模式位设置表北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.8程序状态寄存器n保留位 CPSR中的保留位被保留将来使用。为了提高程序的可移植性,当改变CPSR标志和控制位时,请不要改变这些保留位。另外,请确保程序的运行不受保留位的值影响,因为将来的处理器可能会将这
83、些位设置为1或者0。 北京航空航天大学嵌入式系统ARM微处理器体系结构课件第3章目录q1.简介q2.ARM7TDMIq3.ARM7TDMI的模块和内部框图q4.体系结构直接支持的数据类型q5.处理器状态q6.处理器模式q7.内部寄存器q8.程序状态寄存器q9.异常q10.复位q11.存储器及存储器映射I/O北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.9异常n简介 只要正常的程序流被暂时中止,处理器就进入异常模式。例如响应一个来自外设的中断。在处理异常之前,ARM7TDMI内核保存当前的处理器状态(CPSR-SPSR),这样当处理程序结束时可以恢复执行原来的程序(SPSR-CPSR)
84、。 如果同时发生两个或更多异常,那么将按照固定的顺序来处理异常,详见“异常优先级”部分。 北京航空航天大学嵌入式系统ARM微处理器体系结构课件异常入口/出口汇总异常类型返回指令之前的状态备注ARMR14_xThumbR14_x软件中断SWIMOVSPC,R14_svcPC+4PC+2此处PC是SWI,未定义的指令取指或预取指中止指令的地址未定义的指令MOVSPC,R14_undPC+4PC+2预取指中止SUBSPC,R14_abt,#4PC+4PC+4快中断SUBSPC,R14_fiq,#4PC+4PC+4此处PC为由于FIQ或IRQ占先而没有被执行的指令的地址中断SUBSPC,R14_irq
85、,#4PC+4PC+4数据中止SUBSPC,R14_abt,#8PC+8PC+8此处PC为产生数据中止的装载或保存指令的地址。复位无复位时保存在R14_svc中的值不可预知。注意:“MOVS PC,R14_svc”是指在管理模式执行MOVS PC,R14指令。“MOVS PC,R14_und”、“SUBS PC,R14_abt,#4”等指令也是类似的。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.9异常n异常的入口和出口处理 如果异常处理程序已经把返回地址拷贝到堆栈,那么可以使用一条多寄存器传送指令来恢复用户寄存器并实现返回。SUB LR,LR,#4;计算返回地址STMFD SP!,
86、R0-R3,LR;保存使用到的寄存器. . .LDMFD SP!,R0-R3,PC ;中断返回中断处理代码的开始部分和退出部分北京航空航天大学嵌入式系统ARM微处理器体系结构课件 如果异常处理程序已经把返回地址拷贝到堆栈,那么可以使用一条多寄存器传送指令来恢复用户寄存器并实现返回。中断处理代码的开始部分和退出部分3.9异常n异常的入口和出口处理SUB LR,LR,#4;计算返回地址STMFD SP!,R0-R3,LR;保存使用到的寄存器. . .LDMFD SP!,R0-R3,PC ;中断返回注意:中断返回指令的寄存器列表(其中必须包括PC)后的“”符号表示这是一条特殊形式的指令。这条指令在从
87、存储器中装载PC的同时(PC是最后恢复的),CPSR也得到恢复。这里使用的堆栈指针SP(R13)是属于异常模式的寄存器,每个异常模式有自己的堆栈指针。这个堆栈指针应必须在系统启动时初始化。 北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.9异常n进入异常在异常发生后,ARM7TDMI内核会作以下工作:1.在适当的LR中保存下一条指令的地址,当异常入口来自:ARM状态,那么ARM7TDMI将当前指令地址加4或加8复制(取决于异常的类型)到LR中;为Thumb状态,那么ARM7TDMI将当前指令地址加2、4或加8 (取决于异常的类型)复制到LR中;异常处理器程序不必确定状态。北京航空航天大
88、学嵌入式系统ARM微处理器体系结构课件3.9异常n进入异常在异常发生后,ARM7TDMI内核会作以下工作:2.将CPSR复制到适当的SPSR中;3. 将CPSR模式位强制设置为与异常类型相对应的值;4.强制PC从相关的异常向量处取指。北京航空航天大学嵌入式系统ARM微处理器体系结构课件 ARM7TDMI内核在中断异常时置位中断禁止标志,这样可以防止不受控制的异常嵌套。注:异常总是在ARM状态中进行处理。当处理器处于Thumb状态时发生了异常,在异常向量地址装入PC时,会自动切换到ARM状态。3.9异常n进入异常北京航空航天大学嵌入式系统ARM微处理器体系结构课件当异常结束时,异常处理程序必须:
89、1.将LR( R14 )中的值减去偏移量后存入PC,偏移量根据异常的类型而有所不同;2.将SPSR的值复制回CPSR;3.清零在入口置位的中断禁止标志。注:恢复CPSR的动作会将T、F和I位自动恢复为异常发生前的值。3.9异常n退出异常北京航空航天大学嵌入式系统ARM微处理器体系结构课件程序AIRQ服务程序系统模式IRQ模式程序寄存器组图示进入异常过程1. 程序在系统模式下运行用户程序,假定当前处理器状态为Thumb状态、允许IRQ中断;2. 程序运行时发生IRQ中断,硬件完成以下动作:LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0.? ? ? ?MODTFI.N
90、 Z C V置位I位(禁止IRQ中断)清零T位(进入ARM状态)设置MOD位,切换处理器模式至IRQ模式将下一条指令的地址存入IRQ模式的LR寄存器将CPSR寄存器内容存入IRQ模式的SPSR寄存器将跳转地址存入PC,实现跳转IRQ0?1.? ? ? ?BackAddrJumpAddrJumpSYS1?0.?“?”表示对该位不关心北京航空航天大学嵌入式系统ARM微处理器体系结构课件在异常处理结束后,异常处理程序完成以下动作:程序AIRQ服务程序系统模式IRQ模式程序寄存器组图示退出异常过程LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0.? ? ? ?MODTFI.
91、N Z C V将SPSR寄存器的值复制回CPSR寄存器;将LR寄存的值减去一个常量后复制到PC寄存器,跳转到被中断的用户程序。IRQ0?1.? ? ? ?BackAddrJumpAddrreturnSYS1?0.?SYS1?0.? ? ? ?BackAddr-4Jump“?”表示对该位不关心北京航空航天大学嵌入式系统ARM微处理器体系结构课件 快速中断请求(FIQ)适用于对一个突发事件的快速响应(数据传输和通道处理)保护的需要(这可以加速上下文切换的速度)。通过处理器上的FIQ输入引脚,由外部产生FIQ异常。 不管异常入口是来自ARM状态还是Thumb状态,FIQ处理程序都会通过执行下面的指令
92、从中断返回:SUBS PC,R14_fiq,#4 在一个特权模式中,可以通过置位CPSR中的F位来禁止FIQ异常。若F位清零,则ARM在执行完当前指令后时检查FIQ输入引脚。3.9异常n快速中断请求北京航空航天大学嵌入式系统ARM微处理器体系结构课件 中断请求(IRQ)异常是一个由nIRQ输入端的低电平所产生的正常中断(在具体的芯片中,nIRQ由片内外设拉低,nIRQ是内核的一个信号,对程序员不可见)。IRQ的优先级低于FIQ。对于FIQ序列它是被屏蔽的。任何时候在一个特权模式下,都可通过置位CPSR中的I 位来禁止IRQ。 不管异常入口是来自ARM状态还是Thumb状态,IRQ处理程序都会通
93、过执行下面的指令从中断返回:SUBS PC,R14_irq,#43.9异常n中断请求北京航空航天大学嵌入式系统ARM微处理器体系结构课件 中止意味着对当前存储器的访问不能完成,由ABORT输入信号触发(高电平),在存储器访问周期末处理器检查该信号。中止包含两种类型:预取中止 发生在指令预取过程中数据中止 发生在对数据访问时3.9异常n中止北京航空航天大学嵌入式系统ARM微处理器体系结构课件 当发生预取中止时,ARM7TDMI内核将预取的指令标记为无效,但在指令到达流水线的执行阶段时才进入异常。如果指令在流水线中因为发生分支而没有被执行,中止将不会发生。 在处理中止的原因之后,不管处于哪种处理器
94、操作状态,处理程序都会执行下面的指令恢复PC和CPSR并重试被中止的指令: SUBS PC,R14_abt,#43.9异常n中止预取指中止北京航空航天大学嵌入式系统ARM微处理器体系结构课件 当发生数据中止后,根据产生数据中止的指令类型作出不同的处理:3.9异常n中止数据中止数据转移指令(LDR、STR)回写到被修改的基址寄存器。中止处理程序必须处理这一细节。 LDR R0,R1, #4! ;R1R1+4 R0R1交换指令(SWP)中止好像没有被执行过一样(中止发生在SWP指令进行读访问时) SWP Rd, Rm, Rn ;RdRn RnRm北京航空航天大学嵌入式系统ARM微处理器体系结构课件
95、 在修复产生中止的原因后,不管处于哪种处理器操作状态,处理程序都必须执行下面的返回指令,重试被中止的指令 : SUBS PC,R14_abt,#83.9异常n中止数据中止北京航空航天大学嵌入式系统ARM微处理器体系结构课件 使用软件中断(SWI)指令可以进入管理模式,通常用于请求一个特定的管理函数。SWI处理程序通过执行下面的指令返回:MOVS PC,R14_svc 这个动作恢复了PC并返回到SWI之后的指令。SWI处理程序读取操作码以提取SWI函数编号。 3.9异常n软件中断指令北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.9异常SWI 0x01向量表用户程序用户程序(C/ASM)
96、SWI处理程序(ASM)(可选)SWI处理程序(C)n用户程序调用SWInSWI中断处理程序包含汇编部分和可选用的C部分n软件中断指令北京航空航天大学嵌入式系统ARM微处理器体系结构课件 当ARM7TDMI处理器遇到一条自己和系统内任何协处理器都无法处理的指令时,ARM7TDMI内核执行未定义指令陷阱。软件可使用这一机制通过模拟未定义的协处理器指令来扩展ARM指令集。注:ARM7TDMI处理器完全遵循ARM结构v4T,可以捕获所有分类未被定义的指令位格式。3.9异常n未定义的指令北京航空航天大学嵌入式系统ARM微处理器体系结构课件 在模拟处理了失败的指令后,陷阱程序执行下面的指令:MOVS P
97、C,R14_svc 这个动作恢复了PC、CPSR并返回到未定义指令之后的指令。 3.9异常n未定义的指令北京航空航天大学嵌入式系统ARM微处理器体系结构课件异常向量地址异常类型进入时的模式进入时I的状态进入时F的状态0x00000000复位管理禁止禁止0x00000004未定义指令未定义IF0x00000008软件中断(SWI)管理禁止F0x0000000C预取中止(指令)中止IF0x00000010数据中止中止IF0x00000014保留保留0x00000018IRQ中断禁止F0x0000001CFIQ快中断禁止禁止注:表中的I和F表示不对该位有影响,保留原来的指。 高向量地址: 0xFFF
98、F00000xFFFF001C 实现定义北京航空航天大学嵌入式系统ARM微处理器体系结构课件 当多个异常同时发生时,一个固定的优先级系统决定它们被处理的顺序:3.9异常n异常优先级异常类型优先级复位1(最高优先级)数据中止2FIQ3IRQ4预取指中止5未定义指令6SWI7(最低优先级)优先级降低北京航空航天大学嵌入式系统ARM微处理器体系结构课件第3章目录q1.简介q2.ARM7TDMIq3.ARM7TDMI的模块和内部框图q4.体系结构直接支持的数据类型q5.处理器状态q6.处理器模式q7.内部寄存器q8.程序状态寄存器q9.异常q10.复位q11.存储器及存储器映射I/O北京航空航天大学嵌
99、入式系统ARM微处理器体系结构课件3.10复位n复位 当nRESET信号被拉低时(一般外部复位引脚电平的变化和芯片的其它复位源会改变这个内核信号),ARM7TDMI处理器放弃正在执行的指令。 在复位后,除PC和CPSR之外的所有寄存器的值都不确定。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.10复位n复位 当nRESET信号再次变为高电平时,ARM处理器执行下列操作:1.强制CPSR中的M4:0变为b10011(管理模式);2.置位CPSR中的I和F位;3.清零CPSR中的T位;4.强制PC从地址0x00开始对下一条指令进行取指;5.返回到ARM状态并恢复执行 。 北京航空航天大学
100、嵌入式系统ARM微处理器体系结构课件第3章目录q1.简介q2.ARM7TDMIq3.ARM7TDMI的模块和内部框图q4.体系结构直接支持的数据类型q5.处理器状态q6.处理器模式q7.内部寄存器q8.程序状态寄存器q9.异常q10.复位q11.存储器及存储器映射I/O北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.11存储器及存储器映射I/On简介 ARM7TDMI处理器采用冯诺依曼(Von Neumann)结构,指令和数据共用一条32位数据总线。只有装载、保存和交换指令可访问存储器中的数据。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.11存储器及存储器映射I/On简介
101、ARM7的规范仅定义了处理器核与存储系统之间的信号及时序(局部总线),而实际的芯片一般在外部总线与处理器核的局部总线之间有一个存储器管理部件将局部总线的信号和时序转换为现实的外部总线信号和时序。因此,外部总线的信号和时序与具体的芯片相关,不是ARM7的标准。具体到某个芯片的外部存储系统的设计需要参考其芯片的数据手册等资料。 北京航空航天大学嵌入式系统ARM微处理器体系结构课件存储器控制器存储器3.11存储器及存储器映射I/On简介ARM7定义了局部总线的接口时序各芯片厂商制定了自己的接口时序ARM7局部总线一般在两者之间加入存储器控制器北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.1
102、1存储器及存储器映射I/On简介 ARM7TDMI处理器将存储器看作是一个从0开始的线性递增的字节集合:字节0到3保存第1个存储的字字节4到7保存第2个存储的字字节8到11保存第3个存储的字依此类推 字节字节字节字节地址AA+1A+2A+3字节字节字节字节字节字节字节字节字节字节字节字节048北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.11存储器及存储器映射I/On简介 ARM7TDMI处理器可以将存储器中的字以下列格式存储:大端格式(Big-endian)小端格式(Little-endian)北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.11存储器及存储器映射I/On存
103、储器格式地址空间的规则:位于地址A的字包含的字节位于地址A,A+1,A+2和A+3;位于地址A的半字包含的字节位于地址A和A+1;位于地址A+2的半字包含的字节位于地址A+2和A+3;位于地址A的字包含的半字位于地址A和A+2; 字节字节字节字节地址AA+1A+2A+3半字半字字北京航空航天大学嵌入式系统ARM微处理器体系结构课件存储器系统有两种映射机制:小端存储器系统(little-endian): 在小端格式中,高位数字存放在高位字节中。因此存储器系统字节0(LSB)连接到数据线70(低位对齐)。 大端存储器系统(big-endian): 在大端格式中,高位数字存放在低位字节中。因此存储器
104、系统字节0连接到数据线3124(高位对齐) 。 0x12345678字数据的大小端存储方式3.11存储器及存储器映射I/On存储器格式0x12低位地址高位地址0x340x560x78小端模式0x78低位地址高位地址0x560x340x12大端模式北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.11存储器及存储器映射I/On存储器格式小端存储大端存储北京航空航天大学嵌入式系统ARM微处理器体系结构课件 一个基于ARM内核的芯片可以只支持大端模式或小端模式,也可以两者都支持。通常,小端模式是ARM处理器的默认形式。 在ARM指令集中不包含任何直接选择大小端的指令,但是一个同时支持大小端模式
105、的ARM芯片可以通过硬件配置(一般使用芯片的引脚来配置)来匹配存储器系统所使用的规则。3.11存储器及存储器映射I/On存储器格式注意:如果实际的存储器格式与芯片的存储器格式不符时,只有以字为单位的数据存取才正确,否则将出现不可预期的结果。北京航空航天大学嵌入式系统ARM微处理器体系结构课件3.11存储器及存储器映射I/On地址空间 ARM结构使用单个平面的232个8位字节地址空间。字节地址按照无符号数排列,从0到2321。地址空间可以看作是包含230个32位字,或231个16位半字。如果地址向上或向下溢出地址空间,通常会发生翻转。注意:如果在取指操作时地址发生溢出,只要没有执行预取的无效指令,就不会导致异常。北京航空航天大学嵌入式系统ARM微处理器体系结构课件 基于ARM内核的芯片具有许多的外设,这些外设访问的标准方法是使用存储器映射的I/O,为外设的每个寄存器都分配一个地址。通常,从这些地址装载数据用于读入,向这些地址保存数据用于输出。有些地址的装载和保存用于外设的控制功能,而不是输入或输出功能。 3.11存储器及存储器映射I/On存储器映射的I/O注意:存储器映射的I/O位置的操作不同于正常的存储器位置的操作。通常,存储器映射的I/O位置没有高速缓存和无缓冲区。北京航空航天大学嵌入式系统ARM微处理器体系结构课件