文档库 最新最全的文档下载
当前位置:文档库 › ARM处理器简介(8)1

ARM处理器简介(8)1

ARM处理器简介(8)

*****************************************************

ARM编译器中预定义的宏

*****************************************************

ARM编译器预定义了一些宏,这些预定义宏对应一定的数值,有些预定义宏没有对应数值,见下表:

_arm _ 使用编译器armcc,tcc,armcpp,tcpp时

_ARMCC_VERSION Ver 代表编译器版本号,其格式为:

PVtbbb,其中:

P为产品编号(1代表ADS)

V为副版本号(1代表1.1)

T为补丁版本号(0代表1.1)

bbb为build号(比如650)

_APCS_INTERWORK _ 使用编译选项-apcs/interwork时

_APCS_ROPI _ 使用编译选项apcs/ropi时

_RWPI _ 使用编译选项-apcs/rwpi时

_APCS_SWST _ 使用编译选项-apcs/swst时

_BIG_ENDIAN _ 编译器针对目标系统使用big-endian内存模式时

_cplusplus _ 编译器工作与C++模式时

_CC_ARM _ 返回编译器的名称

_DATE_ date 编译源文件的日期

_embedded_cplusplus 编译器工作于EC++模式时

_FEATURE_SINGED_CHAE 使用编译设置选项-zc时设置该预定义宏

_FILE_ name 包含全路径的当前被编译的源文件名称

_func_ name 当前被编译的函数名称

_LINE_ num 当前被编译的代码行号名称

_MOUDLE_ mod 预定义宏_FILE_的文件名称部分

_OPTIMISE_SPACE _ 使用编译选项-OSPACE时

_OPTIMISE_TIME _ 使用编译选项-Otime时

_pretty_funcname unmangled的当前函数名称

_sizeof_int 4 sizeof(int),在预处理表达式中可以使用

_sizeof_long4 sizeof(long),在预处理表达式中可以使用

_sizeof_ptr 4 sizeof(void*)在预处理表达式中可以使用

_SOFTFP _ 编译时使用浮点数

_ _ 在各种编译器模式下

_STDC_VERSION _ 标准的版本信息

_STRICT_ANSI_ _ 使用编译选项-STRICT时

_TARGET_ARCH_xx _ xx代表ARM体系编号

_TARGET_CPU_xx _ xx代表CPU编号

_TARGET_FEATURE_ 当ARM体系支持指令PLD,LDRD,STRD,MCRR,MRRC 时

DOUBLEWORD _ 设置该定义宏

_TARGET_FEATURE_ 当系统中包含DSP乘法处理器时,设置该

DSPMUL _ 预定义宏

_TARGET_FEATURE_ 如果目标ARM体系支持半字访问以及有符号的字节数

HALFWORD _ ,设置该预定义宏

_TARGET_FEATURE_ 如果目标ARM体系支持长乘法指令MULL和MULTIPLY _ MUAL,设置该预定义宏

_TARGET_FEATURE_ 如果目标ARM体系支持THUMB指令THUMB _

_TARGET_FPU_xx _ 表示FPU选项,可能取值如下所示:

_TARGET_FPU_VFP

_TARGET_FPU_FPA

_TARGET_FPU_SOFTVFP

_TARGET_FPU_SOFTVFP_VFP

_TARGET_FPU_SOFTFPA

_TARGET_FPU_NONE

_thumb _ 编译器为tcc或tcpp时,设置该预定义宏

_TIME 源文件编译时间

ARM体系结构变化

处理器的体系结构定义了指令集(ISA)和基于这一体系结构下处理器的程序员模型。尽管每个处理器性能不同,所面向的应用不同,每个处理器的实现都要遵循这一体系结构。ARM 体系结构为嵌入系统发展商提供很高的系统性能,同时保持优异的功耗和面积效率。 ARM体系结构的发展 ARM体系结构为满足ARM合作者以及设计领域的一般需求正稳步发展。 每一次ARM体系结构的重大修改,都会添加极为关键的技术。在体系结构作重大修改的期间,会添加新的性能作为体系结构的变体。下面的名字表明了系统结构上的提升,后面附加的关键字表明了体系结构的变体。 V3结构 32位地址。 T ? Thumb状态:16位指令。 M ? 长乘法支持(32*32=>64或者32*32+64=>64)。这一性质已经变成V4结构的标准配置。 V4结构加入了半字存储操作。 D ? 对调试的支持(Debug) I ? 嵌入的ICE(In Circuit Emulation) 属于V4体系结构的处理器(核)有ARM7,ARM7100(ARM7核的处理器),ARM7500(ARM7核的处理器)。 属于V4T(支持Thumb指令)体系结构的处理器(核)有 ARM7TDMI,ARM7TDMI-S (ARM7TDMI可综合版本),ARM710T(ARM7TDMI核的处理器),ARM720T(ARM7TDMI 核的处理器),ARM740T(ARM7TDMI核的处理器),ARM9TDMI,ARM910T(ARM9TDMI 核的处理器),ARM920T(ARM9TDMI核的处理器),ARM940T(ARM9TDMI核的处理器),StrongARM(Intel公司的产品)。 V5结构提升了ARM和Thumb指令的交互工作能力。 E ? DSP指令支持。 J ? Java指令支持。 属于V5T(支持Thumb指令)体系结构的处理器(核)有ARM10TDMI,ARM1020T (ARM10TDMI核处理器)。 属于V5TE(支持Thumb,DSP指令)体系结构的处理器(核)有ARM9E,ARM9E-S(ARM9E 可综合版本),ARM946(ARM9E核的处理器),ARM966(ARM9E核的处理器),ARM10E,ARM1020E(ARM10E核处理器),ARM1022E(ARM10E核的处理器), Xscale(Intel公司产品)。 属于V5TEJ(支持Thumb,DSP指令,Java指令)体系结构的处理器(核)有ARM9EJ,ARM9EJ-S(ARM9EJ可综合版本),ARM926EJ(ARM9EJ核的处理器),ARM10EJ。 V6结构增加了媒体指令 属于V6体系结构的处理器核有ARM11。ARM体系结构中有四种特殊指令集:Thumb指令(T),DSP指令(E),Java指令(J),Media指令,V6体系结构包含全部四种特殊指令集。为满足向后兼容,ARMv6也包括了ARMv5的存储器管理和例外处理。这将使众多的第三方发展商能够利用现有的成果,支持软件和设计的复用。 新的体系结构并不是想取代现存的体系结构,使它们变得多余。新的CPU核和衍生产品将建立在这些结构之上,同时不断与制造工艺保持同步。例如基于V4T体系结构的ARM7TDMI

ARM系统体系架构

ARM体统体系架构 ARM平台可以采用核心主板加扩展板的设计方式,基于ARM微处理器芯片的核心主板,能将ARM所有的I/O全部引出,在核心主板上面只提供最基本的接口;而对于一些 特殊用途的USB接口、以太网接口、LCD接口,以扩展板形式提供。 ARM模块部分是其一个重要的组成部分,在系统中ARM模块主要负责系统控制部分,其硬件体系结构灵活、接口丰富。核心包括嵌入式ARM CPU及必需的SDRAM和Hash 等器件,通过表贴封装的双排插针将各信号线及控制线引出。这样,只需要设计不同的扩展板即可实现不同的系统功能,节约了开发成本并提高了平台的灵活性。 软件开发方面,如果采用Linux开放源代码进行开发,可以大大降低开发成本,加快软件的开发过程,并有利于后期开发。 1.硬件体系结构 嵌入式系统硬件平台结构主要分为2大部分:一部分为系统主板,为基于ARM的最小系统,包括ARM CPU、∏ash、SDRAM、串口、键盘等最基本部分;另一部分为系统扩展板,提供了用于完成各个不同硬件的功能模块。 常用的嵌入式外围设备则有存储设备、通信设各和显示设备三类。相关支撑硬件包括显示卡、存储介质(ROM和RAM等)、通信设备、IC卡或信用卡的读取设备等。嵌入式系统有别于一般的计算机处理系统,它不具备像硬盘那样大容量的存储介质,而大多使用闪存(∏ash Memory)作为存储介质。 整个系统硬件结构如图1所示,主要组成部分及其功能如表1所示。

图1 ARM嵌入式硬件平台 表1 系统硬件主要组成及其功能描述

另外,系统总线扩展引出数据总线、地址总线和必需的控制总线,便于用户根据自身的特定需求,扩展外围电路。在选择嵌入式系统的硬件时,最重要的是要先选择ARM处理器类型,因为ARM处理器不仅决定整个系统的性能,而且影响其他硬件的选用,以及操作系统和软件代码的配置。 一个设计好的ARM核心板硬件如图2所示。 图2 ARM核心板硬件图

ARM体系及原理

1.1ARM体系结构概述 2.1指令集体系结构 1. 一条ARM指令的最高四位bit[31:28]为条件域(condition field),根据其值的不同来确定当前指令对CPSR中的N、Z、C和V标志的设置与否。 2. ARM指令集支持一个向前或向后32M范围内跳转的Branch指令。如果是Branch and Link指令,则除了支持向前或向后的32M范围跳转外,还能将跳转指令的下一条指令地址(返回地址)压入R14(LR)。而在ARMv4以上支持T的版本中,还有Branch and Exchange指令,此指令可以拷贝通用寄存器Rm的值到PC中,而若其bit[0]为0,则进行ARM至Thumb的切换。 3. ARM指令集中包含了状态寄存器获取指令MSR和MRS用来对CPSR和SPSR进行操作。同时ARM指令集还提供了对协处理器的操作指令MCR和MRC。 4. SWI提供了软件中断的功能,此指令的bit[23:0]为一个立即数,ARM处理器会忽略这个立即数,但这个立即数可以提供异常处理程序使用。 2.2寄存器 通用寄存器(r0-r15): 不分组寄存器r0-r7: 可以工作在所有的处理模式下,没有隐含的特殊用途 分组寄存器r8-r14: 分组寄存器的使用取决于当前的处理器模式,每种模式有专用的分组寄存器用于快速异常处理。 寄存器R13通常用作堆栈指针,称作sp。每种异常模式都有自己的R13。通常R13被初始化为指向异常模式分配的堆栈。在入口处,异常处理程序将用到的其他寄存器的值保存到堆栈中,返回时,重新将这些值加载到寄存器中。

寄存器R14用作子程序链接寄存器lr。当指令BL指令时,得到R15(PC)寄存器的备份。 程序寄存器R15: ARM状态下,PC位[1:0]为0(字对齐)。 Thumb状态下,位[0]为0(半字对齐)。 由于流水线特性,PC总是指向当前执行指令的下两条指令地址。 程序状态寄存器: 所有处理器模式下都访问相同的CPSR,CPSR包含条件码标志。中断禁止位,当前处理器模式以及其他状态和控制信息。 每种异常模式下都有一个程序状态保存寄存器,发生异常时,SPSR用来保存CPSR的状态。 2.3工作模式和特权等级 ARM工作模式: ARM工作状态:从编程的角度看有两种并可以切换 ARM状态:执行32位字对齐的ARM指令 THunb状态:执行 16位的半字对齐 thumb指令注意:ARM 状态下只能执行ARM指令 thumb也是 存储器格式:0-3第一个字 4-7第二个………………. 因此 ARM最大寻址是 4GB 大端格式:高字节存放在低地址空间 小端空间:高字节放高地址,低地址存放低字节 ARM绝大多数时候使用小端格式 指令长度: ARM支持字节,半字,字三种数据类型其中字需要4字节对齐(地址的低两位是0) 半字需要2字节对齐(地址最低位0) 工作模式: 1:用户模式 usr:正常执行程序 2:快速中断模式FIQ: 用于高速数据的传送 3:外部中断模式IRQ: 用于通常的中断处理 4:管理模式svc: super verzer 超级模式,操作系统使用的保护模式 5:数据访问终止模式abt:当数据或指令预取终止时进入该模式,用于虚拟存储及存储保护 6:系统模式sys: 运行具有特权的操作系统任务 7:未定义指令终止模式und: 当未定义的指令执行时进入该模式,可用于支持硬件除用户模式外,其它称为非用户模式,或者是特权模式除去用户模式和系统模式, 其它称为异常模式. 2.4存储器和映射 1.多数的系统需要通过以下的一些方式来初始化和控制存储系统设备: 1)使能Cache,以保证Cache执行所能获得的效益最大化 2)为虚拟存储系统建立虚拟到物理存储的映射 3)为不同的存储区域建立约束规则 4)保证在正确的时间,以正确的方式对存储映射I/O的获取 2.存储系统应该按以下的方式配置: 1)主存储区(RAM)应该被配置成cachable和bufferable; 2)ROM存储区通常只配置成cachable和只读,因此bufferable属性不会被设置。 3.一些ARM实现中包含了一种契入式的write buffer,将多次对同一位置的写操作归并成对主存储区的一次操作。此外一些write buffer还支持写操作 的重排序,那样会使处理器提交的写操作顺序与实际的写操作提交给存储区的顺序存在差异。因此,对I/O区域尽量不要配置成bufferable,以保证对I/O设置的写操作能以一个正确的顺序执行。 4. 所有存储和系统相关的特性都由协处理器15(CP15)来控制,因此CP15也被称为系统控制协处理器。其包含共计16个32位的主寄存器。此外,由于寄存器获取指令中可以包含额外的位来辨识特定的寄存器版本和(或者)对寄存器特定的获取方式,所以实际CP15种的32bit物理寄存器可以超过16个。CP15的属性可以是只读、只写或者可读可写。 5. ARM仅仅定义了一类对CP15操作的指令,即MCR和MRC,其中MCR用来将一个ARM寄存器的值写入CP15,而MRC指令可以将一个CP15寄存器的值读入ARM寄存器中。MRC和MCR指令只有在各个特权模式下才能正常执行,如果是在用户模式下执行这两条指令,则会导致一个未定义指令的异常发生。 CP15 Register 1中各个位的含义如下: M(bit[0]) MMU或保护单元使能位 A(bit[1]) 对齐错误校验使能位 C(bit[2]) Cache使能位(如果是统一cache架构,则标识统一cache使能,如果是独立cache架构,则标识数据cache使能) W(bit[3]) Write buffer使能位 P(bit[4]) 异常处理模式选择位,可选择进入26-bit模式或32-bit模式 D(bit[5]) 26-bit地址异常校验使能位 L(bit[6]) Abort模式版本选择位 B(bit[7]) 大端或小端配置位 S(bit[8]) 系统保护位(在基于MMU的存储系统中使用)

ARM体系结构

ARM体系结构
嵌入式事业部 高军
ARM体系结构
1

主要内容
* * * * ARM介绍 ARM指令集(v4T) ARMv5E指令集扩展 指令集比较:ARM/Thumb/Thumb-2
ARM体系结构
2

ARM介绍
ARM体系结构
3

关于ARM
* 全称:Advanced Risc Machines Ltd. * 主要为国际上其他著名的电子公司提供高性能RISC处理器、外设和系 统芯片技术授权. * 主要收入是收取软件/硬件的技术授权费. * 在1983~1985年,由Acorn公司设计了ARM的初期版本 ? 据说5个人,18个月就设计了ARM的第一个版本 – Herman Hauser,项目经理 – Steve Furber,体系结构设计 – Sophie Wilson,指令集设计 – Robert Heaton,硅片设计 – Jamie Urquhart,硅片设计 * 现在的ARM公司成立于1990年,由Acorn,Apple,VLSI三家公司共同组建, 总部位于英国剑桥. ? 1993年日本立邦财团投资ARM,成为其第四股东.
ARM体系结构
4

ARM产品
* ARM是全世界广泛使用的处理器之一 * ARM以两种方式提供IP: ? 宏单元(已经固定的版图,可以直接生产) ? 可综合版本(-S) * ARM指令集还提供一些扩展: ? Thumb指令集(16位) ? Java虚拟机 – 硬件实现的虚拟机 – 60%字节码可以直接执行,其余的依赖软件仿真 * ARM还提供一些面向SoC的外围设备IP ? 中断控制器(PrimeCell) ? SDRAM控制器 ? …
ARM体系结构
5

ARM体系结构.

ARM是Advanced RISC Machines ( 高级精简指令系统处理器) 的缩写,是ARM公司提供的一种微处理器知识产权( IP) 核 ARM既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字 ARM微处理器的特点 1、体积小、低功耗、低成本、高性能 2、支持Thumb (16位) / ARM (32位) 双指令集,能很好的兼容8位/16位器件 3、大量使用寄存器,指令执行速度更快 4、大多数数据操作都在寄存器中完成 5、寻址方式灵活简单、执行效率高 6、指令长度固定 ARM7系列: 属低端ARM处理器核,最适合用于对价位和功能消耗要求较高的消费类应用 主要应用领域为:工业控制、网络和调制解调器设备、移动电话等多种多媒体和嵌入式应用 DSP: Digital Signal Processor 命名解释: ARM7DMI:T表示支持16位压缩指令集(Thumb),D表示支持片上调试(Debug),M表示内嵌硬件乘法器(Multiplier),I 表示嵌入式ICE(仿真器),支持片上断点和调试点( in - circuit emulater ) ARM7系列处理器特点: 1、具有嵌入式ICE逻辑,调试开发方便 2、功耗极低,适合便携式产品开发

3、3级流水线结构 4、支持Thumb 5、支持多种操作系统 6、指令与ARM9、ARM10系列兼容,便于升级 3级流水线(Pipeline) 的执行过程 取指:从存储器装载指令 译码:对刚装载的指令进行识别 执行:处理指令并把结果写回相应的寄存器 ARM9系列处理器特点: 在高性能和低功耗特性方面提供最佳的性能 主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数码相机和数字摄像机 ARM9有5级流水线:FETCH、DECODE、EXECUTE、MEMORY、WRITE ARM 与THUMB 1、THUMB指令是ARM指令的自给 2、可以相互调用,只要遵循一定的调用规则 3、THUMB指令与ARM指令时间效率和空间效率关系:存储空间是ARM代码的60% ~ 70%,指令数比ARM代码多约30% ~ 40%,存储器为32位时ARM代码比THUMB代码

ARM体系结构详解之ARM寄存器

ARM有37个寄存器,其中31个通用寄存器,6个状态寄存器。 这里尤其要注意区别的是ARM自身寄存器和它的一些外设的寄存器的区别。 ARM自身是统一架构的,也就意味着37个寄存器无论在哪个公司的芯片里面都会出现。但是各家公司会对ARM进行外设的扩展,所以就出现了好多外设寄存器,一定要与这37个寄存器区别开来!!! 1、备份寄存器(R8-R14) 对于R8-R12来说,除在快速中断模式下,每个模式对应相同物理寄存器,所以在FIQ 模式下可不必保护和恢复中断现场。 对于R13-R14来说,每个寄存器对应6个不同的物理寄存器,其中一个是用户模式和系统模式共用的。 寄存器R13常用做栈指针SP,除用户和系统模式外,其他模式在使用时的名字构成为R13_。 寄存器R14又被称为连接寄存器(LR),除用户和系统模式外,其他模式在使用时的名字构成为R14_。 R14有下面两种特殊用途: A、每个处理器模式自己的物理R14中存放在当前子程序的返回地址。当通过BL或BLX指令调用子程序时,R14被设置成该子程序的返回地址。 B、当异常中断发生时,该异常模式下的R14被设置成保存该模式基于PC的返回地址,对于有些异常模式,R14的值有可能与将返回的地址有个常数的偏移量,不同模式偏移量还有所不同(在ARM的异常处理里有详细介绍)。 2、不分组寄存器(R0-R7) 不分组也就是说说,在所有的处理器模式下指的都时同一物理寄存器。在异常中断造成处理器模式切换时,由于不同的处理器模式使用一个名字相同的物理寄存器,就是使用的同一个寄存器,这样可能造成寄存器中数据被破坏,所以在进行模式切换时必须加以保护。 3、程序计数器R15 对于用户来说,尽量避免使用STR/STM指令来保存R15的值。当成功向R15写入一个地址数值时,程序将跳转到该地址执行。 在ARM状态下指令总是字对齐的,所以PC的PC[1:0]位恒为零,在想PC写入地址

相关文档