欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    嵌入式系统 第二章 嵌入式处理器下PPT讲稿.ppt

    • 资源ID:49413628       资源大小:6.04MB        全文页数:167页
    • 资源格式: PPT        下载积分:18金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要18金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    嵌入式系统 第二章 嵌入式处理器下PPT讲稿.ppt

    嵌入式系统嵌入式系统 第二章第二章 嵌入式嵌入式处理器下处理器下第1页,共167页,编辑于2022年,星期日第二章第二章 嵌入式处理器嵌入式处理器2.1 2.1 引言引言 2.2 2.2 嵌入式处理器概述嵌入式处理器概述 2.32.3ARMARM处理器基础处理器基础 2.52.5ARMARM程序程序设计设计基基础础2.42.4ARMARM指令系指令系统统第2页,共167页,编辑于2022年,星期日2.4 ARM指令系统指令系统 2.4.1 ARM编程模型编程模型 2.4.2 ARM寻址方式寻址方式 2.4.3 ARM指令集指令集 2.4.4 Thumb指令集指令集第3页,共167页,编辑于2022年,星期日2.4.1 ARM编程模型编程模型2.4 ARM2.4 ARM指令系统指令系统指令系统指令系统 1.流水线流水线 2.数据类型数据类型 3.处理器模式处理器模式 4.处理器工作状态处理器工作状态 5.寄存器组织寄存器组织6.异常异常 7.存储器和存储器映射存储器和存储器映射I/O 第4页,共167页,编辑于2022年,星期日1.流水线流水线 2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型 流水流水线线技技术术是是现现代微代微处处理器普遍采用的一种理器普遍采用的一种技技术术,它可以使得几条指令并行,它可以使得几条指令并行执执行,因此行,因此可以大大提高可以大大提高处处理器的运行效率。理器的运行效率。第5页,共167页,编辑于2022年,星期日1.流水线流水线 2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型从程序存储器中读取指从程序存储器中读取指令,放入流水线中令,放入流水线中 操作码和操作数被译码,决定执行什操作码和操作数被译码,决定执行什么功能,为下一个时钟周期准备数据么功能,为下一个时钟周期准备数据路径所需要的控制信号路径所需要的控制信号执行已译码的指令执行已译码的指令取取 指指译译 码码执执 行行ARM7ARM7的的3 3级流水线:级流水线:第6页,共167页,编辑于2022年,星期日1.流水线流水线 流水流水线线能能够够正常工作的条件是在任意正常工作的条件是在任意时时刻,每一刻,每一级级所使用的硬件必所使用的硬件必须须能能够够独立操作,不能多独立操作,不能多级级同同时时占用同一硬件占用同一硬件资资源。源。在正常情况下,每条指令都被划分成在正常情况下,每条指令都被划分成这样这样3个个时钟时钟周期来完成,周期来完成,即指令即指令执执行行时间时间(Latency)是)是3周期。周期。流水流水线线的的执执行使得程序行使得程序计计数器数器PC必必须须在当前指令取指前在当前指令取指前计计数。数。对对于于ARM处处理器的理器的3级级流水流水线线,以当前,以当前PC取指后,取指后,PC值值会增加会增加为为PC4。2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型第7页,共167页,编辑于2022年,星期日1.流水线流水线图图2-5 ARM2-5 ARM单周期指令的多级流水线操作单周期指令的多级流水线操作2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型第8页,共167页,编辑于2022年,星期日1.流水线流水线图图2-6 ARM2-6 ARM多周期指令的多级流水线操作多周期指令的多级流水线操作 2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型第9页,共167页,编辑于2022年,星期日1.流水线流水线图图2-7 ARM2-7 ARM分支指令的流水线操作分支指令的流水线操作 2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型第10页,共167页,编辑于2022年,星期日2.数据类型数据类型 ARM处处理器支持以下数据理器支持以下数据类类型:型:2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型u Byte字节,字节,8位;位;u Halfword半字,半字,16位(半字必须与位(半字必须与2字节边界对准);字节边界对准);u Word字,字,32位(字必须与位(字必须与4字字节边界对准)。节边界对准)。第11页,共167页,编辑于2022年,星期日2.数据类型数据类型 2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型图图2-8 ARM2-8 ARM数据类型存储图数据类型存储图 第12页,共167页,编辑于2022年,星期日3.处理器模式处理器模式 ARM体系结构支持体系结构支持7种处理器模式种处理器模式:2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型处理器模式说 明用户 usr程序正常执行模式FIQ fiq支持高速数据传输或通道处理IRQ irq通用中断处理管理 svc操作系统保护模式中止 abt虚拟存储器或存储器保护未定义 und支持硬件协处理器的软件仿真系统 sys运行特权操作系统任务第13页,共167页,编辑于2022年,星期日4.处理器工作状态处理器工作状态 ARM处处理器具有特殊的两种工作状理器具有特殊的两种工作状态态:2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型u ARM状态状态:32位,执行字对准的位,执行字对准的ARM指令;指令;u Thumb状态状态:16位,执行半字对准的位,执行半字对准的Thumb指令。指令。ARM处处理器的操作状理器的操作状态态可以通可以通过过BX指令指令(分支和交分支和交换换指令)在指令)在ARM状状态态和和Thumb状状态态之之间间切切换换。例:例:从从ARM状态切换到状态切换到Thumb状态:状态:LDR R0,=Label+1 BX R0从从Thumb状态切换到状态切换到ARM状态:状态:LDR R0,=Label BX R0第14页,共167页,编辑于2022年,星期日5.寄存器组织寄存器组织 ARM处处理器共有理器共有37个寄存器:个寄存器:2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型u 31个个通用寄存器通用寄存器:32位,含程序计数器位,含程序计数器PC;u 6个个状态寄存器状态寄存器:32位,只使用了其中的位,只使用了其中的12位。位。当当编编写用写用户户程序程序时时,37个寄存器中个寄存器中仅仅有有15个通用寄存器个通用寄存器r0r14、程序、程序计计数器数器PC(r15)和当前程序状)和当前程序状态态寄存器寄存器CPSR需要需要考考虑虑。其余寄存器。其余寄存器仅仅用于系用于系统级编统级编程和异常程和异常处处理(如中断)。理(如中断)。第15页,共167页,编辑于2022年,星期日ARARM M状状态态下下寄寄存存器器组组织织第16页,共167页,编辑于2022年,星期日5.寄存器组织寄存器组织-不分组寄存器不分组寄存器r0r7 不分不分组组意味着在所有意味着在所有处处理器模式下,理器模式下,r0r7都可都可被同被同样访问样访问,没有体系,没有体系结结构所构所隐隐含的特殊用途。含的特殊用途。2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型第17页,共167页,编辑于2022年,星期日5.寄存器组织寄存器组织-分组寄存器分组寄存器r8r14 分分组组意味着意味着r8r14的的访问访问与当前与当前处处理器的模式相关。理器的模式相关。如果要如果要访问访问r8r14,而不依,而不依赖赖于当前于当前处处理器的模式,理器的模式,就必就必须须使用使用规规定的寄存器名称。定的寄存器名称。名称的形式名称的形式为为:2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型 r8_r14_第18页,共167页,编辑于2022年,星期日5.寄存器组织寄存器组织-分组寄存器分组寄存器r8r14 r8r12各有两各有两组组物理寄存器:一物理寄存器:一组为组为FIQ模式,模式,另一另一组为组为FIQ以外以外的模式。的模式。寄存器寄存器r8r12没有指定特殊用途,而使用没有指定特殊用途,而使用r8_fiqr12_fiq则则允允许许快速中断。快速中断。2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型第19页,共167页,编辑于2022年,星期日5.寄存器组织寄存器组织-分组寄存器分组寄存器r8r14 寄存器寄存器r13和和r14的用途比的用途比较较特殊:特殊:2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型u r13通常用作堆栈指针通常用作堆栈指针SP,被初始化成指向异常模式分配,被初始化成指向异常模式分配的堆栈。的堆栈。u r14通常用作子程序链接寄存器通常用作子程序链接寄存器LR。处理异常时,在程序入口处将异常处理程序用到的其它寄存器的值压入堆栈,返回时重新将这些值加载到寄存器中。当执行分支指令BL时,r15的内容拷贝到r14中,从而成为子程序调用后的返回地址第20页,共167页,编辑于2022年,星期日5.寄存器组织寄存器组织-程序计数器程序计数器r15 寄存器寄存器r15通常被用作程序通常被用作程序计计数器数器PC。在在ARM状状态态下,下,PC的的值值保存在位保存在位31:2,而位,而位1:0为为0;在;在Thumb状状态态下,下,PC的的值值保存在位保存在位31:1,而位,而位0为为0。2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型第21页,共167页,编辑于2022年,星期日5.寄存器组织寄存器组织-当前程序状态寄存器当前程序状态寄存器CPSR CPSR和和SPSR具有相同的格式具有相同的格式 2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型第22页,共167页,编辑于2022年,星期日标志位标志位含含 义义N N当用两个补码表示的带符号数进行运算时,当用两个补码表示的带符号数进行运算时,N=1 N=1 表示运算的结果为负数;表示运算的结果为负数;N=0 N=0 表示运算的结果为正数或零;表示运算的结果为正数或零;Z ZZ=1 Z=1 表示运算的结果为零;表示运算的结果为零;Z=0Z=0表示运算的结果为非零;表示运算的结果为非零;C C可以有可以有4 4种方法设置种方法设置C C的值:的值:加法运算(包括比较指令加法运算(包括比较指令CMNCMN):当运算结果产生了进位时(无符号数溢出):当运算结果产生了进位时(无符号数溢出),C=1C=1,否则,否则C=0C=0。减法运算(包括比较指令减法运算(包括比较指令CMPCMP):当运算时产生了借位(无符号数溢出),):当运算时产生了借位(无符号数溢出),C=0C=0,否则,否则C=1C=1。对于包含移位操作的非加对于包含移位操作的非加/减运算指令,减运算指令,C C为移出值的最后一位。为移出值的最后一位。对于其他的非加对于其他的非加/减运算指令,减运算指令,C C的值通常不改变。的值通常不改变。V V可以有可以有2 2种方法设置种方法设置V V的值:的值:对于加对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,号数时,V=1V=1表示符号位溢出。表示符号位溢出。对于其他的非加对于其他的非加/减运算指令,减运算指令,V V的值通常不改变。的值通常不改变。Q Q在在ARM v5ARM v5及以上版本的及以上版本的E E系列处理器中,用系列处理器中,用Q Q标志位指示增强的标志位指示增强的DSPDSP运算指令运算指令是否发生了溢出。在其他版本的处理器中,是否发生了溢出。在其他版本的处理器中,Q Q标志位无定义。标志位无定义。第23页,共167页,编辑于2022年,星期日5.寄存器组织寄存器组织-Thumb状态的寄存器集状态的寄存器集 2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型ThumbThumb状状态态下下寄寄存存器器组组织织 第24页,共167页,编辑于2022年,星期日5.寄存器组织寄存器组织-Thumb状态的寄存器集状态的寄存器集 2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型ThumbThumb状态状态寄存器到寄存器到ARMARM寄存器寄存器的映射的映射 第25页,共167页,编辑于2022年,星期日6.异常异常 异常(异常(exception)是指由内部或外部源产生从而使处理)是指由内部或外部源产生从而使处理器需要处理的一个事件。器需要处理的一个事件。2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型u 例如,外部中断或试图实行未定义的指令都会引例如,外部中断或试图实行未定义的指令都会引起异常的发生。起异常的发生。处理异常之前,处理器必须保存当前的状态,以便在异常处理处理异常之前,处理器必须保存当前的状态,以便在异常处理完成后,能够使原来的出现重新执行。完成后,能够使原来的出现重新执行。第26页,共167页,编辑于2022年,星期日6.异常异常 ARM支持支持7种类型的异常。对于每种异常,处理器将强制从异种类型的异常。对于每种异常,处理器将强制从异常对应的某个固定地址开始执行程序。这些固定地址称为常对应的某个固定地址开始执行程序。这些固定地址称为异常异常向量向量。2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型 多个异常可能会同时发生,因此在多个异常可能会同时发生,因此在ARM中就通过给各个中就通过给各个异常赋予不同的优先级来确定处理异常的顺序。异常赋予不同的优先级来确定处理异常的顺序。第27页,共167页,编辑于2022年,星期日6.异常异常 优先级按照从高到低的顺序排列如下:优先级按照从高到低的顺序排列如下:2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型u复位复位u数据异常中止数据异常中止uFIQuIRQu预取指异常中止预取指异常中止uSWI、未定义指令(这两种异常的指令编码互斥,不、未定义指令(这两种异常的指令编码互斥,不可能同时发生)可能同时发生)第28页,共167页,编辑于2022年,星期日异常类型异常类型具体含义具体含义复位复位当处理器的复位电平有效时产生复位异常,程序跳转到复位异常处当处理器的复位电平有效时产生复位异常,程序跳转到复位异常处理程序处执行。理程序处执行。未定义指令未定义指令当当ARMARM处理器或协处理器遇到不能处理的指令时,产生未定义指令处理器或协处理器遇到不能处理的指令时,产生未定义指令异常。可使用该异常机制进行软件仿真。异常。可使用该异常机制进行软件仿真。软件中断软件中断该异常由执行该异常由执行SWISWI指令产生,可用于用户模式下的程序调用特权操指令产生,可用于用户模式下的程序调用特权操作指令。可使用该异常机制实现系统功能调用。作指令。可使用该异常机制实现系统功能调用。指令预取中止指令预取中止若处理器预取指令的地址不存在,或该地址不允许当前指令访问,若处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号,但当预取的指令被执行时,才会存储器会向处理器发出中止信号,但当预取的指令被执行时,才会产生指令预取中止异常。产生指令预取中止异常。数据中止数据中止若处理器数据访问指令的地址不存在,或该地址不允许当前指令访若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常。问时,产生数据中止异常。IRQIRQ(外部中(外部中断请求)断请求)当处理器的外部中断请求引脚有效,且当处理器的外部中断请求引脚有效,且CPSRCPSR中的中的I I位为位为0 0时,产生时,产生IRQIRQ异常。系统的外设可通过该异常请求中断服务。异常。系统的外设可通过该异常请求中断服务。FIQFIQ(快速中(快速中断请求)断请求)当处理器的快速中断请求引脚有效且当处理器的快速中断请求引脚有效且CPSRCPSR中的中的F F位为位为0 0时,产生时,产生FIQFIQ异常。异常。第29页,共167页,编辑于2022年,星期日6.异常异常 进入异常的操作:进入异常的操作:进入异常的操作:进入异常的操作:2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型u在相应的链接寄存器在相应的链接寄存器LR(r14)中保存下一条指令的中保存下一条指令的地址地址u将将CPSR复制到相应的复制到相应的SPSR中中u强制使强制使CPSR模式位置成对应异常类型的值模式位置成对应异常类型的值u强制使程序计数器指向相应异常向量,取下一条指令强制使程序计数器指向相应异常向量,取下一条指令第30页,共167页,编辑于2022年,星期日例子:用户模式到 FIQ模式*spsr_fiqcpsrr7r4r5r2r1r0r3r6r15(pc)r14_fiqr13_fiqr12_fiqr10_fiqr11_fiqr9_fiqr8_fiqr14(lr)r13(sp)r12r10r11r9r8用户模式用户模式 CPSR CPSR 复制到复制到 FIQ FIQ 模式模式 SPSRSPSRcpsrr15(pc)r14(lr)r13(sp)r12r10r11r9r8r7r4r5r2r1r0r3r6r14_fiqr13_fiqr12_fiqr10_fiqr11_fiqr9_fiqr8_fiq返回一个从用户模式计算的地址,返回一个从用户模式计算的地址,PCPC值值存储在存储在FIQFIQ模式模式Registers in useRegisters in use异常异常用户模式用户模式FIQ FIQ 模式模式spsr_fiq第31页,共167页,编辑于2022年,星期日7.存储器和存储器映射存储器和存储器映射I/O 与与单单片机等片机等简单简单系系统统相比,相比,现现在一些复在一些复杂杂的嵌入式系的嵌入式系统统中,存中,存储储系系统统的功能更加的功能更加强强大,可能包含有多种大,可能包含有多种现现代代计计算机存算机存储储技技术术,如,如Cache和和Write Buffer、MMU、存、存储储保保护护机制、快速上下文切机制、快速上下文切换换等。等。基于基于ARM内核的嵌入式系内核的嵌入式系统统可能包含可能包含Flash、ROM、SRAM、SDRAM等多种等多种类类型的存型的存储储器,不同器,不同类类型的存型的存储储器存取速度和数据器存取速度和数据宽宽度等都不尽相同。度等都不尽相同。2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型第32页,共167页,编辑于2022年,星期日7.存储器和存储器映射存储器和存储器映射I/O 存存储储系系统统的的设计设计可以是多种多可以是多种多样样的,但是的,但是应应当遵循一定的当遵循一定的规则规则,否否则则可能会引起一些不必要的麻可能会引起一些不必要的麻烦烦。2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型例如例如:u 可能使存储系统的实现比较困难;可能使存储系统的实现比较困难;u 可能导致向其它可能导致向其它ARM处理器的移植出现麻烦;处理器的移植出现麻烦;u 可能引起一些标准软件(如编译器)的不适应。可能引起一些标准软件(如编译器)的不适应。基于系基于系统设计统设计和和编编程的考程的考虑虑,关于,关于ARM存存储储系系统统一般只需涉及一般只需涉及地址空地址空间间、存存储储器格式器格式、存存储储器器访问对访问对准准以及以及存存储储器映射器映射I/O等等方面的方面的问题问题。第33页,共167页,编辑于2022年,星期日7.存储器和存储器映射存储器和存储器映射I/O-地址空间地址空间 ARM体系体系结结构使用构使用232个个8位字位字节节的的单单一、一、线线性地址空性地址空间间,字,字节节地地址的范址的范围为围为02321;也可以将地址空也可以将地址空间间看作由看作由230个个32位的字位的字组组成,字地址可被成,字地址可被4整整除,且按字除,且按字对对准,例如以准,例如以A为为字字对对准地址的字地址由准地址的字地址由A、A1、A2、A3共共4个字个字节组节组成;成;在在ARM体系体系结结构构v4以上版本中,也可以将地址空以上版本中,也可以将地址空间间看作由看作由231个个16位的半字位的半字组组成,半字地址可被成,半字地址可被2整除,且按半字整除,且按半字对对准,例如准,例如以以A为为字字对对准地址的半字地址由准地址的半字地址由A、A1共共2个字个字节组节组成。成。2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型第34页,共167页,编辑于2022年,星期日7.存储器和存储器映射存储器和存储器映射I/O-存储器格式存储器格式 存存储储器格式是指字、半字、字器格式是指字、半字、字节节在存在存储储器中存放的方式,也器中存放的方式,也反映了存反映了存储储器中字、半字、字器中字、半字、字节节之之间间的映射关系。的映射关系。存存储储器格式包括小端和大端两种格式。器格式包括小端和大端两种格式。2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型第35页,共167页,编辑于2022年,星期日7.存储器和存储器映射存储器和存储器映射I/O-存储器格式存储器格式 2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型大、小端存储格式对程序的影响大、小端存储格式对程序的影响 第36页,共167页,编辑于2022年,星期日7.存储器和存储器映射存储器和存储器映射I/OI/O-存储器访问对准存储器访问对准存储器访问对准存储器访问对准 对对于于非非对对准的取指准的取指,在,在ARM工作状工作状态态下,未下,未对对准的地址写入准的地址写入R15后,后,结结果将不可果将不可预预知或忽略地址位知或忽略地址位1:0;在;在Thumb状状态态下,下,未未对对准的地址写入准的地址写入R15后,后,则则通常忽略地址位通常忽略地址位0。对对于于非非对对准的数据准的数据访问访问,则则体系体系结结构可能定构可能定义义成以下行成以下行为为之一:之一:2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型u 不可预知;不可预知;u 忽略使访问非对准的低地址位;忽略使访问非对准的低地址位;u 忽略使访问非对准的低地址位,但使用这些位控制加载数据的忽略使访问非对准的低地址位,但使用这些位控制加载数据的循环移位(适用于循环移位(适用于LDR和和SWP指令)。指令)。第37页,共167页,编辑于2022年,星期日7.存储器和存储器映射存储器和存储器映射I/OI/O-存储器映射存储器映射存储器映射存储器映射I/OI/O ARM系系统实现统实现I/O功能的功能的标标准方法是使用存准方法是使用存储储器映射器映射I/O。这这种方法使用特定的存种方法使用特定的存储储器地址,器地址,对这对这些地址加些地址加载载和存和存储储,即可完,即可完成成I/O操作。操作。通常,通常,对对存存储储器映射器映射I/O地址加地址加载对应输载对应输入,入,对对对对存存储储器映射器映射I/O地址存地址存储对应输储对应输出。出。另外,加另外,加载载和存和存储储也可也可执执行控制功能,替代或附加到正常的行控制功能,替代或附加到正常的I/O操作上。操作上。2.4.1 ARM2.4.1 ARM编程模型编程模型编程模型编程模型第38页,共167页,编辑于2022年,星期日2.4 ARM指令系统指令系统 2.4.1 ARM编程模型编程模型 2.4.2 ARM寻址方式寻址方式 2.4.3 ARM指令集指令集 2.4.4 Thumb指令集指令集第39页,共167页,编辑于2022年,星期日 寻址方式寻址方式是指根据指令给出的地址码寻找真是指根据指令给出的地址码寻找真实操作数地址的方式。实操作数地址的方式。寻址方式的多样化一方面出于编程的需寻址方式的多样化一方面出于编程的需要,另一方面可以增强程序设计的灵活性。要,另一方面可以增强程序设计的灵活性。2.4.2 ARM寻址方式寻址方式2.4 ARM2.4 ARM指令系统指令系统指令系统指令系统 第40页,共167页,编辑于2022年,星期日2.4.2 ARM寻址方式寻址方式2.4 ARM2.4 ARM指令系统指令系统指令系统指令系统 1.1.寄存器寻址寄存器寻址寄存器寻址寄存器寻址 2.立即寻址立即寻址 3.寄存器移位寻址寄存器移位寻址 4.寄存器间接寻址寄存器间接寻址 5.5.基址寻址基址寻址基址寻址基址寻址 6.6.多寄存器寻址多寄存器寻址多寄存器寻址多寄存器寻址 7.7.堆栈寻址堆栈寻址堆栈寻址堆栈寻址 8.块拷贝寻址块拷贝寻址 9.相对寻址相对寻址 第41页,共167页,编辑于2022年,星期日1.寄存器寻址寄存器寻址 指令地址指令地址码给码给出寄存器的出寄存器的编编号,寄存器中的内容号,寄存器中的内容为为操作数。操作数。2.4.2 ARM2.4.2 ARM寻址方式寻址方式寻址方式寻址方式例如例如:ADD R0,R1,R2;R0R1+R2 写操作数的顺序为:第一个寄存器写操作数的顺序为:第一个寄存器R0为为结果寄存器结果寄存器,第二个寄,第二个寄存器存器R1为为第一操作数寄存器第一操作数寄存器,第三个寄存器,第三个寄存器R2为为第二操第二操作数寄存器作数寄存器。注意注意第42页,共167页,编辑于2022年,星期日2.立即寻址立即寻址 指令操作指令操作码码后的地址后的地址码码是立即数,即操作数本身。是立即数,即操作数本身。2.4.2 ARM2.4.2 ARM寻址方式寻址方式寻址方式寻址方式例如例如:ADD R3,R3,#1;R3R3+1 AND R8,R7,#&FF;R8R77:0 立即数的表示以立即数的表示以“#”为前缀,十六进制的立即数在为前缀,十六进制的立即数在“#”后后面加面加“&”符号。符号。注意注意第43页,共167页,编辑于2022年,星期日3.寄存器移位寻址寄存器移位寻址 寄存器移位寄存器移位寻寻址是址是ARM指令集特有的指令集特有的寻寻址方式。第址方式。第2个操作数个操作数与第与第1个操作数个操作数结结合之前,合之前,选择进选择进行移位操作。行移位操作。2.4.2 ARM2.4.2 ARM寻址方式寻址方式寻址方式寻址方式例如例如:ADD R3,R2,R1,LSL#3;R3R2+8R1 第44页,共167页,编辑于2022年,星期日3.寄存器移位寻址寄存器移位寻址 可采取的移位操作包括:可采取的移位操作包括:2.4.2 ARM2.4.2 ARM寻址方式寻址方式寻址方式寻址方式l LSL:逻辑左移(:逻辑左移(Logical Shift Left)。寄存器中字的低端空出的位)。寄存器中字的低端空出的位补补0。l LSR:逻辑右移(:逻辑右移(Logical Shift Right)。寄存器中字的高端空出的位补)。寄存器中字的高端空出的位补0。l ASR:算术右移(:算术右移(Arithmetic Shift Right)。算术移位的对象是带符号)。算术移位的对象是带符号数。在移位过程中必须保持操作数的符号不变。若源操作数为正数,则字的高数。在移位过程中必须保持操作数的符号不变。若源操作数为正数,则字的高端空出的位补端空出的位补0;若源操作数为负数,则字的高端空出的位补;若源操作数为负数,则字的高端空出的位补1。l ROR:循环右移(:循环右移(ROtate Right)。从字的最低端移出的位填入字的高)。从字的最低端移出的位填入字的高端空出的位。端空出的位。l RRX:扩展为:扩展为1的循环右移(的循环右移(Rotate Right eXtended by 1 place)。操)。操作数右移作数右移1位,空位(位位,空位(位31)用原)用原C标志填充。标志填充。第45页,共167页,编辑于2022年,星期日3.寄存器移位寻址寄存器移位寻址 2.4.2 ARM2.4.2 ARM寻址方式寻址方式寻址方式寻址方式移移位位操操作作过过程程第46页,共167页,编辑于2022年,星期日4.寄存器间接寻址寄存器间接寻址 指令地址码给出寄存器的编号,寄存器为地址指针,存放指令地址码给出寄存器的编号,寄存器为地址指针,存放操作数的有效地址。操作数的有效地址。2.4.2 ARM2.4.2 ARM寻址方式寻址方式寻址方式寻址方式例如例如:LDR R0,R1;R0R1STRR0,R1;R0R1 第47页,共167页,编辑于2022年,星期日5.基址寻址基址寻址 基址寻址基址寻址是将基址寄存器的内容与指令中给出的位移量相加,是将基址寄存器的内容与指令中给出的位移量相加,形成操作数有效地址。形成操作数有效地址。基址寻址用于访问基址附近的存储单元。基址寻址用于访问基址附近的存储单元。包括包括基址加偏移量寻址基址加偏移量寻址和和基址加索引寻址基址加索引寻址,可以将寄存器间接寻,可以将寄存器间接寻址看作是位移量为址看作是位移量为0的基址加偏移量寻址。的基址加偏移量寻址。2.4.2 ARM2.4.2 ARM寻址方式寻址方式寻址方式寻址方式第48页,共167页,编辑于2022年,星期日5.基址寻址基址寻址-基址加偏移量寻址基址加偏移量寻址基址加偏移量寻址基址加偏移量寻址 基址加偏移量寻址基址加偏移量寻址中的偏移量最大为中的偏移量最大为4KB,可分,可分为为前索引寻址前索引寻址和和后索引寻址后索引寻址。2.4.2 ARM2.4.2 ARM寻址方式寻址方式寻址方式寻址方式前索引寻址举例:前索引寻址举例:LDRR0,R1,#4;R0R1+4 第49页,共167页,编辑于2022年,星期日5.基址寻址基址寻址-基址加偏移量寻址基址加偏移量寻址2.4.2 ARM2.4.2 ARM寻址方式寻址方式寻址方式寻址方式例:例:LDRR0,R1,#4!;R0R1;R1R1+4 后索引寻址举例:后索引寻址举例:LDR R0,R1,#4;R0R1;R1R1+4这种改变基址寄存器指向下一个传送的地址对数据块传送很有这种改变基址寄存器指向下一个传送的地址对数据块传送很有用,还可以采用带自动索引的前索引寻址实现。用,还可以采用带自动索引的前索引寻址实现。注意注意第50页,共167页,编辑于2022年,星期日5.基址寻址基址寻址-基址加索引寻址基址加索引寻址 基址加索引寻址基址加索引寻址是指令指定一个基址寄存器,再是指令指定一个基址寄存器,再指定另一个寄存器(称为索引),其值作为位移加指定另一个寄存器(称为索引),其值作为位移加到基址上形成存储器地址。到基址上形成存储器地址。2.4.2 ARM2.4.2 ARM寻址方式寻址方式寻址方式寻址方式例:例:LDR R0,R1,R2;R0R1+R2 第51页,共167页,编辑于2022年,星期日6.多寄存器寻址多寄存器寻址 多寄存器寻址多寄存器寻址是指一次可以传动多个寄存器的值,允许一是指一次可以传动多个寄存器的值,允许一条指令可以传送条指令可以传送16个个寄存器的任何子集,包括寄存器的任何子集,包括16个寄存器。个寄存器。2.4.2 ARM2.4.2 ARM寻址方式寻址方式寻址方式寻址方式例:例:LDMIAR1,R0,R2,R5;R0R1;R2R1+4;R5R1+8由于传送的数据总是由于传送的数据总是32位的字,因此基址寄存器位的字,因此基址寄存器R1应当字应当字对准。对准。注意注意第52页,共167页,编辑于2022年,星期日7.堆栈寻址堆栈寻址 堆堆栈栈是一种按照特定是一种按照特定顺顺序序进进行存取的存行存取的存储储区。区。这这种特定的种特定的顺顺序序是指是指“后后进进先出先出”(LIFO)或)或“先先进进后出后出”(FILO)。)。使用堆使用堆栈时栈时需要使用一个需要使用一个专门专门的寄存器作的寄存器作为为堆堆栈栈指指针针,栈栈指指针针所指所指定的存定的存储单储单元就是堆元就是堆栈栈的的栈顶栈顶。如果堆如果堆栈栈指指针针指向最后指向最后压压入堆入堆栈栈的有效数据的有效数据项项,就称,就称为为满满堆堆栈栈(full stack);如果堆);如果堆栈栈指指针针指向下一个数据指向下一个数据项项放入的空位置,就称放入的空位置,就称为为空堆空堆栈栈(empty stack)。)。2.4.2 ARM2.4.2 ARM寻址方式寻址方式寻址方式寻址方式第53页,共167页,编辑于2022年,星期日7.堆栈寻址堆栈寻址 另外,根据堆另外,根据堆栈栈存存储储区地址增区地址增长长的方向,可将堆的方向,可将堆栈栈分分为为递递增堆增堆栈栈(ascending stack)和)和递递减堆减堆栈栈(descending stack)。)。以上表示以上表示递递增、增、递递减、减、满满、空的堆、空的堆栈栈的各种的各种组组合就合就产产生了生了4种堆种堆栈类栈类型。型。ARM支持所有支持所有这这4种种类类型的堆型的堆栈栈,即,即满递满递增增、空空递递增增、满递满递减减、空空递递减减。ARM指令使用指令使用push向堆向堆栈栈写数据,称写数据,称为为进栈进栈;使用;使用pop从堆从堆栈栈读读数据,称数据,称为为出出栈栈。2.4.2 ARM2.4.2 ARM寻址方式寻址方式寻址方式寻址方式堆栈指针指向最后压入的数据且由低地址向高地址生成堆栈指针指向最后压入的数据且由高地址向低地址生成堆栈指针指向下一个将要放入数据的空位置且由低地址向高地址生成堆栈指针指向下一个将要放入数据的空位置且由高地址向低地址生成第54页,共167页,编辑于2022年,星期日8.块拷贝寻址块拷贝寻址 从从堆堆栈栈的角度的角度来看,多寄存器来看,多寄存器传传送指令是把一送指令是把一块块数据从存数据从存储储器的某一个位置拷器的某一个位置拷贝贝到另一位置。到另一位置。从从块块拷拷贝贝的角度来看,指令的角度来看,指令还还要基于数据存要基于数据存储储在基址寄存器地址在基址寄存器地址之上之上还还是之下,地址在存是之下,地址在存储储第一个第一个值值之前或之后增加或减少。之前或之后增加或减少。这这两种角度的映射均取决于两种角度的映射均取决于执执行行加加载载操作操作还还是是存存储储操作操作。2.4.2 ARM2.4.2 ARM寻址方式寻址方式寻址方式寻址方式第55页,共167页,编辑于2022年,星期日8.块拷贝寻址块拷贝寻址 2.4.2 ARM2.4.2 ARM寻址方式寻址方式寻址方式寻址方式向上生长向下生长满空满空增 加之前STMIBSTMFALDMIBLDMED之后STMIASTMEALDMIALDMFD减 少之前LDMDBLDMEASTMDBSTMFD之后LDMDALDMFASTMDASTMED表表2-4 2-4 多寄存器加载和存储指令映射多寄存器加载和存储指令映射 第56页,共167页,编辑于2022年,星期日8.块拷贝寻址块拷贝寻址 2.4.2 ARM2.4.2 ARM寻址方式寻址方式寻址方式寻址方式例如例如:LDMIAR0!,R2-R9;将数据加载到将数据加载到R2R9STMIAR1,R2-R9;将数据存入存储器将数据存入存储器执行指令后,由于引用自动索引执行指令后,由于引用自动索引“!”,R0的值共增加的值共增加32,而而R1不变。不变。注意注意第57页,共167页,编辑于2022年,星期日8.块拷贝寻址块拷贝寻址 2.4.2 ARM2.4.2 ARM寻址方式寻址方式寻址方式寻址方式多寄存器指令的后缀含义如下:多寄存器指令的后缀含义如下:I:IncrementD:Decrement or Descending stackA:After or Ascending stackB:BeforeF:FullE:Empty例如例如“FD”即表明是满递减堆栈寻址方式(即表明是满递减堆栈寻址方式(full descending stack)。)。第58页,共167页,编辑于2022年,星期日9.相对寻址相对寻址 可以将相对寻址看作是以程序计数器可以将相对寻址看作是以程序计数器PC为基址的一种基址寻为基址的一种基址寻址方式。址方式。指令的地址码作为位移量,与指令的地址码作为位移量,与PC相加得到操作数的有效地址。相加得到操作数的有效地址。位移量指出了操作数与当前指令之间的相对位置。位移量指出了操作数与当前指令之间的相对位置。2.4

    注意事项

    本文(嵌入式系统 第二章 嵌入式处理器下PPT讲稿.ppt)为本站会员(石***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开