




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统原理与应用(本科使用、专科参考使用)教学备课材料刘晓秋编湖 南 涉 外 经 济 学 院 2010 2011第一学 期 教 学 周 历课程名称 嵌入式系统 计算机 学部 计科0801、0802、0803、计应09 专业 4、3 年级课程学期总学时其中上课周数周学时学分考核方式采用教材情况教材名称ARM9嵌入式系统设计基础教程讲授实验(践)主编(著)黄智伟、邓月明等出版社名称北京航空航天大学出版社2882286018164考试出版时间20088周次日期上课节次上课地点每周时数分配教学内容备注讲授实验(践)合计时数14七教44系统基础部分:定义、发展、实时系统24七教44系统的体系结构及四个层次分类、特点、存储34七教44嵌入式系统微处理器和类型、ARM系统介绍44七教44从8位机到32位机的发展,与一个实例54七教44ARM9的概念、存储格式、指令、操作模式等64七教44状态、状态、异常、中断74七教44系统复位、寻址方式、堆栈的几种形式84七教44指令格式与几种类型,例题讲解94七教44S3C2410内部结构、技术特点102六、七教224内部存储器与地址分配112六、七教224与存储相关的寄存器地址、计算、功能设置等122六、七教224内容同上132六、七教224中断的一般过程与特征142六、七教224端口实例152六、七教224中断实例162六、七教224NOR FLASH NAND FLASH SDRAM DDR讲解172六、七教224嵌入式的存储口系统、层次、特点182六、七教224全书复习192六、七教224全书复习20考试说明:1、教学内容按每次授课内容填写。 2、考核方式分考试与考查两种。3、任课教师在每学期开课以前根据教学大纲编写教学日历,一式四份,经学部(系、室)主任审阅同意后,一份自存,一份交所在系,一份交所在学部,一份交学生。学部(系、室)主任签名: 任课老师签名: 刘晓秋 1011上学期课表(嵌入式系统原理与应用)使用班级:计科200801、200802、200803计应:09级窗体顶端周课时16,200801共44人,200802共53人,200803共51人,计应09级共44人。期末考试为笔试,学生成绩见成绩单。几个重要掌握的概念一、“嵌入”的意义从语言上理解:一个物体嵌入到另一个物体中;从计算机的角度理解:服务器与客户机的关系;从学习程度上理解:专业知识的综合运用;从个人工作上理解:属于计算机应用的范围;从嵌入与被嵌入上理解:独立功能与系统功能,受控与不受控的关系。二、本课程的研究对象是ARM9、ARM指令、S3C2410、一般系统接口;关于ARM9与S3C2410的功能特点、技术参数等由生产厂家已经确定,在课程教学中没有修改与补充,这些内容主要由学生自己自学完成。窗体底端窗体顶端窗体底端窗体顶端如何上好这门课认真独立完成作业、实验报告、加深理解、掌握基础知识;上课做好笔记,在课堂中将结合实践情况有大量内容的补充,讲课的顺序与教材不完全相同,因此课堂笔记将是一种今后自己的复习资料。(专科)注意基础知识的学习,做好课后复习,特别要将以前学习过的专业课书籍进行相关的复习;软件、硬件是嵌入式系统重要组成部分,缺一不可,不可分割,在学习中只能做到全面发展,决不能将通用计算机中的软件、硬件完全分开来看,掌握嵌入式系统中的软件、硬件必须在一个大的框架内协调工作。(专科)在学习中要有自己的目标,基本硬件结构和基本软件是学习嵌入式系统的关键,从8位处理器开始,向32位处理器冲击,掌握嵌入式系统和基本结构和特点,如果坚持这样,学习嵌入式系统是肯定成功的。学习基本硬件结构,比学习电子电路和模拟电路的难度小,嵌入式系统中要使用大量的集成电路,在今后的实践中,一定要先学好集成电路的技术资料(学会上网自己查找),然后才能设计硬件结构和系统软件。在学习中决不可盲目求新,由系统功能和用户要求确定系统结构,注意设计成本和生产条件,保证设计的嵌入式系统便利地升级、使用和维护。(专科)本学期的重点是熟悉使用、实验体会、掌握提高。掌握并理解以红色字体标出的内容。第一章:嵌入式系统的基础部份1.1 定义定义:以应用为中心、以计算机技术为基础,符合多方面严格要求的专用计算机系统。嵌入式系统是计算机技术、半导体技术和微电子技术等多种先进技术的产物。从嵌入式系统运行的软件是固化在硬件系统中与硬件形成一个不可分割的整体,同一个嵌入式硬件系统一般很难采用改变软件的方法用于其它领域,因此不可能有一个标准化的设计,这是嵌入式系统最大的特点。“嵌入性”、“专用性”与“计算机系统”是嵌入式系统的三个基本要素。1.2 发展1.2.1 基本过程从工业生产和自动控制开始,发展到现在的嵌入式系统(以讲述为主)1.2.2 具体过程(1) 无操作系统阶段单片机是最早应用的嵌入式系统,一般没有操作系统的支持,程序设计采用汇编语言。优点是由单片机构成的这种嵌入式系统使用简便、价格低廉,在工业控制领域中得到了非常广泛的应用,现在的生产实践中还使用得非常很广。(2) 简单操作系统阶段在20世纪80年代后,随着计算机的发展,嵌入式系统的地位在系统应用中的越来越高,由此出现了面向I/O设计的微控制器(或微处理器)在嵌入式系统设计应用。一些简单的嵌入式操作系统开始出现并得到迅速发展。(一般由8位以上CPU为中心)(3) 实时操作系统阶段20世纪90年代后,嵌入式系统在应用中飞速发展。随着硬件实时性要求的提高,嵌入式系统的软件规模也不断扩大,实时多任务操作系统逐渐形成,系统能够运行在各种不同类型的微处理器上,具备了文件和目录管理、设备管理、多任务、网络、图形用户界面等功能,并提供了大量的应用程序接口,从而使应用软件的开发变得更加简单。(32位机)(4) 面向Internet阶段进入21世纪,Internet技术与信息家电、工业控制技术等的结合日益紧密,嵌入式技术与Internet技术的结合正在推动着嵌入式系统的飞速发展。(与互联网结合)1.2.3 嵌入式系统的发展趋势(1) 新的微处理器层出不穷,降低功耗和软硬件成本,多媒体人机交互界面更丰富。(2) 嵌入式操作系统迅速发展,逐步进行各个领域。(3) 嵌入式系统的开发成了一项系统工程。(4) 大量可编程器件和系统开发工具的出现,为嵌入式系统的发展提供支持。如:嵌入式数字信号处理器(digital signal processing DSP)PLD(programmable logic device 可编程逻辑器件)、FPGA(field programmable gate array 现场可编程逻辑器件)等。1.2.4 IP核(Intellectual Property Core,知识产权核)IP核是具有专有知识产权,带有具体功能并且有规范的接口,可在多个系统设计中重复使用的功能模块,是实现嵌入式片上系统的基本构件。1.3 嵌入式系统的组成(重点关心1.3.1、1.3.2)嵌入式系统通常由包含有嵌入式处理器、嵌入式操作系统、应用软件和外围设备接口等组成。嵌入式计算机系统是整个嵌入式系统的核心,可以分为硬件层、中间层、系统软件层和应用软件层。(注意:两个系统的区别)嵌入式应用软件嵌入式中间级嵌入式操作系统嵌入式处理器存储器接口系统软件硬件层嵌入式操作系统对上层连接应用程序,对下层管理硬件系统。抽象层,是软件与硬件的接口,完成上下层的工作中间层对被控对象的控制应用软件BSP使上层软件开发人员无需关心底层硬件的具体情况。嵌入式计算机系统1.3.1 嵌入式计算机系统的硬件层硬件层中包含嵌入式微处理器、存储器、通用设备接口和I/O接口(一般为可看到的构件)。特点是:硬件层通常是一个以嵌入式处理器为中心进行设计,一般包含有电源电路、时钟电路和存储器电路等模块(不可少的构件)。(1) 嵌入式微处理器嵌入式微处理器是嵌入式系统硬件层的核心,将通用CPU、多板卡集成在一个芯片内(以前的单板机和单片机的区别),从而有利于系统设计趋于小型化、高效率和高可靠性。(2) 存储器嵌入式系统的存储器包含Cache、主存储器和辅助存储器,目的是用来存放数据和执行代码。Cache一般集成在嵌入式微处理器内,可分为数据Cache、指令Cache或混合Cache。主存储器用来存放系统和用户的程序及数据,是嵌入式微处理器能直接访问的存储器。辅助存储器通常指硬盘或大容量存储设备,其主要特点有一般容量较大,其读、取速度与主存相比要慢一些。(3) 通用设备接口和I/O接口设备接口完成信息的相互转换与匹配;I/O接口完成信息的输入与输出。(注意:两个接口的区别,在一个系统中这两个接口全部都有,在这要运用学过的微机接口知识。)1.3.2 中间层中间层也称为硬件抽象层或板级支持包,位于硬件层和软件层之间,将系统上层软件与底层硬件分离开来,是上层软件与下层硬件平台之间的接口,需要为操作系统提供操作和控制具体硬件的方法。(1) 嵌入式系统硬件初始化系统初始化过程按照自底向上、从硬件到软件的次序依次可以分为片级初始化、板级初始化和系统级初始化3个主要环节(注意:方向)。片级初始化把嵌入式微处理器从上电时的默认状态设置成系统所要求的工作状态(CPU的初始化)。板级初始化是一个软、硬件操作过程,完成嵌入式微处理器以外的其他硬件设备的初始化(相对独立,不构成系统)。系统级初始化主要进行操作系统的初始化(完整)。(2) 硬件相关的设备驱动程序中间层中包含硬件了与相关设备的驱动程序,但是这些设备驱动程序通常不直接由中间层使用,而是在系统初始化过程中将中间层与操作系统中通用的设备驱动程序关联起来,并在随后的应用中调用这些设备驱动程序,实现对硬件设备的操作。 BSP级:驱动程序操作系统任务:需要操作硬件设备被系统操作的对应硬件设备初始化时上、下关联使用时调用完成设备的输出与输入1.3.3 系统软件层(专科不作要求,本科作一般了解,为今后的发展打好基础)系统软件层通常包含有实时多任务操作系统、文件系统、图形用户接口、网络系统及通用组件模块组成。(1) 嵌入式操作系统(Embedded Operating System,EOS)EOS负责嵌入式系统的软件、硬件的资源分配、任务调度,控制协调。(2) 文件系统嵌入式文件系统与通用操作系统的文件系统不完全相同,主要提供文件存储、检索和更新等功能,一般不提供保护和加密等安全机制。(3) 图形用户接口(GUI)GUI使用户可以通过窗口、菜单、按键等方式来方便地操作计算机或者嵌入式系统。1.3.4 应用软件层应用软件层用来实现对被控对象的控制功能,由所开发的应用程序组成,面向被控对象和用户。为方便用户操作,通常需要提供一个友好的人机界面,我们以前学习的开发平台所编写的程序大多是应用软件层的应用程序,这些相关内容以前有所了解,本课程没有过多的研究。(下面的分类只作了解要求)1.4 嵌入式微处理器体系结构1.4.1 冯诺依曼(Von Neumann)结构与哈佛(Harvard)结构、特点。(要求:掌握重点与正确判断结构)数据、指令同一存储区。由PC指示数据、地址的存储位置,单一总线完成数据与指令的复用功能数据存储区指令存储区数据、指令存储区(冯诺依曼结构)数据、地址总线数据总线地址总线PC指示(哈佛结构)1.4.2 精简指令集计算机(要求:掌握重点与使用条件)(1) 早期的计算机采用复杂指令集计算机(Complex Instruction Set Computer,CISC)体系,采用的都是典型的CISC体系结构。通过增强指令系统的功能,简化了软件,但增加了硬件的复杂程度,而这些复杂指令并不等于有利于缩短程序的执行时间。(2)精简指令集计算机(Reduced Instruction Set Computer,RISC)体系结构是20世纪80年代提出来的。目前,RISC已经成为当前计算机发展不可逆转的趋势。RISC是在CISC的基础上产生并发展起来的,RISC架构也不可以取代CISC架构。事实上,RISC和CISC各有优势。现代的CPU往往采用CISC的外围,内部加入了RISC的特性。在PC机和服务器领域, CISC体系结构是市场的主流;在嵌入式系统领域, RISC结构的微处理器将占有重要的位置。1.4.3 流水线的基本概念(本科掌握这种思想)流水线技术的基本思想是将一个重复的时序分解成若干个子过程,而每一个子过程都可有效地在其专用功能段上与其他子过程同时执行,同一时间,多个子过程同时运行,这是最重要的特点。1.5 信息存储的字节顺序1.5.1 大端和小端存储法大多数计算机使用8位为数据块的最小单位,称为一个字节。存储器的每一个字节都用一个唯一的地址来标识。所有可能地址的集合称为存储器空间。对于软件而言,它将存储器看作一个大的字节数组,称为虚拟存储器(提问:为什么是虚拟存储器)。对于一个多字节类型的数据,在存储器中有两种存放方法。一种是低字节数据存放在内存低地址处,称为小端字节顺序存储法;另一种是高字节数据存放在高地址处,称为大端字节顺序存储法。注意:地址有高地址和低地址;数据有高位和低位;它们如何组合,这就是存储的方法,实际使用时要根据使用的实际情况与要求,灵活掌握。1.5.2 存储的几种常见问题(理解以下4点的概念,在今后的设计中一定要注意)(1) 不同模式下的问题(不同位长的机器交换数据时)(2) 可移植性问题(同位长相互间传递数据时)(3) 通信中的存储顺序问题(不同协议的影响)(4) 数据格式的存储顺序(不同数据格式的影响)1.6 嵌入式微处理器的结构和类型(专科一般了解)应用在嵌入式计算机系统中的微处理器称为嵌入式微处理器,其是嵌入式微处理器是嵌入式硬件系统的核心。嵌入式微处理器的字长宽度可分为4位、8位、16位、32位和64位。一般把16位及以下的称为嵌入式微控制器, 32位及以上的称为嵌入式微处理器。如果微处理器内部仅包含单纯的中央处理器单元,人们一般称其为CPU,常称为单芯片微控制器(用MCU表示),如单片机,89C51等。嵌入式微处理器(用MPU表示)由通用计算机中的CPU发展而来,嵌入式微处理器只保留和嵌入式应用紧密相关的功能硬件,去除其他的冗余功能部分,以最低的功耗和资源实现嵌入式应用的特殊要求。根据用途,可以分为嵌入式微控制器、嵌入式微处理器、嵌入式DSP处理器、嵌入式片上系统、双核或多核处理器等类型。16位 32位单片微控制器嵌入式微控制器嵌入式微处理器中央处理器的发展计算机CPU的发展复杂的嵌入式系统简单的嵌入式系统1.7 ARM系列ARM(Advanced RISC Machine)公司的ARM微处理器体系结构目前被公认为是嵌入式应用领域领先的32位嵌入式RISC微处理器结构。ARM处理器系列中的各种处理器,虽然在实现技术、应用场合和性能方面都不相同,但只要支持相同的ARM体系版本,基于它们的应用软件是兼容的。(没有讲述的不作要求)1.7.1 嵌入式DSP处理器嵌入式DSP处理器(Digital Signal Processor,DSP)是专门用于数字信号处理方面的处理器,芯片内部采用程序和数据分开存储和传输的哈佛结构,具有专门硬件乘法器,采用流水线操作,提供特殊的DSP指令,可用来快速地实现各种数字信号处理算法,使其处理速度比最快的CPU还快1050倍。可编程DSP也为广大用户提供了易于升级的良好途径。为缩短软件开发的周期,DSP软件开发通常使用高级语言进行。1.7.2 嵌入式片上系统嵌入式片上系统(System On Chip,SOC)最大的特点是成功实现了软、硬件无缝结合,直接在处理器片内嵌入操作系统的代码模块,而且具有极高的综合性,在SOC中,绝大部分系统构件都是在系统内部,系统简洁,系统的体积和功耗小,可靠性高。1.7.3 多核处理器将两个或多个微控制器封装在一个芯片内部构成一个多核的处理器。另外,由于多核处理器对外的“界面”是统一的,从兼容性和系统升级成本方面来考虑有诸多的优势。总结:第一章要掌握的几个方面一:定义、发展、趋势;二:嵌入式计算机系统的层次与层次关系;三:几个概念 二个结构(冯、哈结构);二个指令集(复杂与精简);流水与存储。第1章 习题1举例说明嵌入式系统的“嵌入性”、“专用性”、“计算机系统”的基本特征。(P2)2.冯诺依曼结构与哈佛结构各有什么特点?(P12)3大端存储法与小端存储法有什么不同?对存储数据有什么要求与影响?(P16)第二章:从8位机到32位机要点:本章是教材第二章的扩展,重要强调知识的连续性和扩展性,对于学生今后的自学是一个很好的范例。2.1 89C51单片机(嵌入式微控制器)2.1.1 51系列CPU主要功能插脚简介(双列直插,40个引脚)XTAL1 P0XTAL2 P1 P2 51CPU P3EA/ RESETALE Vcc共有四个输入/输出口(即双向口),其中P3口具有第二功能。在嵌入式系统中一般使用其第二功能,而不是作为一个简单的输入/输出口使用。减P3口的第二具体的功能以后细述。2.1.2 51系列CPU存储空间的确定程序存储器:片内4K,片外64K(ROM只读),两者统一编址。数据存储器:片内256个单元,片外64K(均为RAM随机存储器),片内与片外根据不同的指令进行独立编址。I/O口:有4个8位的双向I/O端口,各个端口根据编程可具有特定的功能。 片内 片外0FFF4KB ROMEA=10000FFFF64KBROM10000FFFEA=00000FFFF64KBRAM(I/O)0000FF80 专用寄存器 RAM7F00 通用寄存器2.1.3 CPU时序时钟周期:机器中最基本的时间单位,由外接振荡器决定,用S表示。机器周期:完成一个基本操作所需时间,一般情况下由若干个时钟周期组成。指令周期:执行一条指令所需的时间,一般情况下由约若干个时钟周期组成。三者关系可用下图表示:指令周期时钟周期机器周期共有12个在MCS-51系统中一个机器周期为12个时钟周期,因此保证机器周期的条件下,减少时钟周期的大小,可以改变指令的速度,新型处理器就有这种思路,这些也为选型提供了好的理论基础。2.1.4 一个实例(本科认真复习,专科要掌握分析方法。)以8位长度为例,建立片选与片外地址的概念。CPUA7A6A5A4A3A2A1A074LS139G/ Y3B Y2A Y1 Y0CE/61XXCS/8255CE/27XX地址的确定:27XX:00100000-00111111 20H-3FH 61XX:01000000-01011111 40H-5FH 8255:01100000-01111111 60H-7FH2.1.5 几点概念由8位机到32位机经过了二次进步,有8位机的基础,学习32位机不会有很大困难;8位机与32位机使用精简指令集计算机,有8086汇编语言的基础,学习将不会有很大困难;从结构上讲,8位机的CPU中有程序存储器和数据存储器,32位的微处理器中有指令Cache、数据Cache和存储器因此速度更快;在8086中一个字长是16位,由两个字节组成;在ARM中一个字长是32位,由两个16位的半字组成,所以决定一个字的长度必须考虑总线的宽度;8位机(51系列CPU)中有4组通用寄存器,每组8个,每个字长为8位,共计32个通用寄存器,ARM处理器共有37个通用寄存器,在不同模式下有可见和不可见之分,不是以分组的形式出现,每个通用寄存器字长32位。2.2 ARM9工作状态与存储方式(注意:P27开始,前面的不作要求)2.2.1 概述 先进的ARM920T(常称ARM9)是嵌入式微处理器的内核。下面的介绍均以ARM920T(即ARM9)为例,典型产品如Samsung(三星)公司的S3C2410A(学校实验室的实验箱就是使用这种处理器)处理工作状态 从程序员的角度上看,ARM920T可以工作在下面两种工作状态下的一种: ARM状态:执行32位ARM指令(本学期重点要掌握); Thumb状态:执行16位半字的Thumb指令(一般了解)。注意:32位为一个字,与以前学的有区别,学习要更新。2.2.2 存储空间的格式 ARM920T将存储器空间视为从地址为0开始,单元由字节组成的线性存储集合,一个字占用4个字节的存储空间,ARM可寻址范围有4GB空间(因为地址有32位长),ARM处理器有的带有指令Cache和数据Cache,但不带有片内RAM和片内ROM(与8位机的区别),系统所需的RAM和ROM(包括Flash)都通过总线外接。ARM920T对存储的字,可以按照小端或大端的存储方式对待(前面已讲)。注意:指令长度和数据长度2.3 操作模式 ARM920T支持7种操作模式: (认真看书P29中) 用户模式(user模式); 快速中断模式(fig模式); 中断模式(irq模式); 超级用户模式(svc模式); 异常中断模式(abt模式); 系统模式(sys模式); 未定义模式(und模式)。重点总结:这些“模式”的关系有:外部中断、异常操作、软件控制都可以改变为中断模式。大多数应用程序都是在用户模式下运行。不在用户模式下的称为特权模式;不在用户模式和系统模式下的称为异常模式(P29上的图上的标示)。2.4 寄存器组织重要总结:ARM共有37个32位的寄存器(每个4个字节,共占用148个字节长37*4=148,即94H个单元),其中31个是通用寄存器(16个通用+15个私用=31个),6个是状态寄存器(1当前+5个备用,共计37个)。但在同一时间(或同时模式下),并不是所有的寄存器都可见(不是37个都可见)。2.4.1 ARM状态下的寄存器(分三类问题进行总结)(1) 在ARM状态下,任何时刻都可以看到16个通用寄存器,1或2个状态寄存器。(2) 寄存器R15作为系统CP,寄存器R14作为系统称连接寄存器,寄存器R13作为系统堆栈指针。(3) 寄存器CPSR是当前程序状态寄存器;寄存器SPSR是备用状态寄存器。(4) 下划线后的标出了是什么模式下的私用寄存器,在不同械下系统使用的私有寄存器数是不相同的。注意:不是通用寄存器 系统和用户FIQ超级用户异常中止IRQ未定义1 R0R0R0R0R0R02 R1R1R1R1R1R13 R2R2R2R2R2R24 R3R3R3R3R3R35 R4R4R4R4R4R46 R5R5R5R5R5R57 R6R6R6R6R6R68 R7R7R7R7R7R79 R81 R8_fiqR8R8R8R810 R92 R9_fiqR9R9R9R911 R103 R10_fiqR10R10R10R1012 R114 R11_fiqR11R11R11R1113 R125 R12_fiqR12R12R12R1214 R136 R13_fiq8 R13_svc10 R13_abt12 R13_irq14 R13_und15 R147 R14_fiq9 R14_svc11 R14_abt13 R14_irq15 R14_und16 R15(PC)R15(PC)R15(PC)R15(PC)R15(PC)R15(PC)RAM状态下的状态寄存器1 CPSRCPSRCPSRCPSRCPSRCPSR空1 SPSR_fiq2 SPSR_svc3 SPSR_abt4 SPSR_irq5 SPSR_und图 RAM状态下寄存器集2.4.2 Thumb状态下的寄存器 (1) Thumb状态寄存器是ARM状态寄存器的一个子集。程序员可以直接操作8个通用寄存器R0-R7,同样也可以操作程序计数器R15(PC),堆栈指针寄存器R13(SP),链接R14(link)寄存器(LR),和CPSR与SPSR。系统和用户FIQ超级用户异常中止IRQ未定义R0R0R0R0R0R0R1R1R1R1R1R1R2R2R2R2R2R2R3R3R3R3R3R3R4R4R4R4R4R4R5R5R5R5R5R5R6R6R6R6R6R6R7R7R7R7R7R7SPSP_fiqSP_svcSP_abtSP_undSP_fiqLRLR_fiqLR_svcLR_abtLR_undLR_fiqPCPCPCPCPCPCThumb状态下的状态寄存器CPSRCPSRCPSRCPSRCPSRCPSR空SPSR_fiqSPSR_svcSPSR_abtSPSR_irqSPSR_und图 Thumb状态下的寄存器集2.4.3 ARM和Thumb状态寄存器间的关系(1) Thumb下R0-R7和ARM状态下R0-R7是等同的 ;(2) Thumb状态的CPSR和SPSR跟ARM 状态的CPSR和SPSR是等同的;(3)Thumb 状态下的SP映射在ARM状态下的R13上;(4) Thumb状态下的LR映射在ARM状态下的R14上;(5)Thumb 状态下的程序计数器映射在ARM状态下的程序计数器上(R15)。THUMB 状态对应关系RAM状态R0R0R2R2R3R3R4R4R5R5R6R6R7R7R8R9R10R11R12Stack Pointer(SP)Stack Pointer(R13)Link register(LR)Link register(R14)Program Counter(PC)Program Counter(R15)CPSRCPSRSPSRSPSR图 Thumb状态下和ARM状态下寄存器之间的映射关系 2.4.4 在Thumb状态下访问高地址寄存器(专科不作要求)在Thumb状态下寄存器R8-R15(高地址寄存器)不是标准寄存器集。但是,汇编语言的程序员可以访问它们并用它们作快速暂存。 向R8-R15写入或读出数据,可以采用MOV指令的某个变型,从R0-R7(低地址寄存器)的某个寄存器传送数据到高地址寄存器,或者从高地址寄存器传送到低地址寄存器。还可以采用CMP和ADD指令,将高地址寄存器的值与低地址寄存器的值进行比较或相加。2.5 程序寄存器状态 ARM920T具有一个当前程序状态寄存器(CPSR),另外还有5个保存程序状态寄存器(SPSR)用于异常中断处理,这些寄存器的功能有三种: 保留最近完成的ALU(运算器)操作的信息; 控制中断的使能和禁止; 设置处理器的操作模式。31 30 29 28 27 26 25 24 23 8 7 6 5 4 3 2 1 0NZCVIFTM4M3M2M1M0其中处理器的的信息与意义如下:其中:N、Z、C、V称为条件码标志;D27D8为保留位;IM0称为控制位标志。2.5.1 条件码标志N、Z、C、V均为条件码标志位。它们的内容根据算术或逻辑运算的结果所改变,并且可用来作为一些指令是否运行的检测条件。在ARM状态下,绝大多数的指令都是有条件执行的;在Thumb状态下,仅有分支指令是有条件执行的。2.5.2 控制位(IM0)的几种取值情况M4:0模式可视的THUNM状态寄存器可视的ARM状态寄存器10000用户模式R7R0, LR, SP PC, CPSRR14R0, PC, CPSR10001FIQ 模式R7R0, LR_fiq, SP_fiq PC, CPSR, SPSR_fiqR7R0, R14_fiq.R8_fiq, PC, CPSR, SPSR_fiq10010IRQ 模式R7R0, LR_irq, SP_irq PC, CPSR, SPSR_irqR12R0, R14_irq, R13_irq, PC, CPSR, SPSR_irq10011超级用户模式R7R0, LR_svc, SP_svc, PC, CPSR, SPSR_svcR12R0, R14_svc, R13_svc, PC, CPSR, SPSR_svc10111中止R7R0, LR_abt, SP_abt, PC, CPSR, SPSR_abtR12R0, R14_abt, R13_abt, PC, CPSR, SPSR_abt11011未定义模式R7R0 LR_und, SP_und, PC, CPSR, SPSR_undR12R0, R14_und, R13_und, PC, CPSR11111系统模式R7R0, LR, SP PC, CPSRR14R0, PC, CPSRCPRS的低8位(包括I、F、T和M4:0)称为控制位,当发生异常时这些位会被改变,如果处理器在特权模式下(非用户模式)运行,这些位也可以由程序修改。(1) T标记位:该位反映处理器的运行状态。(2) 中断禁止位:I、F位为中断禁止位(注意:I给IRQ使用,F给FIQ使用,它们是分开使用,不是合起来使用),当它们被置1时可以相应地禁止IRQ和FIQ中断。 CPSR中的其余位为保留位,当改变CPSR中的条件码标志位或控制位时,必须确保其“保留”位不能变,在程序中也不要使用“保留位”来存储数据值。2.6 异常(除用户模式和系统模式外)当正常的程序执行流程被临时中断时(可由系统内部或系统外部的事件引起),称为产生了异常(注意异常比中断的定义范围大)。在处理异常前,当前处理器的状态必须被保留(保护现场),处理异常程序完成后,处理器能恢复原来的状态并执行原来程序(恢复现场并可靠返回)。有可能同时产生好几个异常,如果出现这种情况,就应该按优先级的顺序进行处理。P33上列出了7类导异常,它们均有固定的异常入口地址,这个地址又称“异常向量”(以前学过中断向量)。另外,关于异常类型的含义希望认真理解。2.6.1 进入异常时的行为 (以ARM状态为例)下以图说明,当一个异常发生时,ARM920T响应和返回时的状态。注意书上分别进行了讨论,希望同学们将二个过程进行综合考虑,先把下面的图掌握,课后再看书上的讨论。注意:你不需要特别指明切换回Thumb状态。因为原来的CPSR被自动地保存到了SPSR。 NN+1R14CPSRCPSR保护和恢复原状态保护和恢复断点异常服务程序装入异常服务程序的状态PC装入异常程序入口地址说明:异常发生响应异常异常返回主程序异常过程示意图2.6.3 异常中断向量(特点:4个字节一个地址)地址异常中断类型进入时处理器的模式0x00000000Reset复位管理模式0x00000004Undefined instruction未定义模式0x00000008Software Interrupt软件中断管理模式0x0000000CAbort (预取指令中止)Abort异常预取指中止模式0x00000010Abort (数据中止)Abort异常数据中止模式0x00000018IRQIRQ外部中断请求模式0x0000001CFIQFIQ快速中断请求模式图 异常向量表 2.6.4 异常中断优先级 当多个异常中断同时发生时,处理器根据一个固定(不是设计人员设定的,是处理器已经定下的)的优先级系统来决定处理它们的顺序。最高优先级:1.复位;2.数据中止;3. FIQ;4. IRQ;5. 预取指中止;最低中断优先级:6.未定义指令和软件中断。关于异常类型、异常入口地址、异常优先级见P34中表2.4.12.7 ARM寻址方式2.7.1 8位机的基本寻址方式寻址方式就是寻找地址的方式,为什么要寻址,因为地址指示的那个单元内有重要的数据。立即寻址 MOV A,#34H 指令中有数据直接寻址 MOV A,34H 地址在指令中寄存器寻址 MOV A,R2 寄存器中的内容为数据寄存器间接寻址 MOVX A,R0 寄存器中的内容为地址变址寻址 MOVC A,A+DPTR 地址是一个合成地址相对寻址 JC 03H(C=1,则PC+3;C=0,不转)位对址 SETB 3DH 对规定的位进行操作堆栈操作 PUSH叫压栈(入栈),POP叫出栈(弹出)2.7.2 ARM处理器中的寻址方式。(1) 寄存器寻址操作数的值在寄存器中,指令中地址码字段给出的是寄存器编号,寄存器的内容是操作数(指令执行时直接取出寄存器的值进行操作)。例如指令MOV R1,R2 ;R1R2 SUB R0,R1,R2 ;R0R1- R2(2) 立即寻址在立即寻址指令中数据就包含在指令当中,立即寻址指令的操作码字段后面的地址码段部分就是操作数本身,取出指令也就取出了可以立即使用的操作数(也称为立即数)。立即数要以“”为前缀,表示16进制数值时以“0x”表示。例如指令ADD R0,R0,#1 ;R0R0 + 1MOV R0,#0xff00 ;R00xff00(3) 寄存器移位寻址寄存器移位寻址是ARM指令集特有的寻址方式。第2个寄存器操作数在与第1个操作数结合之前,先进行移位操作。例如指令:MOV R0,R2,LSL #3 ;R2的值左移3位,结果放入R0,即R0=R2 * 8ANDS R1,R1,R2,LSL R3 ;R2的值左移3位,然后和R1相与操作,结果放入R1可采用的移位操作如下: LSL:逻辑左移,寄存器中字的低端空出的位补0。 LSR:逻辑右移,寄存器中字的高端空出的位补0。 ASR:算术右移,移位过程中保持符号位不变,即如果源操作数为正数,则字的高端空出的位补0,否则补1 ROR:循环右移,由字的低端移出的位填入字的高端空出的位。 RRX:带扩展的循环右移,操作数右移一位,高端空出的位用原C 标志值填充。 各移位操作过程如下图所示。(4) 寄存器间接寻址(注意:使用括号了,表示寄存器内为一个地址。)指令中的地址码段给出的是一个通用寄存器编号,所需要的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针,操作数存放在存储器中。例如指令 (以R0为研究对象,认真分析读、写的特点)LDR R0,R1 ;R0R1(将R1中的数值作为地址,取出此地址中的数据保存在R0中)STR R0,R1 ;R1 R0(5) 变址寻址(注意:操作的方向)变址寻址是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址,变址寻址用于访问基址附近的存储单元,常用于查表,数组操作,功能部件寄存器访问等。例如指令:LDR R2,R3,#4 ;R2R3 + 4(将R3中的数值加4作为地址,取出此地址的数值保存在R2 中)STR R1,R0,#-2 ;R0-2 R1(将R0中的数值减2 作为地址,把R1中的内容保存到此地址位置)几个英语单词:LD Load 存储器 M(memory) 增加 I(increas) 升序 A(ascending) ST Set 寄存器 R(register) 减少 D(decreas) 降序 D(descending) 满 E(empty) 在 之后 A(after)空 F(full) 在 之前 B(before)(6) 多寄存器寻址(注意:操作的方向)采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送,这种寻址方式用一条指令最多可以完成16个寄存器值的传送。例 LDMIA R1!,R2-R7,R12 ;将R1单元中的数据读出,并保存到R2-R7和R12中,每次R1的地址值自动加1STMIA R0!,R3-R6,R10 ;将R3-R6、R10中的数据保存到R0所指向的地址单元中,每次R0的地址值自动加1例如指令LDMIA R0,R1,R2,R3,R5 ;R1R0 ;R2R0 + 4 ;R3R0 + 8 ;R4R0 + 12 注意:使用多寄存器寻址指令时,寄存器子集的顺序由大到小,连续的寄存器中间用“-”号连接,单个的用“,”号书写。(7) 堆栈寻址增 满减 空所以有四种栈顶栈底第一个空位置堆栈地址变化的方向小方向,递减堆栈。大方向,递增堆栈。SP指向将要压入的有效数据位称为“空堆栈”。SP指向最后压入的有效数据时称为“满堆栈”。满递增:LDMFA、STMFA空递增:LDMEA、STMEA满递减:LDMFD、STMFD空递减:LDMED、STMED堆栈是一个按特定顺序进行存取的存储区。同时,堆栈区是存储区的一部分。 向上生长:向高地址方向生长,Ascending Stack。 向下生长:向低地址方向生长,Decending Stack。堆栈指针的指向也有二种情况:满堆栈,F
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电焊考试文字题目及答案
- 酒店工程窗帘加工方案(3篇)
- 2025年教师招聘之《幼儿教师招聘》检测卷附参考答案详解(综合卷)
- 纳米材料试卷及答案
- 亮化工程方案细节(3篇)
- 2025年教师招聘之《幼儿教师招聘》考试题库含答案详解【新】
- 教师招聘之《幼儿教师招聘》强化训练模考卷及参考答案详解(达标题)
- 温室大棚农业文化遗产保护与展示服务创新创业项目商业计划书
- 智能洗衣机污渍识别与清洁创新创业项目商业计划书
- 园林植物租赁电商平台与运营创新创业项目商业计划书
- 直营店管理制度
- 2025年第34届全国中学生物理竞赛预赛试卷及答案(完整版)
- 2025年特种设备作业人员客运索道修理S1证考试题库
- 【杭州智篆文化传播】2025天猫健身行业趋势白皮书
- 信访工作法治化培训讲座
- 《动物实验技术》课件-任务1:小鼠脓毒症模型建立
- SANAKOLAB100语言实验室建设方案
- 小金库典型案例警示教育
- 医学资料 容积-粘度吞咽测试(V-VST):吞咽障碍的临床检测方法 学习课件
- 北京市海淀区2024-2025学年八年级上学期期末考试物理试卷
- 建筑工程泥水劳务分包合同书
评论
0/150
提交评论