图xx Thumb状态下寄存器与ARM状态下寄存器的对应关系
?Thumb状态下和ARM状态下的R0~R7是相同的。 ?Thumb状态下没有ARM状态下的R8~R12。 ?Thumb状态下的SP对应于ARM状态下的R13。 ?Thumb状态下的LR对应于ARM状态下的R14。 ?Thumb状态下的程序计数器对应于ARM状态下R15。
Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的。
访问THUMB状态下的高位寄存器(Hi-registers)使用
在Thumb状态下,高位寄存器R8~R15并不是标准寄存器集的一部分,但可使用汇编语言程序受限制的访问这些寄存器,将其用作快速的暂存器,建议不要使用。 ?使用带特殊变量的MOV指令,数据可以在低位寄存器和高位寄存器之间进行传送;高位寄存器的值可以使用CMP和ADD指令进行比较或加上低位寄存器中的值。
§2.3.6 ARM处理器的存储器组织
1.数据类型与存储格式
8bits,16bits,32bits。大端与小端存储格式 2.存储体(金字塔存储结构-速度和容量) 寄存器
片内Cache (高速缓冲存储器)位于主存储器和处理器核之间的一块高速存储器。它存放了处理器核最近使用的取自主存储器的指令和数据的副本。
片内的Cache是一种特殊的存储器子系统,用于暂存(或复制了)频繁使用的数据以利于快速访问。高速缓冲存储器存储了频繁访问的 RAM 的内容及这些数据项的存储地址。当处理器引用存储器中的某地址时,高速缓冲存储器便检查是否存有该地址。如果cache中存有该地址,则将数据返回处理器;如果cache中没有保存该地址,则进行常规的存储器访问。因为高速缓冲存储器总是比主RAM 存储器速度快很多,所以当 RAM 的访问速度低于微处理器的速度时,常使用高速缓冲存储器来提高访问数据的速度。ARM7及其以上处理器片内都集成了cache。
31
结构(指令、数据)
片内FIFO(Write Buffer 数据),是一种FIFO存储子系统,它采用特殊的移位控制电路和附加的标志位,实现数据、地址的自动移位和映射功能。片内Write Buffer位于处理器核与主存之间,用于CPU输出数据时,先把输出数据写入到写缓存区,待总线空闲时,由硬件机制将写缓存区的数据写入内存。CPU通过它们来提高内存访问效率。
片内SRAM(静态随即存储器)提供高速访问的内存。适用于使用频度高需要高速运算的常驻内存程序。如S3C2410A启动时,将常驻Nand Flash的启动程序映射到片内SRAM中,进行快速运行。
片外SDRAM是嵌入式系统的板卡级主存储器(内存),容量在8MB~1GB之间,运行操作系统时和应用程序时都存放在主存储器中。
片外ROM (Nand Flash,Nor Flash)因为体积小,容量大用于外部存储器,存放系统引导加载程序(类似于PC机的BIOS),加电后,自动传送到主存中执行。 3.存储系统管理
在嵌入式系统中,对存储系统的管理除了用到存储器控制器外,还涉及到协处理器CP15、存储器管理单元MMU和保护单元PU,下面介绍之。 (1)CP15协处理器
ARM处理器支持16个协处理器。在程序执行过程中,如果一个协处理器的指令在执行时得不到支持,将产生一个未定义指令异常,在该异常处理程序中,可以通过软件模拟该硬件操作。
最常使用的协处理器是用于片内的系统控制协处理器(System Control Coprocessor)即CP15。在基于ARM的嵌入式系统中,CP15主要用于存储系统管理,如cache、写缓存的配置以及MMU/PU的控制等工作由CP15完成。在没有标准存储管理的系统中,CP15是不存在的,在这种情况下,CP15的指令将被视为未定义指令。
CP15有16个32位寄存器,其编号位C0~C15,只有两条指令可以访问CP15的寄存器,它们是: MCR 将ARM寄存器的内容传送到CP15的寄存器中。
MRC 将CP15寄存器的内容传送到ARM的寄存器中。
32
MCR和MRC指令应该在系统模式执行,在用户模式下执行时会引发未定义指令的异常中断。
CP15中的寄存器及其描述(表) 编号 C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 基本功能 ID编号标识符 控制位(读/写) 存储保护和控制 存储保护和控制 存储保护和控制 存储保护和控制 存储保护和控制 高速缓存和写缓存 存储保护和控制 高速缓存和写缓存 存储保护和控制 未定义 未定义 进程标识符 未定义 因不同设计而异 在MMU中的用途 ID编号和cache类型 各种控制位,MMU使能 域访问控制寄存器 内存访问失效状态寄存器 内存访问失效地址寄存器 高速缓存和写缓存控制 控制清除快表TLB 锁定表项于TLB 缓存区控制位 访问权限控制 保护区域控制 在PU中的作用 页表或段地址转换表基址, 高速缓存控制位
(2)存储器管理单元MMU
嵌入式处理器片内的MMU 是Memory Management Unit的缩写,中文名是存储器管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制电路,负责虚拟存储地址映射为物理存储地址(ARM采用了页式虚拟存储器管理),提供硬件机制来控制内存访问授权,设置虚拟存储空间的缓冲特性。
● 虚拟存储地址映射为物理存储地址
映射是以内存块位单元进行的。即虚拟存储空间中间的一段连续存储空间(逻辑块)被映射成物理空间同样大小的一块连续存储空间(物理块)。通过两级分页机制的页表的表项实现的。
位于Cache中的快表(TLB,转换旁路缓冲器,其中的表项反映了逻辑块到物理块的映射关系)。
33
位于内存的慢表(页表,描述符号表)。
改变内存中的页表的内容或通过C2寄存器使用新的页表时,TLB需要清除。MMU提供了这方面操作的硬件支持,用C8控制来清除TLB的内容。
MMU通过C10寄存器将某些地址变换表锁定在TLB中,使得TLB中的地址变换能够快速进行。
● 控制内存访问权限
ARM通过存储器域支持多任务操作系统。ARM的域是一组具有特定访问权限的段或页。存储器的所有段或页都与某个域相关联。
MMU将整个存储器空间分为16个域(D15~D0),域的访问控制由C3(域访问控制寄存器)标识16个域(D15~D0)的四种访问权限的控制码。域访问控制寄存器(C3)标识D15~D0的访问权限,每个域的控制码占2bit。
00 禁止访问
01 允许访问,但需要被检查其权限 10 不可访问,若访问出现错 11 可访问,访问权限免检
MMU通过内存访问失效状态寄存器C5和内存访问失效地址寄存器C6提供的相应机制处理域的访问失效。
● 设置虚拟存储空间的缓冲特性 ???
● MMU的使能和禁止
ARM处理器的MMU的使能和禁止由协处理器CP15的C1寄存器位[0]控制,当C1[0]复位时,禁止MMU;当C1[0]置位时,使能MMU。
(3)保护单元(PU Protection Unit)
PU提供了相当简单的替代MMU的方法来管理存储器。
PU允许将ARM的4GB地址空间映射为8个区。,每个区都有可编程的起始地址和大小、可编程属性和Cache属性。通过CP15的C6寄存器可以定义8个区域中每个的起始地址和大小界限。
34
§2.4 ARM体系的异常(Exceptions)
嵌入式计算系统中,当正常的程序执行流程因意外事件发生而暂时的停止时,称之为异常(事件)中断,例如处理一个外部的中断请求。处理器在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。
? ARM体系结构中的异常,与8位/16位处理器体系结构的中断有很大的相似之处,但异常与中断的概念并不完全等同。ARM体系结构中的异常用来处理系统复位、未定义指令、软件中断、存储器访问中止和外部事件。 §2.4.1 ARM体系结构所支持的异常处理过程
ARM体系处理器支持的异常处理有7种,其中由于指令执行直接引起的异常有软件中断异常、未定义指令异常和指令预取中止异常,由指令执行间接引起的异常有数据访问中止异常,由外部硬件引起的异常有复位异常、FIQ和IRQ异常。ARM处理器对异常的处理过程包括异常响应过程和异常返回过程。 1、ARM处理器对异常的响应过程
? 当一个异常出现以后,除了复位异常立即中止当前指令执行外,处理器尽量完成当前指令,然后脱离当前的指令处理序列去处理异常。ARM处理器对异常的响应会自动执行以下几步操作:
?1)将下一条指令的地址(PC)存入相应连接寄存器LR_mode,以便程序在处理异常返回时能从正确的位置重新开始执行。
?2)将CPSR的内容复制到将要执行的异常模式对应的SPSR_
●根据异常类型,强制设置CPSR的运行模式位。 ●当进入Reset或FIQ异常模式时:
设置中断标志位CPSR[6]=1,禁止新的IRQ中断 设置中断标志位CPSR[7]=1,禁止新的FIQ中断
?4)强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。
5)若异常处理过程中要用到用户的寄存器,须将用户寄存器内容入栈保护。 异常响应伪代码描述
35