⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 arm应用系统开发详解全集.txt

📁 作为一种16/32 位的高性能、低成本、低功耗的嵌入式RISC 微处理器
💻 TXT
📖 第 1 页 / 共 5 页
字号:
免复杂指令;将指令长度固定,指令格式和寻地方式种类减少;以控制逻辑为主,不用或少用微码 

控制等措施来达到上述目的。 

   到目前为止,RISC 体系结构也还没有严格的定义,一般认为,RISC 体系结构应具有如下特点: 

   -采用固定长度的指令格式,指令归整、简单、基本寻址方式有2~3 种。 

   -使用单周期指令,便于流水线操作执行。 

   -大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/                       存储指令可以访问存储器, 

以提高指令的执行效率。 

   除此以外,ARM 体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面 

积,并降低功耗: 

   -所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。 

   -可用加载/存储指令批量传输数据,以提高数据的传输效率。 

   -可在一条数据处理指令中同时完成逻辑处理和移位处理。 

   -在循环处理中使用地址的自动增减来提高运行效率。 

   当然,和CISC 架构相比较,尽管RISC 架构有上述的优点,但决不能认为RISC 架构就可以取 

代CISC 架构,事实上,RISC 和CISC 各有优势,而且界限并不那么明显。现代的CPU 往往采用 

CISC 的外围,内部加入了RISC 的特性,如超长指令集CPU 就是融合了RISC 和CISC 的优势,成 

为未来的CPU 发展方向之一。 



1.4.2  ARM 微处理器的寄存器结构 



    ARM 处理器共有37 个寄存器,被分为若干个组(BANK ),这些寄存器包括: 

   - 31 个通用寄存器,包括程序计数器(PC 指针),均为32 位的寄存器。 

   - 6 个状态寄存器,用以标识CPU 的工作状态及程序的运行状态,均为32 位,目前只使用了 

其中的一部分。 

   同时,ARM 处理器又有7 种不同的处理器模式,在每一种处理器模式下均有一组相应的寄存器 

与之对应。即在任意一种处理器模式下,可访问的寄存器包括15 个通用寄存器(R0~R14 )、一至 

二个状态寄存器和程序计数器。在所有的寄存器中,有些是在7 种处理器模式下共用的同一个物理 

寄存器,而有些寄存器则是在不同的处理器模式下有不同的物理寄存器。 

   关于ARM 处理器的寄存器结构,在后面的相关章节将会详细描述。 



1.4.3  ARM 微处理器的指令结构 



    ARM 微处理器的在较新的体系结构中支持两种指令集:ARM 指令集和Thumb 指令集。其中, 


----------------------- 页面 13-----------------------

                    ARM 应用系统开发详解──基于S3C4510B 的系统设计                          6 



ARM 指令为32 位的长度,Thumb 指令为16 位长度。Thumb 指令集为ARM 指令集的功能子 

集,但与等价的ARM 代码相比较,可节省30%~40 %以上的存储空间,同时具备32 位代码的所 

有优点。 

   关于ARM 处理器的指令结构,在后面的相关章节将会详细描述。 



1.5   ARM 微处理器的应用选型 



    鉴于ARM 微处理器的众多优点,随着国内外嵌入式应用领域的逐步发展,ARM 微处理器必然 

会获得广泛的重视和应用。但是,由于ARM  微处理器有多达十几种的内核结构,几十个芯片生产 

厂家,以及千变万化的内部功能配置组合,给开发人员在选择方案时带来一定的困难,所以,对ARM 

芯片做一些对比研究是十分必要的。 

    以下从应用的角度出发,对在选择ARM 微处理器时所应考虑的主要问题做一些简要的探讨。 

ARM 微处理器内核的选择 

    从前面所介绍的内容可知,ARM           微处理器包含一系列的内核结构,以适应不同的应用领域, 

用户如果希望使用WinCE 或标准Linux 等操作系统以减少软件开发时间,就需要选择ARM720T  以 

上带有MMU     (Memory Management Unit )功能的ARM 芯片,ARM720T、ARM920T、ARM922T、 

ARM946T、Strong-ARM 都带有MMU 功能。而ARM7TDMI 则没有MMU,不支持Windows CE 和 

标准Linux,但目前有uCLinux 等不需要MMU 支持的操作系统可运行于ARM7TDMI 硬件平台之 

上。事实上,uCLinux  已经成功移植到多种不带MMU  的微处理器平台上,并在稳定性和其他方面 

都有上佳表现。 

    本书所讨论的S3C4510B 即为一款不带MMU  的ARM 微处理器,可在其上运行uCLinux 操作 

系统。 

系统的工作频率 

    系统的工作频率在很大程度上决定了ARM 微处理器的处理能力。ARM7 系列微处理器的典型 

处理速度为0.9MIPS/MHz,常见的ARM7 芯片系统主时钟为20MHz-133MHz,ARM9 系列微处理 

器的典型处理速度为1.1MIPS/MHz,常见的ARM9 的系统主时钟频率为100MHz-233MHz,ARM10 

最高可以达到700MHz。不同芯片对时钟的处理不同,有的芯片只需要一个主时钟频率,有的芯片 

内部时钟控制器可以分别为ARM 核和USB、UART、DSP、音频等功能部件提供不同频率的时钟。 

芯片内存储器的容量 

    大多数的ARM  微处理器片内存储器的容量都不太大,需要用户在设计系统时外扩存储器,但 

也有部分芯片具有相对较大的片内存储空间,如ATMEL 的AT91F40162 就具有高达2MB 的片内程 

序存储空间,用户在设计时可考虑选用这种类型,以简化系统的设计。 

片内外围电路的选择 

    除ARM  微处理器核以外,几乎所有的ARM  芯片均根据各自不同的应用领域,扩展了相关功 

能模块,并集成在芯片之中,我们称之为片内外围电路,如USB 接口、IIS 接口、LCD 控制器、键 

盘接口、RTC、ADC 和DAC、DSP 协处理器等,设计者应分析系统的需求,尽可能采用片内外围 

电路完成所需的功能,这样既可简化系统的设计,同时提高系统的可靠性。 



1.6   本章小节 



    本章对ARM 微处理器、ARM 技术的基本概念做了一些简单的介绍,希望读者通过对本章的阅 

读,能对ARM 微处理器、ARM 技术有一个总体上的认识。 


----------------------- 页面 14-----------------------

                    ARM 应用系统开发详解──基于S3C4510B 的系统设计                          1 



             第2 章  ARM 微处理器的编程模型 



    本章简介ARM 微处理器编程模型的一些基本概念,包括工作状态切换、数据的存储格式、处理 

器异常等,通过对本章的阅读,希望读者能了解ARM 微处理器的基本工作原理和一些与程序设计相 

关的基本技术细节,为以后的程序设计打下基础。 

    本章的主要内容: 

    -  ARM 微处理器的工作状态 

    -  ARM 体系结构的存储器格式 

    -  ARM 微处理器的工作模式 

    -  ARM 体系结构的寄存器组织 

    -  ARM 微处理器的异常状态 

    在开始本章之前,首先对字(Word)、半字(Half-Word)、字节(Byte)的概念作一个说明: 

    字(Word):在ARM体系结构中,字的长度为32位,而在8位/16位处理器体系结构中,字的长 

度一般为16位,请读者在阅读时注意区分。 

     半字(Half-Word):在ARM体系结构中,半字的长度为16位,与8位/16位处理器体系结构中 

字的长度一致。 

     字节(Byte):在ARM体系结构和8位/16位处理器体系结构中,字节的长度均为8位。 



2.1   ARM 微处理器的工作状态 



     从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换: 

     -第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令; 

     -第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。 

     当ARM微处理器执行32位的ARM指令集时,工作在ARM状态;当ARM微处理器执行16位的Thumb指 

令集时,工作在Thumb状态。在程序的执行过程中,微处理器可以随时在两种工作状态之间切换, 

并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。 

状态切换方法: 

    ARM指令集和Thumb指令集均有切换处理器状态的指令,并可在两种工作状态之间切换,但ARM 

微处理器在开始执行代码时,应该处于ARM状态。 

    进入Thumb状态:当操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的方法,使微 

处理器从ARM状态切换到Thumb状态。此外,当处理器处于Thumb状态时发生异常(如IRQ、FIQ、Undef、 

Abort、SWI等),则异常处理返回时,自动切换到Thumb状态。 

    进入ARM状态:当操作数寄存器的状态位为0时,执行BX指令时可以使微处理器从Thumb状态切 

换到ARM状态。此外,在处理器进行异常处理时,把PC指针放入异常模式链接寄存器中,并从异常 

向量地址开始执行程序,也可以使处理器切换到ARM状态。 



2.2   ARM 体系结构的存储器格式 



    ARM体系结构将存储器看作是从零地址开始的字节的线性组合。从零字节到三字节放置第一个 

存储的字数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列。作为32位的微处 

理器,ARM体系结构所支持的最大寻址空间为4GB (232字节)。 



    ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式,具体说明如下: 


----------------------- 页面 15-----------------------

                    ARM 应用系统开发详解──基于S3C4510B 的系统设计                           2 



大端格式: 

    在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,如图 

2.1所示: 



                            图2.1  以大端格式存储字数据 



小端格式: 

    与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的 

是字数据的高字节。如图2.2所示: 



                            图2. 2 以小端格式存储字数据 



2.3   指令长度及数据类型 



    ARM微处理器的指令长度可以是32位(在ARM状态下),也可以为16位(在Thumb状态下)。 

    ARM微处理器中支持字节(8位)、半字(16位)、字(32位)三种数据类型,其中,字需要4 

字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0)。 



2.4   处理器模式 



    ARM微处理器支持7种运行模式,分别为: 

     ─ 用户模式(usr):            ARM处理器正常的程序执行状态 

     ─ 快速中断模式(fiq): 用于高速数据传输或通道处理 

     ─ 外部中断模式(irq): 用于通用的中断处理 

     ─ 管理模式(svc):            操作系统使用的保护模式 

     ─ 数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储 

保护。 

     ─ 系统模式(sys):            运行具有特权的操作系统任务。 


----------------------- 页面 16-----------------------

                    ARM 应用系统开发详解──基于S3C4510B 的系统设计                          3 



     ─ 未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件 

协处理器的软件仿真。 

    ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。 

    大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源 

是不能被访问的。 

    除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式(Privileged Modes); 

其中除去用户模式和系统模式以外的5种又称为异常模式(Exception Modes),常用于处理中断或 

异常,以及需要访问受保护的系统资源等情况。 



2.5   寄存器组织 



     ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。但是这些寄 

存器不能被同时访问,具体哪些寄存器是可编程访问的,取决微处理器的工作状态及具体的运行模 

式。但在任何时候,通用寄存器R14~R0、程序计数器PC、一个或两个状态寄存器都是可访问的。 



2.5.1  ARM 状态下的寄存器组织 



通用寄存器: 

    通用寄存器包括R0~R15,可以分为三类: 

    ─ 未分组寄存器R0~R7; 

    ─ 分组寄存器R8~R14 

    ─ 程序计数器PC(R15) 

未分组寄存器R0~R7: 

    在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途, 

因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存 

器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。 

分组寄存器R8~R14 

    对于分组寄存器,他们每一次所访问的物理寄存器与处理器当前的运行模式有关。 

    对于R8~R12来说,每个寄存器对应两个不同的物理寄存器,当使用fiq模式时,访问寄存器 

R8_fiq~R12_fiq;当使用除fiq模式以外的其他模式时,访问寄存器R8_usr~R12_usr。 

    对于R13、R14来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式与系统模 

式共用,另外5个物理寄存器对应于其他5种不同的运行模式。 

    采用以下的记号来区分不同的物理寄存器: 



        R13_<mode> 



        R14_<mode> 



    其中,mode为以下几种模式之一:usr、fiq、irq、svc、abt、und。 

    寄存器R13在ARM指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器 

作为堆栈指针。而在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针。 

    由于处理器的每种运行模式均有自己独立的物理寄存器R13,在用户应用程序的初始化部分, 

一般都要初始化每种模式下的R13,使其指向该运行模式的栈空间,这样,当程序的运行进入异常 

模式时,可以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应 

的堆栈中恢复,采用这种方式可以保证异常发生后程序的正常执行。 

     R14也称作子程序连接寄存器(Subroutine Link Register)或连接寄存器LR。当执行BL子程 

序调用指令时,R14中得到R15 (程序计数器PC)的备份。其他情况下,R14用作通用寄存器。与之 

类似,当发生中断或异常时,对应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und 

用来保存R15的返回值。 


----------------------- 页面 17-----------------------

                    ARM 应用系统开发详解──基于S3C4510B 的系统设计                           4 



    寄存器R14常用在如下的情况: 

    在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,将 

PC的当前值拷贝给R14,执行完子程序后,又将R14的值拷贝回PC,即可完成子程序的调用返回。以 

上的描述可用指令完成: 

    1、执行以下任意一条指令: 



      MOV      PC,LR 



      BX       LR 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -