第章ARM体系结构

上传人:新** 文档编号:569426656 上传时间:2024-07-29 格式:PPT 页数:77 大小:1.45MB
返回 下载 相关 举报
第章ARM体系结构_第1页
第1页 / 共77页
第章ARM体系结构_第2页
第2页 / 共77页
第章ARM体系结构_第3页
第3页 / 共77页
第章ARM体系结构_第4页
第4页 / 共77页
第章ARM体系结构_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《第章ARM体系结构》由会员分享,可在线阅读,更多相关《第章ARM体系结构(77页珍藏版)》请在金锄头文库上搜索。

1、1.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式ARM7体系结构6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统甩其悍囊蛊忽炯浚竣商朝冻递赔存蔗艘尔釉靠弯侣驭札勤加耍庞悦栖祟老第章ARM体系结构第章ARM体系结构1冯冯诺依曼体系结构模型诺依曼体系结构模型指令寄存器指令寄存器控制器控制器数据通道数据通道输入输入输出输出中央处理器中央处理器存储器存储器程序程序指令指令0 0指令指令1 1指令指令2 2指令指令3 3指令指令4 4数据数据数据数据0 0数据数据1 1数据数据2 2腕樊舶燥池

2、卉门卷疗录苍陋下女躯拱眨话捐包贿杖伎晤棚赡飘媳扩俱设含第章ARM体系结构第章ARM体系结构2哈佛体系结构哈佛体系结构指令寄存器指令寄存器控制器控制器数据通道数据通道输入输入输出输出中央处理器中央处理器程序存储器程序存储器指令指令0指令指令1指令指令2数据存储器数据存储器数据数据0数据数据1数据数据2地址地址指令指令地址地址数据数据浆怂创箩疚啄圈纤倾孺津请躬喂烤接理渤山炭岿癌蹬屏荐戴笛衔鹏浮脸户第章ARM体系结构第章ARM体系结构3CISC和和RISCCISCCISC:复杂指令集(:复杂指令集(Complex Instruction Set ComputerComplex Instruction

3、 Set Computer)具有大量的指令和寻址方式具有大量的指令和寻址方式8/28/2原则:原则:80%80%的程序只使用的程序只使用20%20%的指令的指令大多数程序只使用少量的指令就能够运行。大多数程序只使用少量的指令就能够运行。RISCRISC:精简指令集(:精简指令集(Reduced Instruction Set Computer)Reduced Instruction Set Computer)在通道中只包含最有用的指令在通道中只包含最有用的指令确保数据通道快速执行每一条指令确保数据通道快速执行每一条指令使使CPUCPU硬件结构设计变得更为简单硬件结构设计变得更为简单 邓阻渍屑缀

4、九蚁沈湃胀啡眶弊舒淬硬戍轴胯句愁择杜嗓沽拢喉毅勃纹炸芳第章ARM体系结构第章ARM体系结构42.1ARM简介lARM公司简介ARM是AdvancedRISCMachines的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC处理器。ARM公司的特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和OEM(OriginalEquipmentManufacturer,原始设备生产商)厂商,并提供服务。OEM:定牌生产合作,俗称“贴牌”。这种委托他人生产的合作方式即为OEM,承接这加工任务的制造商就被称为OEM厂商,其生产的产品就是OEM产品。轮革

5、瞪叼瓤湍遂憨椭葱燎斑棕残珠甚见月学旬绿月话血赐迎条播圃蜒据荫第章ARM体系结构第章ARM体系结构5授权费IPARM创造和设计IP产品,例如:芯片Partner把ARMIP和其他IP集成进产品版权费单价OEM用来自ARMPartner的芯片设计制造最终用户产品业务拓展/市场格局ARMARM的业务模型的业务模型勘亡披麻捕磕挠洼舟蔫跪诊撤山做稀绍慢输幕逾症牢秆经两巧惨辊鸭及溪第章ARM体系结构第章ARM体系结构62.1ARM简介lARM公司简介将技术授权给其它芯片厂商形成各具特色的形成各具特色的ARMARM芯片芯片. . .填插喻亨帖丙幂款消老酉啡择匣咐晤千侍椽覆傅犁要器叮腿姑执奢绚谍屡第章ARM体

6、系结构第章ARM体系结构72.1ARM简介lRISC结构特性两种体系结构:CISC(ComplexInstructionSetComputer),即“复杂指令系统计算机PC机系列; RISC RISC (reducedinstructionsetcomputer)是精简指令集计算机的缩写,其目标是设计出在高时钟频率设计出在高时钟频率下单周期执行,简单而有效的指令集下单周期执行,简单而有效的指令集。ARM内核采用RISC体系结构,因此具有RISC的结构特点:具有大量的通用存储器;具有大量的通用存储器;独特的装载独特的装载/ /保存(保存(load-storeload-store)结构;)结构;简

7、单的寻址模式简单的寻址模式; ;统一和固定长度的指令格式。统一和固定长度的指令格式。返救昨提蔚晦乘旗或床嚷嵌乘阉喊卜微栖彤崭激盛尘床长秃夜巷犬荚彻蕾第章ARM体系结构第章ARM体系结构82.1ARM简介 为了使ARM能够更好地满足嵌入式应用的需要,ARM体系结构还有以下特点:每条数据处理指令可同时包含算术逻辑单元(ALU)的运算和移位处理,实现ALU和移位器的最大利用;使用地址自增和自减地址自增和自减的寻址方式优化程序循环;装载装载/ /保存保存指令对数据的批量传输,实现最大数据吞吐量;多数指令的依条件执行,实现最快速的代码执行。lARM体系结构顶缨喻帛振又俗店捷径离鞠逛柏心鼎搔谣沥话重舰看单

8、坝杆硬纺逝驯酝秸第章ARM体系结构第章ARM体系结构92.1ARM简介l常用ARM处理器系列 ARM公司开发了很多系列的ARM处理器核,目前最新的系列是Cortex,而ARM6核以及更早的系列已经很罕见了。当前应用比较多的ARM处理器核系列有:ARM7ARM9ARM10EXscaleARM11CortexARM9E本课程主要介绍ARM7系列。祟蛰泰炯酱喉侣搐屈腔躲妒油兢斧合洪贾合槛拂脆悦跃浑腮鹰魁市胃炭撤第章ARM体系结构第章ARM体系结构10ARM内核分类与系列1994-2004年发布的年发布的ARM内核内核嫁妓忆呐桓棘性幕圃资试庸冀囚伎摄许蹈瘦碘撮舜久固伙技计灵违抵帝产第章ARM体系结构第

9、章ARM体系结构112.1ARM简介分类处理器内核处理器内核 内核分类内核分类ARM7 ARM7DMI(-S) ARM720T ARM7EJ-SARM9 ARM920T ARM922TARM9E ARM926EJ-S ARM946E-S ARM966E-S ARM968E-SARM10E ARM1020E ARM1022E ARM1026EJ-S处理器内核处理器内核内核分类内核分类ARM11 ARM1136J(F)-S ARM1156T2(F)-S ARM1176JZ(F)-SSecurCore SC100 SC110 SC200 SC210Strong ARMXscale融肌拦渗兰觉亦扎铂韧

10、奥狼玖觅弥莆体孺倍雹纺尧痹冤党蘑百崭铬骚韦琉第章ARM体系结构第章ARM体系结构122.1ARM简介lARMCortex系列简介 基于ARMv7版本的ARM Cortex系列产品由A、R、M三个系列组成,具体分类延续了一直以来ARM面向具体应用设计CPU的思路。 ARMCortexA应用处理器(Application Processor)系列 R实时控制处理(Real Time Control )系列M微控制器(Micro Controller )系列珠漆痹唯赊彻认判痞稳木堑坷澡艇蛤羊坍卸绘耙环汁堪指诉七娃防笺伞街第章ARM体系结构第章ARM体系结构132.1ARM简介lCortexTM-M3

11、处理器简介(针对低端市场) 该处理器是首款基于ARMv7-M架构的处理器,采用了纯Thumb2指令的执行方式,具有极高的运算能力和中断相应能力。 Cortex-M3主要应用于汽车车身系统,工业控制系统和无线网络等对功耗和成本敏感的嵌入式应用领域。lCortexTM-R4处理器简介 该处理器是首款基于ARMv7架构的高级嵌入式处理器,其主要目标为产量巨大的高级嵌入式应用系统,如硬盘,喷墨式打印机,以及汽车安全系统等等。lCortexTM-R4F处理器简介 该处理器在CortexTM-R4处理器的基础上加入了代码错误校正(ECC)技术,浮点运算单元(FPU)以及DMA综合配置的能力,增强了处理器在

12、存储器保护单元、缓存、紧密耦合存储器、DMA访问以及调试方面的能力。炼厘吓死微奎奥焊昼衔吭槐郸治宰储蜂襄梯控坡诱虹身播汪格孵崭卿赖莱第章ARM体系结构第章ARM体系结构142.1ARM简介lCortexTM-A8处理器简介 该处理器是ARM公司所开发的基于基于ARMv7ARMv7架构架构的首款应用级处理器,其特色是运用了可增加代码密度和加强性能的技术、可支持多媒体以及信号处理能力的NEONTM技术、以及能够支持Java和其他文字代码语言的提前和即时编译的JazelleRTC技术。众多先进的技术使其适用于家电以及电子行业等各种高端的应用领域。lARM7系列简介 该系列包括ARM7TDMI、ARM

13、7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle(Java加速器)的ARM7EJ-S。该系列处理器提供Thumb 16位压缩指令集和EmbededICE软件调试方式,适用于更大规模的SoC设计中。ARM7系列广泛应用于多媒体和嵌入式设备,包括Internet设备、网络和调制解调器设备,以及移动电话、PDA等无线设备。阅霞圃沤敬眨淑耘喇荔训欣捧咸策独这婶至挂氖蘑寨共匠缓杏踞扑梧通衡第章ARM体系结构第章ARM体系结构152.1ARM简介 该系列包括ARM9TDMI、ARM920T和带有高速缓存处理器宏单元的ARM940T。除了兼容ARM7系列,而且能够更加灵活的设计

14、。ARM9系列主要应用于引擎管理、仪器仪表、安全系统和机顶盒等领域。lARM9系列简介 该系列为含有DSP指令集的综合处理器,包括ARM926EJ-S、带有高速缓存处理器宏单元的ARM966E-S/ARM946E-S。其内核在ARM7处理器内核的基础上使用了Jazelle增强技术,该技术支持一种新的Java操作状态,允许在硬件中执行Java字节码。ARM9E系列主要应用于下一代无线设备、数字消费品、成像设备、工业控制、存储设备和网络设备等领域。lARM9E系列简介必雏储哩郁九穗棵授瘩觉徘晋夹亲先奉卓埠忱蔚诀饵祖才碍制江侧莎锁每第章ARM体系结构第章ARM体系结构162.1ARM简介lARM10

15、E系列简介 该系列包括ARM1020E和ARM1020E处理器核,其核心在于使用向量浮点(VFP)单元VFP10提供高性能的浮点解决方案,从而极大提高了处理器的整型和浮点运算性能。 可以用于视频游戏机和高性能打印机等场合。lXscale简介 Intel Xscale微控制器则提供全性能、高性价比、低功耗的解决方案,支持16位Thumb指令并集成数字信号处理(DSP)指令。 主要应用于手提式通讯和消费电子类设备。殆阁笑黄烹钞袍姑钟敛戚码灭黄渗娠庭卸维帧驰潜疾壬凉矾媒瓮们奎熙乌第章ARM体系结构第章ARM体系结构171.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器

16、状态5.ARM处理器模式ARM7体系结构6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统陡牢孝瑞剖躇奔镁柜置臀救焕土威钩引哎维壬柿扦疙啦乍亡张疫印肺焊粗第章ARM体系结构第章ARM体系结构182.2ARM7TDMIl简介 ARM7TDMI是基于ARM体系结构V4版本的低端ARM核。 其弥补了ARM6很难在低于5V电压下稳定工作的不足,还增加了后缀所对应的功能:注意:“ARM核”并非芯片,ARM核与其它部件如RAM、ROM、片内外设组合在一起才能构成现实的芯片。ARM7TDMI-S支持高密度16位的Thumb指令集;支持片上调试;支持64位乘

17、法;支持EmbededICE观察硬件;ARM7TDMI 的可综合(synthesizable)版本(软核),对应用工程师来说其编程模型与ARM7TDMI 一致;铬肠荷偏褂膛涌竿哉类豪和戳惰窄肚耿呀搪韵嫩是宋沃箱沏焉简哨征弘帆第章ARM体系结构第章ARM体系结构19命名的含义标志含义说明T支持Thumb指令集Thumb指令集版本1:ARMv4TThumb指令集版本2:ARMv5TThumb-2:ARMv6TD片上调试M支持长乘法32位乘32位得到64位,32位的乘加得到64位IEmbeddedICEEDSP指令增加了DSP算法处理器指令:16位乘加指令,饱和的带符号数的加减法,双字数据操作,ca

18、che预取指令JJava加速器Jazelle提高java代码的运行速度S可综合提供VHDL或Verilog语言设计文件僚腕叉锥档釉遇镭爆镇奈链区顽哟咒则皮屠鳞荡仿菩衫酶捍棍曲钟画胺诀第章ARM体系结构第章ARM体系结构202.2ARM7TDMIl存储器的字与半字从偶数地址开始的连续2个字节构成一个半字;以能被4整除的地址开始的连续4个字节构成一个字;ARM指令的长度刚好是一个字,Thumb指令的长度刚好是一个半字。窘掉闽卧渗遁署陷秦值扑祁帖诗俐镐琳蹦紧丑症馋恨缝薪结邀坯涂芬馆缔第章ARM体系结构第章ARM体系结构212.2ARM7TDMI 如果一个数据是从偶地址开始的连续存储,那么它就是半字对

19、齐,否则就是非半字对齐; 如果一个数据是以能被4整除的地址开始的连续存储,那么它就是字对齐,否则就是非字对齐。方式方式半字对齐半字对齐字对齐字对齐地址地址0x40020x40020x40040x40040x40040x40040x40080x4008特征特征Bit0=0Bit0=0其他位为任意值其他位为任意值Bit1=0,Bit0=0Bit1=0,Bit0=0其他位为任意值其他位为任意值l存储器的存储方式淌斧腥烩末褂窟匹务滑室油艾桑陶煽忧割俩啄拜锋獭纽苇闻劲装奇瘁魏柞第章ARM体系结构第章ARM体系结构222.2ARM7TDMIl三级流水线 ARM处理器使用流水线来增加处理器指令流的速度,这样

20、可使几个操作同时进行,并使处理和存储器系统连续操作,能提供0.9MIPS/MHz的指令执行速度。 ARM7TDMI的流水线分3级,分别为:取指译码执行取指译码执行处理指令并将结果写回寄存器识别将要被执行的指令从寄存器装载一条指令正常操作过程中,在执行一条指令的同时对下一条(第二条)指令进行译码,并将第三条指令从存储器中取出。 在ARM状态下,流水线上各指令的地址为: 在Thumb状态下,流水线上各指令的地址为:PCPC-4PC-8PCPC-2PC-4瞒庶洛青音础蒋牺秦鹤戏煮溃恒谆慑史浑驹钎浓奶轧亚转潮扒荡贞剖卖酥第章ARM体系结构第章ARM体系结构232.2ARM7TDMIl三级流水线结构的指

21、令执行顺序PC指令1指令2指令3指令4程序存储器PC-4PC-8PC+4周期1周期2周期3周期4周期5周期6取指译码执行取指译码执行取指译码执行取指译码执行周期周期2周期周期1周期周期3周期周期4 在第1个周期,PC指向指令1,此时指令1进入三级流水线的取指阶段。1 在第2个周期,PC指向指令2,此时指令1进入三级流水线的译码阶段,同时取出指令2。2 在第3个周期,PC指向指令3,此时指令1进入三级流水线的执行阶段,指令2进入译码阶段,取出指令3。3 在第4个周期,指令1执行完成,指令2和指令3流水线推进一级,同时开始指令4的取指处理。4处理器执行一条指令的三个阶段号姜寅丧壮便萄秩夫舔杆谭厂炎

22、桩禽葵秆慑扭娄讽臼蒙挟关额卷霜半揣拆第章ARM体系结构第章ARM体系结构24 执行ADD PC,PC,#4指令后,PC的值为多少?2.2ARM7TDMIl思考题ADDPC,PC,#40x40000x40040x40080x400C地址指令PC取指译码执行PCPC-4PC-8ARM7的3级流水线ADD 程序计数器R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或“正在译码”的指令。 一般来说,人们习惯性约定将“正在执行”的指令作为参考点,则:PC值当前程序执行位置8 注:ARM状态时,每条指令为4字节长。 PC指向0x4000地址,取指ADD指令。 PC指向0x4004地址

23、,译码ADD指令。 PC指向0x4008地址,执行ADD指令,所以指令执行的结果为: PC=PC+40x400840x400C。绕借妓贤坚喇呼肄乔勿轧抡桥延嚏掌拙伏村绰鹃何恋抨孤糕坏折蚤恩确沃第章ARM体系结构第章ARM体系结构251.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式ARM7体系结构6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统巍儿条硼磺颅威的姚悸哦搓空绷拼铜扳腿藏忱忻吏皖峪呻舱掌币用飘掖花第章ARM体系结构第章ARM体系结构26CPU扫描链1扫描链1数据总线数据总线扫

24、描链1扫描链2协处理器信号接口EmbeddedICE-RTTAP控制器EmbeddedICE-RT宏单元DBGTCKENDBGTMSDBGnTRSTDBGTDIDBGTDORDATA31:0WDATA31:0ADDR31:0TRANS1:0PROT1:0SIZE1:0WRITELOCKDBGRNG(0)DBGRNG(1)DBGEXT(1)DBGEXT(0)2.3ARM模块框图CPU协处理接口信号EmbedICE硬件仿真功能模块片上调试系统读写总线世搐恒脊贮疟械闭诗涕当港蚀赔冰泌晨盖舔束渺曲荫锑浸面男障迪睛汾袱第章ARM体系结构第章ARM体系结构272.3ARM内核框图地址寄存器寄存器组31*3

25、2位寄存器(6个状态寄存器)地址增加器乘法器桶形移位器32位ALU写数据寄存器指令管线读数据寄存器Thumb指令译码器指令译码和控制逻辑ADDR31:0CLKCLENCFGBIGENDnIRQnFIQnRESETABORTLOCKWRITESIZE1:0PROT1:0TRANS1:0DBG输出DBG输入CP控制CP握手WDATA31:0RDATA31:0扫描调试控制鸣诚佰异灵焕歉戊民兢络醋夸旱泌误钦脉未抒掂绘岗芋讨瓶翰奇蜒椿拒碱第章ARM体系结构第章ARM体系结构282.3ARM功能框图ARM7TDMI-S处理器LOCKCLKCLKENnIRQnFIQnRESETCFGBIGENDDBGRQD

26、MOREDBGINSTRVAILDDBGBREAKDBGACKDBGnEXECDBGEXT1DBGEXT0DBGENDBGCOMMTXDBGCOMMRXDBGRNG0DBGRNG1DBGTCKENDBGTMSDBGTDIDBGnTRSTDBGTDODBGnTDOENADDR31:0WDATA31:0RDATA31:0ABORTWRITESIZE1:0PROT1:0TRANS1:0CPnTRANSCPnOPCCPnMREQCPSEQCPTBITCPnICPACPB同步的扫描调试访问接口存储器接口存储器管理接口协处理器接口时钟中断总线控制仲裁调试叭韦像奔份雨旅鹃信明采扰奏掣撑狙咎碗荫瞅暮第缄惶盗蔓

27、蹬巫忻钵戊冯第章ARM体系结构第章ARM体系结构291.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式ARM7体系结构6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统荒例勺喳价狸弧吵鳞存云军睡淄孝翠擦槛窘兄列恃座浑厚莎怂音笆幌侨都第章ARM体系结构第章ARM体系结构302.4ARM处理器状态l处理器状态 ARM7TDMI处理器内核包含2套指令系统,分别为ARM指令集和Thumb指令,并且各自对应1种处理器的状态:ARM状态:32位,处理器执行字方式的ARM指令,处理器默认为此状态;Th

28、umb状态:16位,处理器执行半字方式的Thumb指令。注意:注意:两个状态之间的切换并不影响处理器模式或寄存器内容。尼贴税熏嫌既婉走页跟菌佰律憎袄注矫缀焕传把景邓动霖扰烦灾狮鹿棍刺第章ARM体系结构第章ARM体系结构312.4ARM处理器状态l状态切换的一个例子地址最低位为0,表示切换到ARM状态 使用BX指令将ARM内核的操作状态在ARM状态和Thumb状态之间进行切换。ARM指令集Thumb指令集CODE32LDRR0,=Lable+1BXR0CODE16LableMOVR1,#12CODE16LDRR0,=LableBXR0CODE32LableMOVR1,#10地址最低位为1,表示切

29、换到Thumb状态跳转地址标号执行完BX指令,处理器切换到Thumb状态,开始执行Thumb指令程序代码指令集关系 从ARM状态切换到Thumb状态的程序代码如下: 从Thumb状态切换到ARM状态的程序代码如下:执行完BX指令,处理器切换到ARM状态,开始执行ARM指令萍材毅酪倡振邱芒婚虑特询辽却茵药眶锐块绘珐花骇猪人姿裸嘻瞒杖炒使第章ARM体系结构第章ARM体系结构321.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式ARM7体系结构6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统

30、厚裸痕尚骆冠肩用蚂乔遗赦递克洋甥粒衅裙讫型颁庐输敝只裙框歌琴共寿第章ARM体系结构第章ARM体系结构332.5ARM处理器模式l简介ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。中止模式、未定义模式和系统模式。这样的好处是可以更好的支持操作系统并提高工作效率。ARM7TDMI完全支持这七种模式。澈坊孕尾冠桥亏庚总梁悦颈生娥他蛙星沙帜弦嘘炳盛媒咆日吻隋寓牲仅募第章ARM体系结构第章ARM体系结构34 除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(

31、或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。处理器模式处理器模式说明说明备注备注用户(usr)正常程序运行的工作模式不能直接从用户模式切换到其它模式特权模式系统(sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权异常模式快中断(fiq)快速中断请求处理只有在FIQ异常响应时,才进入此模式中断(irq)中断请求处理只有在IRQ异常响应时,才进入此模式管理(svc)供操作系统使用的一种保护模式只有在系统复位和软件中断响应时,才进入此模式中止(abt)用于虚拟内存和/或存储器保护在ARM7内核中没有多

32、大用处未定义(und)支持软件仿真的硬件协处理器只有在未定义指令异常响应时,才进入此模式l处理器模式 这两种模式都不能由异常进入,想要进入必须修改CPSR,而且它们使用完全相同的寄存器组。系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。 这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。何时进入异常模式,具体规定如下:处理器复位之后进入管理模式,操作

33、系统内核通常处于管理模式;当处理器访问存储器失败时,进入数据访问中止模式;当处理器遇到没有定义或不支持的指令时,进入未定义模式;中断模式与快速中断模式分别对ARM处理器2种不同级别的中断作出响应。寅屈唬臂遇卢铰嫩买缉静优条圾皖孵虹点裂把讫损种空模耐侨锗巢号酮应第章ARM体系结构第章ARM体系结构351.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式ARM7体系结构6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统陶易鸽幅央琶模怜腻楞间捡兴煞痕咸驰灯添戒颜褥又顶酮英瞬威湖伍耳硕第章ARM体

34、系结构第章ARM体系结构362.6ARM内部寄存器l简介 在ARM处理器内部共有37个用户可访问的寄存器,分别为31个通用32位寄存器和6个状态寄存器。 ARM处理器共有7种不同的处理器模式,每种模式都有一组相应的寄存器组,最多可以18个活动的寄存器。SPSR:普通模式和系统模式下是看不见SPSR这个寄存器的!只有当进入异常模式的时候,SPSR就会保存当前CPSR的状态,便于退出异常时恢复使用。哀呼鹰玲库溢诚址蛔帽丸硝耶典敝企悠项换垛蚀牲件澡坝米滦酶荒扮凿深第章ARM体系结构第章ARM体系结构37ARM状态各模式下的寄存器寄存器寄存器类别类别寄存器在汇寄存器在汇编中的名称编中的名称各模式下实际

35、访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通通用用寄寄存存器器和和程程序序计计数数器器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_und

36、R13_irqR14_fiqR15(PC)R15状态状态寄存器寄存器CPSRCPSRSPSRSPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq 所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。叠意摊政岭囊奠求鼓搜昌滥杂砒呵哮旗芽荡豺切掂作赐檄囊爆委俏习娶挞第章ARM体系结构第章ARM体系结构38ARM状态各模式下可以访问的寄存器寄存器寄存器类别类别寄存器在汇寄存器在汇编中的名称编中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通通用用寄寄存存器器和和程程序序计计数数器器

37、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状态状态寄存器寄存器CPSRCPSRSPSRSPSR_svcSPSR_abtSPSR_undSP

38、SR_irqSPSR_fiq渍挚止韦碱哉焰岿困诞庸运册洼吏贺犀是半囊客赋覆硷瘩驮抑垫讼杭墨缮第章ARM体系结构第章ARM体系结构39未分组的通用寄存器寄存器寄存器类别类别寄存器在汇寄存器在汇编中的名称编中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通通用用寄寄存存器器和和程程序序计计数数器器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_fiqR1

39、1(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR13_irqR14_fiqR15(PC)R15状态状态寄存器寄存器CPSRCPSRSPSRSPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq寄存器R0R7为未分组的通用寄存器,它们在任何处理器模式都对应于相同的32位物理寄存器。第一类分组的通用寄存器寄存器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FI

40、Q模式。在发生FIQ中断后,处理器不必为保护寄存器而浪费时间,从而加速了FIQ的处理速度。第二类分组的通用寄存器寄存器R13、R14分别有6个分组的物理寄存器。1个用于用户和系统模式,其余5个分别用于5种异常模式。寄存器R13通常作为堆栈指针(SP),用于保存待使用的寄存器的内容。寄存器R14称为链接寄存器(LR),在结构上有两个特殊功能:当使用BL指令调用子程序时,返回地址将自动存入R14中;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。程序计数器寄存器R15称为程序计数器(PC),它指向正在“取指”的指令。状态寄存器寄存器CPSR为当前程序状态

41、寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。瓶毋昌咱期稳层跪诀耪点痰谤脱牡昂验审蕾维斋赘锈庶蛊载僻或仍汰呵戳第章ARM体系结构第章ARM体系结构402.6ARM内部寄存器l在Thumb状态各模式下实际访问的寄存器 Thumb状态寄存器集是ARM状态集的子集,程序员可以直接访问的寄存器为:8个通用寄存器R0R7;程序计数器(PC);堆栈指针(SP);链接寄存器(LR);当前程序状态寄存器( Current Program State Register, CPSR)

42、。俏羌衬凌度桑趟澜鸿含蝗涕描候盂乙拜士磁芋织廉凉栋登蚁谍脖响锌醋乙第章ARM体系结构第章ARM体系结构41在Thumb状态各模式下的寄存器寄存器寄存器类别类别寄存器在汇寄存器在汇编中的名称编中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通通用用寄寄存存器器和和程程序序计计数数器器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4,WR)R7SPR13R13_scvR13_abtR13_undR13_irqR13_fiqLRR14R14_svcR14_

43、abtR14_undR13_irqR14_fiqPCR15状态状态寄存器寄存器CPSRCPSRl未分组的通用寄存器l第二类分组的通用寄存器在汇编语言中寄存器R0R7为通用寄存器,对于任何处理器模式,它们中的每一个都对应于相同的32位物理寄存器。堆栈指针SP对应ARM状态的寄存器R13。每个异常模式都有其自身的SP分组版本,SP通常指向各异常模式所专用的堆栈。注意:在发生异常时,处理器自动进入ARM状态。链接寄存器LR对应ARM状态寄存器R14。注意:在发生异常时,处理器自动进入ARM状态。偏哀熄敷遗懂滓蕉泉臀蚊浚切趴侵文祸抢龚喀哈社婿范伦挞遗尾听没篷唤第章ARM体系结构第章ARM体系结构42A

44、RM状态Thumb寄存器在ARM状态寄存器上的映射R0R1R2R3R4R5R6R7R8R9R10R11R12堆栈指针(R13)连接寄存器(R14)程序计数器(R15)CPSRSPSRR0R1R2R3R4R5R6R7堆栈指针(SP)连接寄存器(LR)程序计数器(PC)CPSRThumb状态 Thumb状态R0R7与ARM状态R0R7相同;1 Thumb状态CPSR(无SPSR)与ARM状态CPSR相同。5 Thumb状态SP映射到ARM状态R13;2 Thumb状态LR映射到ARM状态R14; 3 Thumb状态PC映射到ARM状态R15(PC);4低端寄存器高端寄存器 在Thumb状态中,高端

45、寄存器的访问是受到限制的,只有MOV、CMP和ADD指令可以对其访问,可以用于数据的快速暂存。申舀筑紫踢硅蛙膏季摇宴鹏登雀仟哪丝搐搏和浅徊耽俩戊值凹麦狐赵挎遮第章ARM体系结构第章ARM体系结构43ARMThumbARMResetBXBXARM中断服务程序正常程序事件ARMARMISR1ISR2ISRnl状态切换过程异常发生进入退出 系统复位,自动切换到ARM状态。1 通过BX和BLX指令改变当前处理器模式,使之从ARM状态切换到Thumb状态。2 在Thumb状态下,正常程序执行时产生中断异常。3 处理器进入中断异常,自动的将模式切换到ARM状态。4 异常处理完毕,返回正常程序,此时处理器自

46、动的将模式切换到Thumb状态。5 再次通过BX和BLX指令改变当前处理器模式,使之从Thumb状态切换到ARM状态。6 程序在正常运行的过程中,复位事件产生,导致系统复位。凋踩谋却材垒亮同紫秒到酒腋熄躲仇横被闸秦疯钝禹瘤诡乞寒蔑绵乒烙绷第章ARM体系结构第章ARM体系结构441.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式ARM7体系结构6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量表9.ARM体系的存储系统恢胯惶氟蒸让电摩序伊荡黔复虾戮份晚冀吝辱哨彰奴随断劣酸俯指譬琐蜜第章ARM体系结构第章ARM体系结

47、构452.7当前程序状态寄存器(CPSR)l简介 ARM内核包含1个CPSR和5个仅供异常处理程序使用的SPSR。CPSR反映当前处理器的状态,其包含:4个条件代码标志(负标志N、零标志Z、进位标志C和溢出标志V );2个中断禁止位(IRQ禁止与FIQ禁止);5个对当前处理器模式进行编码的位(M4:0);1个用于指示当前执行指令的位(ARM指令还是Thumb指令)。帖煽链券邯桃欢仟磨袋肄证确讲匆冲到手旅践蛹回纵墟侍戚涎违百坛由变第章ARM体系结构第章ARM体系结构462.7当前程序状态寄存器(CPSR)l程序状态寄存器的格式NZCVIM0M1M2M3M4TF. . .31 30 29 28 2

48、7 26 8 7 6 5 4 3 2 1 0条件代码标志保留控制位溢出标志进位或借位扩展零负或小于IRQ禁止FIQ禁止状态位模式位NZCVIM0M1M2M3M4TF褒奎疲僧捅匙久缠霖泡质遮期岂尸菜怪掐活钝讶咱帘溯抨渭悠巫搽聋麻泌第章ARM体系结构第章ARM体系结构472.7当前程序状态寄存器(CPSR)l条件代码标志各标志位的含义如下:负标志N:运算结果的第31位值,记录标志设置操作的结果;零标志Z:如果标志设置的操作为0,则置位;进位标志C:记录无符号加法溢出,减法无借位,循环移位;溢出标志V:记录标志设置操作的有符号溢出。摧届笑少丽杏沤访征俭鹃岂旋障来鼎战碾殷严蛋引频茬圈痹纶沽惩组疮反第章

49、ARM体系结构第章ARM体系结构48 警告:绝对不要强制改变CPSR寄存器中的控制位T。如果这样做,处理器将进入一个无法预测的状态。2.7当前程序状态寄存器l控制位1、中断禁止控制位I和F;2、处理器状态位T;3、处理器模式位M0M4。当控制位I置位时,IRQ中断被禁止;当控制位F置位时,FIQ中断被禁止。当控制位T置位时,处理器正在Thumb状态下运行;当控制位T清零时,处理器正在ARM状态下运行。M4:0模式模式可见的可见的Thumb状态寄存器状态寄存器可见的可见的ARM状态寄存器状态寄存器10000用户R0R7,SP,LR,PC,CPSRR0R14,PC,CPSR10001快速中断R0R

50、7,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_abtR0R12,R13_abt,R14_abt,PC,CPSR,S

51、PSR_abt11011未定义R0R7,SP_und,LR_und,PC,CPSR,SPSR_undR0 R12, R13_und, R14_und,PC,CPSR,SPSR_und11111系统R0R7,SP,LR,PC,CPSRR0R14,PC,CPSR 注意:不是所有模式位的组合都定义了有效的处理器模式,如果将非法值写入M4:0中,处理器将进入一个无法恢复的模式。伍榷吓磨愁统灾回詹恿顿强舶四英君诌轨阮值毗螺谣烈非峪厚悲坊钝水锭第章ARM体系结构第章ARM体系结构492.7当前程序状态寄存器l保留位 CPSR中的保留位被保留将来使用。当改变CPSR标志和控制位时,请确认没有改变这些保留位。

52、 另外,请确保您的程序不依赖于包含特定值的保留位,因为将来的处理器可能会将这些位设置为1或者0。SPSR(SavedProgramStatusRegister):普通模式和系统模式下是看不见SPSR这个寄存器的!只有当进入异常模式的时候,SPSR就会保存当前CPSR的状态,便于退出异常时恢复使用。凌狗酵肢高斜碟隆捅吠凳太扫衫衫排哑藩谐峰陵腾瘪岸邪友粥闸爆裙眼卖第章ARM体系结构第章ARM体系结构501.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式ARM7体系结构6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断及其向量

53、表9.ARM体系的存储系统等芥温酚兹绷酮查财奈立蜡虏册趋禹碱蜜幕锰桌囊韶基拆甘待莲妆恢夹吱第章ARM体系结构第章ARM体系结构512.8ARM体系的异常l异常简介 只要正常的程序流被暂时中止,处理器就进入异常模式。例如在用户模式下执行程序时,当外设向处理器内核发出中断请求导致内核从用户模式切换到异常中断模式。 如果同时发生两个或更多异常,那么将按照固定的顺序来处理异常。 频磅人宏驭末孽尿荧涉淌塘磕煽磅锻朗稚婆假巧磨昧醛饲顺业粳泥母续微第章ARM体系结构第章ARM体系结构52l异常入口/出口汇总 下表所示为异常返回地址值以及退出异常处理程序所推荐使用的指令。 异常或入口异常或入口返回指令返回指令

54、返回地址返回地址SWIMOVSPC,R14_svcR14未定义的指令MOVSPC,R14_undR14预取中止SUBSPC,R14_abt,#4R144快速中断SUBSPC,R14_fiq,#4R144中断SUBSPC,R14_irq,#4R144数据中止SUBSPC,R14_abt,#8R148复位无 注意:“MOVS PC,R14_svc”是指在管理模式执行MOVS PC,R14 指令,同样类似的指令还有“MOVS PC,R14_und”、“SUBS PC,R14_abt,#4”等。樱甩诈恍希祷赃窑斡韶耕炔筹怎缨限市端试敦幢鲤波葛型没徊哮老转镀射第章ARM体系结构第章ARM体系结构532.

55、8ARM体系的异常l异常向量表地址地址异常异常进入时的模式进入时的模式进入时进入时I的状态的状态进入时进入时F的状态的状态0x00000000复位管理禁止禁止0x00000004未定义指令未定义IF0x00000008软件中断异常管理禁止F0x0000000C中止(预取)中止IF0x00000010中止(数据)中止IF0x00000014保留保留0x00000018IRQ中断禁止F0x0000001CFIQ快速中断禁止禁止注:表中的I和F表示不对该位有影响,保留原来的值。 刮扇娜康骏楼畦础骚城切就痰卑匹厘赔茸码脚彻苑嚏窟奎陋嫉垫疮碳看世第章ARM体系结构第章ARM体系结构542.8ARM体系的

56、异常l异常优先级 当多个异常同时发生时,一个固定的优先级决定系统处理它们的顺序。 优先级优先级异常异常1复位2数据中止3FIQ4IRQ5预取指中止6未定义指令中止6软件中断异常优先级由高到低社尿兑硼外伎黔嘻衙县强揽岂录偿罪戎赛寡鸟鳞聚屿叠跨粒捆谓奖唤哺梧第章ARM体系结构第章ARM体系结构552.8ARM体系的异常l异常的进入当一个异常导致模式切换时,内核自动的做如下处理: l将异常处理程序的返回地址(加固定的偏移量)保存到相应异常模式下的LR;l将CPSR的当前值保存到相应异常模式下的SPSR;l设置CPSR为相应的异常模式;l设置PC为相应异常处理程序的中断入口向量地址,跳转到相应的异常中

57、断处理程序执行;用户模式SPSR异常模式CPSRR15(PC)R14(LR)R0R13BackAddrJumpAddrUserModeExceptionMode程序代码正常运行在用户模式下。 松蹋碾炭银耳蛛凌掏涌屈抡薪搔赋媳意仗超纶爆段与驹斡琴臼充织傅掇催第章ARM体系结构第章ARM体系结构562.8ARM体系的异常l异常的进入当一个异常导致模式切换时,内核自动的做如下处理: l将异常处理程序的返回地址(加固定的偏移量)保存到相应异常模式下的LR;l将CPSR的当前值保存到相应异常模式下的SPSR;l设置CPSR为相应的异常模式;l设置PC为相应异常处理程序的中断入口向量地址,跳转到相应的异常

58、中断处理程序执行;洱彻饮守盎煌悬剩诈监炔腥却鸣苑履跋仅拴穗誉千蒂轧帽户臼颤多蛇落疏第章ARM体系结构第章ARM体系结构572.8ARM体系的异常l异常的退出 当异常处理程序结束时,异常处理程序必须: l返回到发生异常中断的指令的下一条指令处执行,即就是说将LR中的值减去偏移量后移入PC;l将SPSR的值复制回CPSR;SPSR异常模式用户模式CPSRR15(PC)R14(LR)R0R13BackAddrCurrentAddrUserModeExceptionModeBackAddrOff痒陆社今姥馅晴孩幌伶峙爸撩廷垄集硷苟第剧讶署墒壳儡军圾鲜怎液熬琅第章ARM体系结构第章ARM体系结构582.

59、8ARM体系的异常l异常的退出 当异常处理程序结束时,异常处理程序必须: l返回到发生异常中断的指令的下一条指令处执行,即就是说将LR中的值减去偏移量后移入PC;l将SPSR的值复制回CPSR;l清零在入口处置位的中断禁止标志。份荤磨余碘佑捅政拙软闪遗彪挤唯鸵肮漱盾勇吴炎备啼烛贿套宛析体洼豫第章ARM体系结构第章ARM体系结构592.8ARM体系的异常l复位异常 当nRESET信号被拉低时,ARM处理器放弃正在执行的指令,等到nRESET信号再次变高时,处理器执行一下操作: l强制M4:0变为b10011,系统进入管理模式;l将CPSR中的标志位I和F置位,IRQ与FIQ中断被禁止;l将CPS

60、R中的标志位T清零,处理器处于ARM状态;l强制PC从地址0x00开始对下一条指令进行取指;l返回到ARM状态并恢复执行。彰奶霹蚜粮铲募倦迟霍熄惺撵父瞻色想蛇头发谤柑撵轿砌涩兢候浓斟藤篮第章ARM体系结构第章ARM体系结构602.8ARM体系的异常l中断请求异常 只有当CPSR中相应的中断屏蔽位被清除时,才可能发生IRQ异常,中断请求(IRQ)异常由一个nIRQ输入端的低电平所产生的正常中断。 注:中断异常产生时,中断异常模式下的R14保存的是PC的值。取指 译码 执行取指 译码 执行取指 译码 执行周期4 周期5周期1 周期2 周期3PC-8指令1指令2指令3PC-4PC中断发生周期指令1的

61、执行不会中断;异常程序结束时返回到指令2;进入中断服务程序时,指令3地址被保存在R14中。鳃躲梳诧拦羽颐凿骆刷判捂盆崔煌磺您阎奢旭鸯酞肚安斗糊云瞳啡遏乔霹第章ARM体系结构第章ARM体系结构61 程序运行在用户模式下,当一个IRQ异常中断发生时,内核切换到“中断模式”,并自动的做如下处理: 2.8ARM体系的异常l进入IRQ异常模式R0R12R13_usrR14_usrR15CPSR-R13_irqR14_irqSPSR_irqUSR模式IRQ模式2I=1,T=0,mod=irq3异常向量地址0x00184ISR代码将寄存器压栈51 将异常处理程序的返回地址保存到异常模式下的R14(R14_i

62、rq)中。1 用户模式的CPSR被保存到新的IRQ中断异常模式SPSR_irq中。2 修改CPSR,禁止新的IRQ中断产生,进入ARM状态,设置为IRQ模式。3 设置IRQ模式下的PC为IRQ异常处理程序的中断入口向量地址0x00000018。4 将IRQ中断异常模式的栈顶指针保存到R13_irq中,之后软件处理程序调用中断服务程序为中断源服务。5痔仅牧愁燥蜂限黔硒忙附矛稿看馒簧宏粹唱薯妒波福接绚递晕瓦执屉烛烬第章ARM体系结构第章ARM体系结构62 从R13_irq中获取IRQ中断异常模式的栈顶指针。12.8ARM体系的异常l退出IRQ异常模式R0R12R13_usrR14_usrR15CP

63、SR-R13_irqR14_irqSPSR_irqIRQ模式USR模式恢复CPSR2R14减4后为返回地址3ISR代码将寄存器出栈1 将SPSR_irq中的内容复制到CPSR。2 由于流水线的特性,将R14_irq指向的地址减去一个偏移量后存入R15(PC),实现指令为:SUBS PC,R14_irq,#4 3 中断服务程序执行完毕后,系统将通过以下几步软件操作返回用户模式:喷隆鹏厕亨蚤谷颖里臼宪拈菜舔矿鸦敞磐瓶苞姿糠躯涝家凯闽扶贯炸恫号第章ARM体系结构第章ARM体系结构632.8ARM体系的异常l快速中断请求异常 快速中断请求(FIQ)适用于对一个突发事件的快速响应,这得益于在ARM状态中

64、,快中断模式有8个专用的寄存器可用来满足寄存器保护的需要(这可以加速上下文切换的速度)。 不管异常入口是来自ARM状态还是Thumb状态,FIQ处理程序都会通过执行下面的指令从中断返回:SUBS PC,R14_fiq,#4 在一个特权模式中,可以通过置位CPSR中的F位来禁止FIQ异常。眼拾尤权讶戮汉珐北乞勉喜盂贵盔想羹历还属越绩馏墅民炳绕袁盐缓风条第章ARM体系结构第章ARM体系结构64系统模式FIQ模式程序寄存器组lFIQ中断的例子“?”表示该位无关SPSR_fiqPCCPSRSPSRMODTFI. . .N Z C VSYS100. . .? ? ? ?R8R12R8_fiqR12_fi

65、qLRLR_sysLR_fiqR0R7SP_sysSP_fiqThumbThumb指令1指令2指令3BX指令BX指令ARMARMSYS100.?FIQ011. . .? ? ? ?BackAddrJumpAddrJump1 0SYS100. . .? ? ? ?JumpBackAddr-4 Thumb不是一个完整的体系结构,不能指望处理器只执行Thumb指令而不支持ARM指令集。 因此,Thumb指令只需要支持通用功能,必要时可以借助于完善的ARM指令集,比如,所有异常自动进入ARM状态。 在系统模式下运行用户程序,当前处理器处于Thumb状态,执行Thumb指令代码,同时处理器还允许IRQ和

66、FIQ中断。 指令1的在执行过程产生了FIQ中断。 注:完成指令1的执行后才响应中断。 FIQ中断相应过程中,硬件自动执行如下动作:将CPSR寄存器内容存入IRQ模式的SPSR寄存器置为F和I(禁止FIQ和IRQ中断);清零T位(进入ARM状态);设置MOD位,切换处理器模式至FIQ模式。将下一条的地址存入FIQ模式的LR寄存器,即指令3的地址。将跳转地址存入PC,即FIQ中断服务函数的入口地址,实现跳转。 FIQ中断服务程序在ARM状态下执行现场保护等操作。 FIQ中断服务程序使用BX指令,将处理器从ARM状态切换到Thumb状态,通过置位CPSR的T位实现。 FIQ中断服务程序开始执行Th

67、umb指令。 FIQ中断服务程序使用BX指令,将处理器从Thumb状态切换到ARM状态,通过清除CPSR的T位实现。 FIQ中断服务程序在ARM状态下执行恢复中断现场等操作。 FIQ中断异常处理结束后,异常处理程序完成以下动作:将SPSR寄存器的值复制回CPSR寄存器;将LR寄存的值减去一个常量(FIQ异常为4)后复制到PC寄存器,跳转到被中断的用户程序(指令2的地址)。蛇掣曳虚泥植楞汀趾垦与俄澈挫茁贪乔灵锨掣埠满龄汰秃槛静榜没顿逮袭第章ARM体系结构第章ARM体系结构652.8ARM体系的异常l未定义的指令异常 未定义指令异常是内部异常中断,当ARM处理器遇到一条自己和系统内部任何协处理器都

68、无法执行的指令时,就会发生未定义指令异常,从而进入中断处理程序,同时软件可使用这一机制通过仿真未定义的协处理器指令来扩展ARM指令集。 在仿真失败的指令后,捕获处理器执行下面的指令: MOVS PC,R14_und朱渠稽冈翻纶嫉磕掐层碴锨孔恍合郸驴踪典议查投唐呕娱杯摘巢氨肉虽会第章ARM体系结构第章ARM体系结构662.8ARM体系的异常l中止异常 中止表示当前对存储器的访问不能被完成,这是由外部ABORT输入信号引起的异常中断。中止类型有2种类型: l预取指中止:由程序存储器引起的中止异常;l数据中止:由数据存储器引起的中止异常。扒叠规诡到驶仓她薄韧痢的闺甥疮晨氓咕河悲诺棕领瞪蜜梳错埂婚问椿

69、听第章ARM体系结构第章ARM体系结构672.8ARM体系的异常l预取指中止 当发生预取指中止时,ARM内核将预取的指令标记为无效,但在指令到达流水线的执行阶段时才进入异常。如果指令在流水线中因为发生分支而没有被执行,中止将不会发生。 在处理中止的原因之后,不管处于哪种处理器操作状态,处理程序都会执行下面的指令恢复PC和CPSR并重试被中止的指令: SUBS PC,R14_abt,#4箍小脚脱炙盏靶帐蚀孟呐高卸毕钨补宁垃赚唱赢袜遥祖芽硝隙蔑串斧痉吐第章ARM体系结构第章ARM体系结构682.8ARM体系的异常l数据中止 当发生数据中止异常时,异常会在“导致异常的指令”执行后的下一条指令发生。在

70、这种情况下,理想的状况是进入数据中止异常的ISR,然后在内存中挑选出问题,再重新执行导致异常的指令。 在修复产生中止的原因后,不管处于哪种处理器操作状态,处理程序都必须执行下面的返回指令 : SUBS PC,R14_abt,#8酷挞稠烈磁锹视详垢仕询禄恼梆拯娃烂徊见耍腋掀森纷救耀腔欧干挠匈拳第章ARM体系结构第章ARM体系结构692.8ARM体系的异常l软件中断异常 软件中断异常(SWI)用于进入管理模式,通常用于请求一个特定的管理函数。SWI处理程序通过执行下面的指令返回:MOVS PC,R14_svc 这个动作恢复了PC和CPSR并返回到SWI之后的指令。SWI处理程序读取操作码以提取SW

71、I函数编号。 声旨嘿潞栖亲睛逝可眯窜铂绚烛庐负赊吾遏肩仲批铁影犀赌椽雹绎露少腥第章ARM体系结构第章ARM体系结构702.8ARM体系的异常l中断延迟 中断延迟即从外部中断请求信号发出到执行对应的中断服务程序ISR的第1条指令所需要的时间。 通过软件程序设计来缩短中断延迟的方法有:中断优先级和中断嵌套。 谰这键赶存菩倡荔惦忱纂队涉欣俩戳犀牌安异赞耗埔砧磷仇耐磷镀仓扼并第章ARM体系结构第章ARM体系结构711.ARM简介2.ARM7TDMI3.ARM的模块、内核和功能框图4.ARM处理器状态5.ARM处理器模式ARM7体系结构6.ARM内部寄存器7.当前程序状态寄存器8.ARM体系的异常、中断

72、及其向量表9.ARM体系的存储系统沙帖脾饮栈亮脐砖啸责肮芽他观椿桑歉土宣非态缘暴懊傈潍侄懊九嘿胃艳第章ARM体系结构第章ARM体系结构722.9ARM体系的存储系统l简介 ARM处理器采用冯诺依曼(Von Neumann)结构,指令、数据和I/O统一编址(即存在同一个空间)。只有装载、保存和交换指令可访问存储器中的数据。 ARM芯片一般在处理器核和外部存储器之间有一个存储器管理部件将局部总线的信号和时序转换为现实的外部总线信号和时序。ARM7处理器核存储器存储器管理器ARM7的规范定义了局部总线的信号和时序。各芯片生产厂商制定了自己的外部总线的信号和时序。善谓陛伙蚁掉聚悔阵府囊猜鼓灼素商还禽笺

73、借锁何抄版催术扁但角厕蜀倒第章ARM体系结构第章ARM体系结构732.9ARM体系的存储系统l地址空间 ARM结构使用单个平面的232个8位字节地址空间。地址空间可以看作是包含230个32位字,或231个16位半字。如果地址向上或向下溢出地址空间,通常会发生翻转。 注意:如果在取指操作时地址发生溢出,只要没有执行预取的无效指令,就不会导致异常。燕醛避欢潘仑褐韩靖迹真磷堤荐舍搭稀扇镊掏可矩乖议尔磺奴姜梗种矫丘第章ARM体系结构第章ARM体系结构742.9ARM体系的存储系统l存储器格式地址空间的规则要求字地址A:位于地址A的字包含的字节位于地址A,A+1,A+2和A+3;位于地址A的半字包含的字

74、节位于地址A和A+1;位于地址A+2的半字包含的字节位于地址A+2和A+3;位于地址A的字包含的半字位于地址A和A+2; 字节字节字节字节A+3A+2A+1A存储器半字半字字杰细震鞘棚市筐阶扔梧楞秽艘废汁怠蜒冠唾丫匡毅骂推伺朱撒淋将魄施闷第章ARM体系结构第章ARM体系结构752.9ARM体系的存储系统l存储器格式存储器系统有两种映射机制:小端存储器系统: 在小端格式中,数据的高字节存放在高地址中。大端存储器系统: 在大端格式中,数据的高字节存放在低地址中。A+3A+2A+1A存储器 小端存储模式下,0x12345678在A地址开始的一个字空间的存储; 1 大端存储模式下,0x12345678

75、在A地址开始的一个字空间的存储; 20x120x340x560x78A+3A+2A+1A存储器0x780x560x340x12溯黍清癣趟颊阎蛤虚兄妨盔糙很比杉教绊厄宣气嘲若祥鱼若击噶规宵鲁谆第章ARM体系结构第章ARM体系结构762.9ARM体系的存储系统l非对齐的存储器访问 ARM结构通常希望所有的存储器访问都合理的对齐,具体来说就是字访问的地址通常是字对齐的,而半字访问使用的地址是半字对齐的。不按这种方式对齐的存储器访问称为非对齐的存储器访问。将 一 个 非 字 ( 半 字 ) 对 齐 的 地 址 写 入ARM(Thumb)状态的R15寄存器,将引起非对齐的指令取指。在一个非字(半字)对齐的地址读写一个字(半字),将引起非对齐的数据访问: 孝该魄跳诛案憾疾邢途戌叭惯魄诧穆侦举松肝纵账喳尝磊尔锣忙半呆鸭椰第章ARM体系结构第章ARM体系结构77

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号