ARM的学习实用教案

上传人:cn****1 文档编号:569507901 上传时间:2024-07-30 格式:PPT 页数:79 大小:3.71MB
返回 下载 相关 举报
ARM的学习实用教案_第1页
第1页 / 共79页
ARM的学习实用教案_第2页
第2页 / 共79页
ARM的学习实用教案_第3页
第3页 / 共79页
ARM的学习实用教案_第4页
第4页 / 共79页
ARM的学习实用教案_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《ARM的学习实用教案》由会员分享,可在线阅读,更多相关《ARM的学习实用教案(79页珍藏版)》请在金锄头文库上搜索。

1、什么是处理器内核(nih)?处理器内核(nih)是一个设计,并不是一个芯片内核(nih)的设计一般追求高速度、低功耗、易于集成.第1页/共78页第一页,共79页。嵌入式处理器内核(nih)按照体系结构(jigu)来分,嵌入式处理器内核不涉及具体的处理器芯片.嵌入式领域体系结构(jigu)全部是RISC(精简指令集)指令集的处理器内核,尽管都是采用的RISC的结构(jigu),但各有各的优势.目前世界四大流派的嵌入式处理器内核生产商:MIPS公司的MIPS处理器内核ARM公司的ARM处理器内核IBM,Apple及Motorola联合开发的PowerPCMotorola公司的68K/COLDFIR

2、E第2页/共78页第二页,共79页。MIPS核MIPS技术公司是一家设计制造高性能、高档次及嵌入式32位和64位处理器的厂商,在RISC处理器方面占有重要地位。1984年,MIPS计算机公司成立。1992年,SGI收购了MIPS计算机公司。1998年,MIPS脱离SGI,成为MIPS技术公司。MIPS公司设计RISC处理器始于二十世纪八十年代初,1986年推出R2000处理器,1988年推R3000处理器,1991年推出第一款64位商用微处器R4000。之后又陆续推出R8000(于1994年)、R10000(于1996年)和R12000(于1997年)等型号。随后,MIPS公司的战略发生变化,

3、把重点放在嵌入式系统。1999年,MIPS公司发布MIPS32和MIPS64架构标准,为未来MIPS处理器的开发奠定了基础。新的架构集成了所有(suyu)原来NIPS指令集,并且增加了许多更强大的功能。MIPS公司陆续开发了高性能、低功耗的32位处理器内核(core)MIPS324Kc与高性能64位处理器内核MIPS645Kc。2000年,MIPS公司发布了针对MIPS324Kc的版本以及64位MIPS6420Kc处理器内核。第3页/共78页第三页,共79页。ARM核ARM即AdvancedRISCMachines的缩写,既可以认为是一个(y)公司的名字,也可以认为是对一类微处理器的通称,还可

4、以认为是一种技术的名字。1990年成立了AdvancedRISCMachinesLimited(后来简称为ARMLimited,ARM公司)。20世纪90年代,ARM32位嵌入式RISC(ReducedlnstructionSetComputer)处理器扩展到世界范围,占据了低功耗、低成本和高性能的嵌入式系统应用领域的领先地位。ARM公司既不生产芯片也不销售芯片,它只出售芯片技术授权。ARM处理器的三大特点是:耗电少功能强、16位/32位双指令集和众多合作伙伴第4页/共78页第四页,共79页。PowerPC核二十世纪九十年代,IBM(国际商用机器公司)、Apple(苹果公司)和Motorola

5、(摩托罗拉)公司开发PowerPC芯片成功,并制造出基于PowerPC的多处理器计算机。PowerPC架构的特点是可伸缩性好、方便灵活。PowerPC体系结构规范(PowerPCArchitectureSpecification)发布于1993年,它是一个64位规范(也包含32位子集)。几乎所有常规可用的PowerPC(除了新型号IBMRS/6000和所有IBMpSeries高端服务器)都是32位的。PowerPC处理器有32个(32位或64位)GPR(通用寄存器)以及诸如PC(程序(chngx)计数器,也称为IAR指令地址寄存器或NIP下一指令指针)、LR(链接寄存器)、CR(条件寄存器)等

6、各种其它寄存器。有些PowerPCCPU还有32个64位FPR(浮点寄存器)。第5页/共78页第五页,共79页。68KCOLDFIRE68K内核是最早在嵌入式领域(lny)广泛应用的内核。其最著名的代表芯片是68360。Coldfire继承了68K的特点并继续兼容它。最近,摩托罗拉已经发布了的第五版本V5的内核。Coldfire内核被中上DSP模块、CAN总线模块以及一般嵌入式处理器所集成的外设模块,从而形成了一系列的嵌入式处理器,在工业控制、机器人研究、家电控制等领域(lny)被广泛采用。第6页/共78页第六页,共79页。各个(gg)内核的特点MIPScore:高速,跨入了64位时代,多co

7、re集成;ARMcore:低功耗,javabyte的支持;PowerPCcore:高速与低功耗之间作了妥协(tuxi),并集成极度丰富的外围电路接口;68K/COLDFIREcore:业界被最广泛应用的嵌入式处理器内核,目前还在不停更新换代与发展。第7页/共78页第七页,共79页。ARM微处理器概述(ish)ARM处理器系列RISC体系结构ARM和Thumb状态寄存器ARM指令集概述(ish)Thumb指令集概述(ish)ARM微处理器体系结构数据类型ARM微处理器的工作(gngzu)状态ARM体系结构的存储器格式处理器模式寄存器组织异常ARM微处理器体系结构第8页/共78页第八页,共79页。

8、ARM微处理器概述(ish)ARM简介(jinji): ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。以认为是对一类微处理器的通称,还可以认为是一种技术的名字。 1991年年ARM公司成立于英国剑桥,主要出售芯片设计技术的授公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用权。目前,采用ARM 技术知识产权技术知识产权(IP)核的微处理器已遍及工业控制、消费类电子核的微处理器已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,产品

9、、通信系统、网络系统、无线系统等各类产品市场,ARM第9页/共78页第九页,共79页。ARM公司简介将技术授权(shuqun)给其它芯片厂商形成(xngchng)各具特色的ARM芯片. . .第10页/共78页第十页,共79页。ARM处理器核简介( jinji) ARM公司(n s)开发了很多系列的ARM处理器核,目前最新的系列已经是ARM11了,而ARM6核以及更早的系列已经很罕见了。目前应用比较广泛的系列是:ARM7ARM9ARM9EARM10SecurCoreXscale1.1ARM处理器系列(xli)第11页/共78页第十一页,共79页。ARM处理器核简介( jinji)ARM7 该系

10、列包括ARM7TDMI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle的ARM7EJ-S。该系列处理器提供Thumb 16位压缩指令集和EmbededICE软件调试方式(fngsh),适用于更大规模的SoC设计中。 ARM7系列广泛应用于多媒体和嵌入式设备,包括Internet设备、网络和调制解调器设备,以及移动电话、PDA等无线设备。1.1ARM处理器系列(xli)第12页/共78页第十二页,共79页。ARM处理器核简介( jinji)ARM9 该系列包括ARM9TDMI、ARM920T和带有告诉缓存处理器宏单元的ARM940T。除了兼容ARM7系列,而

11、且能够更加灵活(ln hu)的设计。 ARM9系列主要应用于引擎管理、仪器仪表、安全系统和机顶盒等领域。1.1ARM处理器系列(xli)第13页/共78页第十三页,共79页。微处器执行一个指令(zhlng)的过程Step1:取指令(zhlng)(Fetch)从内存或高速缓存器中读取指令(zhlng)Step2:译码(Decode)将指令(zhlng)翻译成更小的微指令(zhlng)Step3:取操作数(FetchOperands)从内存或高速缓存器中读取指令(zhlng)所需的数据Step4:执行指令(zhlng)(Execute)Step5:写回(WriteBack)将执行的结果存入内存或高

12、速缓存器或寄存器中第14页/共78页第十四页,共79页。ARM处理器核简介( jinji)ARM10 该系列包括ARM1020E和ARM1020E处理器核,其核心在于使用向量(xingling)浮点(VFP)单元VFP10提供高性能的浮点解决方案,从而极大提高了处理器的整型和浮点运算性能。 可以用于视频游戏机和高性能打印机等场合。1.1ARM处理器系列(xli)第15页/共78页第十五页,共79页。ARM处理器核简介( jinji)SecurCore 该系列涵盖了SC100、SC110、SC200和SC210处理核。该系列处理器主要针对新兴的安全市场,以一种全新的安全处理器设计为智能卡和其它安

13、全IC开发提供(tgng)独特的32位系统设计,并具有特定反伪造方法,从而有助于防止对硬件和软件的盗版。1.1ARM处理器系列(xli)第16页/共78页第十六页,共79页。ARM处理器核简介(jinji)Xscale Intel Xscale微控制器则提供全性能、高性价比、低功耗的解决方案,支持(zhch)16位Thumb指令并集成数字信号处理(DSP)指令。1.1ARM处理器系列(xli)第17页/共78页第十七页,共79页。1.3ARM和Thumb状态(zhungti)Thumb指令集的功能是32位ARM指令集的功能子集。Thumb在性能(xngnng)和代码大小之间提供了出色的折中。正

14、在执行Thumb指令集的处理器是工作在Thumb状态下。正在执行ARM指令集的处理器是工作在ARM状态下。第18页/共78页第十八页,共79页。1.4.寄存器ARM处理器有37(31+6)个物理寄存器,有18个可编程访问的寄存器。寄存器被安排成部分重叠的组。每种处理器模式都有不同的寄存器组。分组的寄存器在异常(ychng)处理和特权操作时,可得到快速的上下文切换。第19页/共78页第十九页,共79页。数数据据处处理理指指令令(zhlng) (zhlng) 加加载载和和存存储指令储指令(zhlng)(zhlng)分分支支指指令令(zhlng) (zhlng) 协协处处理理器器指指令令(zhlng

15、) (zhlng) 杂项指令杂项指令(zhlng)(zhlng)ARM指令集1.5ARM指令集概述(ish)ARM指令集可分为5大类指令,所有指令都可以条件执行,其中(qzhng)一些指令还可以根据执行结果更新CPSR寄存器的相关标志位:第20页/共78页第二十页,共79页。 Thumb指令集可分为4大类指令:分支指令;数据处理指令;寄存器加载和存储(cn ch)指令;异常产生指令。Thumb指令集1.6Thumb指令集概述(ish)第21页/共78页第二十一页,共79页。1ARM微处理器概述ARM处理器系列(xli)RISC体系结构ARM和Thumb状态寄存器ARM指令集概述Thumb指令集

16、概述2ARM微处理器体系结构数据类型ARM微处理器的工作状态ARM体系结构的存储器格式(gshi)处理器模式寄存器组织异常第22页/共78页第二十二页,共79页。体系结构直接(zhji)支持的数据类型ARM处理器支持下列(xili)数据类型:字节 8位半字 16位(必须分配为占用两个字节)字 32位(必须分配为占用4各字节)11123422.1数据类型第23页/共78页第二十三页,共79页。1ARM微处理器概述ARM处理器系列(xli)RISC体系结构ARM和Thumb状态寄存器ARM指令集概述Thumb指令集概述2ARM微处理器体系结构数据类型ARM微处理器的工作状态ARM体系结构的存储器格

17、式处理器模式寄存器组织(zzh)异常第24页/共78页第二十四页,共79页。2.2ARM微处理器的工作(gngzu)状态ARM微处理器的工作状态微处理器的工作状态(zhungti)一般一般有两种有两种:ARM状态状态处理器执行处理器执行32位的字对齐位的字对齐(du q)的的ARM指令;指令; Thumb状态状态处理器执行处理器执行16位的、半字对齐位的、半字对齐(du q)的的Thumb指令。指令。第25页/共78页第二十五页,共79页。处理器状态(zhungti)切换进入进入Thumb状态:状态:当操作数寄存器的状态位当操作数寄存器的状态位(位位0)为为1时,执行时,执行BX指令指令(zh

18、lng)进入进入Thumb状态。状态。如果处理器在如果处理器在Thumb状态进入异常,则当异常状态进入异常,则当异常处理返回时,自动转换到处理返回时,自动转换到Thumb状态。状态。进入进入ARM状态。状态。当操作数寄存器的状态位当操作数寄存器的状态位(位位0)为为0时执时执行行BX指令进入指令进入ARM状态。状态。当处理器进行异常处理是时,进入当处理器进行异常处理是时,进入ARM状态从异常向量地址状态从异常向量地址(dzh)处开始执行。处开始执行。第26页/共78页第二十六页,共79页。处理器状态(zhungti)切换 使用BX指令(zhlng)将ARM7TDMI内核的操作状态在ARM状态和

19、Thumb状态之间进行切换,程序如下所示。;从Arm状态(zhungti)切换到Thumb状态(zhungti) LDR R0,=Lable+1 BX R0;从Thumb状态(zhungti)切换到ARM状态(zhungti) LDR R0,=Lable BX R0地址最低位为1,表示切换到Thumb状态地址最低位为0,表示切换到ARM状态跳转地址标号2.2ARM微处理器的工作状态第27页/共78页第二十七页,共79页。第二章目录(ml)1ARM微处理器概述(ish)ARM处理器系列RISC体系结构ARM和Thumb状态寄存器ARM指令集概述(ish)Thumb指令集概述(ish)2ARM微处

20、理器体系结构数据类型ARM微处理器的工作状态ARM体系结构的存储器格式(gshi)处理器模式寄存器组织异常第28页/共78页第二十八页,共79页。ARM存储器格式(gshi)第29页/共78页第二十九页,共79页。1ARM微处理器概述ARM处理器系列(xli)RISC体系结构ARM和Thumb状态寄存器ARM指令集概述Thumb指令集概述2ARM微处理器体系结构数据类型ARM微处理器的工作状态ARM体系结构的存储器格式处理器模式(msh)寄存器组织异常第30页/共78页第三十页,共79页。简介( jinji) ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、

21、中止模式、未定义模式和系统(xtng)模式。这样的好处是可以更好的支持操作系统(xtng)并提高工作效率。2.2.4 处理器模式(msh) 第31页/共78页第三十一页,共79页。状态(zhungti)寄存器N,Z,CandV条件码标志 可以在处理器中作为数学和逻辑操作(cozu)改变 可以被所有的指令测试,以决定指令是否被执行 N:Negative.Z:Zero.C:Carry.V:OverflowIandF位是中断禁止位M0,M1,M2,M3andM4位是模式位第32页/共78页第三十二页,共79页。第33页/共78页第三十三页,共79页。处理器模式处理器模式说明说明备注备注 用户用户 (

22、usr)正常程序工作模式正常程序工作模式不能直接切换到其它模式不能直接切换到其它模式 系统系统 (sys)用于支持操作系统的特权用于支持操作系统的特权任务等任务等与用户模式类似,但具有可以直与用户模式类似,但具有可以直接切换到其它模式等特权接切换到其它模式等特权 快中断快中断 (fiq)支持高速数据传输及通道支持高速数据传输及通道处理处理FIQ异常响应时进入此模式异常响应时进入此模式 中断中断 (irq)用于通用中断处理用于通用中断处理IRQ异常响应时进入此模式异常响应时进入此模式 管理管理 (svc)操作系统保护代码操作系统保护代码系统复位和软件中断响应时进入系统复位和软件中断响应时进入此模

23、式此模式 中止中止 (abt)用于支持虚拟内存和用于支持虚拟内存和/或存或存储器保护储器保护在在ARM7TDMI没有大用处没有大用处 未定义未定义 (und)支持硬件协处理器的软件支持硬件协处理器的软件仿真仿真未定义指令异常响应时进入此模未定义指令异常响应时进入此模式式处理器模式(msh)2.2.4 处理器模式处理器模式(msh) 第34页/共78页第三十四页,共79页。特权(tqun)模式处理器模式说明备注 用户 (usr)正常程序工作模式不能直接切换到其它模式 系统 (sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权 快中断 (fiq)支持高速数据传输

24、及通道处理FIQ异常响应时进入此模式 中断 (irq)用于通用中断处理IRQ异常响应时进入此模式 管理 (svc)操作系统保护代码系统复位和软件中断响应时进入此模式 中止 (abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处 未定义 (und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式 除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由(zyu)的切换处理器模式,而用户模式不能直接切换到别的模式。 未定义 (und) 中止 (abt) 管理 (svc) 中断 (irq)

25、快中断 (fiq) 系统 (sys)2.2.4 处理器模式(msh) 第35页/共78页第三十五页,共79页。异常(ychng)模式处理器模式说明备注 用户 (usr)正常程序工作模式不能直接切换到其它模式 系统 (sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权 快中断 (fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式 中断 (irq)用于通用中断处理IRQ异常响应时进入此模式 管理 (svc)操作系统保护代码系统复位和软件中断响应时进入此模式 中止 (abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处 未定义 (und)

26、支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式 未定义 (und) 中止 (abt) 管理 (svc) 中断 (irq) 快中断 (fiq) 这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立(dl)的寄存器,以避免异常退出时用户模式的状态不可靠。2.2.4 处理器模式(msh) 第36页/共78页第三十六页,共79页。用户(yngh)和系统模式处理器模式说明备注 用户 (usr)正常程序工作模式不能直接切换到其它模式 系统 (sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以

27、直接切换到其它模式等特权 快中断 (fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式 中断 (irq)用于通用中断处理IRQ异常响应时进入此模式 管理 (svc)操作系统保护代码系统复位和软件中断响应时进入此模式 中止 (abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处 未定义 (und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式 这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。 系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个(zh ge)模式访问一些受控

28、的资源。 系统 (sys) 用户 (usr)2.2.4 处理器模式(msh) 第37页/共78页第三十七页,共79页。 处理器启动处理器启动(qdng)时的模式转换图时的模式转换图管理模式管理模式SVC(Supervisor)多种特权模式多种特权模式(msh)变化变化用户程序的运行用户程序的运行(ynxng)模式模式 复位后复位后缺省模式缺省模式主要完成各主要完成各模式的堆栈模式的堆栈设置设置一般为用户一般为用户模式模式User第38页/共78页第三十八页,共79页。example:MOVR0,#0x17MOVCPSR,R0处理器将进入中止(zhngzh)模式第39页/共78页第三十九页,共7

29、9页。1ARM微处理器概述ARM处理器系列(xli)RISC体系结构ARM和Thumb状态寄存器ARM指令集概述Thumb指令集概述2ARM微处理器体系结构数据类型ARM微处理器的工作状态ARM体系结构的存储器格式处理器模式(msh)寄存器组织异常第40页/共78页第四十页,共79页。简介(jinji)2.5 寄存器组织寄存器组织(zzh)nARM处理器有处理器有37(31+6)个物理寄存器个物理寄存器,有有18个个可编程访问的寄存器。可编程访问的寄存器。n寄存器被安排成部分重叠的组。在不同的工寄存器被安排成部分重叠的组。在不同的工作模式作模式(msh)和处理器状态下,程序员可以和处理器状态下

30、,程序员可以访问的寄存器也不尽相同。访问的寄存器也不尽相同。n分组的寄存器在处理处理器异常和特权操作分组的寄存器在处理处理器异常和特权操作时可得到快速的上下文切换。时可得到快速的上下文切换。第41页/共78页第四十一页,共79页。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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

31、_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svc SPSR_abt SPSR_und SPSR_irqSPSR_fiqARM状态(zhungti)各模式下的寄存器第42页/共78页第四十二页,共79页。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)

32、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_abt SPSR_abt SPSR_und SPSR_irqSPSR_fiqARM状态(zhu

33、ngti)各模式下的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_svcCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37个寄存器,分成两大类:31个通用(tngyng)32位寄存器;6个状态寄存器。第43页/共78页第四十三页,共79页。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义

34、中断快中断通用寄存器和程序计数器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_abt SPSR_

35、abt SPSR_und SPSR_irqSPSR_fiq无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用户用户无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系统系统SPSR_svcCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R

36、2R1R0未定义未定义SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中断中断SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中断快中断ARM状态各模式下可以(ky)访问的寄存器第44页/共78页第四十四页,共79页。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5

37、R6(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_svc SPSR_abt SPSR_und SPSR_irqSPSR_fiq一般(ybn)的通用寄存器R13_fiqR13_irqR13_undR

38、13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0 在汇编语言中寄存器R0R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且(bngqi)可用于任何使用通用寄存器的指令。第45页/共78页第四十五页,共79页。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8

39、(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_svc SPSR_abt SPSR_und SPSR_irqSPSR_fiq一般(ybn)的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R1

40、2_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0 其中R0R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应(duyng)于相同的32位物理寄存器。第46页/共78页第四十六页,共79页。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_

41、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_svc SPSR_abt SPSR_und SPSR_irqSPSR_fiq一般(ybn)的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abt

42、R13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R14为分组寄存器。它们(t men)所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器第47页/共78页第四十七页,共79页。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10

43、(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_svc SPSR_abt SPSR_und SPSR_irqSPSR_fiq一般(ybn)的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R12有两个分组的物理寄存器。一个用于除

44、FIQ模式(msh)之外的所有寄存器模式(msh),另一个用于FIQ模式(msh)。这样在发生FIQ中断后,可以加速FIQ的处理速度。第48页/共78页第四十八页,共79页。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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)

45、R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svc SPSR_abt SPSR_und SPSR_irqSPSR_fiq一般(ybn)的通用寄存器 寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户(yngh)和系统模式,其余5个分别用于5种异常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR1

46、3第49页/共78页第四十九页,共79页。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_

47、undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svc SPSR_abt SPSR_und SPSR_irqSPSR_fiq堆栈(duzhn)指针寄存器R13(SP) 寄存器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯(xgun)上都这样使用。但是在Thumb指令集中存在使用R13的指令。第50页/共78页第五十页,共79页。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a

48、4)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_svc SPSR_abt SPSR_und SPSR_irqSPSR_fiq链接(lin ji)寄存器R1

49、4(LR) R14为链接寄存器(LR),在结构上有两个特殊功能:在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些(yuxi)异常有一个小的固定偏移量)。第51页/共78页第五十一页,共79页。Lable程序A程序BR14R14寄存器与子程序调用(dioyng)BL Lable地址A?MOV PC,LRR14(地址(dzh)A)Lable?1.程序(chngx)A执行过程中调用程序(chngx)B;操作流程2.程序跳转至标号Lable,执行程序B。同时硬件将“BL Lable”指令的下一条指令所在地址存入R14;3.程序B

50、执行最后,将R14寄存器的内容放入PC,返回程序A;2.5 寄存器组织寄存器组织第52页/共78页第五十二页,共79页。R14寄存器与异常(ychng)发生 异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。区别在于有些异常有一个小常量(chngling)的偏移。2.5 寄存器组织寄存器组织(zzh)第53页/共78页第五十三页,共79页。R14寄存器注意(zhy)要点 当发生异常嵌套时,这些异常之间可能会发生冲突。例如:如果用户(yngh)在用户(yngh)模式下执行程序时发生了IRQ中断,用户(yngh)模式寄存器不会被破坏。但是如果允许在IRQ模式

51、下的中断处理程序重新使能IRQ中断,并且发生了嵌套的IRQ中断时,外部中断处理程序保存在R14_irq中的任何值都将被嵌套中断的返回地址所覆盖。2.5 寄存器组织寄存器组织(zzh)第54页/共78页第五十四页,共79页。R14寄存器注意(zhy)要点R14R14_irq用户模式下的程序IRQ模式下的程序AareturnB.XA地址A地址(dzh)A1.执行(zhxng)用户模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3. IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序

52、;未被破坏第55页/共78页第五十五页,共79页。R14寄存器注意(zhy)要点R14R14_irq用户模式下的程序IRQ模式下的程序AaB.XA地址A地址(dzh)A1.执行用户(yngh)模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3. IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;未被破坏IRQ模式下的程序BareturnB.XA地址B地址B4. 如果在IRQ处理程序中打开IRQ中断,并且再次发生IRQ中断,或者调用子程序;5. 硬件将返回地址保存在R14_ir

53、q寄存器中,原来保存的返回地址将被覆盖,造成错误;被破坏6. 在程序B返回到程序A,然后在返回到用户模式下被中断的程序时,发生错误,将不能正确返回;returnreturn 解决办法是确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将R14入栈),或者切换到其它处理器模式下。2.5 寄存器组织寄存器组织第56页/共78页第五十六页,共79页。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v

54、5)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_abt SPSR_abt SPSR_und SPSR_irqSPSR_fiq程序(chngx)计数器R15(PC) 寄存器R15为程序计数器(PC),它指向正在取指的地址。可以认为它是一

55、个通用寄存器,但是(dnsh)对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的。第57页/共78页第五十七页,共79页。读R15的限制(xinzh) 正常操作时,从R15读取的值是处理器正在取指的地址,即当前正在执行指令的地址加上8个字节(两条ARM指令的长度)。由于(yuy)ARM指令总是以字为单位,所以R15寄存器的最低两位总是为0。LDR R0,PC?PCPC-4PC-8正在执行正在译码正在取指流水线状态地址程序代码2.5 寄存器组织寄存器组织(zzh)第58页/共78页第五十八页,共79页。读R15的限制(xinzh) 当使用ST

56、R或STM指令保存R15时,会有一个(y )例外。这些指令可能将当前指令地址加8字节或加12字节保存(将来可能还有其它数字)。偏移量是8还是12取决于具体的ARM芯片,但是对于一个(y )确定的芯片,这个值是一个(y )常量。 所以最好避免使用STR和STM指令来保存R15,如果很难做到,那么应当在程序中计算出该芯片的偏移量。2.5 寄存器组织寄存器组织(zzh)第59页/共78页第五十九页,共79页。读R15的限制(xinzh)计算(j sun)偏移量程序代码:SUBR1,PC,#4;R1=下面(xi mian)STR指令的地址STRPC,R0;保存STR指令地址+偏移量LDRR0,R0;然

57、后重装SUBR0,R0,R1;计算偏移量2.5 寄存器组织寄存器组织第60页/共78页第六十页,共79页。写R15的限制(xinzh) 正常(zhngchng)操作时,写入R15 的值被当作一个指令地址,程序从这个地址处继续执行(相当于执行一次无条件跳转)。 2.5 寄存器组织寄存器组织(zzh)第61页/共78页第六十一页,共79页。写R15的限制(xinzh) 由于ARM指令以字节(z ji)为边界,因此写入R15的值最低两位通常为0b00。具体的规则取决于内核结构的版本:在ARM结构V3版及以下版本中,写入R15的值的最低两位被忽略,因此跳转地址由指令的实际目标地址(写入R15的值)和0

58、xFFFFFFFC相与得到;在ARM结构V4版及以上版本中,写入R15的值的最低两位为0,如果不是,结果将不可预测。2.5 寄存器组织寄存器组织(zzh)第62页/共78页第六十二页,共79页。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_

59、fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abt SPSR_abt SPSR_und SPSR_irqSPSR_fiq程序(chngx)状态寄存器CPSR 寄存器CPSR为程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在因为异常事件而进入异常时它保存CPSR的当前值,异常退出(tuch)时可通过它恢复CPSR。第63

60、页/共78页第六十三页,共79页。1ARM微处理器概述(ish)ARM处理器系列RISC体系结构ARM和Thumb状态寄存器ARM指令集概述(ish)Thumb指令集概述(ish)2ARM微处理器体系结构数据类型ARM微处理器的工作状态ARM体系结构的存储器格式(gshi)处理器模式寄存器组织异常第64页/共78页第六十四页,共79页。 当常的程序流被暂时中止,处理器就进入异常模式。例如响应一个来自外设的中断。在处理异常之前(zhqin),ARM7TDMI内核保存当前的处理器状态,这样当处理程序结束时可以恢复执行原来的程序。 如果同时发生两个或更多异常,那么将按照固定的顺序来处理异常,详见“异

61、常优先级”部分。 2.6 异常异常(ychng)第65页/共78页第六十五页,共79页。第66页/共78页第六十六页,共79页。 如果异常处理程序已经把返回地址拷贝到堆栈,那么可以使用一条多寄存器传送指令来恢复(huf)用户寄存器并实现返回。中断(zhngdun)处理代码的开始部分和退出部分异常的入口和出口(chku)处理SUB LR,LR,#4 ;计算返回地址STMFD SP!,R0-R3,LR;保存使用到的寄存器. . .LDMFD SP!,R0-R3,PC;中断返回2.6 异常异常第67页/共78页第六十七页,共79页。进入( jnr)异常在异常发生后,ARM7TDMI内核会作以下(yx

62、i)工作:1.在适当的LR中保存下一条指令的地址,当异常入口(r ku)来自:ARM状态,那么ARM7TDMI将当前指令地址加4或加8复制(取决于异常的类型)到LR中;为Thumb状态,那么ARM7TDMI将当前指令地址加4或加8 (取决于异常的类型)复制到LR中;异常处理器程序不必确定状态。2.6 异常异常第68页/共78页第六十八页,共79页。进入( jnr)异常在异常发生(fshng)后,ARM7TDMI内核会作以下工作:2.将CPSR复制到适当(shdng)的SPSR中;3. 将CPSR模式位强制设置为与异常类型相对应的值;4.强制PC从相关的异常向量处取指。2.6 异常异常第69页/

63、共78页第六十九页,共79页。 ARM7TDMI内核在中断异常时置位中断禁止标志,这样可以防止(fngzh)不受控制的异常嵌套。注:异常总是在ARM状态中进行处理。当处理器处于Thumb状态时发生了异常,在异常向量地址装入PC时,会自动切换到ARM状态。进入( jnr)异常2.6 异常异常(ychng)第70页/共78页第七十页,共79页。当异常结束时,异常处理程序必须:1.将LR中的值减去偏移量后存入(cn r)PC,偏移量根据异常的类型而有所不同;2.将SPSR的值复制回CPSR;3.清零在入口置位的中断禁止标志。注:恢复CPSR的动作会将T、F和I位自动恢复为异常发生前的值。退出(tuc

64、h)异常2.6 异常异常(ychng)第71页/共78页第七十一页,共79页。程序AIRQ服务程序系统模式IRQ模式程序寄存器组图示进入异常(ychng)过程1. 程序在系统模式下运行用户程序,假定当前处理器状态(zhungti)为Thumb状态(zhungti)、允许IRQ中断;2. 用户程序运行时发生IRQ中断,硬件(yn jin)完成以下动作:LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0. . .? ? ? ?MODTFI. . .N Z C V置位I位(禁止IRQ中断)清零T位(进入ARM状态)设置MOD位,切换处理器模式至IRQ模式将下一条指令的地址存

65、入IRQ模式的LR寄存器将CPSR寄存器内容存入IRQ模式的SPSR寄存器将跳转地址存入PC,实现跳转IRQ0?1. . .? ? ? ?BackAddrJumpAddrJumpSYS1?0. . .?“?”表示对该位不关心第72页/共78页第七十二页,共79页。在异常处理结束后,异常处理程序完成以下(yxi)动作:程序AIRQ服务程序系统模式IRQ模式程序寄存器组图示退出(tuch)异常过程LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0. . .? ? ? ?MODTFI. . .N Z C V将SPSR寄存器的值复制(fzh)回CPSR寄存器;将LR寄存的值减

66、去一个常量后复制到PC寄存器,跳转到被中断的用户程序。IRQ0?1. . .? ? ? ?BackAddrJumpAddrreturnSYS1?0. . .?SYS1?0. . .? ? ? ?BackAddr-4Jump“?”表示对该位不关心第73页/共78页第七十三页,共79页。异常向量地址地址异常类型异常类型进入时的模式进入时的模式进入时进入时I的状的状态态进入时进入时F的状的状态态0x00复位复位管理管理禁止禁止禁止禁止0x04未定义指令未定义指令未定义未定义IF0x08软件中断软件中断管理管理禁止禁止F0x0C中止(预取)中止(预取)中止中止IF0x10中止(数据)中止(数据)中止中

67、止IF0x14保留保留保留保留0x18IRQ中断中断禁止禁止F0x1CFIQ快中断快中断禁止禁止禁止禁止注:表中的I和F表示不对该位有影响,保留(boli)原来的值。 第74页/共78页第七十四页,共79页。 当多个异常同时发生时,一个固定(gdng)的优先级系统决定它们被处理的顺序:异常(ychng)优先级异常类型优先级复位1(最高优先级)数据中止2FIQ3IRQ4预取中止5未定义指令6SWI7(最低优先级)优先级降低2.6 异常异常(ychng)第75页/共78页第七十五页,共79页。注意:未定义的指令和SWI异常互斥。因为同一条指令不能既是未定义的,又能产生有效的软件中断;当FIQ使能,

68、并且FIQ和数据中止异常同时发生时,ARM7TDMI内核首先进入数据中止处理程序,然后立即跳转到FIQ向量。在FIQ处理结束(jish)后返回到数据中止处理程序。数据中止的优先级必须高于FIQ以确保数据转移错误不会被漏过。异常(ychng)优先级2.6 异常异常(ychng)第76页/共78页第七十六页,共79页。Example一个外部中断(zhngdun)产生第77页/共78页第七十七页,共79页。感谢您的观赏(gunshng)!第78页/共78页第七十八页,共79页。内容(nirng)总结什么是处理器内核(ni h)。68K内核(ni h)是最早在嵌入式领域广泛应用的内核(ni h)。ARM9系列主要应用于引擎管理、仪器仪表、安全系统和机顶盒等领域。ARM处理器核简介Xscale。正在执行Thumb指令集的处理器是工作在Thumb状态下。当操作数寄存器的状态位(位0)为1时,执行。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。这样在发生FIQ中断后,可以加速FIQ的处理速度。感谢您的观赏第七十九页,共79页。

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

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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