arm体系结构编程1.ppt_第1页
arm体系结构编程1.ppt_第2页
arm体系结构编程1.ppt_第3页
arm体系结构编程1.ppt_第4页
arm体系结构编程1.ppt_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、ARM体系结构编程,2020/8/14,CUN,2,课程内容复习,Arm体系结构,Arm处理器系列:,Arm7系列:Arm7TDMI、Arm7TDMI-S、ARM7EJ-S、ARM720T,Arm9系列: Arm920T、Arm922T、 Arm940T,Arm9E系列:Arm926EJ-S、Arm946E-S、 Arm966E-S,Arm10E系列:Arm1020E、Arm1022E、 Arm1026EJ-S,Arm11系列,SecureCore系列,StrongArm系列,Xscale系列,体系结构的变种 及命名格式:,Armv3 Armv4TxM Armv5xM Armv5TxM Arm

2、v6,Arm处理器产品:,例子: Samsung S3c2410 基于Arm内核(处理器): Arm920T Arm体系结构版本: Armv5,2020/8/14,CUN,3,ARM处理器的特点,RISC架构 具有大量的寄存器 绝大多数操作都在寄存器中进行 寻址方式简单 采用固定长度的指令格式 体积小、低功耗、低成本、高性能 支持Thumb/ARM指令集,2020/8/14,CUN,4,Arm处理器编程基础,1.数据类型 2.ARM 处理器的工作状态 3.ARM处理器工作模式 4.寄存器组织 5.异常(Exceptions) 6.ARM 体系结构的存储器格式,2020/8/14,CUN,5,数

3、据类型,字(Word) 在ARM体系结构中,字的长度为32位, 其它8位/16位处理器体系结构中,字的长度一般为16位 半字(Half-Word) 在ARM体系结构中,半字的长度为16位,与8位/16位处理器体系结构中字的长度一致 字节(Byte) 在ARM体系结构8位,2020/8/14,CUN,6,ARM 处理器工作状态,ARM处理器的工作状态一般有两种,并可在两种状态之间切换 第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令; 第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令,2020/8/14,CUN,7,ARM处理器工作模式,ARM 有7个基本工作

4、模式: User:非特权模式,大部分任务执行在这种模式 正常程序执行的模式 FIQ:当一个高优先级(fast)中断产生时将会进入这种模式 高速数据传输和通道处理 IRQ:当一个低优先级(normal)中断产生时将会进入这种模式 通常的中断处理 Supervisor:当复位或软中断指令执行时将会进入这种模式 供操作系统使用的一种保护模式 Abort: 当存取异常时将会进入这种模式 虚拟存储及存储保护 Undef: 当执行未定义指令时会进入这种模式 System: 使用和User模式相同寄存器的特权模式 特权级的操作系统任务,异常模式(Exception),特权模式(Privilege),2020

5、/8/14,CUN,8,模式改变方法,方法: 软件控制 外部中断或异常处理 通常在用户模式下 不能访问被保护的系统资源 一般不能改变模式 异常发生可以导致模式改变,2020/8/14,CUN,9,寄存器组织,2020/8/14,CUN,10,寄存器描述,ARM 有37个32-Bits长的寄存器. 1 个用作PC( program counter) 1个用作CPSR(current program status register) 5个用作SPSR(saved program status registers) 30 个通用寄存器 当前处理器的模式决定着哪组寄存器可操作. 任何模式都可以存取:

6、相应的r0-r12子集 相应的 r13 (the stack pointer, sp) and r14 (the link register, lr) 相应的 r15 ( the program counter, pc) 相应的CPSR(current program status register, cpsr) 特权模式 (除system模式) 还可以存取; 相应的 spsr (saved program status register),2020/8/14,CUN,11,通用寄存器(1),通用寄存器包括R0R15,可以分为三类: 未分组寄存器R0R7; 分组寄存器R8R14 程序计数器PC

7、(R15) 寄存器R13在ARM指令中常用作堆栈指针 R14也称作子程序连接寄存器(Subroutine Link Register)或连接寄存器LR 当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份,2020/8/14,CUN,12,通用寄存器(2),寄存器R15用作程序计数器(PC) 由于ARM 体系结构采用了多级流水线技术,对于ARM 指令集而言,PC 总是指向当前指令的下两条指令的地址,即PC 的值为当前指令的地址值加8 个字节,2020/8/14,CUN,13,程序状态寄存器(1),寄存器R16 寄存器R16用作CPSR(Current Program Stat

8、us Register,当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位 每一种运行模式下又都有一个专用的物理状态寄存器,称为SPSR(Saved ProgramStatus Register,备份的程序状态寄存器),当异常发生时,SPSR用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR,2020/8/14,CUN,14,程序状态寄存器(2),2020/8/14,CUN,15,条件码标志位的含义,2020/8/14,CUN,16,控制位,中断禁止位I、F: I=1 禁止IRQ中断; F=

9、1 禁止FIQ中断。 T标志位:该位反映处理器的运行状态。 对于ARM体系结构v5及以上的版本的T系列处理器,当该位为1时,程序运行于Thumb状态,否则运行于ARM状态 对于ARM体系结构v5及以上的版本的非T系列处理器,当该位为1时,执行下一条指令以引起未定义的指令异常; 当该位为0时,表示运行于ARM状态,2020/8/14,CUN,17,运行模式位M4:0,2020/8/14,CUN,18,异常(Exceptions),当正常的程序执行流程发生暂时的停止时,称之为异常 处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行 处理器

10、允许多个异常同时发生,它们将会按固定的优先级进行处理,2020/8/14,CUN,19,Arm体系结构的异常种类,2020/8/14,CUN,20,异常的优先级,优先级异常 1(最高)复位 2数据中止 3FIQ 4IRQ 5预取中止 6未定义指令,SWI,2020/8/14,CUN,21,异常向量表,2020/8/14,CUN,22,对异常的响应,ARM微处理器对异常的响应过程用伪码可以描述为: R14_ = Return Link SPSR_ = CPSR CPSR4:0 = Exception Mode Number CPSR5 = 0 ;运行于ARM 工作状态 If = Reset or FIQ then ;当响应FIQ 异常时,禁止新的FIQ 异常 CPSR6 = 1 CPSR7 = 1 PC = Exception Vector Address,2020/8/14,CUN,23,从异常返回,异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回: 1.

温馨提示

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

评论

0/150

提交评论