cvt-a8iii arm体系结构与接口技术_第1页
cvt-a8iii arm体系结构与接口技术_第2页
cvt-a8iii arm体系结构与接口技术_第3页
cvt-a8iii arm体系结构与接口技术_第4页
cvt-a8iii arm体系结构与接口技术_第5页
已阅读5页,还剩200页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章ARM开发环境的搭 安装gcc编译工 安装tools工 安装JLink工 安装 连接JLinkGDBServerCL调试工 第2章嵌入式ARM技术概 ARMARM技术特 StrongARM和Xscale处理器系 第3章ARM微处理器指令系 数据处理指令寻址方式...........................- 第5章GPIO编 GPIO功能介 S5PV210的GPIO控制器详 特 GPIO分组预 GPIO功能描 GPIO数据寄存 第6章片选控制方 S5PV210步进电机控制实 第7章串行通讯接 第8章键盘工作原 第9章液晶触摸 S5PV210触摸屏控制实 开发环境的安Cortex-ACPUEclipseforARM作为开发软件。 -安装gcc编译工具 为:D:\Program安装tools工具打 yagarto- -setup.exe,安装过程如下打开Setup_JLink_V469.exe。安装过程如下:在Jlink工具的安 安装jre-6u7-windows-i586-p-eclipse打开eclipse_c,设置过程如下: 仿真器驱动的安装Jlink仿真器用USB线连接到电脑上,等待自动安装Jlink指定一个工程存放EclipseforARM个工

创建一的名字单击Finish即可创建一个新的工程,建议对每个新建工程使用独立的文件夹。新建一个MakeFile文件然后选择所要指定的工程后,在文件名选框中输入文件名MakeFile单击Finish。新建一个文单击File->New->Other在弹出的框中的General下单击file,然后单击Next,然后选择所要指定的工程后,在文件名选框中输入文件名s5pc210.init,单击Finish。新建一个汇编源文件单击File->New->Other在弹出的框中的General下单击file,然后单击Next,然后选择所要指定的工程后,在文件名选框中输入文件名led.s,单击Finish。编译工程.section.globl @setgpiogpg3outputmode

arm-none-eabi-gcc-4.6.2-O0-g-c-oled.oled.sarm-none-eabi-ldled.o-Ttext0x -oled.elfarm-none-eabi-objcopy-Obinary-Sled.elfled.binarm-none-eabi-objdump-Dled.elf>led.dis在s5pc210.init文件如输入如下信息targetremo monitorhaltmonitorarmmcr150100monitorstep 的调试工程的原理及过”配置调试工具在Eclips的菜单中单击Run–>DebugConfigurations弹出如图1.3在Main选项卡中Project框中,点击Browse选择led工程,在C/C++Application中单击Browse找到工 下的led.elf文件在Debugger选项卡中main中GDBDebugger中单击Browse选择前面安装的C:\ProgramFiles\yagarto\bin\arm-none-eabi-gdb.exe(这里选择自己的安装GDBCommandfile中选择自己工程目录下的s5pc100.init文件。2章嵌入式ARM寄存器组织SSAMSUNGS5PV210 体系结构的技术特征及发展ARMAdvancedRISCMachines)3种含义,它是一个公司的名称,是一类微处理器的通称,还是一种ARM1991年ARM公司(AdvancedRISCMachineLimited)成立于英国,最早由Arcon、Apple和合资成立,主要出售设计技术的,1985年4月26日,第一个ARM原型在英国的Acom计算机诞生(在VLSI公司制造。目前,ARM架构处理器己在高性能、低功耗、低成本的嵌入式应用ARM12人,经过多年的发展,ARM技术的微处理器应用约占据了32位RISC微处理器80%以上的市场份额,其中,在市场,ARM占有绝对的地位。可以说,ARM技术正在逐步渗入到人们生活中的各个方面,而且随着32位CPU价格的不断下降和开发环境的不断成熟,ARM技术会应用得越来越广泛。公司本身并不直接从事生产,而是靠转让设计由合作公司生产各具特色的,世界各大半导体生产商从ARM公司其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的电路,从而形前,全世界有几十家大的半导体公司都使用ARM公司的,其中包括In 、IBM、SAMSUNG、LG半厂商、软件的支持,又使整个系统成本降低,使产品更容易进入市场并被消费者所接受,ARMARM的成功,一方面得益于它独特的公司模式,另一方面,当然来自于ARM处理器自身的优良性能。作为一种先进的RISC处理器,ARM处理器有如下特点。RISC(ReducedInstructionSetComputer)是精简指令集计算机,RISC把着眼点放在如何使计算机的结构更加简单和如何使计算机的处理速度更加快速上。RISC选取了使用频率最码控制。这些特点使得RISC非常适合嵌入式处理器。传统的复杂指令级计算机(CISC)CISC指令及处理器的硬件结构变得更复杂。这些会导致成本、体积的増加,影响其在嵌入式产品的应用。如表所示描述了RISC和CISC之间的主要区别。Load/Store构ARM要遵循这一体系结构。ARM体系结构为嵌入系统发展商提供很高的系统性能,同时保持优717ARM体系的指令集功能不断扩大,不同系列的1v1在目前的版本中己不再使用这种结构。2v2v1结构的ARM处理器相比,v2架构的ARM处理器的指令结构要有所完善,比如増加了乘法指令并且支持协处理器指令,该版本的处理器仍然采用26位的地址空间。3v3v3结构开始,ARM32位的地址空间,指令结构相对前面的两种结构也所完善。4v4且有了T变种v4TThumb16Thumb指令集。属于v4T(Thumb指令)、ARM720TARM7TDMI核的处理器、ARM740TARM7TDMI核的处理器ARM9TDMI、ARM910T(ARM9TDMI核的处理器、ARM920T(ARM9TDMI核的处理器ARM940T(ARM9TDMI核的处理器)和StrongARM(In公司的产品5v5v5ARMARMThumbDSP指令(v5E架构、Java指令(v5J架构)v5T(Thumb指令)体系结构的处理器(核)ARM10TDMI和ARM1020T(ARM10TDMI核处理器。可综合版本、ARM946(ARM9E核的处理器、ARM966(ARM9E核的处理器、ARM10E、ARM1020E(ARM10E核处理器ARM1022E(ARM10E核的处理器和Xscale(In 属于v5TEJ(支持ThumbDSP指令、Java)体系结构的处理器(核有ARM9EJARM9EJ-S(ARM9EJ可综合版本、ARM926EJARM9EJ核的处理器)ARM10EJ。6、v6架构v6架构是在2001年发布的,在该版本中増加了指令,属于v6体系结构的处理器核有ARM1K2002年发布v6体系结构包含ARM4种特殊指令集:Thumb指令(T、DSP指令(E、Java指令(J)Media指令。7v7ARMv7ARMv6Thumb-2技术,它是在ARMThumbARM解决方案的完Thumb38°%的性能。ARMv7架构还采用了NEON技术,将DSP和处理能力提高了近4倍。并支持改良的浮点运算,满足下一代3D图形、游戏物理应用及传统嵌入式控制应用的需求。Cortex系列处理器是基于ARMv7Cortcx-M3、Cortex-RCortex-A3类。本章的2.28节将会例举一些Cortex的特性。8v8ARMv832位ARM64位数据ARMv8架构包含两个执行状态:AArch64AArch32AArch6464位处理技术,引入了一个全新指A64,可以存取大虚拟地址空间;而AArch32执行状态将支持现有的ARM指令集。目前的ARMv7ARMv8TrustZone技术、虚拟化技术及NEONadvancedSIMD技术等。ARM独一个产品系列,是专门为而设计的。ARMARM10EARM11ARM11SecurCore2.2.12.2.1ARM9ARM919975级指令流水线,ARM9处理器能够运行在比ARM7更高的时钟频率上,改善了处理器的整体性能;器系统根据哈佛体系结构(程序和数据空间独立的体系结构)重新设计,区分了数据总线和指令总线。统上。该系列中的ARM922T是ARM920T的变种,只有一半大小的数据指令Cache。它是针对不要求运行操作系统的应用而设计的。ARM920TARM940T都执行v4T架构指令。ARM9EARM9系列的下一代处理器基于ARM9E-S内核,这个内核是ARM9内核带有E扩展的试对时间敏感的程序段时,这种方法非常重要。ARM946E-S包括TCM(TightlyCoupledMemory,紧耦合器Cache和一个MPU。TCMCache的大小可配置。该处理器是针对要求有确定的实时响应的嵌入式控制而设计的。ARM966E-S有可配置的TCM,但没有MPUCache扩展。ARM9系列的ARM926EJ-S2000年。它是针对小型便携式Java设备,如3G和PDA应用而设计的。ARM926EJ-S是第一个包含Jazelle技术,Java字节码执行的ARMMMUTCM及具有零或非零等待器的数据/指令Cache。ARM9E系列处理器主要应用于下面一些场合:汽车、通信和信息系统的ABS2.2.32.2.3ARM11ARM1136J-S2003年,是针对高性能和高能效应而设计的。ARM1136J-S是第一ARMv6Load/Stroe8级流水线。ARMv6指令包含了针对处理的单指令流多数据流扩展,采用特殊的设计改SecurCore处理器系列SecurCore32RISC技术的安全解决方案。SecurCore即提供了安全解决方案支持。下面总结了SecurCore系列的主要特点:SecurCoreSC100、SC110、SC200SC210SecurCore系列处理器主要应用于一些安全产品及应用系统,包括电子商务、电子银行业务、网络、移动和认证系统等。StrongARMXscaleStrongARM处理器最初是ARMDigitalSemiconductor公司合作开发的,现在由In公司单独,在低功耗、高性能的产品中应用很广泛。它采用哈佛架构,具有独立的数据和指令CacheMMUStrongARM5ARM处理器,但它不支持Thumb指令集。卖给了Marvell公司。运算能力几乎与PentiumIII1GHz处于同一水准(PentiumIII1GHz2700DhrystoneMIPS。多设计的优点是这一点很适合未来家庭消费电子的需要。例如,机顶盒在录制多个频道电视的同时,还可通过互联网收看数字点播;车内导航系统在提供导航功能的同时,可以向后座乘客提供各类信息等。在这类应用环境下,多结构的嵌入式处理器将表现ARMv7ARMv6Thumb-2技术,它是在ARMThumbARM解决方案的完能够提供比己有的基于Thumb技术的解决方案高出38%的性能。ARMv7架构还采用了NEON技术,将DSP和处理能力提高了近4倍。并支持改良的浮点运算,满足下一代3D图形、游戏物理应用及传统嵌入式控制应用的需求。此外,ARMv7还支持改良的运行ARM处理器软件兼容性方而,ARMv7架构在设计时充分考虑到了。ARMCortex-MThumb-2指令集(Thumb指令集的扩展集ARMCortex-M系列处理器所写的用ARMCortex-RARMCortex-M系列系统代码(如实时操作系统)可以很容易地移植到基于ARMCortex-R系列的系统上。ARMCortex-A和v7CortexARMv7架构ARMCortexv7A的称为“Cortex-Av7R的称为“Cortex-Rv7M的称为“Cortex-M3ARMCortex-M3处理器是为器和处理器的尺寸对产品成本影响极大的各种应用专外设还具备高度集成化特点,集成了许多紧耦合系统外设,合理利用了空间,使系统NestedVectoredInterruptControllerArbiter总线。该技术方案在测试和实例应用中表现出较高的性能:在台机电180nm工艺下,性能达1.2DMIPS/MHz,时钟频率高达100MHz。Cortex-M3处理器还实现了Tail-Chaining121.25DMIPS/MHz(0.9DMIPS/MHzARM71.1DMIPS/MHzARM9相比Cortex-R4处理器支持、硬盘、及设计,能协助新一代嵌入式产品快速执行各种复杂的控制算法与实时工作的运算;可通过内存保护单元(MemoryUnit,MPU且不影响基本的ARM指令集兼容性。这种设计能够在沿用原有程序代码的情况下,降低系Cortex-R4处理器采用ARMv7体系结构,让它能与现有的程序维持完全的回溯兼容性,Thumb-2指令进行最佳化设计。此项特性特色带入移动与汽车产品的设计;更复杂的算法支持更高性能的数码影像与内建硬盘的系统。运用Thumb-2指令集,加上RealView开发套件,使器的容量最多降30%,大幅降低系统成本,其速度比在ARM9tt6E-S处理器所使用的Thumb指令集高出片制造商运用这款处理器开发各种SoC(SystemonaChip)器件。相比于前几代的处理器,Cortex-R4处理器高效率的设计方案,使其能以更低的时钟达Advantagelmm2,0.27mW/MHz,并能提供超过600DMIPS的性能。Cortex-R4处理器在各种安全应用上加入容错功能和内存保护机制,支持版OSEK模块,以及CoreSight除错与追踪技术,协助设计者迅速开发各种嵌入式系统。ARMCortex-A8处理器是一款适用于复杂操作系统及用户应用的应用处理器,支持智能Thumb-2NEON信号处理扩加速技术,对实时(JTT)(DAC)提供最优化,同时减少内存占用空间高达3倍。该处理器配置了先进的量体系结构流水线,能够同时执行多条指令。处理器集成了一个可调尺寸的二级高速缓冲器,能够同高速的16KB或者32KB—级高速缓冲器一起工作,从而达到最快的速度和最大的吞吐量。新处理器还配置了用于安全交易和数字管理的TrustZone技术,以及实现低功耗管理的IEM功能。水线进行和信号处理。在使用小于4mm2的娃片及低功耗的65nm工艺的情况下,Cortex-A8600MHz(NEON追踪技术和二级高速缓冲器90nm65nm工艺下,Cortex-A81GHz,能够2.2.8ARM应用处理器发展现从之前的ARM单核逐步向双核演变。作为对比,下面依次将近年来最尖端的应核智能ME860及LGOptimus2X上。SII智能。TI的OMAP4430及OMAP4460双核ARM处理,己应用在LGOptimus3D(1.5GMali系列由ARM,Mali-400Mali-T658于2011年11月推出,支持OpenGLPowerVRSGX系列由ImaginationTechnologies公司,包括PowerVRSGX530/535/540/543MP,支持DirectX9、SM3.0和OpenGL2.0。SGX535被苹果公司的4和iPadSGX540GalaxyTabM9上采用。SGX543MP作为新一代最强新品,目前己成为苹果iPad2(SGX543MP2/双核)和索尼NGP(SGX543MP4/四核)的图形内核。Adreno系列由高通公司,主要配合SnapdragonCPU使用。旗下典型方案宣布将有3倍的图形性能提升。这12个处理的GeForceGPU专门为下一代移率环境。典型处理器方案有NVIDIATegra2和NVIDIATegra3。支持大RAM,支持大数据量的介质高速度,高精度,并且容量也很高,己属于高速硬件之一。ARMARM内核采用RISC体系结构。ARMALU操ARM指令集,包括在编程模式中増加了新的寄存器和数以高密度16位压缩形式表示指令集。 微处理器的应用选型随着国内嵌入式应用领域的发展,ARM必然会获得广泛的重视和应用。但是由于开发在选择方案时会有一定的。所以对ARM做对比研宄是十分必要的。 选择的一般原虑处理的价格,及由处理器衍生出的开发价格。如开发板价格、处理器自身价格、芯低开发风险。在自己熟悉的处理器都功能的情况下,可以尽量选择开发资源丰富理器对操作系统的支持。很多产品在开发完成后都会升级的问题,正所谓人无远虑必有近忧。所以在选择选择一款适合ARM教学的资源等方面考虑。1ARMWindowsCELinuxARM720T以上带有MMU(MemoryManagementUnit)功能的ARM,ARM720T、StrongARM、Cortex-A系MMUARM7TDMIMMUWindowsCE和大部分的Linux。目前,uCLinuxLinux2.6内核等Linux系统不需要MMU的支持。系统时钟决定了ARM的处理速度。ARM7的处理速度为0.97MIPS/MHz,常见的名是否否否是否否否否是否否否否否是4、USBUSB接口产品的使用越来越广泛,许多ARM内置USB控制器,有些甚至同时有USBHost和USBSlave控制器。表显示了内置USB控制器的ARM。ARMUSBUSB121211115、GPIO用的GPIO数量。ARM内核只提供快速中断(FIQ)和标准中断(IRQ)两个中断向量。但各个半导体厂家在设计时加入了自己定义的中断控制器,以便支持诸如串行口、外部中断、时钟中断等硬件中断。外部中断控制是选择时必须考虑的重要因素,合理的外部中断设计可PHILIPSSAA7750,GPIO都可以设置成信号的场合必须用查询方式,浪费大量CPU时间。8、nWAIT(等的RTC直接提供年月日时分秒格式。和手持式显示记录设备时,选用内置LCD控制器的ARM(如S3C2410)较为适宜。 12、ADC监测等。PHILIPS的SAA7750更是内置了一个16位声音频ADC和DAC,并且带耳机驱8位、1632位。为某些特殊应用设计的ARM(如德国Micronas的PUC3030A)没有外部扩展功能。14、UART几乎所有的ARM都具有1〜2个UART接口,可以用于和PC通信或用Angel进行调试。一般的ARM通信波特率为115200bit/s,少数专为蓝牙技术应用设计的ARM芯UART通信波特率可以达到920kbit/s,如Linkup公司L7205。ARM的耗电量与工作频率成正比,一般ARM都有低功耗模式、睡眠模式和17、DMA有些ARM 集成DMA(DirectMemoryAccess)接口,可以和硬盘等外部设备高速交换数据,同时减少时对CPU资源的占用。另夕卜,可以选择的功能部件还有HDLCSDLCCD-ROMDecoderEthernetMAC、VGAcontroller和DC-DC。可以选择的内置接口有:IIC、SPDIF、CAN、SPI、PCI和LBGA等形式,BGA封装具有面积小的特点,可以减少PCB的面积,但是需要的焊接设备,无法手工焊接。另外,一般BGA封装的ARM无法面板完成PCB布线,需要多层PCB板布线。过综合考虑,本书教学选取的是三星公司的S5PV210。S5PV210是一款基于Cortex-A8的微处理器。本章的后面部分章节将对Cortex-A8的一些特性及S5PV210进行详细 功能及特Cortex-A8处理器是一款高性能、低功耗的处理器,并支持Cache、虚拟存取,它完全执行v7-A具有一个NEON技术下执行SIMD/VFP16KB/32KB1CacheARMARM采用的是32位架构,ARM的基本数据类型有以下3图2-1 器组织结器可以看做是序号为0〜232-1的线性字节阵列。如图2-1所示为ARM器的组144的倍数的字节地址(地址最末2n-1的非负数,通常使用二进制格式。Load/Store数据传输指令可以从器存取传输数据,这些数据可以是字节、半字、浮点数据类(此异)在软件中实现,但是其中的一小部分也可以由浮点运算协处理器FPA10ARMC语言编写的浮点库作为ARM浮点指令集的替代方法(Thumb。该库支持IEEE标准的单精度和双精度格式。C器大/的。ARM支持大端模式(big-endian)和小端模式(little-endian)两种内存模式。LDRBr2, 小端模式下:r2=0x44数据的低位,而在小端模式下,数据的低位放在内存中的低地址。要对待器中一Cortex-A8内核工作模式Modes程序可以所有的系统资源,也可以任意地进行处理器模式切换。其中以下6种又称为(FIQ (IRQ (Abort受操作系统保护的一些系统资源,应用程序也不能直接进行处理器模式切换。当需要切换。这种体系结构可以使操作系统系统资源的使用。一组寄存器以供相应的异常处理程序使用,这样就可以保证在进入异常模式时用户模式下的寄存器(保存程序运行状态)不被破坏。ARM系统有非常灵活的体系结构,可以适应不同的嵌入式应用系统的需要。ARM器系统可以使用简单的平板式地址机制(就像一些简单的单片机一样,地址空间CacheROM/Flash中,这样系统断电后程序能够得到保存。但ROM/FlashSDRAMARM的嵌入式系统中通常把异常中断向量表放在RAM中。利用内存机制可以满足这种需要。在系统加电时,将ROM/Flash为地址0,这样可以进行一些初始化处理;当这些初始化处理完成后将果。在简单系统中,不存在这样的问题。而当系统引入了Cache和writebuffer后,统控制协处理器(SystemControlCoprocessor。ARM的器系统是由多级构成的,可以分为内核级、级、板卡级、外设级。如图所示为器的层次结构。在处理器内核中,在系统中提供最快的器。典型的ARM处理器有多个32位寄存器,其时间为ns量级。要求确定行为的实时算法是很重要的。TCM位于器地址中,可作为快速器。(3)级的片上Cache器的容量在8KB〜32KB之间,时间大约为10ns。高100ns。协处理器ARM16ARM处运算。CP15即通常所说的系统控制协处理器(SystemControlCoprocessor,它负责完成大部分的系统管理。除了CP15外,在具体的各种管理机制中可能还会用到其他一些技术,如在MMU中除了CP15外,还使用了页表技术等。作指令将被视为未定义指令,指令的执行结果不可预知。CP15包含16个32位寄存器,其为0〜15。实际上对于某些的寄存器可能对管理单元个过程。较高级的操作系统采用基于硬件的管理单元(MMU)来实现上述操作。MMU提供的一个关键服务是使各个任务作为各自独立的程序在自己的私有空间MMU的操作系统控制下,运行的任务无须知道其他与之无关的任务的需求情况,这就简化了各个任务的设计。成一个独立于系统物理器的空间。MMU作为转换器,将程序和数据的虚拟地址(编译时的连接地址)许运行的多个程序使用相同的虚拟地址,而各自在物理器的不同位置。这样器就有两种类型的地址:虚拟地址和物理地址。虚拟地址由编译器和连接器在定位程序时分配;物理地址用来实际的主存硬件模块(物理上程序存在的区域。髙速缓冲器Cache是一个容量小但存取速度非常快的器,它保存最近用到的器数据副本。CacheCache通常与处理器在同一上实现。Cache能够发挥作用是因为程序具有局部性。所谓局部性就是指在任何特定的时间,处理器趋于对相同区域的数据(如堆栈)多次执行相同的指(FIFO)器,位于处理器核与主存之间。使用写缓存的目的是,将处理器核和Cache通过引入Cache和写缓存区,系统的性能得到了很大的提高,但同时也带来了一流水线流水线的概念与原(e(decode(ALU(mem(resALU4步中用到。因此,如果一条指令不是一条指令结束之前就开始,那么在每一步骤内处理器部分的硬件在使用。有法可以明显改善硬件资源的使用率和处理器的吞吐量,这就是在当前一条指6流水线的分号。在这一级,指令占有译码逻辑,不占用数据通路。(latencyARM7为止,在ARM3级流化流水线每一级的逻辑,流水线的级数就要增加。CPI3ARM中多13级流水线ARM核在每一个时钟周期都器,或者取指令,或者传输数据。只是抓紧器不用的几个周期来改善系统性能,效果并不明显。为了改善CPI,器中给出多于32位数据,或者为指令或数据分别设置器。基于以上原因,较高性能的ARM核使用了5级流水线,而且具有分开的指令和数分开的指令和数据器使核的CPI明显减少。堆中有3个操作数读端口,因此,大多数ARM指令能在1个周期内其操作数。地缓冲1个时钟在程序执行过程中,PC3级流水线操作特性的。51级来++PC4等于当前指令的PC+8,因此,未使用额外的硬件便得到了正确的R15。Cortex-A813级的流水线,但是由于ARM公司没有对其中的技术公开任何ARMCortex系列,ARM处理CPU的取指指令和地址关系,不管是几级流3PC位置。这样做主要还是为了软件兼容性上的考虑,由此可以判断的是,后面ARM所推出的处理都想满足这指令的操作数。例如下指令序列:LDRLDRADD时还没有产生。第2条指令必须停止,直到结果产生为止。而必须推迟。但是,当跳转指令被译码时,在它被确认是跳转指令之前,后续的取指操作己经发生。这样一来,己经被预取进入流水线的指令不得不被丢弃。如果跳转目标的计算是在ALU阶段完成的,那么在得到跳转目标之前己经有两条指令按原有指令流。6个状态寄存器:1CPSR(CurrentProgramStatusRegister,当前程序状态寄存器),6个SPSR(SavedProgramStatusRegister,备份程序状态寄存器)。1PC(ProgramCounter,程序计数器图2-6所示列出了ARM处理器的寄存器组织概要。相应的R0〜R12R13StackPointer,SP,栈指向)R14theLinkRegister,LR,链路寄1、未分组寄存器R8〜R14是分组寄存器,它们每一个的物理寄存器取决于当前的处理器模式。R8R9R8_fiq、R9_fiq;R8和R9R8_usr、R9_usrARM体系结构中,R8〜R12没有任何指定的其他的用FIQ模式常被用来处理一些时间紧急的任务,如DMA处理。R13和R146个不同的物理寄存器。其中的一个是用户模式和系统模式公用的,而另外5个分别用于5种异常模式。时需要指定它R13寄存器在ARM处理器中常用做堆栈指针,称为SP。当然,这只是一种用法,并没有任何指令强制性的使用R13作为堆栈指针,用户完全可以使用其他寄存器作为堆栈R13R13,使其指向该异常模式的栈地址。在异常处理程序处,将用到的其他寄存器的值保存在堆栈中,R14又被称为连接寄存器(LinkRegister,LR)ARM体系结构中具有下面两种R14R14的值复制到程序计数器(PC。典型的做法是使用下列两种方法之一。 MOVPC,LRBX STMFDSP!, LDMFDSP!, R14的值可能与返回地址有一个常数的偏移量(如数据异常使用SUBPC,LR,#8返回令稍微有些不同,以保证当异常出现时正在执行的程序的状态被完整保存。程序状态寄存器当前程序状态寄存器(CurrentProgramStatusRegister,CPSR)可以在任何处理器模式Register,SPSRCPSR寄存器(和保存它的SPSR寄存器)Negative(Zero测以决定指令是否执行。N=1表示运算的结果为负数,N=0表示结果为正数或零。数运算发生上溢出;其他情况下C=0。生下溢出,则C=0;其他情况下C=1。位寄存器最后移出去的位。4)时,且运算结果超出了有符号运算的范围是溢出。V=1表示符号位溢出。CV的定义看起来颇为复杂,但使用时在大多数情况下用一个简单的条件测试指令即可,不需要程序员计算出条件码的精确值即可得到需要的结果。2QQSPSRbit[27]Q标志位,用于在异常中断发生时保存和恢复CPSR中的Q标志位。相应的变化。另外,如果在模式下,也可以通过软件编程来修改这些位的值。 I=1,IRQ F=1,FIQ被始终为0。了其具体含义。只有表中列出的组合是有效的,其他组合无效。M[4:PC,R14irq〜R13irq,R12〜R0,CPSR,SPSRPC,R14〜R0,CPSRARMv4及更高版本E表示大小端控制位,0表示小端操作,1表示大端操作。注意,该位在预取阶段是被GE[19-16]SIMD指令集中的大于、等于标志。在任何模式下该位S5PV210处理器介绍S5PV210的内核达1GHz,适合于对成本和功耗敏感的需求。同时它还米用了AMBA(AdvancedMicrocontrollerBusArchitecture)MMUAMBABUS、Harvard的得32位的系统性能。S5PV210还采取了64位的总线架构,并包括许多性能强大的加速硬件,例如针对于图形图像加速、显示、伸缩裁剪、集成的多格式编码(MFC),硬件加速还支持实时会议、模拟电视输出、、PAL等。以及对MPEG2/VC1/DIVx 的,最大支持720p/30帧每秒。USB1.1HOST第3ARM微处理器指令本章主要介绍ARM 处理器的寻址方式数据处理指令寻址方式 123<Rm>,LSL4<Rm>,LSL5<Rm>,LSR6<Rm>,LSR7<Rm>,ASR8<Rm>,ASR9<Rm>,ROR<Rm>,ROR8bit4bit偶数位(0,2,4,„,26,28,30)8bit的常数XY,得到的立即数=X循环右(2×Y 、ALU之前,可以事先经过桶形移位寄存器的处理。预处理和移位内存指令寻址方1、字及无符号字节的Load/Store指令的寻址方式 123456789杂类Load/Store指令的寻址方式。使用该类寻址方式的指令包括(有符号/无符号)半字Load/Store 123456Load/Store指令将一片连续内存单元的数据加载到通用寄存器中将一组通用寄存 1234根据不同的寻址方式,将堆栈分为以下4种。locationlocationLPU100101110111000001010011ARM数据操作指令结果更新CPSR中相应的条件标志位。调用代码,方法是把连接寄存器的内容传送到R15。当PC(R15)用做目的寄存器时,可以实现程序跳转。如“MOVPC,LR”,所以这种跳转B,BL理器模式的SPSR寄存器的内容到CPSR中。这种指令“MOVEPCLR”可以实现从MVN更新CPSR中相应的条件标志位。(1)指令举例如下作,并将结果保存到寄存器Rd中,同时根据操作的结果更新CPRS寄存器。EOR(ExclusiveOR)指令将寄存器Rn中的值和shifter_operand的值执行按位“异或”操作,并将执行结果到目的寄存器Rd中,同时根据指令的执行结果更新CPSR中相应到目标寄存器Rd中,并根据指令的执行结果设置CPSR中相应的标志位。R0=R1-256R0=R2-结果保存到目标寄存器RdCPSR中相应的标志位。下面的指令序列可以求一个64位数值的负数。64位数放在寄存器R0与R1中,其负数R2R3R0R232ADD指令将寄存器shifter_operand的值加上Rn表示的数值,并将结果ADC指令将寄存器shifter_operand的值加上Rn表示的数值,再加上CPSR中的C条件标志位的值,将结果保存到目标寄存器Rd中,并根据指令的执行结果设置CPSR中相应的标志这样就可以做比32位大的加法。下面的例子将加两个128位的数。128位结果:寄存器R0、R1、R2R3。128R4、R5、R6R7。SBC(SubtractwithCarry)指令用于执行操作数大于32位时的减法操作。该指令从寄存器Rn中减去shifter_operand表示的数值,再减去寄存器CPSRC条件标志位的反码[NOT(CarryflagRdCPSR(R1,R0RSC(ReverseSubtractwithCarry)指令从寄存器Rn中减去shifter_operand中减去保存到目标寄存器Rd中,并根据指令的执行结果设置CPSR中相应的标志位。TST指令类似于CMP指令,不产生放置到目的寄存器中的结果。而是在给出的两个操作数1是要测试的数据字而操作数2是一个位掩码。经过测试后,如果匹配则设置Zero标志,否则清除它。与CMP指令一样,该指令不需要指定S后缀。TEQ(TestEquivalence)指令用于将一个寄存器的值和一个算术值做比较。条件标志11、CMP指令CMP(CompareRnoperand22GT在进行两个数据大小判断是,常用CMP指令及相应的条件吗来进行操作。CMN(CompareNegative)指令使用寄存器Rn的值减去operand2的负数值(加上operand2CMN指令将寄存器Rn中的值加上shifter_operand表示的数值,根据加法的结果设置CPSR中相应的条件标志位。寄存器Rn中的值加上shifter_operand的操作结果对CPSR中条件标志位的影响,与寄存器Rn中的值减去shifter_operand的结果操作的相反数对CPSR的影响有细2作数0者0x时两存器Rn的值按位做“逻辑或”操作,结果保存到Rd中。设置R001的反码按位做“逻辑与”操作,结果保存到Rd中。乘法指令ARM3264位的积。在ARM的处理器版本中,将乘积的结果保存到两个独立的寄存器中。另外一些版本值将32位存放到一个寄存器中。无论是哪种版本的处理器,都有乘-累加的变型指令,结果的最低有效位是一样的。因此,对于只保留32位结果的乘法指令,不需要区分有符号Rd:=(Rm*Rd:=(Rm*Rs+RdHi:RdLo:=Rm*RdHi:RdLo:+=Rm*RdHi:RdLo:=Rm*RdHi:RdLo:+=Rm*:长结果的指令形式,将其设置为RdHi的第31位的值。果的指令形式,RdHi和RdLo同时为零时,标志位Z置位。标志位V1MULMLR1R2*R32、MLAMLA(MultiplyAccumulate)32位乘-RmRs中的值相乘,再将乘积加上第3个操作数,结果的最低32位保存到Rd中。下面的指令完成R1R2*R310UMULL(UnsignedMultiplyLong)64为无符号乘法指令。它将Rm和Rs中的值做无符号数相乘,结果的低32位保存到RsLo中,高32位保存到RdHi中。UMLAL(UnsignedMultiplyAccumulaong)64位无符号长乘-Rm和高32位保存到RdHi中。SMULL(SignedMultiplyLong)64RmRs中的值做有符号数相乘,结果的低32位保存到RsLo32RdHi中。SMLAL(SignedMultiplyAccumulaong)64位有符号长乘-Rm和Rs中的值做有符号数相乘,64RdHi、RdLo32RsLo中,高32位保存到RdHi中。Load/Store指令Load/Store内存指令在ARM寄存器和器之间传送数据。ARM指令中有3种基Register提供更灵活的单数据项传送方式。数据项可以是字节、16位半子或32位字。Swap持的数据类型有字节(8位、半字(16位)和字(32位。1LDR2STR指令举例:LDR/STR指令用于对内存变量的、内存缓冲区数据的、查表、外3LDRBLDRB指令根据addr_mode所确定的地址模式将一个8位字节到指令中的目标寄存4STRB5LDRH6STRH多寄存器的Load/Store内存指令也叫批量加载/指令,它可以实现在一组寄存器和一块连续的内存单元之间传送数据。LDM用于加载多个寄存器,STM用于多个寄存器。多寄存器的Load/store内存指令允许一条指令传送16个寄存器的任何子集或所1LDMLDM指令将数据从连续的内存单元中到指令中指定的寄存器列表中的各寄存器中。当PC包含在LDM指令的寄存器列表时,指令从内存中的字数据将被作为目标地址值,2STM3>LDM/STM批量加载/指令实现在一组寄存器和一块连续的内存单元之间传输数据。LDM为加载多个寄存器,STM为多个寄存器。允许一条指令传送16个寄存器的任何子Rn中;寄存器列表reglist可包含多于一个寄存器或寄存器范围,使了正常的多寄存器传输外,将SPSR到CPSR中,这可用于异常处理返回;使用”^“后在进行数据时,先设置好源数据指针,然后使用块寻址指令LDMIA/STMIA、换指令是一个原子操作(AtomicOperation/写一个存4SWPSWP指令用于将内存中的一个字单元和一个指定寄存器的值相交换。操作过程如下:SWPB8位值相交换,操作过程如下:假设内存单元地址放在寄存器<Rn>中,指令将<Rn>中的数据到目的寄存器RdRd240,同时将另一个寄存器<Rm>8位内容写入到该内容字节单元中。当<Rd>和<Rm>8位内容和内存字节单>SWP指令用于将一个内存单元(该单元地址放在寄存器Rn中)的内容到一个寄存则为寄存器与器内容进行交换。Rn为要进行的器地址,Rn不能与Rd和Rm相同。跳转指令跳转(B)和跳转连接(BL)指令是改变指令执行顺序的标准方式。ARM一般按照指令使得一个程序可以使用子程序、if-then-else结构及循环。执行流程的改变迫使程序计数器()PC)指向一个新的地址,ARMv5架构指令集包含的跳转指令如表所示。PC4GB地址空间中任意跳转,这种跳转指令又太为长跳转。如果在长跳转指令之前使用“MOVLR”或“MOVPC4GB的地址空间中的地址到R14(即返回地址连接寄存器LR)寄存器中,然后跳转到指定地址运行程序。需要BL指令用于实现程序调用。子程序的返回可以通过LR寄存器的值到PC寄存器来实现。下面3种指令可以实现子程序返回。 从跳转的目标地址中减去上面所说的跳转的址,生成字节偏移量。由于ARM指令是对齐的,该字节偏移量为4的倍数。当上面生成的字节偏移量超过-33554432~33554430时,不同的汇编器使用不同的代Rm的第0位到CPSR中T位,bit[31:1]移入PC。若Rm的bit[0]为1,则跳转时自动将跳转时自动将CPSR中的标志位T复位,即把目标地址代码解释为ARM代码。PCRmPC作为<Rm>使用时,或带连接和状态切换的连接跳转指令(BranchwithLinkExchange,BLX)使用标号,用于使最低位来更新CPSRT位,将返回地址写入到连接寄存器LR中。位(bit[]计算偏移量的工作一般由ARM汇编器来完成。这种形式的跳转指令只能实现-32~32MB(bit[24]汇编器来完成。这种形式的跳转指令只能实现-32~32MB空间的跳转。状态操作指令RegiterPSRMRSCPSRSPSR的值传送到一个寄存器;MSR与之相反,把一个寄存器的内CPSRSPSRCPSRSPSR进行读/写操作。程序表程序状态寄存器指令MRS指令CPSR,可用来判断ALU的状态标志及IRQ/FIQ中断是否允许等;在异常或SPSR寄存器的读—修改—写操作,可用来进行处理器模式切换,允许/IRQ/FIQ中断等设置。另程切换或允许异常中断嵌套时,也需要使用MRS指令SPSR状态值并(field8r为要传送到状态寄存器指定域的立即数,8位;Rm为要传送到状态寄存器指定域的数据程序中不能通过MSRCPSRT位控制位来实现ARM状态/Thumb状态BX指令来完成处理器状态的切换(BX指令属令转移指令,它会打读—修改—写操作,可用来进行处理器模式切换及允许/IRO/FIQ中断等设置。[举例]使能IRQ中断。[举例]IRQ中断协处理器指令ARM体系结构允许通过增加协处理器来扩展指令集。最常用的协处理器是用于控制片上功能的系统协处理器。例如,控制Cache和管理单元的cp15寄存器。此外,还有用于浮点运算的浮点ARM协处理器,各生产商还可以根据需要开发自己的协处理器。ARM处理器来处理,所有协处理器指令只能同数据处理和ARM和其他协处理器指令。当一个协处理器硬件不能执行属于它的协处理器指的域。具体协处理器如何定义和操作完全由协处理器的制造商自己决定。因此,ARM协处协处理器数据操作。协处理器数据操作完全是协处理器操作,它完成协3个寄存器中。这类指令包括CDP指令。寄存器传送的字数与协处理器有关。ARM处理器产生器地址,但传送的字节由协处理器控制。这类指令包括LDC指令和STC指令。ARM处理器和协处理器之间传送数据。如一个浮点运算协处理器,FIX指令从协处理器寄存器取得浮点数据,将它转换ARM寄存器中。经常需要用浮点比较产生的结果来影响控制流,ARMCPSRMCR和表ARM寄存器到协处理器的数据传送指令MovertoCoprocessorfromARMRegister)ARM寄存器〈Rdcp_num器执行指定操作,将产生未定义指令异常。指令的编码格式如图3-2所示。 28 24 21 54 行(cond=AL(Alway域由各生产商定义。硬件协处理器支持与否完成由生产商定义,某款ARM中,是否支ARM版本无关。生产商可以选择实现部分协处理器指令2、协处理器寄存器到ARM寄存器的数据传送指令 28 24 MRC(cond=AL(Alway)指定协处理器的,标准的协处理器的名字为p0、p1、„、p15第二操作数opcode_2=3。如果目的寄存器为程序计数器r154bit确硬件协处理器支持与否完全由生产商定义,某款ARM中,是否支持协处理器或支ARM版本无关。生产商可以选择实现部分协处理器指令或者完全不支持硬件协处理器支持与否完全由生产商定义,某款ARM中,是否支持协处理器或支ARM版本无关。生产商可以选择实现部分协处理器指令或者完全不支持协。如果协处理器必须完成一些工作来准备一个32位数据向ARM传送(例如,浮点因此,在准备数据时经常需要协处理器握手信号处于“忙-等待”状态。ARM可以在“忙-cp15异常生产指令常。如表所示为ARM异常产生指令。ARM用SWI指令,处理器同时切换到管理模式。24R0的值其它指令介绍Fmxr/FmrxNEONvfp,因此需要用到Fmxr指令。FPEXC<浮点异常寄存器>SIMDVFP的全局使能寄存器,并用法:CLZRm中的值的前导零进行计数,并将结果返回到Rd中,如果未在源寄存器中设置任何位,则该结果值为32,如果设置了位31,则结果值为0。对于有符号饱和运算,如果结果小于-2n,则返回结果将为-2nQADD指令可将Rm和RnQSUB指令可从Rm中的值减去Rn用MRS指令。体系结构:该指令可用于v5T-Ev6 汇编指令实实验目的实验内容Debug环境下运行。实验设备软件:PCWindows98(2000、XP)+Eclipse基础知识.global.global //比较r0//若r0r1则r1r1//若r1r0则r0r0//r0r1b实验步骤 “Import点击“Run“-“DebugConfiguration”设置工程调试参数,详细设置过程参看 点击“Run—DebugConfigurations“,选择”Default“调试配置选项,实验结果处理器的寻址方式包括:数据处理指令寻址方式和内存指令寻址方式;ARM处理器的指令集包括:数据操作指令、乘法指令、load/store指令、跳转指令、状态操作指令、协处练习题a.0x101 b0x1f8 6、ARM在哪些工作模式下可以修改CPSR寄存器?5GPIO编GPIO或者不带上拉的电平输出。这在电路设计中,电路就可以简化不少。特GPH3GPIO分组预览 保留):28 S5PV210的GPIO常用寄存器分类S5PV210中,大多数的引脚都可复用,所以必须对每个引脚进行配置。端口控制寄输入端口,可以从GPnDAT的相应位读出数据。哪种状态(输入、输出、DATAn、EINTn等)下,上拉电阻都起作用。GPIO功能描述图GPIO功能概括图S5PV210中,输出端口被分为如表所示的种类。表 接口常用寄存器详解对于GPIOIO的详细功能描述,考虑到GPIO的寄存器很多,这里只列出其中一组GPIO的寄存器,如表所示。表GPC0CON控制寄存器(可读/可写 GPIO数据寄存器 实验目的实验设备软件:PCWin7、XP+Eclipse实验原理控制GPH3的相应寄存器GPH3CON和GPH3DAT实验内容#include"uart.h"//Functionname: //Return : voiddelay(intcount){intfor(count=count;count>0;count--)for(cnt=0;cnt<1000;cnt++);}int{printf("CVTS5PV210JtagGpioLedvolatileinti,j=0;GPH3.GPH3CON=0x GPH3.GPH3DAT=for(i=0;i ;GPH3.GPH3DATGPH3.GPH3DAT=for(i=0;i;for(j=GPH3.GPH3DAT=for(i=0;i;}}return}实验步骤 Import点击工程“BulidProject”按钮,对工程进行编译,生成Gpioled.elf文件。点击“Run“-“DebugConfiguration”设置工程调试参数,详细设置过程参看1.4.2 实验结果本章重点介绍S5PV210的通用输入输出接GPIO概念、数据规范、S5PV210寄存器设置及编程方法。GPIO对于S5PV210的学习是一个入门的课程,通过对S5PV210的GPIO实的基础,关于S5PV210的高级功能的控制都会用到GPIO和相应的寄存器。练习题片选控制介绍片选概念给自己的从而做出反应。这个信号就叫做片选信号CS(chipselect)SS(slaveselect)。片此处以LED跑马灯片选案例作为说明。可编程接口都有一个片选开关,通常以CE(ChipEnable)或CS(ChipSelect)表示,只有当该输入端处于有效电平,接口才进入电因此片选信号绝大多数情况下是一个低电平。如下图所示,nCS_LED就是片选开关,当nCS_LED为低电平时,74LVCH273(锁存器)开始工作,实现对LED的控制。片选控制方法

LED线选法除将低位地址直接接片内地址外,将余下的地址线作为的片选控制信号。地址线直接分别接至各个的片选端,当某地址线信号为“0”时,就局部译码法是对地址线中的一部分(而不是全部)进行译码,以产生各译码介 应地址片选引脚XM0CSN_0~XM0CSN_5。,也就是,这些地址,有的是器,有的就选中了网卡或者是我们自己外接的其它。通过上图可以知道,G2B接的是XM0CSN_1引脚,对应的是第1个Bank,起始地址是0x88000000内存地址图如下如图译 101AB所以,外设的地址为0x88000000+0xA000=0x8800A000。指32位字节的0~7位进行赋值即可控制LED跑马灯。实验目的实验内容实验设备软件:PCWindows98(2000、XP)+Eclipse基础知识#include#include#include#defineU8unsigned//Functionname://:延时子程//Return://voiddelay(intcount{intfor(count=count;count>0;count--for(cnt=0;cnt<1000;}intint{printf("CVTS5PV210JtagLedintfor(;;)*((U8*)0x8800B000)=*((U8*)0x8800B000)={*((U8*)0x8800B000)=delay}}return}实验步骤 “Import问,参看1.4内容。实验结果实验目的实验内容实验设备软件:PCWindows98(2000、XP)+Eclipse基础知识LED0、1、2„FLEDA、B、C„FDP(小数点)3-8-2GFEDCBA000111111100000110201011011301001111401100110501101101601111101700000111801111111901101111A01110111B01111100C00111001D01011110E01111001F01110001-01000000.1000000000000000LED显示接 #include#include#include#defineU8unsignedunsignedcharseg7table[16]=/*123456 /*9ABCDE //Functionname://:延时子程//Return://voiddelay(intcount{intfor(count=count;count>0;count--for(cnt=0;cnt<1000;}int{printf("CVTS5PV210JtagSegint*((U8*) )=for(;;) /**((U8*)0x )=seg7table[i];delay(1000);}for(i=0xf;i>=0x0;i-- /**((U8*) )=delaydelay}}return}实验步骤 “Import问,参看1.4内容。实验结果S5PV210Led实验目的实验内容实验设备软件:PCWindows98(2000、XP)+Eclipse基础知识#include#include#include#defineU8unsignedvoidmsDelay(int{intfor(count=count;count>0;count--for(cnt=0;cnt<1000;}void{*((unsignedchar)=*((unsignedchar)=}void{*((unsignedchar )=*((unsignedchar )=}voidMatrixLedShow(int{inttmp1,tmp2;tmp1=(arg>>8);tmp2=(arg&*((unsignedchar )=*((unsignedchar )=}void{//CLK_GATE_IP.CLK_GATE_IP3=CLK_GATE_IP.CLK_GATE_IP3|{}}void{printf("CVTS5PV210JtagMatrixLed}实验步骤 “Import问,参看1.4内容。实验结果S5PV210实验目的实验内容实验设备软件:PCWindows98(2000、XP)+Eclipse基础知识 步进电机的工作原理60度。每个大齿上都套有一个线圈,径向相对的两个线圈串联起1/3的齿距,形成“齿错位”,从而形成电磁引力使2.采用74HC274锁存,将步进电机的相位信号进行锁存,然后通过驱动,进入步进 正转脉反转脉12345678 正转脉反转脉135774HC2730x88001000,D0-D3分别对应步进电机的MA、MB、MC、MD信号。#include#include#include#defineU8unsigned//整步模式unsignedcharpluse_table[]{0x05,0x09,0x0a,//Functionname: :延时子程//Return : voiddelay(intcount{intfor(count=count;count>0;count--for(cnt=0;cnt<1000;}int{printf("CVTS5PV210JtagMotorStepperintintrow=for(;;)ifif(row==4)row=)=delay}return}实验步骤 “IportD:\eclipse_projects\MotorStepper\。点击“Finish”按钮。问,参看1.4内容。实验结果 练习题 串行通信概述串行通信与并行通信概念422、USB等,它们的传输距离远,且能力强,速度也比较快。异步串行方式的特点异步串行方式的数据格式同步串行方式的特点同步串行方式的数据格式(CRC 比特率、比特率因子与位周期个用以衡量数据传送速率的量。一般串行异步通信的传送速度为50~19200bit/s,串行同步通信的传送速度可达500kbit/s。RS-232C串口规范RS-232C(协议的全称是ELA-RS-232C标准,其中ELA(ElectronicIndustryAssociation)代表电子工业,RS( mededstandard)代表推荐标准,232是标识号,C代表(1969电气特性、信号功能及传送过程。常用物理标准还有ELA�;RS-232-C、ELA�;RS-422-EL�RS-ELA#0S-例如,目前在PC上的 2接

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论