版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统概述ARM嵌入式系统原理与开发嵌入式系统是指以应用为中心,以计算机技术为基础,软件、硬件可剪裁,适应应用系统对功能、可靠性、成本、体积和功耗严格要求的专用计算机系统。它包括硬件和软件两部分。硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。软件包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为,而操作系统控制着应用程序编程与硬件的交互作用。嵌入式系统的概念ARM嵌入式系统原理与开发嵌入式系统通常是面向特定应用的嵌入式CPU,与通用型的最大不同就是嵌入式CPU大多工作在为特定用户群设计的系统中,执行的是带有特定要求的预先定义的任务,如实时性、安全性、可用性等。它通常具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,移动能力大大增强,跟网络的耦合也越来越紧密嵌入式计算机系统特点ARM嵌入式系统原理与开发嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。由于嵌入式系统通常需要进行大量生产,所以单个的成本节约,能够随着产量进行成百上千的放大。嵌入式计算机系统特点ARM嵌入式系统原理与开发嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存储于磁盘等载体中。嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。嵌入式计算机系统特点ARM嵌入式系统原理与开发第1阶段是以单芯片为核心的可编程控制器形式的系统。将计算机做在一个芯片上,从而开创了嵌入式系统独立发展的单片机时代。单片机就是一个最典型的嵌入式系统,这类系统大部分应用于一些专业性强的工业控制系统中,一般没有操作系统的支持,软件通过汇编语言编写。这一阶段系统的主要特点是:系统结构和功能相对单一,处理效率较低,存储容量较小,几乎没有用户接口。由于这种嵌入式系统使用简单、价格低,以前在国内工业领域应用较为普遍,但是现在已经远不能适应高效的、需要大容量存储的现代工业控制和新兴信息家电等领域的需求。嵌入式系统的历史ARM嵌入式系统原理与开发第2阶段是以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统。其主要特点是:CPU种类繁多,通用性比较弱;系统开销小,效率高;操作系统达到一定的兼容性和扩展性;应用软件较专业化,用户界面不够友好。嵌入式系统的历史ARM嵌入式系统原理与开发第3阶段是以嵌入式操作系统为标志的嵌入式系统。其主要特点是:嵌入式操作系统能运行于各种不同类型的微处理器上,兼容性好;操作系统内核小、效率高,并且具有高度的模块化和扩展性;具备文件和目录管理,支持多任务,支持网络应用,具备图形窗口和用户界面;具有大量的应用程序接口API,开发应用程序较简单;嵌入式应用软件丰富。嵌入式系统的历史ARM嵌入式系统原理与开发第4阶段是以Internet为标志的嵌入式系统。这是一个正在迅速发展的阶段。目前,大多数嵌入式系统还孤立于Internet之外,但随着Internet的发展以及Internet技术与信息家电、工业控制技术结合日益密切,嵌入式设备与Internet的结合将代表嵌入式系统的未来。嵌入式系统的历史ARM嵌入式系统原理与开发嵌入式系统的核心计算系统可以抽象出一个典型的组成模型:硬件层、中间层、软件层和功能层嵌入式系统的组成结构ARM嵌入式系统原理与开发嵌入式系统硬件层的核心是嵌入式微处理器,嵌入式微处理器与通用CPU最大的不同在于嵌入式微处理器大多工作在为特定用户群所专用设计的系统中,它将通用CPU许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的效率和可靠性。嵌入式微处理器的体系结构可以采用冯·诺依曼体系或哈佛体系结构;指令系统可以选用精简指令系统(ReducedInstructionSetComputer,RISC)和复杂指令系统(ComplexInstructionSetComputer,CISC)嵌入式微处理器ARM嵌入式系统原理与开发嵌入式微处理器有各种不同的体系,即使在同一体系中也可能具有不同的时钟频率和数据总线宽度,或集成了不同的外设和接口。据不完全统计,目前全世界嵌入式微处理器已经超过1
000多种,体系结构有30多个系列,其中主流的体系有ARM、MIPS、PowerPC、X86、SH等。但与全球PC市场不同的是,没有一种嵌入式微处理器可以主导市场,仅以32位的产品而言,就有100种以上的嵌入式微处理器。嵌入式微处理器的选择是根据具体的应用而决定的嵌入式微处理器ARM嵌入式系统原理与开发嵌入式系统需要存储器来存放和执行代码。嵌入式系统的存储器包含Cache、主存和辅助存储器Cache是一种容量小、速度快的存储器阵列,它位于主存和嵌入式微处理器内核之间,存放的是最近一段时间微处理器使用最多的程序代码和数据。在需要进行数据读取操作时,微处理器尽可能的从Cache中读取数据,而不是从主存中读取,这样就大大改善了系统的性能,提高了微处理器和主存之间的数据传输速率存储器ARM嵌入式系统原理与开发在嵌入式系统中,Cache全部集成在嵌入式微处理器内,可分为数据Cache、指令Cache或混合Cache,Cache的大小依不同处理器而定。一般中高档的嵌入式微处理器才会把Cache集成进去存储器ARM嵌入式系统原理与开发主存:主存是嵌入式微处理器能直接访问的寄存器,用来存放系统和用户的程序及数据。它可以位于微处理器的内部或外部,其容量为256KB~1GB,根据具体的应用而定,一般片内存储器容量小、速度快,片外存储器容量大常用作主存的存储器有以下几种:ROM类NORFlash、EPROM、PROM等;RAM类SRAM、DRAM、SDRAM等。其中,NORFlash凭借其可擦写次数多、存储速度快、存储容量大、价格便宜等优点,在嵌入式领域内得到了广泛应用。存储器ARM嵌入式系统原理与开发辅助存储器:辅助存储器用来存放大数据量的程序代码或信息,它的容量大,但读取速度与主存相比就慢很多,用来长期保存用户的信息。嵌入式系统中常用的外存有硬盘、NANDFlash、CF卡、MMC、SD卡等存储器ARM嵌入式系统原理与开发嵌入式系统和外界交互需要一定形式的通用设备接口,如A/D、D/A、I/O等,外设通过和片外其他设备的或传感器的连接来实现微处理器的输入/输出功能。每个外设通常都只有单一的功能,它可以在芯片外也可以内置芯片中。外设的种类很多,可从一个简单的串行通信设备到非常复杂的802.11无线设备通用设备接口和I/O接口ARM嵌入式系统原理与开发硬件层与软件层之间为中间层,也称为硬件抽象层(HardwareAbstractLayer,HAL)或板级支持包(BoardSupportPackage,BSP),它将系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无须关心底层硬件的具体情况,根据BSP层提供的接口即可进行开发。该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能中间层ARM嵌入式系统原理与开发BSP具有以下两个特点硬件相关性:因为嵌入式实时系统的硬件环境具有应用相关性,而作为上层软件与硬件平台之间的接口,BSP需要为操作系统提供操作和控制具体硬件的方法操作系统相关性:不同的操作系统具有各自的软件层次结构,因此,不同的操作系统具有特定的硬件接口形式中间层ARM嵌入式系统原理与开发软件层由实时多任务操作系统(Real-timeOperationSystem,RTOS)、文件系统、图形用户接口(GraphicUserInterface,GUI)、网络系统及通用组件模块组成。RTOS是嵌入式应用软件的基础和开发平台软件层ARM嵌入式系统原理与开发嵌入式操作系统(EmbeddedOperationSystem,EOS)是一种用途广泛的系统软件,过去它主要应用与工业控制和国防系统领域。EOS负责嵌入系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。入式文件系统比较简单,主要提供文件存储、检索、更新等功能,一般不提供保护、加密等安全机制。它以系统调用和命令方式提供文件的各种操作,主要有设置、修改对文件和目录的存取权限。提供建立、修改、改变和删除目录等服务。提供创建、打开、读写、关闭和撤销文件等服务。软件层ARM嵌入式系统原理与开发图形用户接口(GUI)的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用,人们从此不再需要死记硬背大量的命令,取而代之的是可用通过窗口、菜单、按键等方式来方便地进行操作。而嵌入式GUI具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点软件层ARM嵌入式系统原理与开发功能层也称为应用软件层,应用软件是由基于实时系统开发的应用程序组成,运行在嵌入式操作系统之上,一般情况下与操作系统是分开的。应用软件用来实现对被控对象的控制功能。功能层是要面对被控对象和用户,为方便用户操作,往往需要提供一个友好的人机界面功能层ARM嵌入式系统原理与开发嵌入式处理器是嵌入式系统的核心,是控制、辅助系统运行的硬件单元。其产品范围极其广阔,从最初的4位处理器、目前仍在大规模应用的8位单片机,到最新的受到广泛青睐的32位、64位嵌入式CPU目前,世界上具有嵌入式功能特点的处理器已经超过1000种,流行体系结构包括MCU、MPU等30多个系列。嵌入式处理器ARM嵌入式系统原理与开发嵌入式微处理器(MicroProcessorUnit,MPU)是由通用计算机中的CPU演变而来的。它的特征是具有32位以上的处理器,具有较高的性能,其价格也相应较高。但与计算机处理器不同的是,在实际嵌入式应用中,只保留和嵌入式应用紧密相关的功能硬件,去除其他的冗余功能部分,这样就以最低的功耗和资源实现嵌入式应用的特殊要求。嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点。目前,主要的嵌入式处理器类型有Am186/88、386EX、SC-400、PowerPC、68000、MIPS、ARM/StrongARM系列等嵌入式微处理器ARM嵌入式系统原理与开发嵌入式微控制器(MicrocontrollerUnit,MCU)的典型代表是单片机,从20世纪70年代末单片机出现到今天,虽然已经经过了20多年的历史,但这种8位的电子器件目前在嵌入式设备中仍然有着极其广泛的应用。单片机芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、看门狗、I/O、串行口、脉宽调制输出、A/D、D/A、FlashRAM、EEPROM等各种必要功能和外设,与嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。微控制器是目前嵌入式系统工业的主流。嵌入式微控制器ARM嵌入式系统原理与开发嵌入式DSP处理器(EmbeddedDigitalSignalProcessor,EDSP)是专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,具有很高的编译效率和指令的执行速度。在数字滤波、FFT、谱分析等各种仪器上DSP获得了大规模的应用目前,最为广泛应用的是TI的TMS320C2000/C5000系列,另外如Intel的MCS-296和Siemens的TriCore也有各自的应用范围嵌入式DSP处理器ARM嵌入式系统原理与开发SoC追求产品系统最大包容的集成器件,是目前嵌入式应用领域的热门话题之一。SoC最大的特点是成功实现了软硬件无缝结合,直接在处理器片内嵌入操作系统的代码模块。而且SoC具有极高的综合性,在一个硅片内部运用VHDL等硬件描述语言,实现一个复杂的系统SoC(SystemonChip)片上系统ARM嵌入式系统原理与开发嵌入式操作系统(EmbeddedOperatingSystem,EOS)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域。EOS负责嵌入系统的全部软、硬件资源的分配、调度工作,控制协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能EOS是相对于一般操作系统而言的,它除具备了一般操作系统最基本的功能,如任务调度、同步机制、中断处理、文件功能等外,还具有以下特点:典型的嵌入式操作系统ARM嵌入式系统原理与开发可装卸性、开放性、可伸缩性的体系结构强实时性,可用于各种设备控制当中统一的接口,提供各种设备驱动接入操作方便、简单,提供友好的图形用户界面提供强大的网络功能,支持TCP/IP及其他协议,提供TCP/UDP/IP/PPP支持及统一的MAC访问层接口,为各种移动计算设备预留接口强稳定性,弱交互性。嵌入式系统一旦开始运行就不需要用户过多地干预,这就要负责系统管理的EOS具有较强的稳定性。嵌入式操作系统的用户接口一般不提供操作命令,它通过系统调用命令向用户程序提供服务典型的嵌入式操作系统ARM嵌入式系统原理与开发固化代码。在嵌入系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。辅助存储器在嵌入式系统中很少使用,因此,嵌入式操作系统的文件管理功能应该能够很容易地拆卸,而用各种内存文件系统更好的硬件适应性,也就是良好的移植性典型的嵌入式操作系统ARM嵌入式系统原理与开发在所有的操作系统中,Linux是发展最快、应用最广泛的系统之一。Linux本身的种种特性使其成为嵌入式开发的首选。在进入市场的前两年中,嵌入式Linux的设计通过广泛应用而获得巨大的成功。随着嵌入式Linux技术的成熟,以其按应用要求可定制系统、支持多数硬件平台等特性,已由早期的试用阶段迈进到逐渐成为嵌入式市场的主流。根据IDC的报告,Linux已经成为全球第二大操作系统。Linux发展如此之快的另一个主要原因是产品的成本。在激烈的市场竞争中,只拥有先进的技术是远远不够的,如何减少产品的投入也是需要重点考虑的问题。免费的Linux为厂商节约了一大笔开支,特别是对于经济实力不强的公司来说。目前Linux内核的最新版本已经达到2.6.xxLinuxARM嵌入式系统原理与开发μC/OS是一个典型的实时操作系统。该系统从1992年开始发展,目前流行的是第二个版本,即μC/OSⅡ。其特点可以概括为以下几个方面:公开源代码,代码结构清晰、明了,注释详细,组织有条理,可移植性好,可裁剪,可固化,内核属于抢占式,最多可以管理64个任务。该系统短小精悍,是研究和学习实时操作系统的首选μC/OSARM嵌入式系统原理与开发WindowsCE是Microsft公司的产品,是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。WindowsCE采用模块化设计,并对于从掌上电脑到专用的工控电子设备进行定制。此操作系统的基本内核需要至少200KBROM存储器。从游戏机到现在大部分的掌上电脑都采用了WindowsCE作为操作系统,其缺点是系统软件价格过高,影响整个产品的成本控制WindowsCEARM嵌入式系统原理与开发xWorks是WindRiver(风河)公司专门为实时嵌入式系统设计开发的操作系统软件,为程序员开发提供了高效的实时任务调度、中断管理、实时的系统资源以及实时的任务间通信。应用程序员可以将尽可能多的精力放在应用程序本身,而不必再去关心系统资源的管理。该系统主要应用在单板机、数据网络(以太网交换机、路由器)、通信等多方面。该公司据已为Intel所收购VxWorksARM嵌入式系统原理与开发PalmOS是一种32位的嵌入式操作系统,用于掌上电脑。此系统是3Com公司的PalmComputing部开发的(PalmComputing目前已经独立成为一家公司),它运行在一个抢占式的多任务内核之上,同一时刻用户界面仅仅允许一个应用程序被打开,与同步软件Hotsync结合可以使掌上电脑与PC上的信息实现同步,把台式机的功能扩展到了手掌上。同其他嵌入式操作系统相比,PalmOS具有更大的灵活性和移动性,是一款非常流行的掌上电脑操作系统PalmOSARM嵌入式系统原理与开发QNX是一款实时操作系统,由加拿大QNX软件系统有限公司开发,广泛应用于自动化、控制、机器人科学、电信、数据通信、航空航天、计算机网络系统、医疗仪器设备、交通运输、安全防卫系统、POS机、零售机等任务关键型应用领域。20世纪90年代后期,QNX系统在高速增长的Internet终端设备、信息家电、掌上电脑等领域也得到了广泛应用QNXARM嵌入式系统原理与开发iOS是由苹果公司为iPhone开发的操作系统。它主要是给iPhone、iPodTouch以及iPad使用。就像其基于的MacOSX操作系统一样,它也是以Darwin为基础的。原本这个系统名为iPhoneOS,直到2010年6月7日WWDC大会上宣布改名为iOSiOS的系统架构分为4个层次:核心操作系统层(theCoreOSlayer),核心服务层(theCoreServiceslayer),媒体层(theMedialayer)、可轻触层(theCocoaTouchlayer)。苹果iOSARM嵌入式系统原理与开发Android是Google开发的基于Linux平台的开源手机操作系统。它包括操作系统、用户界面和应用程序—移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍。Google与开放手机联盟合作开发了Android,这个联盟由包括中国移动、摩托罗拉、高通、宏达电和T-Mobile在内的30多家技术和无线应用的领军企业组成。Google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统AndroidARM嵌入式系统原理与开发专用、软硬件可剪裁配置。从嵌入式系统定义可以看出,嵌入式系统是面向应用的,和通用系统最大的区别在于嵌入式系统功能专一。根据这个特性,嵌入式系统的软硬件可以根据需要进行精心设计、量体裁衣、去除冗余,以实现低成本、高性能。也正因如此,嵌入式系统采用的微处理器和外围设备种类繁多,系统不具通用嵌入式系统的特点ARM嵌入式系统原理与开发低功耗、高可靠性、高稳定性。嵌入式系统大多用在特定场合,要么是环境条件恶劣,要么要求其长时间连续运转,因此,嵌入式系统应具有高可靠性、高稳定性、低功耗等性能。嵌入式系统的特点ARM嵌入式系统原理与开发软件代码短小精悍。由于成本和应用场合的特殊性,通常嵌入式系统的硬件资源(如内存等)都比较少,因此对嵌入式系统设计提出了较高的要求。嵌入式系统的软件设计尤其要求高质量,要在有限资源上实现高可靠性、高性能的系统。虽然随着硬件技术的发展和成本的降低,在高端嵌入式产品上也开始采用嵌入式操作系统,但其和PC资源比起来还是少得可怜,所以嵌入式系统的软件代码依然要在保证性能的情况下,占用尽量少的资源,保证产品的高性价比,使其具有更强的竞争力。嵌入式系统的特点ARM嵌入式系统原理与开发代码可固化。为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存储于磁盘中。实时性。很多采用嵌入式系统的应用具有实时性要求,所以大多嵌入式系统采用实时性系统。但需要注意的是嵌入式系统不等于实时系统。弱交互性。嵌入式系统不仅功能强大,而且要求使用灵活方便,一般不需要类似的键盘、鼠标等,人机交互以简单方便为主。嵌入式系统的特点ARM嵌入式系统原理与开发嵌入式系统软件开发通常需要专门的开发工具和开发环境。要求开发、设计人员有较高的技能。嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统,从事嵌入式系统开发的人才也必须是复合型人才。嵌入式系统的特点ARM嵌入式系统原理与开发消费电子领域嵌入式系统的应用ARM嵌入式系统原理与开发通信网络领域嵌入式系统的应用ARM嵌入式系统原理与开发工业控制领域基于嵌入式芯片的工业自动化设备将获得长足的发展,目前已经有大量的8位、16位、32位嵌入式微控制器在应用中,网络化是提高生产效率和产品质量、减少人力资源主要途径,如工业过程控制、数字机床、电力系统、电网安全、电网设备监测、石油化工系统。就传统的工业控制产品而言,低端型采用的往往是8位单片机。但是随着技术的发展,32位、64位的处理器逐渐成为工业控制设备的核心,在未来几年内必将获得长足的发展嵌入式系统的应用ARM嵌入式系统原理与开发机器人领域嵌入式系统的应用ARM嵌入式系统原理与开发交通管理与汽车电子领域国防和航空航天领域嵌入式系统的应用ARM嵌入式系统原理与开发国防和航空航天领域嵌入式系统的应用ARM嵌入式系统原理与开发小型化、智能化、网络化、可视化多核技术的应用低功耗(节能)、绿色环保云计算、可重构、虚拟化等技术被进一步应用到嵌入式系统中嵌入式软件开发平台化、标准化、系统可升级,代码可复用将更受重视嵌入式系统软件将逐渐PC化融合趋势安全性嵌入式系统的发展趋势ARM嵌入式系统原理与开发什么是嵌入式系统?试简单列举一些生活中常见的嵌入式系统的实例。嵌入式系统具有哪些特点?嵌入式系统与通用计算机相比有哪些区别?嵌入式系统有哪些组成部分?简单说明各部分的功能与作用。结合嵌入式系统的应用,简要分析嵌入式系统的应现状和未来趋势。思考题与习题ARM嵌入式系统原理与开发ARM体系结构与指令集ARM体系结构与指令集ARM(AdvancedRISCMachines)公司于1990年成立,由苹果电脑、Acorn电脑集团和VLSLTechnology合资组建,主要推广AcornComputer公司研发的首个商用RISC(ReducedInstructionSetComputer,精简指令集计算机)处理器—ARM处理器。ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可,由合作公司生产各具特色的芯片。世界各大半导体生产商从ARM公司购买其ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。ARM技术简介ARM体系结构与指令集采用RISC架构的ARM微处理器一般具有如下特点。①体积小、低功耗、低成本、高性能。②支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8/16位器件。③大量使用寄存器,指令执行速度更快。④大多数数据操作都在寄存器中完成。⑤寻址方式灵活简单,执行效率高。⑥指令长度固定。ARM技术简介ARM体系结构与指令集
ARM体系结构的版本
为了精确表述在ARM体系结构和实现中所使用的指令集,迄今为止,将其定义了7种主要版本,分别用版本号1~7表示。ARM体系结构与指令集
ARM体系结构的版本
表2-1 体系结构版本和处理器内核的对应关系
ARM体系结构与指令集其中,版本v1、v2、v3主要是处于开发和试验阶段,功能相对比较单一,并没有大规模占领市场。版本v4是第1个具有全部正式定义的体系结构版本。它具有32位寻址空间和7种工作模式,增加了有符号、无符号半字和有符号字节的加载/存储指令,并为结构定义的操作预留一些SWI空间;引入了系统模式,并将几个未使用指令空间的角落作为未定义指令使用。在体系结构版本4的变种版本4T中,引入了16位Thumb压缩形式的指令集。ARM技术从版本v4开始成熟,基于该版本的典型内核有ARM7TDMI、ARM720T、ARM9TDMI、ARM940T。其中正是ARM7芯片获得极大成功,占领了近70%市场份额,奠定了ARM在嵌入式处理器领域的领先地位。ARM体系结构的版本ARM体系结构与指令集版本v5通过增加一些指令以及对现有指令的定义略作修改,对版本v4进行了扩展。版本v5主要由两个变种版本v5T和v5TE组成。版本v6是2001年发布的。新架构版本v6在降低耗电量的同时,强化了图形处理性能。通过追加了能够有效进行多媒体处理的SIMD功能,将其对语音及图像的处理功能提供到原机型的4倍。此外,版本v6还支持多种微处理器内核版本,支持Thumb-2指令集,具有NEON媒体引擎,同时采用了Jazellec-RCT技术,极大改善了ARM对多媒体和Java的支持。ARM体系结构的版本ARM体系结构与指令集1.ARM内核版本命名规则ARM内核命名时以数字表示内核的版本号,以字母表示内核所支持的额外功能。规则如下:ARM{x}{y}{z}{T}{D}{M}{I}{E}{J}{F}{-S}大括号内的字母是可选的,各个字母的含义如下。x—系列号,如ARM7中的“7”、ARM9中的“9”。y—内部存储管理/保护单元,如ARM72中的“2”、ARM94中的“4”。z—内含有高速缓存(Cache)。T—支持16位的Thumb指令集。D—支持JTAG片上调试。M—支持用于长乘法操作(64位结果)的ARM指令,包含快速乘法器。ARM处理器内核系列ARM体系结构与指令集I—带有嵌入式追踪宏单元ETM(EmbeddedTraceMacro),用来设置断点和观察点的调试硬件。E—增强型DSP指令(基于TDMI)。J—含有Java加速器Jazelle,与Java虚拟机相比,Jazelle使Java代码运行速度提高了8倍,功耗降低到原来的80%。F—向量浮点单元。S—可综合版本,意味着处理器内核是以源代码形式提供的。这种源代码形式又可以被编译成一种易于EDA工具使用的形式。ARM处理器内核系列ARM体系结构与指令集ARM7微处理器系列具有如下特点:①具有嵌入式ICE-RT逻辑,调试开发方便。②极低的功耗,适合对功耗要求严格的应用,如便携式产品。③能够提供0.9MIPS/MHz的三级流水线结构。④代码密度高并兼容16位的Thumb指令集。⑤对操作系统的支持广泛,包括WindowsCE、Linux、PalmOS等。⑥指令系统与ARM9、ARM9E和ARM10E系列兼容,便于用户的产品升级换代。⑦主频最高可达130MIPS,高速的运算处理能力能胜任绝大多数的复杂应用。ARM处理器内核系列ARM体系结构与指令集ARM9系列微处理器在高性能和低功耗特性方面提供最佳的性能,具有以下特点:①提供1.1MIPS/MHz5级流水线结构。②支持32位ARM指令集和16位Thumb指令集。③支持32位的高速AMBA总线接口。④全性能MMU,支持WindowsCE、Linux、PalmOS等主流嵌入式操作系统。⑤MPU支持实时操作系统。⑥支持数据Cache和指令Cache,具有更高的指令和数据处理能力。ARM处理器内核系列ARM体系结构与指令集ARM9E系列微处理器的主要特点如下:①支持DSP指令集,适合于需要高速数字信号处理的场合。②5级整数流水线,指令执行效率更高。③支持32位ARM指令集和16位Thumb指令集。④支持32位的高速AMBA总线接口。⑤支持VFP9浮点处理协处理器。⑥全性能MMU,支持WindowsCE、Linux、PalmOS等主流嵌入式操作系统。⑦MPU支持实时操作系统。⑧支持数据Cache和指令Cache,具有更高的指令和数据处理能力。⑨主频最高可达300MIPS。ARM处理器内核系列ARM体系结构与指令集ARM10E系列微处理器的主要特点如下:①支持DSP指令集,适合于需要高速数字信号处理的场合。②6级整数流水线,指令执行效率更高。③支持32位ARM指令集和16位Thumb指令集。④支持32位的高速AMBA总线接口。⑤支持VFP10浮点处理协处理器。⑥全性能MMU,支持WindowsCE、Linux、PalmOS等主流嵌入式操作系统。⑦支持数据Cache和指令Cache,具有更高的指令和数据处理能力。⑧主频最高可达400MIPS。⑨内嵌并行读/写操作部件。ARM处理器内核系列ARM体系结构与指令集ARM11系列微处理器是ARM新指令架构—ARMv6的第一代设计实现,具有强劲的媒体处理能力和低功耗特点:①8级流水线为比以前的ARM内核提高了至少40%的吞吐量。②低功耗,ARM11处理器是为了有效地提供高性能处理能力而设计的。在这里需要强调的是,ARM并不是不能设计出运行在更高频率的处理器,而是在处理器能提供超高性能的同时,还要保证功耗、面积的有效性。③ARM11处理器软件可以与以前所有ARM处理器兼容,并引入了用于媒体处理的32位SIMD、用于提高操作系统上下文切换性能的物理标记高速缓存、强制实施硬件安全措施的TrustZone以及针对实时应用的紧密耦合内存。ARM处理器内核系列ARM体系结构与指令集ARMCortex系列Cortex-A系列处理器适用于具有高计算要求、运行丰富操作系统以及提供交互媒体和图形体验的应用领域。从最新技术的移动Internet必备设备(如手机和超便携的上网本或智能本)到汽车信息娱乐系统和下一代数字电视系统,性能较以往内核有很大提高,如ARMCortex-A8核心能够提供3倍于ARM11的性能。Cortex-R系列专为高性能、可靠性和容错能力而设计的,其行为具有高确定性,同时保持很高的能效和成本效益。目标应用包括智能手机和基带调制解调器、硬盘驱动器、家庭消费性电子产品、工业和汽车行业的可靠系统的嵌入式微控制器。在这些应用中,采用的是对处理响应设置硬截止时间的系统,如果要避免数据丢失或机械损伤,则必须符合所设置的这些硬截止时间。ARM处理器内核系列ARM体系结构与指令集ARMCortex-M处理器系列是一系列可向上兼容的高能效、易于使用的处理器,这些处理器旨在帮助开发人员满足将来的嵌入式应用的需要。这些需要包括以更低的成本提供更多功能、不断增加连接、改善代码重用和提高能效。Cortex-M系列针对成本和功耗敏感的MCU和终端应用(如智能测量、人机接口设备、汽车和工业控制系统、大型家用电器、消费性产品和医疗器械)的混合信号设备进行过优化。ARM处理器内核系列ARM体系结构与指令集(1)复杂指令集和精简指令集微处理器的架构根据指令结构可以分为复杂指令集(ComplexInstructionSetComputer,CISC)架构和精简指令集(ReducedInstructionSetComputer,RISC)架构,CISC架构采用庞大的指令集,可以减少编程所需要的代码行数,减轻程式师的负担,RISC采用精简指令集,包含了简单、基本的指令,透过这些简单、基本的指令,就可以组合成复杂指令,二者各有优缺点。CISC在桌面电脑和服务器中应用广泛,而RISC在嵌入式微处理器中则占有较大的市场份额。ARM系列的芯片全部基于RISC技术。体系架构分类ARM体系结构与指令集体系架构分类(2)普林斯顿结构和哈佛结构微处理器根据存储器结构可以分为哈佛(Harvard)结构和普林斯顿(Princeton)结构。ARM内核中ARM7系列基于普林斯顿结构,ARM9系列之后基本都为哈佛结构。普林斯顿结构也称冯·诺伊曼结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此,程序指令和数据的宽度相同。哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度。其结构比较如图2-1所示。ARM体系结构与指令集体系架构分类ARM体系结构与指令集流水线技术(1)三级流水线技术ARM7系列内核采用冯·诺伊曼结构,与之对应采用了三级流水线的内核结构,如图2-2所示。ARM体系结构与指令集
流水线技术
ARM体系结构与指令集在流水线中各级的功能如下。●取指:将指令从存储器中取出,放入指令Cache中。●译码:由译码逻辑单元完成,是将在上一步指令Cache中的指令进行解释,告诉CPU将如何操作。●执行:这阶段包括移位操作、读通用寄存器内容、输出结果、写通用寄存器等。
流水线技术
ARM体系结构与指令集ARM7的三级流水线在执行单元完成了大量的工作,包括与操作数相关的寄存器和存储器读写操作、ALU操作以及相关器件之间的数据传输。执行单元的工作往往占用多个时钟周期,从而成为系统性能的瓶颈。在存在存储器访问指令、跳转指令的情况下会出现流水线阻断情况,导致流水线的性能下降。图2-4所示为带有存储器访问指令的流水线工作情况。流水线技术ARM体系结构与指令集流水线技术ARM体系结构与指令集(2)五级流水线技术
ARM9采用哈佛架构,避免了数据访问和取指的总线冲突,采用更为高效的五级流水线设计。如图2-5所示,在指令操作上采用五级流水线。各级的功能如下。●取指:从指令Cache中读取指令。●译码:对指令进行译码,识别出是对哪个寄存器进行操作并从通用寄存器中读取操作数。●执行:进行ALU运算和移位操作,如果是对存储器操作的指令,则在ALU中计算出要访问的存储器地址。●存储器访问:如果是对存储器访问的指令,用来实现数据缓冲功能(通过数据Cache)。●寄存器回写:将指令运算或操作结果写回到目标寄存器中。流水线技术ARM体系结构与指令集这种五级流水技术把三级流水线中的执行单元进一步细化,减少了在每个时钟周期内必须完成的工作量,进而允许使用较高的时钟频率,且具有分开的指令和数据存储器,解决了三级流水线中存储器访问指令在指令执行阶段的延迟问题。有资料表明,同样主频下ARM9的处理性能比ARM7高20%~30%。图2-6为五级流水线的最佳运行示意图。流水线技术ARM体系结构与指令集流水线技术ARM体系结构与指令集五级流水互锁示意图流水线技术ARM体系结构与指令集ARM微处理器支持7种运行模式。①用户模式(usr):ARM处理器正常的程序执行状态。②快速中断模式(fiq):用于高速数据传输或通道处理。③外部中断模式(irq):用于通用的中断处理。④管理模式(svc):操作系统使用的保护模式。⑤数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。⑥系统模式(sys):运行具有特权的操作系统任务。⑦未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。ARM处理器模式ARM体系结构与指令集通用寄存器包括R0~R15,可以分为未分组寄存器(R0~R7)、分组寄存器(R8~R14)和程序计数器PC(R15)3类。(1)未分组寄存器R0~R7在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,它们未被系统用作特殊的用途,因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。1.通用寄存器ARM体系结构与指令集1.通用寄存器ARM体系结构与指令集(2)分组寄存器R8~R14对于分组寄存器,它们每一次所访问的物理寄存器与处理器当前的运行模式有关。对于R8~R12来说,每个寄存器对应两个不同的物理寄存器,当使用fiq模式时,访问寄存器R8_fiq~R12_fiq;当使用除fiq模式以外的其他模式时,访问寄存器R8_usr~R12_usr。对于R13、R14来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式与系统模式共用,另外5个物理寄存器对应于其他5种不同的运行模式。采用以下的记号来区分不同的物理寄存器:R13_<mode>R14_<mode>1.通用寄存器ARM体系结构与指令集寄存器R13在ARM指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。而在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针。由于处理器的每种运行模式均有自己独立的物理寄存器R13,在用户应用程序的初始化部分,一般都要初始化每种模式下的R13,使其指向该运行模式的栈空间,这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复,采用这种方式可以保证异常发生后程序的正常执行。1.通用寄存器ARM体系结构与指令集R14也称为子程序连接寄存器(SubroutineLinkRegister)或连接寄存器(LR)。当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份。其他情况下,R14用作通用寄存器。与之类似,当发生中断或异常时,对应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用来保存R15的返回值。1.通用寄存器ARM体系结构与指令集(3)程序计数器PC(R15)寄存器R15用作程序计数器(PC)。在ARM状态下,位[1:0]为0,位[31:2]用于保存PC;在Thumb状态下,位[0]为0,位[31:1]用于保存PC。R15虽然可以用作通用寄存器,但是有一些指令在使用R15时有一些特殊限制,若不注意,执行的结果将是不可预料的。在ARM状态下,PC的0和1位是0,在Thumb状态下,PC的0位是0。1.通用寄存器ARM体系结构与指令集寄存器R16用作当前程序状态寄存器(CurrentProgramStatusRegister,CPSR),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。程序状态寄存器的功能包括保存ALU中的当前操作信息、控制允许和禁止中断、设置处理器的运行模式,程序状态寄存器的每一位的安排如图2-9所示。程序状态寄存器ARM体系结构与指令集程序状态寄存器ARM体系结构与指令集(1)条件码标志程序状态寄存器ARM体系结构与指令集(2)控制位PSR的低8位(包括I、F、T和M[4:0])称为控制位,当发生异常时这些位可以被改变。如果处理器运行特权模式,这些位也可以由程序修改。I、F为中断禁止位,I=1禁止IRQ中断,F=1禁止FIQ中断;T标志位反映处理器的运行状态,运行模式位M决定了处理器的运行模式。对于ARM体系结构v5及以上的版本的T系列处理器,当该位为1时,程序运行于Thumb状态,否则运行于ARM状态。对于ARM体系结构v5及以上的版本的非T系列处理器,当该位为1时,执行下一条指令以引起为定义的指令异常;当该位为0时,表示运行于ARM状态。ARM内部寄存器ARM体系结构与指令集ARM内部寄存器(3)保留位PSR中的其余位为保留位,当改变PSR中的条件码标志位或者控制位时,保留位不要被改变,在程序中也不要使用保留位来存储数据。保留位将用于ARM版本的扩展。ARM体系结构与指令集不同模式下寄存器组织ARM体系结构与指令集异常类型ARM体系结构与指令集当一个异常出现以后,ARM微处理器会执行以下几步操作。①将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。若异常是从ARM状态进入,LR寄存器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常的类型有关);若异常是从Thumb状态进入,则在LR寄存器中保存当前PC的偏移量,这样,异常处理程序就不需要确定异常是从何种状态进入的。例如,在软件中断异常SWI,指令MOVPC,R14_svc总是返回到下一条指令,不管SWI是在ARM状态执行,还是在Thumb状态执行。②将CPSR复制到相应的SPSR中。③根据异常类型,强制设置CPSR的运行模式位。④强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。还可以设置中断禁止位,以禁止中断发生。如果异常发生时,处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态。处理流程ARM体系结构与指令集ARM微处理器对异常的响应过程用伪码描述如下:
R14_<Exception_Mode>=ReturnLinkSPSR_<Exception_Mode>=CPSRCPSR[4:0]=ExceptionModeNumberCPSR[5]=0 ;当运行于ARM工作状态时If<Exception_Mode>==ResetorFIQthen ;当响应FIQ异常时,禁止新的FIQ异常CPSR[6]=1 CPSR[7]=1PC=ExceptionVectorAddress
⑤异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:处理流程ARM体系结构与指令集●将连接寄存器LR的值减去相应的偏移量后送到PC中;●将SPSR复制回CPSR中;●若在进入异常处理时设置了中断禁止位,要在此清除。可以认为应用程序总是从复位异常处理程序开始执行的,因此,复位异常处理程序不需要返回。处理流程ARM体系结构与指令集当多个异常同时发生时,系统根据固定的优先级(ExceptionPriorities)决定异常的处理次序。异常优先级由高到低的排列次序如表2-6所示。优先级1.地址空间ARM体系结构将存储器看做是从零地址开始的字节的线性组合。从0字节到3字节放置第1个存储的字数据,从第4个字节到第7个字节放置第2个存储的字数据,依次排列。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB(232字节)。当程序正常执行时,每执行一条ARM指令,当前指令计数器加4个字节;每执行一条Thumb指令,当前指令计数器加2个字节。ARM体系的存储系统ARM体系结构与指令集2.存储器格式ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式。大端格式中字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,如图2-11所示。小端格式与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节,如图2-12所示。ARM体系的存储系统ARM体系结构与指令集ARM体系的存储系统ARM体系结构与指令集3.存储器访问对准ARM系统中无论取指还是内存访问都应根据指令以字、半字或字节对准访问,如果出现非对齐的情况,将发生错误。(1)非对齐的指令预取操作如果是在ARM状态下将一个非对齐地址写入PC,则数据在写入PC时,数据的第0位和第1位被忽略,最终PC的bit[1:0]为0;如果是在Thumb状态下将一个非对齐地址写入PC,则数据在写入PC时,数据的第0位被忽略,最终PC的bit[0]为0。ARM体系的存储系统ARM体系结构与指令集(2)非对齐地址内存的访问操作对于LOAD/STORE操作,系统定义了下面3种可能的结果。①执行结果不可预知。②忽略字单元地址低两位的值,即访问地址为字单元;忽略半字单元最低位的值,即访问地址为半字单元。这种忽略是由存储系统自动实现的。③在LDR和SWP指令中,对存储器访问忽略造成地址不对齐的低地址位,然后使用这些低地址位控制装载数据的循环。ARM体系的存储系统ARM体系结构与指令集ARM内核属于RISC结构,所以其指令集有着一些独特的特点:指令长度固定,指令格式的种类少,寻址方式简单。由于ARM处理器采用固定长度的32位指令,因此,处理器内部硬件设计能够被简化。ARM处理器内部的指令译码采用硬布线逻辑,不使用微程序控制,以减少指令的译码时间,大部分指令可以在一个时钟周期内完成。需要特别指出的是,ARM处理器的指令集是加载/存储型的,也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成。ARM指令系统ARM体系结构与指令集用ARM指令助记符表示为:<opcode>{<cond>}{S}<Rd>,<Rn>,<shift_op2>每个域的含义如下。①<opcode>:操作码域,指令编码的助记符。②{<cond>}:条件码域,指令允许执行的条件编码。花括号表示此项可默认。ARM指令的一个重要特点是可以条件执行,每条ARM指令的条件码域包含4位条件码,共16种。几乎所有指令均根据CPSR中条件码的状态和指令条件码域的设置有条件地执行。当指令执行条件满足时,指令被执行,否则被忽略。指令条件码及其助记符后缀表示如表2-7所示。ARM指令格式ARM体系结构与指令集ARM指令格式ARM体系结构与指令集每种条件码可用两个字符表示,这两个字符可以作为后缀添加在指令助记符的后面和指令同时使用。例如,跳转指令B可以加上后缀EQ变为BEQ,表示“相等则跳转”,即当CPSR中的Z标志置位时发生跳转。③{S}:条件码设置域。这是一个可选项,当在指令中设置{S}域时,指令执行的结果将会影响程序状态寄存器CPSR中相应的状态标志。例如:
ADDR0,R1,R2 ;R1与R2的和存放到R0寄存器中,不影响状态寄存器ADDSR0,R1,R2 ;执行加法的同时影响状态寄存器
指令中比较特殊的是CMP指令,它不需要加S后缀就默认地根据计算结构更改程序状态寄存器。④<Rd>:目的操作数。ARM指令中的目的操作数总是一个寄存器。如果<Rd>与第1操作数寄存器<Rn>相同,也必须要指明,不能默认。⑤<Rn>:第1操作数。ARM指令中的第1操作数也必须是个寄存器。⑥<shift_op2>:第2操作数。在第2操作数中可以是寄存器、内存存储单元或者立即数。由于第2操作数只有12个bit,用第2操作数表示立即数时,其取值范围为0~212−1,要表示超出这个范围的立即数,通常要依靠伪指令实现。ARM指令格式ARM体系结构与指令集立即寻址也叫立即数寻址,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。例如,以下指令:
ADDR0,R0,#1 ;R3←R0+1
立即数的表示以“#”为前缀,十六进制的立即数在“#”后面加“&”符号,以二进制表示的立即数,要求在“#”后加上“%”。立即寻址ARM体系结构与指令集指令地址码给出寄存器的编号,寄存器中的内容为操作数,这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。例如,以下指令:
ADDR0,R1,R2 ;R0←R1+R2
写操作数的顺序为:第1个寄存器R0为结果寄存器,第2个寄存器R1为第1操作数寄存器,第3个寄存器R2为第2操作数寄存器。寄存器寻址ARM体系结构与指令集寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如,以下指令:
LDRR0,[R1] ;R0←[R1]STRR0,[R1] ;[R1]←R0
第1条指令将以R1的值为地址的存储器中的数据传送到R0中。第2条指令将R0的值传送到以R1的值为地址的存储器中。
寄存器间接寻址
ARM体系结构与指令集基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地址单元。包括基址加偏移量寻址和基址加索引寻址,可以将寄存器间接寻址看做是位移量为0的基址加偏移量寻址。前索引寻址举例:
LDRR0,[R1,#4] ;R0←[R1+4]
后索引寻址举例:
LDRR0,[R1],#4 ;R0←[R1] ;R1←R1+4带自动索引的前索引寻址举例:LDRR0,[R1,#4]! ;R0←[R1+4] ;R1←R1+4基址加索引寻址举例:
LDRR0,[R1,R2] ;R0←[R1+R2]
基址变址寻址
ARM体系结构与指令集多寄存器寻址是指一次可以传送多个寄存器的值,允许一条指令可以传送16个寄存器的任何子集。例如,以下指令:
LDMIAR0,{R1,R2,R3,R4} ;R1←[R0]
;R2←[R0+4]
;R3←[R0+8]
;R4←[R0+12]
多寄存器指令的后缀含义如下:I:IncrementD:DecrementA:AfterB:Before该指令的后缀IA表示在每次执行完加载/存储操作后,R0按字长度增加,因此,指令可将连续存储单元的值传送到R1~R4。多个连续的寄存器可以用“-”符号连接;不连续的寄存器用“,”分隔书写,如上例可写成:
LDMIAR0,{R1-R4}LDMIAR0,{R1-R3,R4}多寄存器寻址ARM体系结构与指令集移位操作包括如下5种类型。LSL:逻辑左移(LogicalShiftLeft)。寄存器中字的低端空出的位补0。LSR:逻辑右移(LogicalShiftRight)。寄存器中字的高端空出的位补0。ASR:算术右移(ArithmeticShiftRight)。算术移位的对象是带符号数。在移位过程中必须保持操作数的符号不变。若源操作数为正数,则字的高端空出的位补0;若源操作数为负数,则字的高端空出的位补1。ROR:循环右移(ROtateRight)。从字的最低端移出的位填入字的高端空出的位。RRX:扩展为1的循环右移(RotateRighteXtendedby1place)。操作数右移1位,空位(位[31])用原C标志填充。寄存器移位寻址ARM体系结构与指令集与基址变址寻址方式相类似,相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。以下程序段完成子程序的调用和返回,跳转指令BL采用了相对寻址方式:
BLLOOP ;跳转到子程序LOOP处执行……LOOP……MOVPC,LR ;从子程序返回相对寻址ARM体系结构与指令集堆栈是一种数据结构,按先进后出(FirstInLastOut,FILO)的方式工作,使用一个称为堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(FullStack),而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(EmptyStack)。同时,当堆栈由低地址向高地址生成时,称为递增堆栈(AscendingStack),当堆栈由高地址向低地址生成时,称为递减堆栈(DecendingStack)。这样就有4种类型的堆栈工作方式,ARM微处理器支持这4种类型的堆栈工作方式。堆栈寻址ARM体系结构与指令集满递增堆栈(FA):堆栈指针指向最后压入的数据,且由低地址向高地址生成。②满递减堆栈(FD):堆栈指针指向最后压入的数据,且由高地址向低地址生成。③空递增堆栈(EA):堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。④空递减堆栈(ED):堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。堆栈寻址ARM体系结构与指令集ARM处理器的指令按功能可分为7大类:加载/存储指令(包括批量加载/存储指令)、分支指令、数据处理指令、乘法指令、状态寄存器访问指令、异常中断指令和协处理器指令。
ARM指令集
ARM体系结构与指令集(1)LDR指令格式:LDR目的寄存器,<存储器地址>功能:LDR指令用于从存储器中将一个32位的字数据传送到目的寄存器中。该指令通常用于从存储器中读取32位的字数据到通用寄存器,然后对数据进行处理。当程序计数器PC作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。该指令在程序设计中比较常用,且寻址方式灵活多样。
LDRR0,[R1] ;将存储器地址为R1的字数据读入寄存器R0LDRR0,[R1,R2] ;将存储器地址为R1+R2的字数据读入寄存器R0LDRR0,[R1,#8] ;将存储器地址为R1+8的字数据读入寄存器R0LDRR0,[R1,R2,LSL#2]!;将存储器地址为R1+R2×4的数据读入寄存器R0,并将新地址R1+R2×4写入R1LDRR0,[R1],R2,LSL#2;将存储器地址为R1的字数据读入寄存器R0,并将新地址R1+R2×4写入R1
加载/存储指令ARM体系结构与指令集(2)LDRB指令格式:LDRB目的寄存器,<存储器地址>功能:LDRB指令用于从存储器中将一个8位的字节数据传送到目的寄存器中,同时将寄存器的高24位清零。该指令通常用于从存储器中读取8位的字节数据到通用寄存器,然后对数据进行处理。当程序计数器PC作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。
LDRBR0,[R1];将存储器地址为R1的字节数据读入寄存器R0,并将R0的高24位清零加载/存储指令ARM体系结构与指令集(3)LDRH指令格式:LDRH目的寄存器,<存储器地址>功能:LDRH指令用于从存储器中将一个16位的半字数据传送到目的寄存器中,同时将寄存器的高16位清零。该指令通常用于从存储器中读取16位的半字数据到通用寄存器,然后对数据进行处理。当程序计数器PC作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。加载/存储指令ARM体系结构与指令集(4)STR指令格式:STR源寄存器,<存储器地址>功能:STR指令用于从源寄存器中将一个32位的字数据传送到存储器中。该指令在程序设计中比较常用,且寻址方式灵活多样,使用方式可参考指令LDR。
STRR0,[R1],#8;将R0中的字数据写入以R1为地址的存储器中,并将新地址R1+8写入R1加载/存储指令ARM体系结构与指令集(5)STRB指令格式:STRB源寄存器,<存储器地址>功能:STRB指令用于从源寄存器中将一个8位的字节数据传送到存储器中。该字节数据为源寄存器中的低8位。加载/存储指令ARM体系结构与指令集(6)STRH指令格式:STRH源寄存器,<存储器地址>功能:STRH指令用于从源寄存器中将一个16位的半字数据传送到存储器中。该半字数据为源寄存器中的低16位。加载/存储指令ARM体系结构与指令集格式:LDM(或STM){类型}基址寄存器{!},寄存器列表{∧}功能:LDM(或STM)指令用于从由基址寄存器所指示的一片连续存储器到寄存器列表所指示的多个寄存器之间传送数据,该指令的常见用途是将多个寄存器的内容入栈或出栈。其中,{类型}为以下几种情况。IA:每次传送后地址加1。IB:每次传送前地址加1。DA:每次传送后地址减1。DB:每次传送前地址减1。FD:满递减堆栈。ED:空递减堆栈。FA:满递增堆栈。EA:空递增堆栈。批量加载/存储指令ARM体系结构与指令集{!}为可选后缀,若选用该后缀,则当数据传送完毕之后,将最后的地址写入基址寄存器,否则基址寄存器的内容不改变。基址寄存器不允许为R15,寄存器列表可以为R0~R15的任意组合。{∧}为可选后缀,当指令为LDM且寄存器列表中包含R15,选用该后缀时表示除了正常的数据传送之外,还将SPSR复制到CPSR。同时,该后缀还表示传入或传出的是用户模式下的寄存器,而不是当前模式下的寄存器。
STMFDR13!,{R0,R4-R12,LR};将寄存器列表中的寄存器(R0,R4到R12,LR)存入堆栈LDMFDR13!,{R0,R4-R12,PC};将堆栈内容恢复到寄存器(R0,R4到R12,LR)批量加载/存储指令ARM分支指令也称跳转指令,用于实现程序流程的跳转,在ARM程序中有如下两种方法可以实现程序流程的跳转:使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 某公司员工培训
- 2024-2025学年江西省“三新”协同教研共同体高二下学期5月联考历史试题(解析版)
- 2026年网络信息安全知识与应对能力考查题集
- 2026年语言学习考试汉语言文化基础试题
- 2026年汽车制造汽车工程师招聘面试题集与汽车工艺知识问答
- 2026年计算机网络安全防护措施考试题
- 2026年金融科技产品创新与市场需求分析题库
- 2026年公共关系与危机处理能力测试题目
- 2026年知识产权保护试题侵权行为与法律责任分析题库
- 2026年AI与自然语言处理测试题
- 依法行医教学课件
- 《日语零基础学习》课件
- 讲课学生数学学习成就
- 医疗器械法规对互联网销售的限制
- 西葫芦栽培技术要点
- 系杆拱桥系杆预应力施工控制要点
- 高中学生学籍表模板(范本)
- 三亚市海棠湾椰子洲岛土地价格咨询报告样本及三洲工程造价咨询有限公司管理制度
- 常见磁性矿物的比磁化系数一览表
- 高中心理健康教育-给自己点个赞教学课件设计
- 薪酬管理论文参考文献,参考文献
评论
0/150
提交评论