ARM复习和总结.docx

上传人:b****7 文档编号:23843003 上传时间:2023-05-21 格式:DOCX 页数:41 大小:832.81KB
下载 相关 举报
ARM复习和总结.docx_第1页
第1页 / 共41页
ARM复习和总结.docx_第2页
第2页 / 共41页
ARM复习和总结.docx_第3页
第3页 / 共41页
ARM复习和总结.docx_第4页
第4页 / 共41页
ARM复习和总结.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

ARM复习和总结.docx

《ARM复习和总结.docx》由会员分享,可在线阅读,更多相关《ARM复习和总结.docx(41页珍藏版)》请在冰豆网上搜索。

ARM复习和总结.docx

ARM复习和总结

ARM复习和总结

1.ARM体系结构

ARM的特点和优势:

工作状态、工作模式

状态切换

寄存器结构

异常的进入和退出

简单的汇编语言,启动过程,bootloader

模式切换,开关中断

2.嵌入式操作系统:

uc/os-ii任务,任务的状态,任务状态的转换,任务的优先级,

临界态

3.适当的背景常识

ARM公司的起源、发展

嵌入式系统

嵌入式实时操作系统

三星S3C44B0芯片

其他的半导体厂家,著名的芯片厂商

第1章嵌入式系统概述

嵌入式系统的概念:

从技术的角度定义:

以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

从系统的角度定义:

嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。

术语嵌入式反映了这些系统通常是更大系统中的一个完整的部分,称为嵌入的系统。

嵌入的系统中可以共存多个嵌入式系统。

嵌入式处理器分类:

嵌入式处理器可以分为以下几大类:

Ø嵌入式微处理器;

Ø嵌入式微控制器;

Ø嵌入式DSP处理器;

Ø嵌入式片上系统(SOC)。

嵌入式微处理器:

嵌入式微处理器的基础是通用计算机中的CPU。

在应用中,将微处理器装配在专门设计的电路板上,只保留和嵌入式应用有关的母板功能,这样可以大幅度减小系统体积和功耗。

为了满足嵌入式应用的特殊要求,嵌入式微处理器虽然在功能上和标准微处理器基本是一样的,但在工作温度、抗电磁干扰、可靠性等方面一般都做了各种增强。

单板计算机:

嵌入式微处理器及其存储器、总线、外设等安装在一块电路板上,称为单板计算机。

如STD-BUS、PC104等。

嵌入式微控制器:

嵌入式微控制器又称单片机,它是将整个计算机系统集成到一块芯片中。

嵌入式微控制器一般以某一种微处理器内核为核心,芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、WatchDog、I/O、串行口、脉宽调制输出、A/D、D/A、FlashRAM、EEPROM等各种必要功能和外设。

和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。

微控制器是目前嵌入式系统工业的主流。

微控制器的片上外设资源一般比较丰富,适合于控制,因此称微控制器。

嵌入式DSP处理器:

DSP处理器对系统结构和指令进行了特殊设计,使其适合于执行DSP算法,编译效率较高,指令执行速度也较高。

在数字滤波、FFT、谱分析等方面DSP算法正在大量进入嵌入式领域,DSP应用正从在通用单片机中以普通指令实现DSP功能,过渡到采用嵌入式DSP处理器。

嵌入式DSP处理器比较有代表性的产品是TexasInstruments的TMS320系列和Motorola的DSP56000系列。

TMS320系列处理器包括用于控制的C2000系列,移动通信的C5000系列,以及性能更高的C6000和C8000系列。

嵌入式片上系统(SOC):

随着EDA的推广和VLSI设计的普及化及半导体工艺的迅速发展,在一个硅片上实现一个更为复杂的系统的时代已来临,这就是SystemOnChip(SOC)。

各种通用处理器内核将作为SOC设计公司的标准库,和许多其它嵌入式系统外设一样,成为VLSI设计中一种标准的器件,用标准的VHDL等语言描述,存储在器件库中。

SoC可以分为通用和专用两类。

通用系列包括Infineon的TriCore、Motorola的M-Core、某些ARM系列器件、Echelon和Motorola联合研制的Neuron芯片等。

专用SoC一般专用于某个或某类系统中,不为一般用户所知。

嵌入式操作系统:

在发展初期没有操作系统这个概念,用户使用监控程序来使用计算机。

在六十年代中期监控程序又进一步发展形成了操作系统(OperatingSystem)。

发展到现在,广泛使用的有三种操作系统即多道批处理操作系统、分时操作系统以及实时操作系统。

实时操作系统的特点

总的来说实时操作系统是事件驱动的,能对来自外界的作用和信号在限定的时间范围内作出响应。

它强调的是实时性、可靠性和灵活性,与实时应用软件相结合成为有机的整体起着核心作用,由它来管理和协调各项工作,为应用软件提供良好的运行软件环境及开发环境。

从实时系统的应用特点来看实时操作系统可以分为两种:

一般实时操作系统和嵌入式实时操作系统。

一般实时操作系统:

一般实时操作系统应用于实时处理系统的上位机和实时查询系统等实时性较弱的实时系统,并且提供了开发、调试、运用一致的环境。

嵌入式实时操作系统:

嵌入式实时操作系统应用于实时性要求高的实时控制系统,而且应用程序的开发过程是通过交叉开发来完成的,即开发环境与运行环境是不一致。

嵌入式实时操作系统具有规模小(一般在几K~几十K内)、可固化使用实时性强(在毫秒或微秒数量级上)的特点。

IEEE的实时UNIX分委会认为实时操作系统应具备以下的几点:

Ø异步的事件响应

Ø切换时间和中断延迟时间确定

Ø优先级中断和调度

Ø抢占式调度

Ø内存锁定

Ø连续文件

Ø同步

常见的嵌入式操作系统:

一、嵌入式Linux

uClinux完全符合GNU/GPL公约的操作系统,从Linux 2.0/2.4内核派生而来,专门针对没有MMU的CPU,适用于没有虚拟内存或内存管理单元(MMU)的处理器,例如ARM7TDMI。

它通常用于具有很少内存或Flash的嵌入式系统。

它保留了Linux的大部分优点:

稳定、良好的移植性、优秀的网络功能、完备的对各种文件系统的支持、以及标准丰富的API等。

二、WinCE

WindowsCE是微软开发的一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作,它是精简的Windows95。

WindowsCE的图形用户界面相当出色。

WinCE具有模块化、结构化和基于Win32应用程序接口以及与处理器无关等特点。

WinCE不仅继承了传统的Windows图形界面,并且在WinCE平台上可以使用Windows95/98上的编程工具(如VisualBasic、VisualC++等)、使绝大多数的应用软件只需简单的修改和移植就可以在WindowsCE平台上继续使用。

三、VxWorks

VxWorks操作系统是美国WINDRIVER公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。

良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。

它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等,甚至在1997年4月登陆火星表面的火星探测器上也使用到了VxWorks。

四、μC/OS-II

μC/OS-II是一个源码公开、可移植、可固化、可裁剪、占先式的实时多任务操作系统。

其绝大部分源码是用ANSIC写的,使其可以方便的移植并支持大多数类型的处理器。

μC/OS-II通过了联邦航空局(FAA)商用航行器认证。

自1992年问世以来,μC/OS-II已经被应用到数以百计的产品中。

μC/OS-II占用很少的系统资源,并且在高校教学使用是不需要申请许可证。

第2章ARM7体系结构

2.1ARM简介

ARM公司简介:

ARM是AdvancedRISCMachines的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC(精简指令集)处理器。

ARM公司的特点是只设计芯片,而不生产。

它将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供服务。

RISC结构特性:

RISC是精简指令集计算机的缩写,其目标是设计出在高时钟频率下单周期执行,简单而有效的指令集。

ARM内核采用RISC体系结构,因此具有RISC的结构特点:

▪具有大量的通用存储器;

▪独特的装载/保存(load-store)结构;

▪简单的寻址模式;

▪统一和固定长度的指令格式。

常用ARM处理器系列:

ARM公司开发了很多系列的ARM处理器核,目前最新的系列是Cortex,而ARM6核以及更早的系列已经很罕见了。

当前应用比较多的ARM处理器核系列有:

ARM7系列简介

该系列包括ARM7TDMI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle的ARM7EJ-S。

该系列处理器提供Thumb16位压缩指令集和EmbededICE软件调试方式,适用于更大规模的SoC设计中。

ARM7系列广泛应用于多媒体和嵌入式设备,包括Internet设备、网络和调制解调器设备,以及移动电话、PDA等无线设备。

2.2ARM7TDMI

简介:

ARM7TDMI是基于ARM体系结构V4版本的低端ARM核。

其弥补了ARM6很难在低于5V电压下稳定工作的不足,还增加了后缀所对应的功能:

注意:

“ARM核”并非芯片,ARM核与其它部件如RAM、ROM、片内外设组合在一起才能构成现实的芯片。

存储器的字与半字:

1、从偶数地址开始的连续2个字节构成一个半字;

2、以能被4整除的地址开始的连续4个字节构成一个字;

3、ARM指令的长度刚好是一个字,Thumb指令的长度刚好是一个半字。

存储器的存储方式:

如果一个数据是从偶地址开始的连续存储,那么它就是半字对齐,否则就是非半字对齐;

如果一个数据是以能被4整除的地址开始的连续存储,那么它就是字对齐,否则就是非字对齐。

方式

半字对齐

字对齐

地址

……

0x4002

0x4004

……

……

0x4004

0x4008

……

特征

Bit0=0

其他位为任意值

Bit1=0,Bit0=0

其他位为任意值

三级流水线:

ARM处理器使用流水线来增加处理器指令流的速度,这样可使几个操作同时进行,并使处理和存储器系统连续操作,能提供0.9MIPS/MHz的指令执行速度。

正常操作过程中,在执行一条指令的同时对下一条(第二条)指令进行译码,并将第三条指令从存储器中取出。

ARM7TDMI的流水线分3级,分别为:

在ARM状态下,流水线上各指令的地址为:

在Thumb状态下,流水线上各指令的地址为:

2.3ARM处理器状态

处理器状态:

ARM7TDMI处理器内核包含2套指令系统,分别为ARM指令集和Thumb指令,并且各自对应1种处理器的状态:

ARM状态:

32位,处理器执行字方式的ARM指令,处理器默认为此状态;

Thumb状态:

16位,处理器执行半字方式的Thumb指令。

注意:

两个状态之间的切换并不影响处理器模式或寄存器内容。

状态切换的一个例子:

从ARM状态切换到Thumb状态的程序代码如下:

从Thumb状态切换到ARM状态的程序代码如下:

 

2.5ARM处理器模式

简介:

ARM体系结构支持7种处理器模式,分别为:

用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。

这样的好处是可以更好的支持操作系统并提高工作效率。

ARM7TDMI完全支持这七种模式。

处理器模式:

除用户模式外,其它模式均为特权模式。

ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。

此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。

这五种模式称为异常模式。

它们除了可以通过程序切换进入外,也可以由特定的异常进入。

当特定的异常出现时,处理器进入相应的模式。

每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。

这两种模式都不能由异常进入,想要进入必须修改CPSR,而且它们使用完全相同的寄存器组。

系统模式是特权模式,不受用户模式的限制。

操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。

处理器模式

说明

备注

用户(usr)

正常程序运行的工作模式

不能直接从用户模式切换到其它模式

系统(sys)

用于支持操作系统的特权任务等

与用户模式类似,但具有可以直接切换到其它模式等特权

快中断(fiq)

快速中断请求处理

只有在FIQ异常响应时,才进入此模式

中断(irq)

中断请求处理

只有在IRQ异常响应时,才进入此模式

管理(svc)

供操作系统使用的一种保护模式

只有在系统复位和软件中断响应时,才进入此模式

中止(abt)

用于虚拟内存和/或存储器保护

在ARM7内核中没有多大用处

未定义(und)

支持软件仿真的硬件协处理器

只有在未定义指令异常响应时,才进入此模式

何时进入异常模式,具体规定如下:

•处理器复位之后进入管理模式,操作系统内核通常处于管理模式;

•当处理器访问存储器失败时,进入数据访问中止模式;

•当处理器遇到没有定义或不支持的指令时,进入未定义模式;

•中断模式与快速中断模式分别对ARM处理器2种不同级别的中断作出响应。

2.5ARM体系的存储系统

简介:

ARM处理器采用冯·诺依曼(VonNeumann)结构,指令、数据和I/O统一编址(即存在同一个空间)。

只有装载、保存和交换指令可访问存储器中的数据。

ARM芯片一般在处理器核和外部存储器之间有一个存储器管理部件将局部总线的信号和时序转换为现实的外部总线信号和时序。

地址空间:

ARM结构使用单个平面的232个8位字节地址空间。

地址空间可以看作是包含230个32位字,或231个16位半字。

如果地址向上或向下溢出地址空间,通常会发生翻转。

注意:

如果在取指操作时地址发生溢出,只要没有执行预取的无效指令,就不会导致异常。

存储器格式:

地址空间的规则要求字地址A:

Ø位于地址A的字包含的字节位于地址A,A+1,A+2和A+3;

Ø位于地址A的半字包含的字节位于地址A和A+1;

Ø位于地址A+2的半字包含的字节位于地址A+2和A+3;

Ø位于地址A的字包含的半字位于地址A和A+2;

存储器系统有两种映射机制:

Ø小端存储器系统:

在小端格式中,数据的高字节存放在高地址中。

Ø大端存储器系统:

在大端格式中,数据的高字节存放在低地址中。

非对齐的存储器访问:

ARM结构通常希望所有的存储器访问都合理的对齐,具体来说就是字访问的地址通常是字对齐的,而半字访问使用的地址是半字对齐的。

不按这种方式对齐的存储器访问称为非对齐的存储器访问。

Ø将一个非字(半字)对齐的地址写入R15寄存器,将引起非对齐的指令取指;

Ø在一个非字(半字)对齐的地址读写一个字(半字),将引起非对齐的数据访问。

第三章ARM处理器的编程模型

ARM体系结构的技术特征:

ARM的体系结构采用了若干BerkeleyRISC处理器设计中的特征

ØLoad/store体系结构

Ø固定的32位指令

Ø3地址指令格式

也放弃了其它若干BerkeleyRISC特征

Ø寄存器窗口

Ø延迟转移

Ø所有的指令单周期执行

ARM体系结构的演变:

1)Thumb指令集(T变种)

Thumb指令集是把32位的ARM指令集的一个子集重新编码后而形成的一个特殊的16位的指令集

2)长乘指令(M变种)

长乘指令是一种生成64位相乘结果的乘法指令(此指令为ARM指令),M变种增加了两条长乘指令

3)增强型DSP指令(E变种)

E变种的ARM体系增加了一些增强处理器对典型的DSP算法处理能力的附加指令

4)Java加速器Jazelle(J变种)

ARM的Jazelle技术是Java语言和先进的32位RISC芯片完美结合的产物

5)ARM媒体功能扩展(SIMD变种)

ARM处理器工作状态:

ARM处理器核可以工作在以下2种状态

ØARM状态

32位,ARM状态下执行字对准的32位ARM指令;

ØThumb状态

16位,Thumb状态下执行半字对准的16位Thumb指令。

在Thumb状态下,程序计数器PC使用位1选择另一个半字。

在程序执行的过程中,处理器可以在两种状态下切换。

ØARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容。

ØARM指令集和Thumb指令集都有相应的状态切换命令。

ØARM处理器在开始执行代码时,只能处于ARM状态。

ARM处理器在两种工作状态之间切换方法:

Ø进入Thumb状态

当操作数寄存器Rm的状态位bit[0]为1时,执行BXRm指令进入Thumb状态。

如果处理器在Thumb状态进入异常,则当异常处理(IRQ,FIQ,Undef,Abort和SWI)返回时,自动切换到Thumb状态。

Ø进入ARM状态

当操作数寄存器Rm的状态位bit[0]为0时,执行BXRm指令进入ARM状态。

如果处理器进行异常处理(IRQ,FIQ,Undef,Abort和SWI),在此情况下,把PC放入异常模式链接寄存器LR中,从异常向量地址开始执行也可以进入ARM状态。

ARM寄存器组成概述:

ARM处理器总共有37个寄存器,可以分为以下两类寄存器

Ø31个通用寄存器

●R0~R15;

●R13_svc、R14_svc;

●R13_abt、R14_abt;

●R13_und、R14_und;

●R13_irq、R14_irq;

●R8_frq-R14_frq。

Ø6个状态寄存器

●CPSR;SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq和SPSR_fiq

ARM状态下的寄存器组织:

通用寄存器:

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

Ø未分组寄存器R0~R7

⏹在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途,因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。

Ø分组寄存器R8~R14

⏹每次所访问的物理寄存器与处理器当前的运行模式有关

⏹R8~R12:

每个寄存器对应两个不同的物理寄存器

◆当使用fiq模式时,访问寄存器R8_fiq~R12_fiq;

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

⏹分组寄存器R13~R14

◆R13、R14:

每个寄存器对应6个不同的物理寄存器

◆其中的一个是用户模式与系统模式共用,另外5个物理寄存器对应于其他5种不同的运行模式

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

•R13_

•R14_

◆mode为以下几种之一:

usr、fiq、irq、svc、abt、und。

◆堆栈指针—R13

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

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

•由于处理器的每种运行模式均有自己独立的物理寄存器R13,在初始化部分,都要初始化每种模式下的R13,这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复。

◆子程序连接寄存器—R14

•R14也称作子程序连接寄存器或连接寄存器LR。

当执行BL子程序调用指令时,可以从R14中得到R15(程序计数器PC)的备份。

其他情况下,R14用作通用寄存器。

•在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,将PC的当前值拷贝给R14,执行完子程序后,又将R14的值拷贝回PC,即可完成子程序的调用返回。

BLSUB1

……

SUB1:

STMFDSP!

{,LR}/*将R14存入堆栈*/

……

LDMFDSP!

{,PC}/*完成子程序返回*/

Ø程序计数器PC(R15)

⏹ARM状态下,位[1:

0]为0,位[31:

2]用于保存PC;

⏹Thumb状态下,位[0]为0,位[31:

1]用于保存PC;

⏹R15虽然也可用作通用寄存器,但一般不这么使用,因为对R15的使用有一些特殊的限制,当违反了这些限制时,程序的执行结果是未知的。

⏹由于ARM体系结构采用了多级流水线技术,对于ARM指令集而言,PC总是指向当前指令的下两条指令的地址,即PC的值为当前指令的地址值加8个字节。

程序状态寄存器(CPSR/SPSR):

Ø寄存器R16用作CPSR(当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。

Ø每一种运行模式下又都有一个专用的物理状态寄存器,称为SPSR(备份的程序状态寄存器),异常发生时,SPSR用于保存CPSR的值,从异常退出时则可由SPSR来恢复CPSR。

Ø由于用户模式和系统模式不属于异常模式,他们没有SPSR,当在这两种模式下访问SPSR,结果是未知的。

Thumb状态下的寄存器组织:

Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集。

程序可以直接访问8个通用寄存器(R7~R0)、程序计数器(PC)、堆栈指针(SP)、连接寄存器(LR)和CPSR。

同样,每一种特权模式下都有一组SP、LR和SPSR。

Thumb状态下的寄存器组织图:

Thumb状态下的寄存器与ARM状态下的寄存器关系:

ØThumb状态下和ARM状态下的R0~R7是相同的。

ØThumb状态下和ARM状态下的CPSR和所有的SPSR是相同的。

ØThumb状态下的SP对应于ARM状态下的R13。

ØThumb状态下的LR对应于ARM状态下的R14。

ØThumb状态下的程序计数器对应于ARM状态下R15。

Thumb状态下的寄存器与ARM状态下的寄存器关系图:

程序状态寄存器:

ARM体系结构包含一个当前程序状态寄存器(CPSR)和五个备份的程序状态寄存器(SPSRs)。

备份的程序状态寄存器用来进行异常处理。

其功能包括:

Ø保存ALU中的当前操作信息

Ø控制允许和禁止中断

Ø设置处理器的运行模式

程序状态寄存器的每一位的安排:

程序状态寄存器的条件码标志:

N、Z、C、V均为条件码标志位。

它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行

Ø在ARM状态下,所有指令都可以是有条件执行的。

当然也可以无条件执行。

Ø在Thumb状态下,仅有分支指令是有条件执行的。

影响标志位的指令:

程序状态寄存器的控制位:

状态寄存器的低8位(I、F、T和M[4:

0])称为控制位,发生异常时这些位可以被改变。

如果处理器运行特权模式,这些位也可以由程序修改。

Ø中断禁止位I、F:

I=1禁止IRQ中断;

F=1禁止FIQ中断。

ØT标志位:

该位反映处理器的运行状态

⏹ARM体

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 小学教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1