1、教学目的 掌握嵌入式系统的基本概念 掌握ARM技术的发展过程 掌握ARM微处理器的基本结构教学内容 2.1 嵌入式系统概述 2.2 ARM概述 2.3 ARM内核的特点 2.4 基于ARM核的微处理器 2.5 ARM寄存器 2.6 ARM的存储系统简介 2.1 嵌入式系统概述 2.1.1嵌入式系统的基本概念 2.1.2嵌入式系统的发展 2.1.3嵌入式系统的组成结构 2.1.4嵌入式处理器 2.1.5典型嵌入式处理器介绍 2.1.1嵌入式系统的基本概念 根据IEEE的定义,嵌入式系统是“控制、监视或者辅助操作机器和设备的装置”(原文为devices used to control,monito
2、r,or assist the operation of equipment,machinery or plants)。这主要是从应用上加以定义的,从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。不过上述定义并不能充分体现出嵌入式系统的精髓,目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统是面向用户、面向产品、面向应用的,嵌入式系统是将先进的计算机技术、半导体技术、电子技术和各个行业的具体应用相结合后的产物,嵌入式系统必须根据应用需求对软硬件进行裁剪,满足应用
3、系统的功能、可靠性、成本、体积等要求。嵌入式系统的几个重要特征:系统内核小 专用性强 系统精简 高实时性的系统软件 多任务的操作系统 需要专用的开发工具和环境。2.1.2嵌入式系统的发展 第一阶段是以单芯片为核心的可编程控制器形式的系统;第二阶段是以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统;第三阶段是以嵌入式操作系统为标志的嵌入式系统;第四阶段是以Internet为标志的嵌入式系统。发展趋势 系统化 网络化 低成本 人机界面友好 2.1.3嵌入式系统的组成结构 嵌入式系统是软件硬件结合紧密的系统,一般而言,嵌入式系统的构架可以分成四个部分:处理器、存储器、输入输出(I/O)和软件,
4、硬件 硬件架构如图2-1下半部分所示,是以嵌入式处理器为中心,由存储器、I/O设备、通信模块以及电源等必要辅助接口组成。嵌入式系统不同于普通计算机组成,是量身定做的专用计算机应用系统,在实际应用中的嵌入式系统硬件配置非常精简,除了微处理器和基本的处围电路以外,其余的电路都可根据需求和成本进行裁剪、定制,非常经济、可靠。嵌入式系统的硬件核心是嵌入式微处理器,有时为了提高系统的信息处理能力,常外接DSP和DSP协处理器(也可内部集成),以完成高性能信号处理。软件 1.设备驱动层 设备驱动层是嵌入式系统中必不可少的重要部分,使用任何外部设备都需要有相应驱动程序的支持,它为上层软件提供了设备的操作接口
5、。上层软件不用理会设备的具体内部操作,只需调用驱动层程序提供的接口即可。驱动层一般包括硬件抽象层HAL、板级支持包BSP和设备驱动程序。2.实时操作系统RTOS 对于使用操作系统的嵌入式系统而言,操作系统一般以内核映像的形式下载到目标系统中 3.操作系统的应用程序接口API API(Application Programming Interface应用程序接口),是一系列复杂的函数、消息和结构的集合体。嵌入式操作系统下的API和一般操作系统下的API在功能、含义及知识体系上完全一致。4.应用程序 实际的嵌入式系统应用软件建立在系统的主任务(Main Task)基础之上。用户应用程序主要通过调用
6、系统的API函数对系统进行操作,完成用户应用功能开发。在用户的应用程序中,也可创建用户自己的任务。任务之间的协调主要依赖于系统的消息队列 2.1.4嵌入式处理器 各式各样的嵌入式处理器是嵌入式系统硬件中最核心的部分,而目前世界上具有嵌入式功能特点的处理器已经超过1000种,流行体系结构包括MCU,MPU等30多个系列。鉴于嵌入式系统广阔的发展前景,很多半导体制造商都大规模生产嵌入式处理器,并且公司自主设计处理器也已经成为了未来嵌入式领域的一大趋势,其中从单片机、DSP到FPGA有着各式各样的品种,速度越来越快,性能越来越强,价格也越来越低。2.1.5典型嵌入式处理器介绍 1.MIPS处理器 2
7、.PowerPC处理器 3.Sparc处理器 4.ARM处理器 2.2 ARM概述 2.2.1计算机体系结构的分类 2.2.2 ARM技术的发展过程 2.2.1计算机体系结构的分类 1冯.诺依曼体系结构 数据和指令都存储在一个存储器中的计算机称为冯.诺依曼机。这种结构的计算机系统由一个中央处理器单元(CPU)和一个存储器组成。2哈佛体系结构 哈佛结构为数据和程序提供了各自独立的存储器,程序计数器只指向程序存储器而不指向数据存储器,1冯.诺依曼体系结构2哈佛体系结构2.2.2 ARM技术的发展过程2.3 ARM内核的特点 2.3.1 RISC技术 2.3.2流水线技术 2.3.3超标量技术 2.
8、3.1 RISC技术 RISC结构优先选取使用频率最高的简单指令,避免复杂指令;将指令长度固定,指令格式和寻址方式种类减少;以控制逻辑为主,不用或少用微码控制等措施来达到上述目的。2.3.2流水线技术 基于3级(ARM7)、5级(ARM9)流水线体系结构的ARM处理器核。简单的3级流水线如下:取指级。取指级完成程序存储器中指令的读取,并放入指令流水线中。译码级。对指令进行译码,为下一周期准备数据路径需要的控制信号。这一级指令“占有”译码逻辑,而不“占有”数据路径。执行级。指令“占有”数据路径,寄存器堆栈被读取,操作数在桶式移位器中被移位,ALU产生相应的运算结果并写回到目的寄存器中,ALU结果
9、根据指令需求更改状态寄存器的条件位。在3级流水线的执行过程中,当通过R15寄存器直接访问PC时,必须考虑此时流水线执行过程的真实情况。程序计数器R15(PC)总是指向取指的指令,而不是指向正在执行的指令或正在译码的指令。一般情况下,人们总是习惯把正在执行的指令作为参考点,称为当前第1条指令,因此,PC总是指向第3条指令。对于ARM指令,有:PC值当前程序执行位置8 对于Thumb指令,则有:PC值当前程序执行位置42.3.3超标量技术 超标量技术就是通过重复设置多套指令执行部件,同时处理并完成多条指令,实现并行操作来达到提高处理速度的目的。目前,所有的ARM内核,包括流行的ARM7、ARM9和
10、ARM11等,都是单周期指令机。ARM公司的下一代处理器将是每周期能处理多重指令的超标量机。超标量机能在一个时钟周期内同时执行多条指令,因而CPU的效率得到大大地提高。2.4 基于ARM核的微处理器 2.4.1基于ARM核的硬件结构 2.4.2 ARM核的数据流模型 2.4.3 ARM处理器工作模式和工作状态 2.4.1基于ARM核的硬件结构 ARM处理器 控制整个器件。有多种版本的ARM处理器,以满足不同的处理特性。一个ARM处理器包含了一个内核以及一些外围部件,它们之间由总线连接。这些部件可能包括存储器管理和Cache。控制器 协调系统的重要功能模块。两个最常见的控制器是中断控制器和存储器
11、控制器。外设接口部件 提供芯片与外部的所有输入/输出功能,器件之间的一些独有特性就是靠不同的外设接口功能来体现的 总线 用于在器件不同部件之间进行通信 ARM处理器中广泛使用的总线结构称为高级微控制总线结构(AMBA)。最初的AMBA总线包含ARM系统总线(ASB)和ARM外设总线(APB)。之后又提出一种称为ARM高性能总线(AHB)。图2-6所示的器件中有3条总线:一条AHB总线连接高性能的片内外设接口;一条APB总线连接较慢的片内外设接口;第3条总线用于连接片外外设,这条外部总线需要一个特殊的桥,用于和AHB总线连接。2.4.2 ARM核的数据流模型 数据通过数据总线进入处理器核,这里所
12、指的数据可能是一条要执行的指令或一个数据项。指令译码器在指令执行前先将它们翻译。每一条可执行指令都属于一个特定的指令集。与所有的RISC处理器一样,ARM处理器采用Loadstore体系结构。这就意味着它只有两种类型的指令用于把数据移入/移出处理器:load指令从存储器复制数据到内核的寄存器;反过来,store指令从寄存器里复制数据到存储器。没有直接操作存储器的数据处理指令,因此数据处理只能在寄存器里进行。由于ARM内核是32位处理器,大部分指令认为寄存器中保存的是32位有符号或无符号数。当从存储器读取数据至一个寄存器时,符号扩展硬件会把8位和16位的有符号数转换成32位。2.4.3 ARM处
13、理器工作模式和工作状态 1处理器工作模式 2处理器工作状态1处理器工作模式 ARM微处理器支持7种工作模式,分别为:用户模式(usr):ARM处理器正常的程序执行状态 快速中断模式(fiq):用于高速数据传输或通道处理 外部中断模式(irq):用于通用的中断处理 管理模式(svc):操作系统使用的保护模式 中止模式(abt):当数据或指令预取终止时进入该模式,用于虚拟存储及存储保护。未定义指令模式(und):当未定义的指令执行时进入该模式,用于支持硬件协处理器的软件仿真。系统模式(sys):运行具有特权的操作系统任务。2处理器工作状态 自从ARM7TDMI核产生后,体系结构中具有T变种的ARM
14、处理器核可工作在两种状态,并可在两种状态之间切换:ARM状态:ARM微处理器执行32位的ARM指令集。Thumb状态:ARM微处理器执行16位的Thumb指令集 2.5 ARM寄存器 2.5.1通用寄存器 2.5.2状态寄存器 2.5.3Thumb寄存器 2.5.1通用寄存器 未分组寄存器 分组寄存器 程序计数器1.未分组寄存器 未分组寄存器包括R0R7,在所有工作模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途,因此,在中断或异常处理进行工作模式转换时,由于不同的处理器工作模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意 2.分
15、组寄存器 分组寄存器包括R8R14,对于分组寄存器,他们每一次所访问的物理寄存器与处理器当前的工作模式有关。如图2-9所示。对于R8R12来说,每个寄存器对应两个不同的物理寄存器,当使用fiq模式时,访问寄存器R8_fiqR12_fiq;当使用除fiq模式以外的其它模式时,访问寄存器R8_usrR12_usr。3.程序计数器 寄存器R15用作程序计数器(PC)。用于控制程序中指令的执行顺序。正常运行时,PC指向CPU运行的下一条指令。每次取指后PC的值会自动修改以指向下一条指令,从而保证了指令按一定的顺序执行。当程序的执行顺序发生改变(如转移)时,需要修改PC的值。R15虽然也可用作通用寄存器
16、,但一般不这么使用,因为对R15的使用有一些特殊的限制,当违反了这些限制时,程序的执行结果是未知的。2.5.2状态寄存器 ARM体系结构包含一个当前程序状态寄存器CPSR(R16)和五个备份的程序状态寄存器(SPSRs)。CPSR可在任何工作模式下被访问,用来保存ALU中的当前操作信息、控制允许和禁止中断、设置处理器的工作模式等。备份的程序状态寄存器用来进行异常处理。程序状态寄存器的基本格式如图2-10所示:1.条件码标志2.控制位(1)中断禁止位 中断禁止位包括I、F,用来禁止或允许IRQ和FIQ两类中断,当I=1时,表示禁止IRQ中断,I=0时,表示允许IRQ中断;当F=1时,表示禁止FI
17、Q中断,F=0时,表示允许FIQ中断。(2)T标志位 T标志位用来标识/设置处理器的工作状态。对于ARM体系结构v4及以上的版本的T系列处理器,当该位为1时,程序运行于Thumb状态;当该位为0时,表示运行于ARM状态。ARM指令集和Thumb指令集均有切换处理器状态的指令。这些指令通过修改T位的值为1或0来实现在两种工作状态之间切换,但ARM微处理器在开始执行代码时,应该处于ARM状态。(3)工作模式位 工作模式位(M4:0)用来标识或设置处理器的工作模式。M4、M3、M2、M1、M0决定了处理器的工作模式。3.保留位 CPSR中的其余位为保留位,当改变CPSR中的条件码标志位或者控制位时,
18、保留位不要被改变,在程序中也不要使用保留位来存储数据。保留位将用于ARM版本的扩展。备份的程序状态寄存器SPSR 每一种工作模式下又都有一个专用的物理状态寄存器,称为SPSR(Saved Program Status Register,),当异常发生时,SPSR用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR。由于用户模式和系统模式不属于异常模式,他们没有SPSR,当在这两种模式下访问SPSR,结果是未知的。CPSR和SPSR通过特殊指令进行访问,这些指令将在第3章介绍 【例2.1】假设某一刻,寄存器CPSR的值如图2-11所示,试说明处理器的条件标志、中断允许情况、工作状态
19、以及工作模式。分析:CPSR的bit3127表示条件标志NZCVQ,其值分别为00100,为了便于阅读常常用字母表示其值,如图中所示:某一位为0则用小写字母表示,某一位为1,则用大写字母表示,则上述条件标志可表示为:nzCvq,即C标志位置位为1,其它标志位为0,每一位的具体含义可参考表2-2。因为bit76为iF,所以IRQ中断被使能,即允许CPU响应IRQ中断,FIQ中断被禁止。因为bit5为t,所以处理器工作在ARM状态。因为Bit40为10011,由表2-3可知系统工作于管理模式(SVC)2.5.3Thumb寄存器 Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集,程序可以直
20、接访问8个通用寄存器(R7R0)、程序计数器(PC)、堆栈指针(SP)、连接寄存器(LR)和CPSR。同时,在每一种特权模式下都有一组SP、LR和SPSR。Thumb状态下的寄存器组织与ARM状态下的寄存器组织的关系:Thumb状态下和ARM状态下的R0R7是相同的。Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的。Thumb状态下的SP对应于ARM状态下的R13。Thumb状态下的LR对应于ARM状态下的R14。Thumb状态下的程序计数器对应于ARM状态下R152.6 ARM的存储系统简介 2.6.1存储器的层次结构 2.6.2数据类型与存储器格式 2.6.3非对齐的存储器
21、访问 按照存取方式不同,半导体存储器可以分为随机存取存储器RAM(Ramdom Access Memory)和只读存储器ROM(Read Only Memory)两大类。RAM可分为SRAM(静态随机存储器)、DRAM(动态随机存储器)、DDRAM(双倍速率随机存储器)。ROM可分为掩膜ROM、PROM、EPROM、EEPROM、Flash Memory(闪速存储器),其中Flash Memory又可分为NOR Flash、NAND Flash,前者主要用来存放代码,后者主要用来存放数据。2.6.1存储器的层次结构 随着CPU速度的不断提高和软件规模的不断扩大,人们当然希望存储器能同时满足速度
22、快、容量大、价格低的要求。但实际上这一点很难办到,解决这一问题的较好方法是设计一个快慢搭配、具有层次结构的存储系统。基于ARM的嵌入式系统中用到的各种存储器芯片和存放的数据如下:ROM芯片:因为它里面的数据是在生产时就固定的,不可再次编程来改变,故而ROM常应用于不需要更新和修改内容的大宗产品,也有许多设备使用ROM来存放启动代码。Flash芯片:既可以读又可以写,但是它的速度较慢,因此不适合存放动态数据。它主要用于存放断电后需要长期保存的数据,对Flash 的擦除和改写是完全由软件实现的,不需要任何额外硬件电路,这样降低了制造成本。Flash芯片已经成为当前最流行的只读存储器,可选择Flas
23、h芯片用于满足对存储器的大容量需求或用于构建辅助存储器。DRAM芯片:动态随机访问存储器是设备中最常用的RAM。和其它RAM相比,它每兆字节的价格最低。不过DRAM需要动态地刷新,因此在使用DRAM前要先设置好DRAM控制器。SRAM芯片:静态随机访问存储器比传统的DRAM要快,但它需要更大的硅片面积。SRAM是静态的,所以不需要刷新,其存取时间比DRAM要短得多。但是价格高,因此通常用于容量小,速度快的情况,如高速存储器和Cache。SDRAM芯片:同步动态随机访问存储器是众多的DRAM中的一种,它能够工作在比普通存储器更高的时钟频率下。因为SDRAM使用时钟,所以它和处理器总线是同步的。数
24、据从存储器中被流水化地取出,最后突发(Burst)地传输到总线,因而传输效率高。2.6.2数据类型与存储器格式 1.地址空间 ARM体系结构将存储器看作是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB(232字节)。可以将该地址空间看作大小为232个8位字节,这些字节的单元地址是一个无符号的32位数值,其取值范围为0232-1。ARM地址空间也可以看作是230个32位的字单元。这些字单元的地址可以被4整除,也就是说该地址低两位为00。地址为A的字数据
25、包括地址为A、A+1、A+3、A+3四个字节单元的内容。程序正常执行时,每执行一条ARM指令,当前指令计数器加4个字节;每执行一条Thumb指令,当前指令计数器加2个字节。但是,当地址上发生溢出时,执行结果将是不可预知的。2.数据类型 ARM微处理器的指令长度可以是32位(在ARM状态下),也可以为16位(在Thumb状态下)。ARM微处理器中支持字节(8位)、半字(16位)、字(32位)三种数据类型,其中,字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0)。3.存储格式 ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式。(1)大端格式 在这种格式中,
26、字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中(2)小端格式 与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。2.6.3非对齐的存储器访问 所谓非对齐的存储访问操作是指:位于ARM状态期间,访问地址的低二位不为00;位于Thumb状态期间,访问地址的最低位不为0。非对齐的指令预取和数据访问操作的约定如下:1.非对齐的指令预取操作 如果写入寄存器PC中的值是非对齐的,要么指令执行的结果不可预知,要么地址值中的相应位被忽略(ARM状态时最低两位,Thumb状态时最低位)。如果系统中指定当发生非对齐的指令预取操作时,忽略地址中相应的
27、位,则由存储系统实现这种忽略,即该地址值原封不动地送到存储系统来处理。2.非对齐的数据访问操作 对于LOAD/STORE操作,如果出现非对齐的数据访问操作,系统定义了下面3种可能的结果:执行结果不可预知 忽略字单元地址低两位的值,即访问地址为字单元;忽略半字单元最低位的值,即访问地址为半字单元。由存储系统忽略字单元地址中低两位的值,半字单元地址最低位的值。发生非对齐数据访问时到底采用上述哪一种方法取决于具体的指令。习题1.哈佛体系结构和冯.诺依曼体系结构有什么区别?2.ARM处理器有哪些应用领域?3.ARM处理器中一般有哪几种总线,它们分别用来连接什么部件?4.ARM处理器有几种处理模式,处理器通过什么方法来标识各种不同的工作模式?5.寄存器PC、CPSR、SPSR分别有何作用?6.CPSR中的C标志位表示什么?7.ARM处理器中有哪几种工作状态,其区别是什么?处理器如何标识不同的工作状态?8.在不同的处理模式中,哪些寄存器是公用的,哪些是私有的?这样做有什么好处?10.32位立即数0 xFF19E468分别采用大端格式和小端格式存放在地址0 x900100处,则其在内存中的分布情况如何?