嵌入式系统设计复习总结-第3章-ARM体系结构_第1页
嵌入式系统设计复习总结-第3章-ARM体系结构_第2页
嵌入式系统设计复习总结-第3章-ARM体系结构_第3页
嵌入式系统设计复习总结-第3章-ARM体系结构_第4页
嵌入式系统设计复习总结-第3章-ARM体系结构_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

第3章ARM体系结构13245ARM处理器的寄存器组织ARM处理器的工作模式ARM版本架构及微处理器系列6第三章ARM体系结构ARM异常处理ARM处理器的工作状态ARM处理器的存储器格式ARM体系结构各版本ARM体系结构从最初开发到现在有了很大的改进,并仍在完善和发展。为了清楚地表达每个ARM应用实例所使用的指令集,ARM公司定义了7种主要的ARM指令集体系结构版本,以版本号V1~V7表示。ARM微处理器系列ARM7系列ARM9系列ARM9E系列ARM10E系列SecurCore系列其中,ARM7、ARM9、ARM9E和ARM10、ARM11为通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。SecurCore系列专门为安全要求较高的应用而设计。ARMCortex系列ARM11系列ARM微处理器系列ARMCortex处理器系列

包括了ARMv7架构的所有系列,含有面向复杂操作系统、实时的和微控制器应用的多种处理器。ARMCortex-M系列支持Thumb-2指令集,它是Thumb指令集的扩展集,可以执行所有已存的为早期的处理器编写的代码。在命名方式上,基于ARMv7架构的ARM处理器已经不再延用过去的数字命名方式,而是冠以Cortex的代号。基于v7A的称为"Cortex-A系列",基于v7R的称为"Cortex-R系列",基于v7M的称为"Cortex-M3"。ARMCortex-A系列是针对日益增长的,运行包括IOS、Android、Linux、WindowsCE和Symbian等操作系统的消费者娱乐和无线产品设计的;ARMCortex-R系列针对的是需要运行实时操作系统来进行控制应用的系统,包括有汽车电子、网络和影像系统;ARMCortex-M系列则是为那些对开发费用非常敏感同时对性能要求不断增加的嵌入式应用所设计的。

ARMCortex-M3讨论题:ARM处理器应用选型(1/5)ARM微处理器有多达十几种内核结构、几十个芯片生产厂家以及千变万化的内部功能配置组合;开发人员应如何选择?讨论题:ARM处理器应用选型(2/5)

1、系统的工作频率系统的工作频率在很大程度上决定了处理器的处理能力;ARM7系列:0.9MIPS/MHz,主频:20~133MHz;ARM9系列:1.1MIPS/MHz,主频:100~233MHz;ARM10最高可达700MHzARM11在1GHz以上讨论题:ARM处理器应用选型(3/5)

2、芯片内存储器的容量大多数的ARM微处理器片内容量都不大,需要用户在设计系统时外扩存储器;讨论题:ARM处理器应用选型(4/5)

3、片内外围电路的选择ARM芯片根据各自不同的应用领域,扩展相关的功能模块,集成在芯片中,称之为片内外围电路;如:USB接口、IIS接口、LCD控制器、键盘接口、ADC和DAC等等;讨论题:ARM处理器应用选型(5/5)

4、目标系统是否使用操作系统WindowsCE、Linux;需要选择ARM720T以上,带有MMU功能,如ARM920T、ARM922T、StrongARM;而ARM7TDMI没有MMU。ucLinux、uC/OS-II不需要MMU支持,可以运行于ARM7TDMI硬件平台5、芯片性价比;开发熟悉度等13245ARM处理器的寄存器组织ARM处理器的工作模式ARM版本架构及微处理器系列6第三章ARM体系结构ARM异常处理ARM处理器的存储器格式ARM处理器的工作状态存储器部件的分类按在系统中的地位分类:

(1)主存储器(MainMemory,简称内存或主存)(2)辅助存储器(AuxiliaryMemory,SecondaryMemory,简称辅存或外存)

按存储介质分类:(1)磁存储器(MagneticMemory),(2)半导体集成电路存储器(通常称为半导体存储器),(3)光存储器(OpticalMemory),按信息存取方式分类:(1)随机存取存储器RAM(2)只读存储器ROM常用的存储器随机存储器(RAM)

(1)静态随机存储器(SRAM)(2)动态随机存储器(DRAM)

只读存储器(ROM),它在嵌入式系统中非常有用,因为许多代码或数据不随时间改变。

(1)工厂编程的只读存储器(2)现场可编程只读存储器

存储器层次结构存储层次中,层次结构个部分的特点是:每位价格从上往下依次减少;存储容量从上往下依次增加;存取速度从上往下依次减慢;④CPU的访问频度从上往下依次减少。存储器层次结构3.2ARM编程模型3.2.1ARM存储数据类型六种数据类型:(1)Byte:8位有符号和无符号字节。(2)Halfword:16位有符号和无符号半字。(3)Word: 32位有符号和无符号字。

其中,字需要4字节对齐、半字需要2字节对齐,单字节的没有这个问题,就不用考虑了。1112342一条ARM指令是(32位、4个字节、1个字)3.2ARM编程模型3.2.1ARM存储器格式ARM32位体系结构所支持的最大寻址空间为4GB(232字节)ARM体系结构将存储器看作是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列。3.2ARM编程模型ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式

数据存储格式有两种:

(1)大端模式:较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址。(2)小端模式:较高的有效字节存放在较高的存储器地址,较低的有效字节存放在较低的存储器地址。

大端存储模式

小端存储模式(缺省)课堂练习A.小端存储法(0x01234567)地址0x80000x80010x80020x8003数据(16进制表示)数据(二进制表示)B.大端存储法地址0x80000x80010x80020x8003数据(16进制表示)数据(二进制表示)将数据0x01234567分别按照大、小端的存储方式存储到起始地址为0x8000的存储空间内,并写出对应的二进制表示方式。习题答案A.小端存储法地址0x80000x80010x80020x8003数据(16进制表示)0x670x450x230x01数据(二进制表示)01100111010001010010001100000001B.大端存储法地址0x80000x80010x80020x8003数据(16进制表示)0x010x230x450x67数据(二进制表示)00000001001000110100010101100111(0x01234567)13245ARM处理器的寄存器组织ARM处理器的工作模式ARM版本架构及微处理器系列6第三章ARM体系结构ARM异常处理ARM处理器的工作状态ARM处理器的存储器格式3.2ARM编程模型3.2.2ARM处理器工作状态13245ARM处理器的寄存器组织ARM处理器的工作状态ARM版本架构及微处理器系列6第三章ARM体系结构ARM异常处理ARM处理器的工作模式ARM处理器的存储器格式处理器模式说明备注

用户(usr)正常程序执行模式不能直接切换到其它模式

系统(sys)运行操作系统的特权任务与用户模式类似,但具有可以直接切换到其它模式等特权

快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式

中断(irq)用于通用中断处理IRQ异常响应时进入此模式

管理(svc)操作系统保护模式系统复位和软件中断响应时进入此模式

中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处

未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式ARM处理器有7种工作模式3.2.3ARM处理器工作模式特权模式处理器模式说明备注

用户(usr)正常程序工作模式不能直接切换到其它模式

系统(sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权

快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式

中断(irq)用于通用中断处理IRQ异常响应时进入此模式

管理(svc)操作系统保护代码系统复位和软件中断响应时进入此模式

中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处

未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。特权模式中,除系统模式外,其他5种模式又称为异常模式

未定义(und)

中止(abt)

管理(svc)

中断(irq)

快中断(fiq)

系统(sys)3.2.3ARM处理器工作模式用户和系统模式处理器模式说明备注

用户(usr)正常程序工作模式不能直接切换到其它模式

系统(sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权

快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式

中断(irq)用于通用中断处理IRQ异常响应时进入此模式

管理(svc)操作系统保护代码系统复位和软件中断响应时进入此模式

中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处

未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式

这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。

系统(sys)

用户(usr)3.2.3ARM处理器工作模式13245ARM处理器的寄存器组织ARM处理器的工作模式ARM版本架构及微处理器系列6第三章ARM体系结构ARM异常处理ARM处理器的工作状态ARM处理器的存储器格式37个寄存器:31个通用寄存器,包括程序计数器PC,32位的寄存器;6个状态寄存器,也是32位寄存器,但只使用了12位。不分组8个分组22个PC1个2组10个6组12个状态6个通用31个,包括R0~R15CPSRCPSRCPSRCPSRCPSRSPSRSPSRSPSRSPSRSPSRSPLRPC3.2.4ARM处理器寄存器组织寄存器均为32位,分成7组,各工作模式拥有自己的寄存器组,只能访问自己的寄存器组。有些寄存器是重叠的,有些是工作模式特有的。在不同的工作模式和处理器状态下,程序员可以访问的寄存器不尽相同。但是这些寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决微处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14~R0、程序计数器PC、一个或两个状态寄存器都是可访问的。

未分组寄存器R0~R7分组寄存器R8~R14程序计数器PC(R15)通用寄存器:通用寄存器包括R0~R15,可以分为三类:未分组寄存器R0~R7分组寄存器R8~R14程序计数器PC(R15)3.2.4ARM处理器寄存器组织堆栈指针—R13R13在ARM指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针。由于处理器的每种运行模式均有自己独立的物理寄存器R13,在初始化部分,都要初始化每种模式下的R13,这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复。

3.2.4ARM处理器寄存器组织子程序连接寄存器(LR)—R14R14也称作子程序连接寄存器或连接寄存器LR。当执行BL子程序调用指令时,可以从R14中得到R15(程序计数器PC)的备份。其他情况下,R14用作通用寄存器。在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,将PC的当前值拷贝给R14,执行完子程序后,又将R14的值拷贝回PC,即可完成子程序的调用返回。

BL SUB1 …… SUB1: STMFD SP!,{<regs>,LR}/*将R14存入堆栈*/ …… LDMFD SP!,{<regs>,PC}/*完成子程序返回*/3.2.4ARM处理器寄存器组织程序计数器PC(R15)ARM状态下,位[1:0]为0,位[31:2]用于保存PC;Thumb状态下,位[0]为0,位[31:1]用于保存PC;R15虽然也可用作通用寄存器,但一般不这么使用,因为对R15的使用有一些特殊的限制,当违反了这些限制时,程序的执行结果是未知的。由于ARM体系结构采用了多级流水线技术,对于ARM指令集而言,PC总是指向当前指令的下两条指令(每个指令占32位4字节)的地址,即PC的值为当前指令的地址值加8个字节。3.2.4ARM处理器寄存器组织程序状态寄存器(CPSR/SPSR)寄存器R16用作CPSR(当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。每一种运行模式下又都有一个专用的物理状态寄存器,称为SPSR(备份的程序状态寄存器),异常发生时,SPSR用于保存CPSR的值,从异常退出时则可由SPSR来恢复CPSR。由于用户模式和系统模式不属于异常模式,他们没有SPSR,当在这两种模式下访问SPSR,结果是未知的。3.2.4ARM处理器寄存器组织程序状态寄存器NZCV——IM0M1M2M3M4TF—...313029282726876543210条件代码标志保留控制位溢出标志进位或借位扩展零负或小于IRQ禁止FIQ禁止状态位模式位NZCVITFCPSR寄存器的格式

大多数“数值处理指令”可以选择是否影响条件代码标志位(指令带S后缀);但有些指令执行总是影响条件代码标志。所有ARM指令都可按条件来执行,而Thumb指令中只有分支指令可按条件执行。

运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;

指令结果为0时Z=1(表示比较结果“相等”),否则Z=0;

当进行加法运算,并且最高位产生进位时C=1,否则C=0。当进行减法运算,并且最高位产生借位时C=0,否则C=1。对于移位操作指令,C为从最高位最后移出的值,其它指令C通常不变;当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不变。

最低8位为控制位,当发生异常时,这些位被硬件改变。当处理器处于一个特权模式时,可用软件操作这些位。

保留位被保留将来使用。为了提高程序的可移植性,当改变CPSR标志和控制位时,请不要改变这些保留位。另外,请确保您程序的运行不受保留位的值影响,因为将来的处理器可能会将这些位设置为1或者0。

Thumb状态下的寄存器组织

Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集程序可以直接访问8个通用寄存器(R7~R0)、程序计数器(PC)、堆栈指针(SP)、连接寄存器(LR)和CPSR。同样,每一种特权模式下都有一组SP、LR和SPSR。

3.2.4ARM处理器寄存器组织13245ARM处理器的寄存器组织ARM处理器的工作模式ARM版本架构及微处理器系列6第三章ARM体系结构ARM异常处理ARM处理器的工作状态ARM处理器的存储器格式3.2.5ARM处理器的异常处理当正常的程序执行流程发生暂时的停止时,称之为异常,例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。异常(Exceptions)

ARM体系结构中的异常,与8位/16位体系结构的中断有很大的相似之处,但异常与中断的概念并不完全等同。

3.2.5ARM处理器的异常处理ARM共有7种类型的异常,不同类型的异常将导致处理器进入不同的工作模式,并执行不同特定地址的指令。ARM体系结构所支持的异常类型

异常类型具体含义复位复位电平有效时,产生复位异常,程序跳转到复位处理程序处执行。未定义指令遇到不能处理的指令时,产生未定义指令异常。软件中断执行SWI指令产生,用于用户模式下的程序调用特权操作指令。指令预取中止处理器预取指令的地址不存在,或该地址不允许当前指令访问,产生指令预取中止异常。数据中止处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常。IRQ外部中断请求有效,且CPSR中的I位为0时,产生IRQ异常。FIQ快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常。3.2.5ARM处理器的异常处理异常中断的优先级

异常类型优先级复位1(最高优先级)数据中止2FIQ3IRQ4预取中止5未定义指令6SWI6(最低优先级)3.2.5ARM处理器的异常处理地址异常进入模式0x0000,0000复位管理模式0x0000,0004未定义指令未定义模式0x0000,0008软件中断管理模式0x0000,000C中止(预取指令)中止模式PABT0x0000,0010

温馨提示

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

评论

0/150

提交评论