欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    ARM体系结构与编程-第一章.ppt

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

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

    ARM体系结构与编程-第一章.ppt

    ARM体系结构与编程,嵌入式教研室授课教师:岳洋 办公电话:86223625,这门课主要讲的内容,ARM Advanced RISC Machine,1、ARM基础知识(第1章),2、ARM汇编(第2、3、4、8章),3、ARM存储系统 MMU(第5章)Memory Management Unit,4、异常中断处理(第9章),前言 了解嵌入式系统概述,1 嵌入式系统简介2 嵌入式系统的定义3 嵌入式系统的特点4 嵌入式系统的组成5 嵌入式系统的应用,课件,4,嵌入式系统组成,嵌入式系统简介,嵌入式系统的历史与现状从1946年电子计算机的诞生,发展到今天,在许多场合要求将微型机嵌入到一个对象体系中,实现智能化控制。为了区别于通用计算机系统,把嵌入到对象体系中,实现智能化控制的计算机,称作嵌入式计算机系统。,嵌入式系统简介,现代计算机技术的两大分支计算机进入了通用计算机与嵌入式计算机两大分支并行发展时代。通用计算机侧重的发展方向:高速、海量的数值计算、总线速度提升,扩大存储容量。嵌入式计算机对体积、功耗、功能、可靠性、专用性有较高要求。,2 嵌入式系统的定义,嵌入式系统的定义,参考IEEE(国际电气和电子工程师协会)的定义:嵌入式系统:“用于控制、监视或者辅助操作机器和设备的装置”,嵌入式系统:以计算机技术为基础、软件硬件可裁剪、面向应用,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。,嵌入式系统的应用,消费电子,嵌入式应用,信息家电,智能玩具,军事电子,通信设备,移动存贮,工控设备,智能仪表,汽车电子,网络设备,工业,军事国防,电子商务,网络,现实生活中的嵌入式系统实例,家庭环境,现实生活中的嵌入式系统实例,办公室环境,现实生活中的嵌入式系统实例,工业自动化领域,现实生活中的嵌入式系统实例,国防领域,现实生活中的嵌入式系统实例,交通领域,现实生活中的嵌入式系统实例,航空领域,现实生活中的嵌入式系统实例,医疗系统,第1章 ARM概述及其基本编程模型,第1章 目录,8.异常9.复位10.存储器及存储器映射I/O11.寻址方式简介12.ARM7指令简介13.协处理器接口14.调试接口简介,1.简介2.ARM7三级流水线3.处理器状态4.处理器模式5.内部寄存器6.程序状态寄存器7.体系结构直接支持的数据类型,1.1 ARM简介,ARM公司简介,ARM是Advanced RISC Machines的缩写,它是英国一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC处理器。RISC特点:精简指令集执行周期更短;硬件结构简单,配备大量寄存器,配合运算和操作;arm9采用哈佛结构(数据总线和指令总线分离),使得指令操作和数据操作可同时进行,速度更快。公司的特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供服务。,1.1 ARM简介,ARM公司简介,将技术授权给芯片厂商,形成各具特色的ARM芯片,1.1 ARM简介,ARM有三种含义:一个公司的名称;一类处理器的通称;一种技术的名称。ARM不是完整的单片机,它只是一个内核。所谓以ARM为核的单片机,就是把ARM作为中央处理器(核),根据需要设计出:I/O口、功能模块、外围总线接口,用总线把几部分和ARM核连接在一起,组成一个单片机。这个单片机由ARM核控制。,1.1 ARM简介,在学习单片机时,结构相对简单,会较快的涉及定时器/计数器、串口、I/O引脚的使用。学习ARM核时,同样也是对寄存器的设置(汇编指令、c语言)来控制ARM核、I/O管脚、功能模块,实现功能。ARM与单片机学习过程有许多相识的地方。很多外围电路适用ARM也适用于单片机。学会ARM核以后,就大致掌握了所有以ARM为核的单片机。无论这个单片机结构多么复杂,功能多么强大,也无论它来自哪个厂家。,1.1 ARM简介,ARM体系结构,ARM处理器为RISC(reduce instruction set computing)芯片,其简单的结构使ARM内核非常小,这使得器件的功耗也非常低。它具有经典而先进的RISC特点:,数据处理操作绝大多数只针对寄存器(D触发器结构,在CPU内部,离cpu最近,速度最快)的内容,而不直接对存储器(内存和外存,在CPU外部,存储器能够保存的数据量大)进行操作;通过load/store指令在寄存器和存储器之间传递数据。RISC处理器,速度更快,较x86处理器快60%,硬件结构简单。,简单的寻址模式;,统一和固定长度的指令域(32位)简化了指令的译码。,具有大量的寄存器(37个),ARM体系还采用一些特别技术,见教材第2页,1、在同一条数据处理指令中包含算术逻辑处理和移位处理。如:ADD R0,R1,R1,LSL#3;R0=R1+R1*8,2、使用地址自动增加(减少)来优化程序中的循环。如:LDR R0,R1#4;先R0R1,然后自动使R1+4,3、Load/Store指令可以批量传输数据,效率很高。一条指令就可以完成入栈或出栈操作。如:STMFD R13,R4-R6;将R4-R6的内容放入以R13为栈基址的连续3个单元中,4、所有指令都可以根据前面指令的执行结果,决定是否执行。如:CMP R2,R3;R2与R3相等跳到loop,不等则执行MOV R1,R0语句 BEQ loop MOV R1,R0,1.1 ARM简介,各ARM体系结构版本(这里主要指指令集),目前ARM公司定义了7种主要的ARM指令集体系结构版本,以版本号V1V7表示。,拥有相同指令集版本的ARM芯片,虽然出自不同的生产厂商,但它们使用的指令和应用软件是相互兼容的。,1.1 ARM简介,各ARM体系结构版本V1,该版本的ARM体系结构,只有26位的寻址空间,如今现在已经废弃不再使用,没有商业化,其特点为:基本的数据处理指令(加,减,与,或,非,比较)(这个版本不包括乘法);字节、字和半字加载/存储指令;具有分支指令,包括在子程序调用中使用的分支和链接指令;在操作系统调用中使用的软件中断指令(SWI)。,1.1 ARM简介,各ARM体系结构版本V2,同样为26位寻址空间,如今现在已经废弃不再使用,它相对V1版本有以下改进:具有乘法和乘加指令;支持协处理器(专门用于进行辅助运算的芯片,其本身除了运算功能外没有其他功能,因此不能独立工作,必须和CPU一起工作(cp15特殊);原子性(不可分割)加载/存储指令SWP和SWPB(见备注)。,1.1 ARM简介,各ARM体系结构版本V3,寻址范围扩展到32位:增加了程序状态保护寄存器SPSR;增加了两种处理器模式(ARM和THUMB);修改了v3以前用于异常返回指令的功能;教材有更详细的介绍,1.1 ARM简介,各ARM体系结构版本V4,目前大多使用的arm核,使用的是V4t,v5te版本,它相对V3版本作了以下的改进:增加了半字加载(LDRH)/存储(STRH)指令;增加了字节(LDRSB/STRSB)和半字的加载和符号扩展指令(LDRSH/STRSH);增加了T变种,具有可以转换到Thumb状态的指令;增加了新的特权处理器模式。,1.1 ARM简介,各ARM体系结构版本V5,在V4版本的基础上,对现在指令的定义进行了必要的修正,对V4版本的体系结构进行了扩展并增加了指令,对数字信号处理(DSP)算法提供增强算法支持,具体如下:改进了ARM/Thumb状态之间的切换效率;允许T变种(支持Thumb指令集)和非T变种一样,使用相同的代码生成技术;增加前导零计数(最高有效位前0的个数)指令CLZ和软件断点指令BKPT;对乘法指令如何设置标志作了严格的定义。,1.1 ARM简介,各ARM体系结构版本V6,ARM体系版本6是2001年发布的。其主要特点是增加了SIMD(Single Instruction Multiple Data,单指令多数据流)(SIMD型的CPU中,指令译码后几个执行部件同时访问内存,一次性获得所有操作数进行运算。)功能扩展。它适合使用电池供电的高性能的便携式设备,便携式设备一方面需要处理器提供高性能,另一方面又需要低功耗。ARM体系版本6首先在2002年春季发布的ARM11处理器中使用。,课件,32,1.1 ARM简介,各ARM体系结构版本V7,V7A-应用程序架构通过多模式和对基于 MMU的虚拟内存系统体系结构的支持,实现传统 ARM 体系结构。V7B-实时架构通过多模式和对基于 MPU(根据所处模式的访问权限保护内存)的受保护内存系统体系结构的支持。V7M-通过寄存器硬件堆栈以及对使用高级语言写入中断处理程序的支持,微控制器架构实现了专为快速中断处理而设计的程序员模型。,1.1 ARM简介,ARM处理器核简介,ARM公司开发了很多系列的ARM处理器核,目前最新的系列已经是ARM11了,而ARM6核以及更早的系列已经很罕见了。目前应用比较广泛的系列是:,ARM7,ARM9,ARM9E,ARM10,SecurCore,Xscale,StrongARM,ARM11E,1.1 ARM简介,ARM处理器核简介ARM7,该系列包括ARM7TDMI和扩充了Jazelle(Java加速器)的ARM7EJ-S等等。高档的单片机,除了ARM720T外,都缺少mmu(memory management unit)不能运行真正的操作系统。ARM7系列广泛应用于多媒体和嵌入式设备,包括Internet设备、网络和调制解调器设备,以及移动电话、PDA等无线设备。,1.1 ARM简介,ARM处理器核简介ARM7特点,低功耗0.9MIPS/MHz(mips指每秒百万条指令)的3级流水线结构32位ARM指令集和16位的Thumb指令集主频最高可达130MIPS,典型芯片,ATMEL公司AT91M40800/55800A;Samsung公司的S3C44B0/4510B,1.2 ARM7,简介,ARM7基于ARM体系结构V4版本,是目前低端的ARM核。具有广泛的应用,其最显著的应用为数字移动电话。,注意:“ARM核”并不是芯片,ARM核与其它部件如RAM、ROM、片内外设、GPIO(General Purpose I/O通用的输入输出端口)组合在一起才能构成现实的芯片。,1.2 ARM7TDMI,简介,ARM7TDMI支持32位寻址范围,使用了冯诺依曼(Von Neumann)结构,指令和数据共用一条32位总线。ARM7TDMI的后缀意义为:,1.1 ARM简介,ARM处理器核简介ARM9,该系列包括ARM9TDMI、ARM920T、ARM940T。除了兼容ARM7系列,而且能够更加灵活的设计。ARM9系列主要应用于无线通信、仪器仪表、安全系统和机顶盒等领域。,1.1MIPS/MHz的哈佛结构(程序代码和数据的存储空间分开,程序和数据存储在不同的存储空间中,有各自的程序总线和数据总线),5级流水线。32位ARM指令集和16位Thumb指令集全性能的MMU(存储器管理单元),支持Windows CE、Linux、uC/os等多种主流嵌入式操作系统物理结构上,支持数据Cache和指令Cache,具有更高的指令和数据处理能力。,1.1 ARM简介,ARM处理器核简介ARM9特点,典型芯片 ATMEL公司AT91RM9200;Samsung公司的S3C2410 S3C2440,1.1 ARM简介,ARM处理器核简介ARM10,该系列包括ARM1020E和ARM1022E处理器核,其核心在于使用向量浮点(VFP)单元VFP10提供高性能的浮点解决方案,从而极大提高了处理器的整型和浮点运算性能。可以用于视频游戏机和高性能打印机等场合。,支持DSP指令集,适合于需要高速数字信号处理的场合。6级流水线,指令执行效率更高。支持32位ARM指令集和16位Thumb指令集。支持64位的高速AMBA总线接口。支持VFP10浮点处理协处理器。全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。支持数据Cache和指令Cache,具有更高的指令和数据处理能力主频最高可达400MIPS。内嵌并行读/写操作部件。,1.1 ARM简介,ARM处理器核简介ARM10特点,ARM公司在2003年4月29日宣布了其下一代ARM架构的CPUARM11(又名Jaguar美洲虎),基于ARM11的微处理器具有更强的性能,尤其是多媒体处理能力。ARM11微处理器采用0.13微米工艺,低端产品运行在350MHz500MHz,高端产品运行在533750MHz,如果将加工工艺减小到0.10微米,那么芯片速度将达1GHz。,1.1 ARM简介,ARM处理器核简介ARM11E,1.1 ARM简介,ARM处理器核简介SecureCore,该系列处理器主要针对新兴的安全市场,以一种全新的安全处理器设计为智能卡和其它安全IC(集成电路)开发提供独特的32位系统设计,并具有特定反伪造方法,从而有助于防止对硬件和软件的盗版。,1.1 ARM简介,ARM处理器核简介Xscale,Intel Xscale微控制器(ARMv5TE)核,操作系统包括linux,Windows CE,Symbian OS,和其他一些RTOS.提供全性能、高性价比、低功耗的解决方案,支持16位Thumb指令并集成数字信号处理(DSP)指令。,Xscale 处理器是Intel目前主要推广的一款ARM微处理器。典型芯片:PXA250/255/270/272,Xscale,苹果iPhone手机,ARM 体系结构更新,第1章 目录,8.异常9.复位10.存储器及存储器映射I/O11.寻址方式简介12.ARM7指令简介13.协处理器接口14.调试接口简介,1.简介2.ARM7三级流水线3.处理器状态4.处理器模式5.内部寄存器6.程序状态寄存器7.体系结构直接支持的数据类型,1.2 ARM7流水线技术,三级流水线,有一种方法可以明显改善硬件资源的使用率和处理器的吞吐量,这就是当前一条指令结束之前就开始后面的指令,就是通常所说的流水线技术。这样可使几个操作同时进行。ARM7的流水线分3级,分别为:取指译码执行,取指,译码,执行,从程序存储器中取出指令送到处理器内核,指令译码(指明处理器的操作),执行这些操作,取指,译码,执行,取指,译码,执行,取指,译码,执行,t,指令,指令1,指令2,指令3,3级流水线功能段划分,PC为某个正在取址指令所在的地址,确切地说是该指令最低字节的地址。,?,PC8,指令2,指令3,PC指针-,取指,译码,执行,PC-4-,PC-8-,高地址,低地址,1.2 ARM7三级流水线技术,虽然ARM9和ARM10为5、6级流水线(流水线级数越多,说明单位时间内执行的指令条数可能就越多),但它们都使用了与ARM7相同的流水线机制(它们完全仿真3级流水线的行为),因此ARM7上的代码也可以在ARM9和ARM10上运行。,第1章 目录,1.简介2.ARM7三级流水线3.处理器状态4.处理器模式5.内部寄存器6.程序状态寄存器7.体系结构直接支持的数据类型,8.异常9.复位10.存储器及存储器映射I/O11.寻址方式简介12.ARM7指令简介13.协处理器接口14.调试接口简介,1.7处理器状态,处理器状态,ARM处理器有两种操作状态:ARM状态:执行32位的ARM指令Thumb状态:16位Thumb指令,第1章 目录,8.异常9.复位10.存储器及存储器映射I/O11.寻址方式简介12.ARM7指令简介13.协处理器接口14.调试接口简介,1.简介2.ARM7三级流水线3.处理器状态4.处理器模式5.内部寄存器6.程序状态寄存器7.体系结构直接支持的数据类型,1.4 处理器模式,简介,ARM体系结构支持7种处理器模式,分别为:用户模式(usr)、快中断模式(fiq)、中断模式(irq)、管理模式(svc)、中止模式(abt)、未定义模式(und)、系统模式(sys)。如下表所示。,1.4 处理器模式,1.4 处理器模式,特权模式,除用户模式外,其它6种模式均为特权模式。特权模式下,可以访问所有系统资源。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式,当用户模式需要进行处理器模式切换时,应用程序可以产生异常处理,如irq(被动),swi指令(主动),在异常处理过程中进行处理模式的切换。,1.4 处理器模式,异常模式,这五种模式称为异常模式。它们除了可以通过程序(修改CPSR)切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,供异常处理使用。,1.4 处理器模式,用户和系统模式,这两种模式使用完全相同的寄存器组。系统模式是特权模式,该模式为操作系统提供可以访问所有资源的权限,并可以通过指令(mrs/msr)对CPSR设置,直接进行模式切换。,第一章 目录,8.异常9.复位10.存储器及存储器映射I/O11.寻址方式简介12.ARM7指令简介13.协处理器接口14.调试接口简介,1.简介2.ARM7三级流水线3.处理器状态4.处理器模式5.内部寄存器6.程序状态寄存器7.体系结构直接支持的数据类型,1.5 内部寄存器,简介,在ARM处理器内部有37个用户可见的通用寄存器。在不同的工作模式和处理器状态下,程序员可以访问的寄存器也不同。,ARM状态各模式下的寄存器,所有的37个寄存器,分成两大类:绿色区:31个通用寄存器,每个32位。黄色区:6个状态寄存器,每个32位,但目前仅使用其中12位。,ARM状态各模式下可以访问的寄存器,一般的通用寄存器,寄存器R0R15为保存数据或地址值的通用寄存器。,一般的通用寄存器,其中R0R7为未分组(未备份)的寄存器,对于任何处理器模式,都使用相同的同一组物理寄存器。,一般的通用寄存器,寄存器R8R14为分组(备份)寄存器。它们所对应的物理寄存器取决于当前的处理器模式。不同模式下寄存器的使用,要使用寄存器后缀加以区分。,一般的通用寄存器,寄存器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以不必执行保存和恢复(R8-R12)的指令,从而加速FIQ的处理速度。,一般的通用寄存器,寄存器R13、R14分别有6个分组的物理寄存器。1个用于用户和系统模式,其余5个分别用于5种异常模式。不同模式下寄存器的使用,要使用寄存器后缀加以区分。,堆栈指针寄存器R13(SP),寄存器R13常作为堆栈指针(SP Stack Pointer)。在ARM指令集当中,使用R13作为栈指针,只是习惯的用法。但是在Thumb指令集中存在指令强制地使用R13作为堆栈指针。,1.5 内部寄存器,R13寄存器,每一种异常模式拥有自己的R13 _。应先初始化好各模式的R13_,以便异常发生时,供各模式使用。其中为下面几种模式之一:svc、abt、und、irq、fiq,链接寄存器R14(LR),R14为链接寄存器(LR Link Register),有两个功能:每一种模式自己的R14中,存放当前子程序返回地址;当发生异常中断时,该模式的R14存放异常中断的返回地址。,1.5 内部寄存器,R14寄存器与子程序调用,MOV PC,R14,R14-地址A,1.程序A执行到BL Lable语句时,将调用程序B;,操作流程,2.程序跳转至标号Lable,执行程序B。同时硬件自动将“BL Lable”指令的下一条指令所在地址存入R14(即LR);,3.程序B执行最后,将R14寄存器的内容放入PC,返回程序A;,1.5 内部寄存器,R14寄存器引申,在出现子程序的嵌套或中断的嵌套时,R14保存的是最后一次调用的返回地址。,1.5 内部寄存器,R14寄存器注意要点,a,return,返回用户模式地址,1.执行用户模式下的程序;,2.发生IRQ中断,硬件将返回地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;,3.IRQ服务程序A执行完毕,将返回之前被中断的程序;,未被使用,1.5 内部寄存器,R14寄存器注意要点,a,返回用户模式地址,1.执行用户模式下的程序;,2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;,3.IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;,未被使用,a,return,返回到第一次IRQ,4.如果在第一次IRQ处理程序中,再次发生第二次IRQ中断(或调用子程序);,5.硬件将返回第一次irq的地址保存在R14_irq寄存器中,原来保存的返回用户模式的地址将被覆盖;,被破坏,6.这样,在程序B返回到程序A,程序A将不能正确返回到用户模式,return,return,解决办法:在允许第二次irq中断(子程序调用)之前,将R14_irq保存到某个寄存器或堆栈(如R1,保存返回用户模式的地址),然后再开中断。在程序A返回时,使用mov pc,r1,程序计数器R15(PC),寄存器R15为程序计数器(PC Program Conter),正常执行时,它的值为正在取指指令的地址。它可作为通用寄存器使用,但对于它的使用有许多限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的。所以建议不要把PC、LR、SP 用作一般的通用寄存器。,1.5 内部寄存器,写R15,正常操作时,写入R15(PC)的值被当作一个指令地址,程序从这个地址处继续执行(相当于执行一次无条件跳转)。LDR PC,=START;跳转到START地址标号的指令处MOV PC,LR;跳转到LR指向的位置,课件,78,ARM中有两种跳转方式:使用跳转指令;直接向当向PC中写入一个地址值时,程序将跳转到该地址执行,(马上进入预取,译码,执行)。MOV PC,PC;直接取后面指令2、译码、执行。抛弃后面指令1的译码和执行。如果是一条普通指令,就会顺序执指令1。XXX XX,XX;指令1YY YY,Y;指令2类似的指令还有ADD PC,PC,#0,1.5 内部寄存器,读R15的限制,需要注意,当使用STR或STM(批量存储)指令保存R15时,会有一个例外,这些指令可能将当前指令地址加8或加12保存(将来可能还有其它数字)。偏移量是8还是12取决于具体的ARM芯片,但是对于一个确定的芯片,这个值是一个常量。所以最好避免使用STR和STM指令来保存R15,如果很难做到,那么应当在程序中计算出该芯片的偏移量。,SUBR1,PC,#4;R1下面STR指令的地址STRPC,R0;将STR指令(当前指令)地址+偏移量(8;或12)放入R0指向的地址单元,LDRR0,R0;把STR指令地址+偏移量的值放入R0SUBR0,R0,R1;计算偏移量R0=R0-R1XXX XX,XXX,1.5 内部寄存器,读R15的限制,计算具体芯片偏移量程序代码:结合教材p14页,在一般情况下:R15(PC)的值是处理器正在取指指令的地址,即当前正在执行指令的地址加上8。此处可能不同。,1.5 内部寄存器,写R15的限制,由于ARM指令以字为边界,因此写入R15的值最低两位通常为0b00。具体的规则取决于内核结构的版本:在ARM结构V3版及以下版本中,写入R15的值的最低两位被忽略,跳转地址由指令的实际目标地址(写入R15的值)和0 xFFFFFFFC相与得到;在ARM结构V4版及以上版本中,写入R15的值的最低两位为0,如果不是,结果将不可预测,发生指令预取中止中断。,课件,82,0 xffff0008,地址,0 xffff0004,0 xffff0000,0 xffff000c,0 xffff0010,1、所列的地址是ARM指令地址、字地址、半字地址、字节地址。,0 xffff0000,0 xffff0002,0 xffff0004,0 xffff0006,0 xffff0008,地址,1、所列的地址是半字地址、字节地址。,2、地址都是4的倍数(用二进制表示最后两位都是0),字对齐:四字节对齐(为4的倍数,如0bXXXXX00与 0bXXXXX00 是字对齐)半字对齐:两字节对齐(为2的倍数,如0bXXXXX0与0bXXXXX0是半字对齐)其中X为1或0,2、地址都是2的倍数(用二进制表示最后1位是0),3、写入PC的值是指令的地址、应该是字对齐。,字对齐,半字对齐,课件,83,不同指令版本的对齐处理,在 ARMv4 和 ARMv7 中,ARM 体系结构所支持的数据对齐行为有明显不同。ARMv7 支持未对齐数据访问。可以使用 CP15 寄存器 c1 中的A位控制加载和存储指令的对齐要求。(174页 表5.12),第3章 目录,8.异常9.复位10.存储器及存储器映射I/O11.寻址方式简介12.ARM7指令简介13.协处理器接口14.调试接口简介,1.简介2.ARM7三级流水线3.处理器状态4.处理器模式5.内部寄存器6.程序状态寄存器7.体系结构直接支持的数据类型,程序状态寄存器CPSR,CPSR(Current Program Status Register)当前程序状态寄存器 SPSR(Saved Program Status Register)程序状态保存寄存器 每种异常都有自己的SPSR(由于用户模式和系统模式不是异常模式,所以它们没有SPSR),当异常发生时SPSR保存CPSR的当前值,这样异常退出时可通过SPSR恢复CPSR。,1.6 程序状态寄存器,简介,ARM内核包含1个CPSR和5个供异常处理程序使用的SPSR。CPSR反映了当前处理器的状态,其中,只是用了12位包含:4个条件代码标志(符号(N)、零(Z)、进位(C)和溢出(V));2个中断禁止位(F/I),分别控制一种类型的中断;5个对当前处理器模式进行编码的位M4:0;1个用于指示当前执行指令(ARM还是Thumb)的T位。,1.6 程序状态寄存器,简介,条件代码标志,保留,控制位,溢出标志,进位或借位扩展,零,符号标志位,IRQ禁止,FIQ禁止,状态位,模式位,N,Z,C,V,I,T,F,CPSR寄存器的格式,1.6 程序状态寄存器,条件代码标志,各标志位的含义如下:N(Negative)正、负标志,运算结果的最高位bit31反映在该标志位。结果为负数时N=1,结果为正数或零时N=0;Z(Zero)零标志,指令执行结果为0时,Z=1(通常表示比较结果“相等”),否则Z=0;C(Carry)进、借位标志,当进行加法运算并且最高位产生进位时C=1,否则C=0。当进行减法运算并且最高位产生借位时C=0,否则C=1。对于结合移位操作的非加法/减法指令(指单纯的移位操作),C为从最高位最后移出的值,其它指令C通常不变;V(oVerflow)当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不变。,1.6 程序状态寄存器,ARM指令集条件码,C代码:If(a b)a+;Elseb+;,对应的汇编代码:CMPR0,R1;R0与R1比较(减法)ADDHIR0,R0,#1;若R0R1,则R0=R0+1ADDLSR1,R1,#1;若R0R1,则R1=R1+1,示例:比较两个值大小,并进行相应自加1处理,HI Higher(C=1且Z=0)LS Lower or Same(C=0或Z=1),1.6 程序状态寄存器,控制位,中断禁止位包括I和F位:当I位置位时,IRQ中断响应被禁止;当F位置位时,FIQ中断响应被禁止。V4以及更高版本的T系列 T位反映了正在操作的状态:当T位清零时,处理器正在ARM状态下运行;当T位置位时,处理器正在Thumb状态下运行 V5以及更高的版本非T系列,T控制位含义如下:当T位清零时,表示执行ARM指令;译码阶段发现,T位置位时,表示强制下一条执行的指令产生未定义指令中断。模式位包括M4、M3、M2、M1和M0,在特权模式下(除用户模式),可以设置CPSR中的这些位进行模式切换。,1.6 程序状态寄存器,简介,每个异常模式还带有一个程序状态保存寄存器(SPSR),它用于保存在异常事件发生之前的CPSR。对CPSR和SPSR可以通过特殊指令(MSR)进行写入。注意:如果通过程序修改CPSR寄存器中的模式位bit4:0进入异常模式,那么硬件将不会把CPSR保存至SPSR中,而通过异常发生进入时硬件会自动将CPSR放入SPSR。,1.6 程序状态寄存器,CPSR中的其他位(保留位),CPSR中的保留位被保留,将来可能使用。为了提高程序的可移植性,不要修改这些保留位。另外,请确保程序的运行不受保留位的值影响,因为将来的处理器可能会将这些位设置为1或者0。,第一章 目录,8.异常9.复位10.存储器及存储器映射I/O11.寻址方式简介12.ARM7指令简介13.协处理器接口14.调试接口简介,1.简介2.ARM7三级流水线3.处理器状态4.处理器模式5.内部寄存器6.程序状态寄存器7.体系结构直接支持的数据类型,1.7 ARM体系中存储系统,ARM地址空间的大小为4GB,ARM处理器支持下列数据类型:字节(Byte)8位半字(Half-Word)16位=2个字节字(Word)32位=4个字节,一条ARM指令是(32位、4个字节、1个字),ARM体系结构的存储器格式(1),大端格式(Big Endian)字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。小端格式(Little Endian)字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中。ARM缺省设置是小端格式(设置cp15中的c1 bit 7可选择),1.7 体系结构直接支持的数据类型,ARM体系结构的存储器格式(2),(8H)=0 x0B0A0908(4H)=0 x07060504(0H)=0 x03020100,Big Endian,Little Endian,0H,1H,2H,3H,0H,1H,2H,3H,字数据的高字节存储在低地址中,字数据的低字节存储在高地址中。,字数据的高字节存储在高地址中,字数据的低字节存储在低地址中。,0,31,0,31,低地址,高地址,低地址,高地址,(8H)=0 x0B0A0908(4H)=0 x07060504(0H)=0 x03020100,1.10 存储器及存储器映射I/O,存储器格式,地址空间的规则:位于地址A的字包含的字节位于地址A,A+1,A+2和A+3;位于地址A的半字包含的字节位于地址A和A+1;位于地址A+2的半字包含的字节位于地址A+2和A+3;位于地址A的字包含的半字位于地址A和A+2;,ARM体系结构的存储器格式(3),r0=0 x11223344,STR r0,r1,LDRB r2,r1,r1=0 x100 为地址,Memory,3 2 1 0,0 1 2 3,Byte Lane,31,24,23,16,15,8,7,0,11,22,33,44,31,24,23,16,15,8,7,0,44,33,22,11,31,24,23,16,15,8,7,0,11,22,33,44,31,24,23,16,15,8,7,0,00,00,00,44,31,24,23,16,15,8,7,0,00,00,00,11,Little endian,Big endian,r2=0 x44,r2=0 x11,存储字数据,加载字节数据,r1=0 x100,r1=0 x100,ARM结构通常希望所有的存储器访问都合理的对齐。字访问的地址通常是字对齐的(一条ARM指令占一个字,也就要求字对齐),而半字访问使用的地址是半字对齐的。不按这种方式对齐的存储器访问称为非对齐的存储器访问。,1.10 ARM存储器系统,非对齐的存储访问操作,非对齐的指令预取操作,当处理器处于ARM状态期间,如果写入PC的值是非字对齐的(地址的低两位不为0b00,即不能被4整除),那么,要么指令执行结果不可预知,要么将地址值中的最低两位忽略。不同的指令版本,处理不同。系统可以指定,当发生非对齐的指令预取操作时,将该地址值原封不动地送到存储系统。让存储系统自己处理最低两位。,1.10 ARM存储器系统,非对齐的数据访问操作,对于load/store(加载/存储)操作,如果是非对齐的数据访问操作,系统定义了下面3种可能结果:执行的结果不可预知忽略字单元地址的低两位的值,即访问地址为(address and 0 xfffffffc)的字单元;忽略半字单元地址的最低位的值,即访问地址为(address and 0 xfffffffe)的半字单元若系统指定由存储系统实现忽略字单元地址的低两位的值,则该地址值原封不动地送到存储系统(让存储系统自己去处理)。,1.10 ARM存储器系统,在前面指令的执行尚未完成时将指令从存储器中取出。这个动作称为指令的预取。指令的预取并不是实际执行指令。被预取的指令可能得不到运行,可能的原因是:发生异常中断,程序将会跳转到异常中断处理程序处执行,当前预取的指令将被抛弃;前面执行跳转指令时发生跳转,当前预取的指令也将被抛弃;,指令的预取和自修改代码,1.10 ARM存储器系统,自修改代码指的是代码在执行过程中可能修改自身。在存储器中的指令可能在它被预取之后,被执行之前,如果有数据访问指令修改了位于主存中的该指令,这时被预取的指令和主存中对应的指令不同。,对于支持指令预取的ARM系统,自修改代码可能带来潜在的问题:,LDR R0,AddInstr,1.从地址(1)预取指;,2.从地址(2)预取指,“LDR”指令进入译码阶段;,3.从地址(3)预取指,“STR”指令进入译码阶段,同时“LDR”指令进入执行阶段,结果是将地址(4)的指令装入R0;,4.继续预取指,同时“STR”指令进入执行阶段,结果是将“ADD”指令存入地址(3),“SUB”指令被覆盖;,5.虽然“SUB”指令在存储器中被覆盖,但是它仍存在于流水线上,并进入执行阶段;,1.10 ARM存储器系统,但有可能不按照上面所说的执行:因为如果在“SUB”指令预取之后,执行之前,发生中断,那么预取的“SUB”指令将被丢弃,而重新预取,此次预取的是ADD指令。如果ARM处理器或存储器系统允许对预取指令进行备份,并使用这些备份而不是重新预取,那么以后执行这段代码,仍将执行“SUB”指令。,预取可能存在的问题,提示:因为自修改代码有许多问题需要考虑,建议尽量避免使用。,1.10 ARM存储器系统,ARM处理器的高级调试特性使应用程序、操作系统和硬件的开发变得更加容易。,1.14 调试接口简介,典型调试系统,调试主机:一台运行调试软件的计算机。,协议转换器:将调试主机发出的高级命令转换到处理器JTAG接口的低级命令。,调试目标:具体的硬件目标板。,练习,分别列举ARM的处理器模式。ARM核有多少个通用寄存器?R13通常用来存放什么?PC和LR分别使用哪个寄存器?CPSR的哪一位控制是否响应fiq中断?ARM指令采取什么对齐方式?在复位后,ARM处理器处于何种模式、何种状态?试画出ARM7 3级流水线3条指令执行示意图,并用PC指出相应地址。当发生数据访问异常时,ARM处理器在处理异常之前使用哪个寄存器保存CPSR?,

    注意事项

    本文(ARM体系结构与编程-第一章.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开