为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

4嵌入式微处理器arm_1

2013-05-30 50页 ppt 5MB 27阅读

用户头像

is_044009

暂无简介

举报
4嵌入式微处理器arm_1nullnull Part 4 嵌入式微处理器null13254ARM嵌入式微处理器概述ARM体系结构概览ARM程序设计基础ARM编程模型ARM 指令集6嵌入式微处理器相关基本知识嵌入式微处理器分类嵌入式微处理器分类(1)、嵌入式微控制器(MCU)(1)、嵌入式微控制器(MCU) 嵌入式微控制器的典型代表是单片机这种8位的电子器件目前在嵌入式设备中仍然有着极其广泛的应用。 单片机芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、看门狗、I/O、串行口、脉宽调制输出、...
4嵌入式微处理器arm_1
nullnull Part 4 嵌入式微处理器null13254ARM嵌入式微处理器概述ARM体系结构概览ARM程序设计基础ARM编程模型ARM 指令集6嵌入式微处理器相关基本知识嵌入式微处理器分类嵌入式微处理器分类(1)、嵌入式微控制器(MCU)(1)、嵌入式微控制器(MCU) 嵌入式微控制器的典型代表是单片机这种8位的电子器件目前在嵌入式设备中仍然有着极其广泛的应用。 单片机芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、看门狗、I/O、串行口、脉宽调制输出、A/D、D/A、Flash RAM、EEPROM等各种必要功能和外设。 由于MCU低廉的价格,优良的功能,所以拥有的品种和数量最多,比较有代表性的包括8051、MCS-251、MCS-96/196/296、P51XA、C166/167、68K系列以及 MCU 8XC930/931、C540、C541,并且有支持I2C、CAN-Bus、LCD及众多专用MCU和兼容系列。(2)、嵌入式微处理器(Micro Processor Unit)(2)、嵌入式微处理器(Micro Processor Unit)MPU嵌入式微处理器是由通用计算机中的CPU演变而来的 和工业控制计算机相比,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点。目前主要的嵌入式处理器类型有Am186/88、386EX、SC-400、Power PC、68000、MIPS、ARM/ StrongARM系列等典型的嵌入式微处理器(MPU)(3)、嵌入式数字信号处理器(DSP)(3)、嵌入式数字信号处理器(DSP)DSP(digital singnal processor)处理器是专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,在数字滤波、FFT、频谱等各种仪器上DSP获得了大规模的应用。 DSP的理论算法在70年代就已经出现,但是由于专门的DSP处理器还未出现,所以这种理论算法只能通过MPU等由分立元件实现。 1982年世界上诞生了首枚DSP芯片,在语音合成和编码解码器中得到了广泛应用。 DSP的运算速度进一步提高,应用领域也从上述范围扩大到了通信和计算机方面。 TI的TMS320C2000/C5000系列 ADI日前推出了Blackfin系列的新成员BF51x 。(4)、嵌入式片上系统SoC(4)、嵌入式片上系统SoCSoC (System on Chip) SoC嵌入式系统微处理器就是一种电路系统。它结合了许多功能区块,将功能做在一个芯片上。如ARM RISC、MIPS RISC、DSP或是其他的微处理器核心,加上通信的接口单元,如USB、TCP/IP通信单元、GPRS通信接口、GSM通信接口、IEEE1394、蓝牙模块接口等等,这些单元以往都是依照各单元的功能做成一个个独立的处理芯片。 null SoC嵌入式系统微处理器所具有的其他的好处: 利用改变内部工作电压,降低芯片功耗。 减少芯片对外管脚数,简化制造过程。 减少外围驱动接口单元及电路板之间的信号传递,可以加快微处理器数据处理的速度。 内嵌的线路可以避免外部电路板在信号传递时所造成系统杂讯。硬件基础硬件基础冯·诺依曼体系结构和哈佛体系结构 CISC与RISC 影响CPU性能的因素null冯·诺依曼体系结构模型 (von Neumann architecture)数据和指令都存储在一个存储器中的计算机被称为冯·诺依曼机 Wayne Wolf,Computers as Components Principles of Embedded Computing System Design指令的执行周期T指令的执行周期T1)取指令(Instruction Fetch):TF 2)指令译码(Instruction Decode):TD 3)执行指令(Instruction Execute):TE 4)存储(Storage):TS 每条指令的执行周期:T= TF+TD+TE+TS冯·诺依曼体系的特点冯·诺依曼体系的特点1)数据与指令都存储在存储器中 2)被大多数计算机所采用 3)ARM7——冯诺依曼体系null哈佛体系结构 (Harvard architecture)数据和指令存储在各自独立的存储器中的计算机体系结构称为哈佛体系结构 哈佛体系结构的特点哈佛体系结构的特点1)程序存储器与数据存储器分开 2)提供了较大的数据存储器带宽 3)适合于数字信号处理 4)大多数DSP都是哈佛结构 5)ARM9是哈佛结构 很难在哈佛机上编写出一个自修改程序(写入数据值然后使用这些值作为指令的程序 nullCISC和RISCCISC:复杂指令集(Complex Instruction Set Computer) 8/2原则:80%的程序只使用20%的指令 具有大量变长形式的不同指令 大多数程序只使用少量的指令就能够运行。nullRISC:精简指令集(Reduced Instruction Set Computer) RISC是在开发高性能微处理器过程中的一个进步 在通道中只包含最有用的指令(少而简单) 确保数据通道快速执行每一条指令 使CPU硬件结构设计变得更为简单 指令格式和长度固定,且指令类型很少、指令功能简单、寻址方式少而简单,指令译码控制器采用硬布线逻辑,这样易于流水线的实现,进而获得高性能; 由于RISC指令系统强调了对称、均匀、简单,使得程序的优化编译效率更高; 大多数指令单周期完成; 分开的load-store结构的存取指令,也只有load-store结构的存取指令访问存储器,而数据处理指令只访问寄存器。而CISC处理器一般允许将存储器中的数据作为数据处理指令的操作数;CISC和RISCnullARM体系结构还采用了一些特别的技术: 所有的指令都可根据前面的执行结果决定是否被执行,提高了指令的执行效率。 可用Load/Store指令批量传输数据,以提高数据的传输效率。 可在一条数据处理指令中同时完成逻辑处理和移位处理。 null影响CPU性能的因素:流水线、超标量和缓存RISC流水线技术:几个指令可以并行执行 提高了CPU的运行效率 内部信息流要求通畅流动 ARM等具有三段流水线 ARM7译码取指执行add译码取指执行sub译码取指执行cmp时间AddSubCmp8086流水线技术举例null流水线执行的一些问题nullARM的流水线设计问题 (1)缩短程序执行时间: 提高时钟频率fclk 减少每条指令的平均时钟周期数CPI (2)解决流水线相关: 1.结构相关:如果某些指令在流水线中重叠执行时,产生资源冲突(多周期指令、访问存储器指令) 为了避免结构相关,ARM架构采用了资源重复的方法: ● 采用分离式指令Cache和数据Cache。该方法使取指和存储器数据访问不再发生冲突,同时也解决了相应的数据通路问题。CPI减少 ● ALU中采用单独加法器来完成地址计算。该方法使执行周期的运算不再产生资源冲突 指令长度null2.数据相关:当一条指令需要前面指令的执行结果,而这些指令均在流水线中重叠执行时 为了避免数据相关,ARM架构采用了下列解决措施: ● 定向(也称旁路或短路)技术。将前一条指令的结果,直接传递给后面需要它的指令,不必写入寄存器之后再由后一条指令读出。就可能避免停顿 ●流水线互锁技术。当指令需要的数据因为以前的指令没有执行完而没有准备好就会产生管道互锁。当互锁发生时,流水线会停止这条指令的执行,直到数据准备好为止。编译器或程序员可以通过重新设计代码顺序或其它方法来减少管道互锁的数量。 3.控制相关:当流水线遇到分支指令和其他会改变PC值的指令时就会发生控制相关 ●引入延时分支。往往有一些直接跟在分支指令后面的指令,无论分支与否都会被执行,这样在分支指令执行期间让流水线保持满。 ●尽早计算出分支转移成功的PC值。(译码阶段增加一个专用加法器来计算分支的目标地址nullARM的5级流水线 ARM9和StrongARM架构都采用了5级流水线. 增加了I-Cache和D-Cache,把存储器的取指与数据存取分开; 增加了数据写回的专门通路和寄存器; 把指令的执行过程分割为5部分: 取指->指令译码->执行->数据缓存->写回 ARM7TDMI与ARM9TDMI流水线比较nullARM7和ARM9流水线比较 5级流水线的ARM9内核是哈佛架构,拥有独立的指令和数据总线;指令和数据的读取可以在同一周期进行; 3级流水的ARM7内核是指令和数据总线复用的冯.诺依曼架构,指令和数据的读取不能在同一周期进行; 5级流水线设计把寄存器读取、逻辑运算、结果回写分散在不同的流水当中, 每一级流水的操作简洁,提升了处理器的主频。 随着流水线深度(级数)的增加,每一段的工作量被削减了,这使得处理器可以工作在更高的频率,同时改进了处理器的性能; 负面作用是增加了系统的延时,即内核在执行一条指令前,需要更多的周期来填充流水线; 流水线级数的增加也意味着在某些段之间会产生数据相关。nullnullnull ARM处理器性能比较null超标量执行超标量执行:超标量CPU采用多条流水线结构。 通过重复设置多套指令执行部件,同时处理并完成多条指令,实现并行操作,来达到提高处理速度的目的。 所有ARM内核,包括流行的ARM7、ARM9和ARM11等,都是单周期指令机。 ARM公司下一代处理器将是每周期能处理多重指令的超标量机。 但是: 超标量处理器在执行的过程中必须动态地检查指令相关性; 必须将分支被执行和分支不被执行这两种情况分开考虑。null1、为什么采用高速缓存 微处理器的时钟频率比内存速度提高快得多,高速缓存可以提高内存的平均性能。 2、高速缓存的工作原理 高速缓存是一种小型、快速的存储器,它保存部分主存内容的拷贝。 目前,使用较多的是随机(random)替换、先入先出(FIFO)替换与近期最少使用(LRU)替换三种策略。 CPU 高速缓存控制器 CACHE 主存 数据数据地址高速缓存(CACHE)总线和总线桥总线和总线桥nullARM总线结构ARM微控制器使用的是AMBA总线体系结构 AMBA(Advanced Microcontroller Bus Architecture)是ARM公司公布的总线标准,先进的AMBA定义了三种总线: AHB总线(Advanced High-performance Bus):用于连接高性能系统模块。它支持突发数据传输方式及单个数据传输方式,所有时序 参考同一个时钟沿。 ASB总线(Advanced System Bus):用于连接高性能系统模块,它支持突发数据传输模式。 APB总线(Advance Peripheral Bus):是一个简单接口支持低性能的外围接口。 S3C2410X微处理器体系结构框图S3C2410X微处理器体系结构框图总线桥null13254ARM嵌入式微处理器概述ARM体系结构概览ARM程序设计基础ARM编程模型ARM 指令集6嵌入式微处理器相关基本知识null主要内容: - ARM的发展历程 - ARM微处理器的应用领域及特点 - ARM微处理器系列 - ARM微处理器的应用选型 2.1 ARM的发展历程2.1 ARM的发展历程ARM即Advanced RISC Machines的缩写。 1985年4月26日,第一个ARM原型在英国剑桥的Acorn计算机有限公司诞生,由美国加州San Jose VLSI技术公司制造。 20世纪80年代后期,ARM很快开发成Acorn的台式机产品,形成英国的计算机教育基础。 1990年成立了Advanced RISC Machines Limited。 20世纪90年代,ARM32位嵌人式RISC(Reduced Instruction Set Computer)处理器扩展到世界范围,占据了低功耗、低成本和高性能的嵌入式系统应用领域的领先地位。 ARM公司虽然只成立10多年,但在1999年因移动电话火爆市场,其32位RISC处理器占市场份额超过了50%,2001年初,ARM公司的32位RISC处理器市场占有率超过了75%。ARM公司是知识产权供应商,是设计公司。由合作伙伴公司来生产各具特色的芯片。 nullARM的发展历程ARM的发展历程ARM公司商业模式的强大之处在于其价格合理,全世界范围有超过100个合作伙伴--包括半导体工业的著名公司。ARM公司专注于设计,其内核耗电少、成本低、功能强,特有16/32位双指令集。ARM已成为移动通信、手持计算、多媒体数字消费等嵌入式解决的RISC标准。ARM的发展历程ARM的发展历程1991 - ARM 推出第一款RISC嵌入式微处理器核 ARM6 1993 - ARM 推出 ARM7 核。在ARM的发展历程中,从ARM7开始,ARM核被普遍认可和广泛使用 1995 – ARM的 Thumb扩展指令集结构为16位系统增加了32位的性能,提供业界领先的代码密度 1995年 StrongARM 问世 XScale是下一代StrongARM芯片的发展基础 ARM10TDMI是ARM处理器核中的高端产品 ARM11是ARM家族中性能最强的一个系列 null2.2 ARM微处理器的应用领域及特点2.2.1 ARM微处理器的应用领域 到目前为止,ARM微处理器及技术的应用几乎已经深入到各个领域: 1、工业控制领域:作为32位的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。 2、无线通讯领域:目前已有超过85%的无线通讯设备采用了ARM技术, ARM以其高性能和低成本,在该领域的地位日益巩固。 3、网络应用:随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战。 4、消费类电子产品:ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。 5、成像和安全产品:现在流行的数码相机和打印机中绝大部分采用ARM技术。手机中的32位SIM智能卡也采用了ARM技术。 除此以外,ARM微处理器及技术还应用到许多不同的领域,并会在将来取得更加广泛的应用。 2.2.2 ARM处理器的特点2.2.2 ARM处理器的特点ARM处理器的几大特点如下: 小体积、低功耗、成本低、高性能; 支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件; 大量使用寄存器,大多数数据操作都在寄存器中完成,指令执行速度更快; 寻址方式灵活简单,执行效率高; 指令长度固定; 全球众多的合作伙伴。 当前ARM体系结构的扩充包括: Thumb:16位指令集,用以改善代码密度; DSP:用于DSP应用的算术运算指令集; Jazeller:允许直接执行Java代码的扩充。nullARM处理器本身是32位设计,但也配备16位指令集,以允许软件编码为更短的16位指令。与等价的32位代码相比,占用的存储器空间节省高达35%,然而保留了32位系统所有的优势。 ARM还提供了两个前沿特性——嵌入式ICE—RT (In-Circuit Emulator )逻辑和嵌入式跟踪宏核系列,用以辅助带深嵌入式处理器核的、高集成的SOC器件的调试。 ARM业界领先的跟踪解决方案——嵌入式跟踪宏单元(ETM,Embeddeb Trace Macrocell),被设计成驻留在ARM处理器上,用以监控内部总线,并能以核速度无妨碍地跟踪指令和数据的访问。null2.3 ARM微处理器系列 ARM微处理器目前包括下面几个系列,除了具有ARM体系结构的共同特点以外,每一个系列的ARM微处理器都有各自的特点和应用领域。 - ARM7系列 - ARM9系列 - ARM9E系列 - ARM10E系列 - SecurCore系列 - Intel的Xscale - Intel的StrongARM 其中,ARM7、ARM9、ARM9E和ARM10为4个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。SecurCore系列专门为安全要求较高的应用而设计。null2.3.1 ARM7微处理器系列 ARM7系列微处理器为低功耗的32位RISC处理器,最适合用于对价位和功耗要求较高的消费类应用。ARM7微处理器系列具有如下特点: - 具有嵌入式ICE-RT逻辑(In-Circuit Emulator ),调试开发方便。 - 极低的功耗,适合对功耗要求较高的应用,如便携式产品。 - 三级流水线结构。 - 代码密度高并兼容16位的Thumb指令集。 - 对操作系统的支持广泛,包括Windows CE、Linux、Palm OS等。 - 指令系统与ARM9系列、ARM10E系列兼容,便于升级换代。 - 主频最高可达130MIPS。 Samsung公司的S3C44B0即属于该系列的处理器。 nullARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器,属低端ARM处理器核。 T:支持16为压缩指令集Thumb; M:内嵌硬件乘法器(Multiplier) D:支持片上Debug; I:嵌入式ICE,支持片上断点和调试点;null2.3.2 ARM9微处理器系列 ARM9系列微处理器在高性能和低功耗特性方面提供最佳的性能。具有以下特点: - 5级流水线,指令执行效率更高。 - 哈佛结构。 - 支持32位ARM指令集和16位Thumb指令集。 - 支持32位的高速AMBA总线接口。 - 全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。 - 支持数据Cache和指令Cache,具有更高的指令和数据处理能力。 ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。null2.3.3 ARM9E微处理器系列 使用单一的处理器内核提供了微控制器、DSP、Java应用系统的解决方案,ARM9E系列微处理器提供了增强的DSP处理能力。 ARM9E系列微处理器的主要特点如下: - 支持DSP指令集,适合于需要高速数字信号处理的场合。 - 5级流水线,指令执行效率更高。 - 支持32位ARM指令集和16位Thumb指令集。 - 支持32位的高速AMBA总线接口。 - 支持VFP9浮点处理协处理器。 - 全性能的MMU,支持Windows CE、Linux等多种主流嵌入式操作系统。 - 支持数据Cache和指令Cache,具有更高的指令和数据处理能力。 - 主频最高可达300MIPS。 ARM9系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、存储设备和网络设备等领域。null2.3.4 ARM10E微处理器系列 ARM10E系列微处理器具有高性能、低功耗的特点,由于采用了新的体系结构,与同等的ARM9器件相比较,在同样的时钟频率下,性能提高了近50%,同时,ARM10E系列微处理器采用了两种先进的节能方式,使其功耗极低。 ARM10E系列微处理器的主要特点如下: - 支持DSP指令集,适合于需要高速数字信号处理的场合。 - 6级流水线,指令执行效率更高。 - 支持32位ARM指令集和16位Thumb指令集。 - 支持32位的高速AMBA总线接口。 - 支持VFP10浮点处理协处理器。 - 全性能的MMU,支持Windows CE、Linux等多种主流嵌入式操作系统。 - 支持数据Cache和指令Cache,具有更高的指令和数据处理能力 - 主频最高可达400MIPS。 - 内嵌并行读/写操作部件。nullARM系列产品命名规则null2.3.5 SecurCore微处理器系列 SecurCore系列微处理器专为安全需要而设计,SecurCore系列微处理器除了具有ARM体系结构的低功耗、高性能的特点外,还具有其独特的优势,即提供了对安全解决方案的支持。 SecurCore系列微处理器除了具有ARM体系结构各种主要特点外,还在系统安全方面具有如下的特点: - 带有灵活的保护单元,以确保操作系统和应用数据的安全。 - 采用软内核技术,防止外部对其进行扫描探测。 - 可集成用户自己的安全特性和其他协处理器。 SecurCore系列微处理器主要用于一些对安全性要求较高的应用产品及应用系统,如电子商务、电子政务、电子银行业务、网络和认证系统等领域。 SecurCore系列微处理器包含SecurCore SC100、SecurCore SC110、SecurCore SC200和SecurCore SC210四种类型,以适用于不同的应用场合。 null2.3.6 StrongARM微处理器系列 Intel StrongARM SA-1100融合了Intel公司的设计和处理技术以及ARM体系结构的电源效率,采用在软件上兼容ARMv4体系结构、同时采用具有Intel技术优点的体系结构。 Intel StrongARM处理器是便携式通讯产品和消费类电子产品的理想选择,已成功应用于多家公司的掌上电脑系列产品。 null2.3.7 Xscale处理器 Xscale 处理器是基于ARMv5TE体系结构的解决方案,是一款全性能、高性价比、低功耗的处理器。它支持16位的Thumb指令和DSP指令集,已使用在数字移动电话、个人数字助理和网络产品等场合。 Xscale 处理器是Intel目前主要推广的一款ARM微处理器。 null2.4 ARM微处理器的应用选型 ARM微处理器内核的选择 如果希望使用WinCE或标准Linux等操作系统以减少软件开发时间,就需要选择ARM720T以上带有MMU(Memory Management Unit)功能的ARM芯片。而ARM7TDMI则没有MMU,不支持Windows CE和标准Linux,但目前有uCLinux等不需要MMU支持的操作系统可运行于ARM7TDMI硬件平台之上。系统的工作频率 系统的工作频率在很大程度上决定了ARM微处理器的处理能力。不同芯片对时钟的处理不同,有的芯片只需要一个主时钟频率,有的芯片内部时钟控制器可以分别为ARM核和USB、UART、DSP、音频等功能部件提供不同频率的时钟。null芯片内存储器的容量 大多数的ARM微处理器片内存储器的容量都不太大,但也有部分芯片具有相对较大的片内存储空间,如ATMEL的AT91F40162就具有高达2MB的片内程序存储空间。片内外围电路的选择 几乎所有的ARM芯片均根据各自不同的应用领域,扩展了相关功能模块,并集成在芯片之中,称之为片内外围电路,如USB接口、LCD控制器、ADC和DAC、DSP协处理器等,设计者应分析系统的需求,尽可能采用片内外围电路完成所需的功能,这样既可简化设计,同时提高可靠性。 null多内核ARM芯片选择 ARM+DSP ARM内核的优势在于控制方面,可是在某些应用中却需要大量的数值运算,这时候往往需要在系统中增加一个DSP的芯片。选择ARM+DSP双内核的芯片:可以降低成本,提高系统的稳定性,由于是内部集成,还可以降低功耗。通常加入的DSP核有ARM公司的Piccolo DSP核、TI公司和Motorola公司的DSP核。 ARM核+FPGA ARM+FPGA内核的芯片主要是为了提高产品设计的灵活性,通过对芯片内部的FPGA编程,可以给产品加密,灵活配置所需的硬件,提高系统硬件的在线升级能力。多ARM核 例如Portal player 公司的PP5002片内部集成了两个ARM7TDMI 内核,可以应用于便携式MP3播放器的编码器或解码器。MinSpeed公司就在其多款高速通讯芯片中集成了2~4个ARM7TDMI内核null13254ARM嵌入式微处理器概述ARM体系结构概览ARM程序设计基础ARM编程模型ARM 指令集6嵌入式微处理器相关基本知识ARM体系结构版本 ARM体系结构版本 ARM体系结构从最初开发到现在有了很大的改进,并仍在完善和发展。ARM公司定义了6种主要的ARM指令集体系结构版本,以版本号V1~V6表示。 1.V1版架构 该版架构只在原型机ARM1出现过,没有用于商业产品。其基本性能有: 基本的数据处理指令(无乘法); 基于字节、半字和字的Load/Store指令; 转移指令,包括子程序调用及链接指令; 供操作系统使用的软件中断指令SWI; 寻址空间:64MB(226)。 ARM体系结构版本ARM体系结构版本2.V2版架构 该版架构对V1版进行了扩展,例如ARM2和ARM3(V2a)架构,版本2a是版本2的变种,ARM3芯片采用了版本2a。V2版架构与版本V1相比,增加了以下功能: 乘法和乘加指令; 支持协处理器操作指令; 快速中断模式; SWP/SWPB的最基本存储器与寄存器交换指令; 寻址空间:64MB。 ARM体系结构版本ARM体系结构版本3.V3版架构 V3版架构对ARM体系结构作了较大的改动: 寻址空间增至32位(4GB); 当前程序状态信息从原来的R15寄存器移到当前程序状态寄存器CPSR中(Current Program Status Register); 增加了程序状态保存寄存器SPSR(Saved Program Status Register); 增加了中止(Abort)和未定义2种处理器模式; 增加了MRS/MSR指令,以访问新增的CPSR/SPSR寄存器; 增加了从异常处理返回的指令功能。ARM体系结构版本 ARM体系结构版本 4.V4版架构 V4版架构在V3版上作了进一步扩充,V4版架构是目前应用最广的ARM体系结构,ARM7、ARM8、ARM9和Strong ARM都采用该架构。指令集中增加了以下功能: 符号化和非符号化半字及符号化字节的存/取指令; 增加了16位Thumb指令集; 完善了软件中断SWI指令的功能; 处理器系统模式引进特权方式时使用用户寄存器操作; 把一些未使用的指令空间捕获为未定义指令。ARM体系结构版本ARM体系结构版本5.V5版架构 V5版架构是在V4版基础上增加了一些新的指令,ARM10和Xscale都采用该版架构。这些新增命令有: 带有链接和交换的转移BLX指令; 计数前导零CLZ指令; BRK中断指令; 增加了数字信号处理指令(V5TE版); 为协处理器增加更多可选择的指令。ARM体系结构版本ARM体系结构版本6.V6版架构 V6版架构是2001年发布的,首先在2002年春季发布的ARM11处理器中使用。此架构在V5版基础上增加了以下功能: THUMBTM:35%代码压缩; DSP扩充:高性能DSP功能; JazelleTM:Java性能优化,可提高8倍; Media扩充:音/视频性能优化,可提高4倍。nullARM 体系结构更新ARM 体系结构更新体系结构变化 体系结构变化 THUMB指令集 ( ‘T’) THUMB 指令集: 32位ARM指令集的子集,按16位指令重新编码 代码尺寸小 ( up to 40 % compression) 简化设计 体系结构变化 -Thumb的技术实现体系结构变化 -Thumb的技术实现null体系结构变化体系结构变化长乘法指令 (‘M’) 32x32 = 64 bit. 提供全64位结果 M变种增加了两条这样的长乘指令: 其中一条指令完成32位整数乘以32位整数,生成64位整数的长乘操作; 另一条指令完成32位整数乘以32位整数,然后在加上一个32位整数,生成64位整数的长乘加操作。这种长乘的应用场合M变种很适合。 体系结构变化 体系结构变化 增强DSP 指令集 (‘E’) 可附加在ARM中的DSP指令 64 bit 转换 在 v5版本中第一次推出 对于音频DSP应用提供高达70%的处理速度 处理器内核的变化 D: 在片调试. 处理器可响应调试暂停请求 I: Embedded ICE. 支持片上断点调试 体系结构变化 体系结构变化 Jazelle 提供比基于软件的JAVA虚拟机(JVM)更高的性能 ARM的Jazelle技术是Java语言和先进的32位RISC芯片完美结合的产物。与非JAVA加速核相比,提供8倍JAVA加速性能和降低80%的功耗 Jazelle技术的诞生使得一些必须用到协处理器和双处理器的场合可以用单处理器代替,这样,既保证了机器的性能,又降低了功耗和成本。 ARM体系版本4TEJ是最早包含了J变种。用字符J表示J变种 null13254ARM嵌入式微处理器概述ARM体系结构概览ARM程序设计基础ARM编程模型ARM 指令集6嵌入式微处理器相关基本知识null主要内容: -  4.1 ARM微处理器的工作状态 -  4.2 ARM体系结构的存储器模式 -  4.3 ARM微处理器的操作模式 -  4.4 ARM体系结构的寄存器组织 -  4.5 ARM微处理器的异常状态 4.1 ARM微处理器的工作状态4.1 ARM微处理器的工作状态ARM7TDMI 处理器有两种工作状态: ARM - 32-bit, 按字排列的ARM指令集 Thumb -16-bit, 按半字排列的Thumb指令集 ARM7TDMI 核的操作状态可通过BX指令(分支和交换指令)在ARM状态和Thumb状态之间切换例: 从ARM状态切换到Thumb状态: LDR R0,=Label+1 BX R0 从Thumb状态切换到ARM状态: LDR R0,=Label BX R0进入Thumb状态:当操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的方法,使微处理器从ARM状态切换到Thumb状态。 进入ARM状态:当操作数寄存器的状态位为0时,执行BX指令时可以使微处理器从Thumb状态切换到ARM状态。 null汇编伪指令: CODE16、CODE32 语法格式:CODE16(或CODE32) CODE16伪指令编译器,其后的指令序列为16位的Thumb指令。 CODE32伪指令通知编译器,其后的指令序列为32位的ARM指令。 在使用ARM指令和Thumb指令混合编程的代码里,可用这两条伪指令进行切换,但注意他们只通知编译器其后指令的类型,并不能对处理器进行状态的切换。 AREA Init,CODE,READONLY …… CODE32 ;通知编译器其后的指令为32位的ARM指令 LDR R0,=NEXT+1 ;将跳转地址放入寄存器R0 BX R0 ;程序跳,并将处理器切换到Thumb工作状态 …… CODE16 ;通知编译器其后的指令为16位的Thumb指令 NEXT LDR R3,=0x3FF …… END ;程序结束 4.1 ARM微处理器的工作状态null4.1 ARM微处理器的工作状态在程序执行的过程中,处理器可以在两种状态下切换。需要强调的是: ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容。 ARM处理器在开始执行代码时,只能处于ARM状态。 如果处理器在Thumb状态进入异常,则当异常处理结束时,自动转换到Thumb状态。 进入异常,即进入ARM状态。 Thumb状态寄存器仍为32位,但能访问的资源受限制4.2 ARM体系结构的存储器模式4.2 ARM体系结构的存储器模式大端模式 最高位字节保存在最低位地址字由最低位字节的字节地址寻址小端模式 最低位字节保存在最低位地址字由最低位字节的字节地址寻址 管脚设置、编译器设置4.3 ARM微处理器的操作(工作)模式4.3 ARM微处理器的操作(工作)模式ARM处理器有7种操作模式:nullARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。 大多数的用户程序是运行在用户模式下,这时应用程序不能够访问一些受操作系统保护的系统资源,也不能改变模式。null除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式(Privileged Modes);其中除去用户模式和系统模式以外的5种又称为异常模式(Exception Modes),常用于处理中断或异常,以及需要访问受保护的系统资源等情况。 4.4 ARM体系结构的寄存器组织4.4 ARM体系结构的寄存器组织注:表明用户或系统模式使用的正常寄存器已经被异常模式指定的另一个寄存器取代 共计37个寄存器sys4.4 ARM体系结构的寄存器组织4.4 ARM体系结构的寄存器组织37个 寄存器 31 个通用32位寄存器( 包括程序计数器PC) 未分组寄器R0-R7 分组寄存器R8-R14 程序计数器PC(R15) 6 个状态寄存器 每种模式下:可以访问15个 通用寄存器 (R0 to R14), 以及1或者2个状态寄存器和程序计数器 可访问的寄存器取决于处理器的模式 其它寄存器 (the banked registers) 的状态在支持IRQ, FIQ, 管理员, 中止和未定义模式处理时被切换在所有的运行模式下,未分组寄存器都指向同一个物理寄存器, 区分不同的物理寄存器: R13_ Mode:usr、fiq、irq、svc、abt、und。 4.4 ARM体系结构的寄存器组织4.4 ARM体系结构的寄存器组织R0 到 R15 可以直接访问 R0 到 R14 是通用寄存器 R13: 堆栈指针 (sp) (通常) 每种处理器模式都有单独的堆栈,在用户应用程序的初始化部分,一般都要初始化每种模式下的R13,使其指向该运行模式的栈空间 Thumb中,某些指令强制性的要求使用R13作为堆栈指针 nullR14:子程序链接寄存器(Subroutine Link Register)或链接寄存器LR 当执行BL子程序调用指令时,R14←R15(程序计数器PC)。 其他情况下,R14用作通用寄存器。 与之类似,当发生中断或异常时,对应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用来保存R15的返回值。 4.4 ARM体系结构的寄存器组织null链接寄存器R14(LR) R14为链接寄存器(LR),在结构上有两个特殊功能: 在每种模式下,模式自身的R14版本用于保存子程序返回地址; 当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。4.4 ARM体系结构的寄存器组织4.4 ARM体系结构的寄存器组织R14寄存器与子程序调用MOV PC,LRR14(地址A)1.程序A执行过程中调用程序B;操作2.程序跳转至标号Lable,执行程序B。同时硬件将“BL Lable”指令的下一条指令所在地址存入R14;3.程序B执行最后,将R14寄存器的内容放入PC,返回程序A;4.4 ARM体系结构的寄存器组织4.4 ARM体系结构的寄存器组织R14寄存器与异常发生 异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。区别在于有些异常有一个小常量的偏移。ENTRY b ResetHandler ;for debug b HandlerUndef ;handlerUndef b HandlerSWI ;SWI interrupt handler b HandlerPabort ;handlerPAbort b HandlerDabort ;handlerDAbort b . ;handlerReserved b HandlerIRQ b HandlerFIQ4.4 ARM体系结构的寄存器组织4.4 ARM体系结构的寄存器组织R14寄存器注意要点 当发生异常嵌套时,这些异常之间可能会发生冲突。 例如:如果用户在用户模式下执行程序时发生了IRQ中断,并且如果允许在IRQ模式下的中断处理程序重新使能IRQ中断,此时发生了嵌套的IRQ中断时,外部中断处理程序保存在R14_irq中的任何值都将被嵌套中断的返回地址所覆盖。4.4 ARM体系结构的寄存器组织4.4 ARM体系结构的寄存器组织R14寄存器注意要点areturn地址A1.执行用户模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3. IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;未被破坏4.4 ARM体系结构的寄存器组织4.4 ARM体系结构的寄存器组织R14寄存器注意要点a地址A1.执行用户模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3. IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;未被破坏areturn地址B4. 如果在IRQ处理程序中打开IRQ中断,并且再次发生IRQ中断,或者调用子程序;5. 硬件将返回地址保存在R14_irq寄存器中,原来保存的返回地址将被覆盖,造成错误;被破坏6. 在程序B返回到程序A,然后在返回到用户模式下被中断的程序时,发生错误,将不能正确返回;returnreturn 解决办法是确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将R14入栈),或者切换到其它处理器模式下。nullR15 程序计数器 (PC) 在ARM状态下,位[1:0]为0 ,在Thumb状态下,位[0]为0 。 R15虽然也可用作通用寄存器,但一般不这么使用,否则程序的执行结果可能未知。 对于R15的使用一定要慎重。当向R15中写入一个地址值时,程序将跳转到该地址执行。由于在ARM状态下指令总是是字对齐的,所以R15值的第0位和第1位总为0,PC[31:2]用于保存地址。 由于ARM体系结构采用了多级流水线技术,对于ARM指令集而言,PC总是指向当前指令的下两条指令的地址,即PC的值为当前指令的地址值加8个字节。 4.4 ARM体系结构的寄存器组织nullCPSR – Current Program Status Register,当前程序状态寄存器 SPSR – Saved Program Status Register,保存当前程序状态寄存器 4.4 ARM体系结构的寄存器组织null4.4 ARM体系结构的寄存器组织--程序状态寄存器CPSRCPSR – Current Program Status Register,当前程序状态寄存器 CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。 5个SPSRs-- Saved  Program Status Register 程序状态保存寄存器 当异常发生时保存CPSR状态 当异常发生时,SPSR用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR。 由于用户模式和系统模式不属于异常模式,他们没有SPSR,当在这两种模式下访问SPSR,结果是未知的。程序状态寄存器程序状态寄存器N, Z, C and V 条件码标志 可以在处理器中作为数学和逻辑操作改变 可以被所有的指令测试,以决定指令是否被执行 N : Negative. Z : Zero. C : Carry. V : oVerflow I and F 位是中断禁止位 M0, M1, M2, M3 and M4 位是模式位 null在ARM状态下,绝大多数的指令都是有条件执行的。 在Thumb状态下,仅有分支指令是有条件执行的。 条件码标志各位的具体含义: null指令的条件码 指令的条件码 null控制位 PSR的低8位(包括I、F、T和M[4:0])称为控制位,当发生异常时这些位可以被改变。如果处理器运行特权模式,这些位也可以由程序修改。 ─  中断禁止位I、F I=1   禁止IRQ中断; F=1   禁止FIQ中断。 ─  T标志位:该位反映处理器的运行状态。 对于ARM体系结构v5及以上的版本的T系列处理器,当该位为1时,程序运行于Thumb状态,否则运行于ARM状态。 对于ARM体系结构v5及以上的版本的非T系列处理器,当该位为1时,执行下一条指令以引起为定义的指令异常;当该位为0时,表示运行于ARM状态。 保留位 PSR中的其余位为保留位,保留位将用于ARM版本的扩展。程序状态寄存器PSR的模式位程序状态寄存器PSR的模式位 并不是所有的运行模式位的组合都是有效地,其他的组合结果会导致处理器进入一个不可恢复的状态。nullThumb状态下的寄存器组织 Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集,程序可以直接访问8个通用寄存器(R7~R0)、程序计数器(PC)、堆栈指针(SP)、连接寄存器(LR)和CPSR。同时,在每一种特权模式下都有一组SP、LR和SPSR。nullThumb状态下的寄存器组织与ARM状态下的寄存器组织的关系 低位寄存器高位寄存器null访问THUMB状态下的高位寄存器(Hi-registers): 在Thumb状态下,高位寄存器R8~R15并不是标准寄存器集的一部分,但可使用汇编语言程序受限制的访问这些寄存器,将其用作快速的暂存器。 使用带特殊变量的MOV指令,数据可以在低位寄存器和高位寄存器之间进行传送; 高位寄存器的值可以使用CMP和ADD指令进行比较或加上低位寄存器中的值。 4.5 异常(exceptions ) - 14.5 异常(exceptions ) - 1当正常的程序执行流程发生暂时的停止时,称之为异常,例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。 异常类型 FIQ IRQ(Interrupt ReQuest) 未定义指令 预取中止 数据中止 复位 软件中断Software interrupt null异常 - 2异常 - 2异常优先级 (1) Reset (highest priority) (2) Data abort (3) FIQ (4) IRQ (5) Prefetch abort (6) 未定义指令, Software interrupt (最低优先级)异常向量异常向量 ENTRY b ResetHandler ;for debug b HandlerUndef ;handlerUndef b HandlerSWI ;SWI interrupt handler b HandlerPabort ;handlerPAbort b HandlerDabort ;handlerDAbort b . ;handlerReserved b HandlerIRQ b HandlerFIQ 对异常的响应-1对异常的响应-11、在相应的链接寄存器LR (r14)中保存下一条指令的地址,以便程序在处理异常返回时能从正确的位置重新开始执行 2、将CPSR复制到相应的SPSR中 3、根据异常类型,强制设置CPSR的运行模式位 4、强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。 注:异常总是在ARM状态中进行处理。当处理器处于Thumb状态时发生了异常,在异常向量地址装入PC时,会自动切换到ARM状态。对异常的响应-2对异常的响应-2ARM微处理器对异常的响应过程用伪码可以描述为: R14_=Return Link SPSR_=CPSR CPSR[4:0]=Exception Mode Number CPSR[5]=0 ;当运行于ARM状态时 IF==Reset or FIQ then ;当响应FIQ异常时,禁止新的FIQ异常 CPSR[6]=1; CPSR[7]=1; PC=Exception Vector Address例子: 用户模式到 FIQ模式*例子: 用户模式到 FIQ模式*用户模式FIQ 模式r14_fiqr13_fiqr12_fiqr10_fiqr11_fiqr9_fiqr8_fiq用户模式 CPSR 复制到 FIQ 模式 SPSR返回一个从用户模式计算的地址,PC值存储在FIQ模式从异常的返回从异常的返回将LR寄存器中的值减去相应的偏移量送到PC中(The offset will vary depending on the type of exception) 将 SPSR 复制回 CPSR 清除禁止中断标志,如果它被设置成使能 所有修改过的用户寄存器必须从处理程序的保护堆栈中恢复(即出栈)。 可以认为程序总是从复位异常处理程序开始执行的,因此复位异常处理程序不需要返回。null需要强调的是第一、二步不能独立完成。这是因为假设如果先恢复CPSR,则保存返回地址的当前异常模式的r14就不能再访问了;如果先恢复PC,异常处理程序将失去对指令流的控制,使得CPSR不能恢复。 为确保指令总是按正确的操作模式读取,以保证存储器保护方案不被绕过,还有更加微妙的困难。因此,ARM提供了两种返回处理机制,利用这些机制,可以使上述两步作为一条指令的一部分同时完成。当返回地址保存在当前异常模式的r14时,使用其中一种机制,当返回地址保存在堆栈时使用另一种机制。 1、SUBS   PC,R14_fiq ,#4 含‘S’指令 2、指令示例: STMFD R13!,{R0,R4-R12,LR} ;将寄存器列表中的寄存器R0,R4到R12,LR存入堆栈。 LDMFD R13!,{R0,R4-R12,PC} ∧ ;将堆栈内容恢复到寄存器R0,R4到R12,PC,同时SPSR复制到CPSR {∧}为可选后缀,当指令为LDM且寄存器列表中包含R15,选用该后缀时表示:除了正常的数据传送之外,还将SPSR复制到CPSR。 进入/退出异常概述进入/退出异常概述注意:“MOVS PC,R14_svc”是指在管理模式执行MOVS PC,R14指令。“MOVS PC,R14_und”、“SUBS PC,
/
本文档为【4嵌入式微处理器arm_1】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索