




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ARM处理器编程模型,第2章,本章目标,了解ARM的结构特点 了解ARM的编程的工作模式 了解ARM的内部资源 了解ARM异常的处理机制,本章结构,ARM状态下寄存器,Thumb状态下寄存器,寄存器组织,ARM微处理器的工作模式,ARM微处理器编程模型,ARM微处理器的工作状态,程序状态寄存器,数据存储格式,指令长度及数据结构,异常,对异常的响应,从异常返回,异常类型,2-1 ARM微处理器的工作状态,处理器状态: ARM处理器内核包含2套指令系统,分别为ARM指令集和Thumb指令,并且各自对应1种处理器的状态: ARM状态:32位,处理器执行字方式的ARM指令,处理器默认为此状态; Thumb状态:16位,处理器执行半字方式的Thumb指令。 两个状态之间的切换并不影响处理器模式或寄存器内容。,状态切换的一个例子,使用BX指令将ARM内核的操作状态在ARM状态和Thumb状态之间进行切换。,ARM指令集,Thumb 指令集,CODE32 LDR R0, =Lable+1 BX R0 CODE16 Lable MOV R1, #12,CODE16 LDR R0, =Lable BX R0 CODE32 Lable MOV R1, #10,执行完BX指令,处理器切换到Thumb状态,开始执行Thumb指令,程序代码,指令集关系,从ARM状态切换到Thumb状态的程序代码如下:,从Thumb状态切换到ARM状态的程序代码如下:,执行完BX指令,处理器切换到ARM状态,开始执行ARM指令,2-1 ARM微处理器的工作状态,ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。这样的好处是可以更好的支持操作系统并提高工作效率。ARM完全支持这七种模式。,2-2 寄存器工作模式,除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。,处理器模式,这两种模式都不能由异常进入,想要进入必须修改CPSR,而且它们使用完全相同的寄存器组。系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。,这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。,何时进入异常模式,具体规定如下: 处理器复位之后进入管理模式,操作系统内核通常处于管理模式; 当处理器访问存储器失败时,进入数据访问中止模式; 当处理器遇到没有定义或不支持的指令时,进入未定义模式; 中断模式与快速中断模式分别对ARM处理器2种不同级别的中断作出响应。,2-2 寄存器工作模式,阶段小结,ARM9处理器支持的7种寄存器工作模式,2-3 寄存器组织,ARM9处理器内部寄存器组织: 在ARM9处理器内部有37个用户可见的寄存器。 在不同的工作模式和处理器状态下,程序员可以访问的寄存器也不尽相同。,ARM状态各模式下的寄存器,2-3-1 ARM状态下的寄存器组织,所有的37个寄存器,分成两大类: 31个通用32位寄存器; 6个状态寄存器。,2-3-1 ARM状态下的寄存器组织,2-3-1 ARM状态下的寄存器组织,在汇编语言中寄存器R0R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。,2-3-1 ARM状态下的寄存器组织,其中R0R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。,2-3-1 ARM状态下的寄存器组织,寄存器R8R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器,2-3-1 ARM状态下的寄存器组织,寄存器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。,2-3-1 ARM状态下的寄存器组织,寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。,2-3-1 ARM状态下的寄存器组织,寄存器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。,2-3-1 ARM状态下的寄存器组织,R14为链接寄存器(LR),在结构上有两个特殊功能: 在每种模式下,模式自身的R14版本用于保存子程序返回地址; 当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。,2-3-1 ARM状态下的寄存器组织,在Thumb状态各模式下实际访问的寄存器,Thumb状态寄存器集是ARM状态集的子集,程序员可以直接访问的寄存器为: 8个通用寄存器R0R7; 程序计数器(PC); 堆栈指针(SP); 链接寄存器(LR); 当前程序状态寄存器( CPSR)。,2-3-2 Thumb状态下的寄存器组织,在Thumb状态各模式下的寄存器,未分组的通用寄存器,第二类分组的通用寄存器,在汇编语言中寄存器R0R7为通用寄存器,对于任何处理器模式,它们中的每一个都对应于相同的32为物理寄存器。,堆栈指针SP对应ARM状态的寄存器R13。每个异常模式都有其自身的SP分组版本,SP通常指向各异常模式所专用的堆栈。 注意:在发生异常时,处理器自动进入ARM状态。,链接寄存器LR对应ARM状态寄存器R14。 注意:在发生异常时,处理器自动进入ARM状态。,2-3-2 Thumb状态下的寄存器组织,ARM状态,Thumb寄存器在ARM状态寄存器上的映射,Thumb状态,在Thumb状态中,高端寄存器的访问是受到限制的,只有MOV、CMP和ADD指令可以对其访问,2-3-2 Thumb状态下的寄存器组织,状态切换过程,程序在正常运行的过程中,复位事件产生,导致系统复位。,2-3-2 Thumb状态下的寄存器组织,简介,ARM内核包含1个CPSR和5个仅供异常处理程序使用的SPSR。CPSR反映当前处理器的状态,其包含: 4个条件代码标志(负标志N、零标志Z、进位标志C和溢出标志V ); 2个中断禁止位(IRQ禁止与FIQ禁止); 5个对当前处理器模式进行编码的位(M4:0); 1个用于指示当前执行指令的位(ARM指令还是Thumb指令)。,2-3-3 程序状态寄存器CPSR,程序状态寄存器的格式,条件代码标志,保留,控制位,溢出标志,进位或借位扩展,零,负或小于,IRQ禁止,FIQ禁止,状态位,模式位,N,Z,C,V,I,T,F,2-3-3 程序状态寄存器CPSR,条件代码标志,各标志位的含义如下: 负标志N:运算结果的第31位值,记录标志设置操作的结果; 零标志Z:如果标志设置的操作为0,则置位; 进位标志C:记录无符号加法溢出,减法无借位,循环移位; 溢出标志V:记录标志设置操作的有符号溢出。,2-3-3 程序状态寄存器CPSR,警告:绝对不要强制改变CPSR寄存器中的控制位T。如果这样做,处理器将进入一个无法预测的状态。,控制位,1、中断禁止控制位I和F;,2、处理器状态位T;,3、处理器模式位M0M4。,注意:不是所有模式位的组合都定义了有效的处理器模式,如果将非法值写入M4:0中,处理器将进入一个无法恢复的模式。,2-3-3 程序状态寄存器CPSR,保留位,CPSR中的保留位被保留将来使用。当改变CPSR标志和控制位时,请确认没有改变这些保留位。 另外,确保程序不依赖于包含特定值的保留位,因为将来的处理器可能会将这些位设置为1或者0。,2-3-3 程序状态寄存器CPSR,2-4 ARM体系结构的数据存储格式,注意:ARM体系结构较新的版本对这两种数据存储方式都支持。某些较老的版本只支持小字节序存储方式,编程的时候需要注意。,处理器用于存储数据的方式有两种,分别为大字节序格式和小字节序格式: 大字节序格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。 小字节序格式:字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中。,存储器格式,存储器系统有两种映射机制: 小端存储器系统: 在小端格式中,数据的高字节存放在高地址中。 大端存储器系统: 在大端格式中,数据的高字节存放在低地址中。,0x12 0x34 0x56 0x78,0x78 0x56 0x34 0x12,2-4 ARM体系结构的数据存储格式,2-5 指令长度及数据类型,ARM9处理器指令长度: 在ARM状态下,ARM微处理器的指令长度是32位;在Thumb状态下,指令长度为16位。 ARM9处理器数据类型: ARM微处理器中支持字节(8位)、半字(16位)、字(32位)三种数据类型,其中,字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0)。,如果一个数据是从偶地址开始的连续存储,那么它就是半字对齐,否则就是非半字对齐; 如果一个数据是以能被4整除的地址开始的连续存储,那么它就是字对齐,否则就是非字对齐。,存储器的存储方式,2-5 指令长度及数据类型,2-6 异常,简介: 只要正常的程序流被暂时中止,处理器将进入异常模式。例如响应一个来自外设的中断。在处理异常之前,ARM9内核保存当前的处理器状态(CPSR-SPSR),这样当处理程序结束时可以恢复执行原来的程序(SPSR-CPSR)。,2-6-1 ARM所支持的异常,2-6-1 ARM所支持的异常,IRQ(Interrupt Request): 中断请求(IRQ)异常是一个由nIRQ输入端的低电平所产生的正常中断。IRQ的优先级低于FIQ。对于FIQ序列它是被屏蔽的。任何时候在一个特权模式下,都可通过置位CPSR中的I 位来禁止IRQ。 不管异常入口是来自ARM状态还是Thumb状态,IRQ处理程序都会通过执行下面的指令从中断返回:,SUBS PC,R14_irq,#4,2-6-1 ARM所支持的异常,IRQ(Interrupt Request):,FIQ,IRQ,(Reserved),Data Abort,Prefetch Abort,Software Interrupt,Undefined Instruction,Reset,2-6-1 ARM所支持的异常,FIQ(Fast Interrupt Request): 快速中断请求(FIQ)适用于对一个突发事件的快速响应,这得益于在ARM状态中,快中断模式有8个专用的寄存器可用来满足寄存器保护的需要(这可以加速上下文切换的速度)。 不管异常入口是来自ARM状态还是Thumb状态,FIQ处理程序都会通过执行下面的指令从中断返回: 在一个特权模式中,可以通过置位CPSR中的F位来禁止FIQ异常。,SUBS PC,R14_fiq,#4,2-6-2 对异常的响应(进入异常),在异常发生后,ARM9内核会作以下工作: 在LR中保存当前执行指令的下一条指令的地址,即:LRPC4; 将CPSR复制到适当的SPSR中; 将CPSR模式位强制设置为与异常类型相对应的值; 强制PC从相关的异常向量处取指。 ARM9内核在处理中断异常时置位中断禁止标志,这样可以防止不受控制的异常嵌套。,BackAddr,JumpAddr,“?”表示对该位不关心,2-6-2 对异常的响应(进入异常),进入异常过程: 1. 程序在系统模式下运行用户程序,允许IRQ中断; 将CPSR寄存器内容存入IRQ模式的SPSR寄存器 置位I位(禁止IRQ中断) 清零T位(进入ARM状态) 设置MOD位,切换处理器模式至IRQ模式 将下一条指令的地址存入IRQ模式的LR寄存器 将跳转地址存入PC,实现跳转,2-6-3 从异常返回(退出异常),当异常结束时,异常处理程序必须: 将LR(R14)中的值减去偏移量后存入PC,偏移量根据异常的类型而有所不同; 将SPSR的值复制回CPSR; 清零在入口置位的中断禁
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老人考试题及答案
- 心理学基础模拟练习题(含答案)
- 中级英语II知到智慧树答案
- 护理重点环节应急预案试题+答案
- 药店药品网络销售管理制度试题(含参考答案)
- 水利工程师-水利工程管理测试题(含参考答案)
- 运输车驾驶员安全教育培训考核试题及答案
- 2025城管执法服装定制化采购及质量监控制度合同
- 2025车展场地租赁合同范本-附带增值服务条款
- 2025年度速记服务保密协议及数据安全保护合同
- 乏力诊治与管理专家共识解读 2
- 2025亚洲杯男篮+《热血征程砥砺前行》课件-2025-2026学年高中励志主题班会
- 2025-2030牛结核病防控技术进展与行业影响分析报告
- 2024年泰州市靖江市公安局招聘警务辅助人员真题
- 国际快递基本知识培训课件
- 2025年四川省高考生物试卷(含答案与解析)
- 学校安全隐患排查整治表
- 2022年有子女离婚协议书手写
- 公路硬化报告范文
- 纳迪亚之宝全流程攻略 100%完结完整通关指南
- 预测分析:技术、模型与应用 - SAP Predictive Analytics
评论
0/150
提交评论