毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

嵌入式系统ARM的通用bootloader的设计与实现 第4页

更新时间:2010-7-2:  来源:毕业论文
嵌入式系统ARM的通用bootloader的设计与实现 第4页
寄存器(R0-R14)、一个或者两个状态寄存器以及程序计数器(PC)。在所有的寄存器中,有些是各模式共用的同一个物理寄存器;有些寄存器是各模式自己拥有的独立的物理寄存器。图3.1表示了各处理器模式下的可见寄存器:
用户模式和系统模式寄存器组    异常模式下的寄存器组
R8_fiq
R9_fiq
R10_fiq
R11_fiq
毕业论文http://www.Lwfree.cn


R13_und
R14_und

R13_svc
R14_svc

 

SPSR_und
SPSR_abt
SPSR_irq


SPSR_fiq
SPSR_svc
CPSR从表3.1中可以看出,通用寄存器R0-R7在所有的处理器模式下指的都是同一个物理寄存器。
而对于R8-R12寄存器组,除了在快速中断模式下有自己专有的物理寄存器,其它模式下也共有统一物理寄存器。
R13寄存器对应6个不同的物理寄存器,即除了前面提过的用户模式与系统模式共用一个寄存器外,其它模式都有相应的物理寄存器;一般地,R13寄存器在ARM中通常用作栈指针,在ARM指令中这只是一种习惯的用法,并没有任何指令强制性的使用R13作为栈指针。
R14寄存器又被称为连接寄存器(Link Register,LR),在ARM体系中有下面两种特殊的作用[6]:
 每一种处理器模式自己的物理R14中存放当前子程序的返回地址。当通过跳转指令调用子程序时,R14被设置为该子程序的返回地址;在子程序中,把R14的指赋值到程序计数器PC中时,子程序返回;
 当异常中断发生时,该异常模式特定的物理R14被设置成该异常模式将要返回的地址,对于有些异常模式,R14的值可能与将返回的地址有个常数的偏移量。
    程序计数器R15又被记作PC。由于ARM采用了流水线机制,当正确读取了PC的值时,该值为当前指令地址加8个字节。也就是说,对于ARM指令集来说,PC指向当前指令的下两条指令的地址。由于ARM指令是字对齐的,PC值的第0位和第1位总为0。
CPSR(当前程序状态寄存器)可以在任何处理器模式下被访问。它包含了标志位、中断禁止位、当前处理器模式标志以及其它的一些本文来自辣文论文网控制和状态位。每一种处理器异常模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断返回退出时,可以用SPSR种保存的值来恢复CPSR。由于用户模式和系统模式不是异常中断模式,所以它们没有SPSR。当用户模式或者系统模式中访问SPSR,将会产生不可预知的结果。
SPSR与CPSR的格式相同。CPSR的格式如图2.3[6]所示:
         31  30  29  28 27                8  7  6  5 4    0
N Z C Q Unused                                        I F T Modes
        图2.3

N(Negative)、Z(Zero)、C(Carry)、V(Overflow)统称为标志位。大部分的ARM指令可以根据CPSR中的这些条件标志位来选择性地执行。各条件标志位的具体含义如下:
N:当两个补码表示的有符号整数运算时,N=1表示运算的结果为负数;N=0表示运算结果为正数或零;
Z:Z=1表示运算结果为零;Z=0表示运算的结果不为零;
C:在加法指令中,当结果产生了进位,则C=1;其他情况下C=0;
   在减法指令中,当运算中发生借位,则C=0;其他情况下C=0;
V:对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出
CPSR的低8位称为控制位,当异常中断发生时这些位发生改变。在特权模式下,软件可以修改这些控制位:
I:普通中断禁止位;I=1时禁止IRQ中断。
F:快速中断禁止位;F=1时禁止FIQ中断。
T:对于ARMv4以及更高的版本的T系列的ARM处理器
 T=0表示执行ARM指令
 T=1表示执行Thumb指令
对于ARMv5以及更高版本的非T系列的ARM处理器
 T=0表示执行ARM指令
 T=1表示强制下一条执行的指令产生为定义指令中断
   Modes位控制处理器模式,在这不再赘述。
2.2.3  ARM存储系统
这里仅仅介绍ARM编程模型中与存储系统相关的一些概念。

ARM体系中的存储空间
ARM体系中使用单一的平板地址空间。该地址空间的大小232个8位字节。这些字节单元的地址是一个无符号的32位数值毕业论文http://www.Lwfree.cn也可以看作是230个32位的字单元。这些字单元的地址可以被4整除,也就是说该地址的低两位为0b00。地址为A的字数包括地址A、A+1、A+2、A+3这4个字节单元的内容。

ARM的存储器格式
在ARM体系中,每个字单元中包含4个字节单元或者两个半字单元,其中1个半字单元中包含两个字节单元。但是在字单元中,4个字节哪一个是高位字节,哪一个是低位字节,则有两种不同的格式:big-endian格式和little-endian格式。
在big-endian格式中,对于地址为A的字单元包括字节单元A、A+1、A+2、A+3,其中字节单元由高位到低位字节顺序为A、A+1、A+2、A+3;地址为A的字单元包括半字单元A、A+2,其中半字单元由高位到地位字节顺序为A、A+2;地址为A的半字单元包括字节单元A、A+1,其中字节单元由高位到低位字节顺序为A、A+1。这种存储器格式如下图所示:
     31         24 23           16 15           8 7            0
字单元A
半字单元A 半字单元A+2
字节单元A 字节单元A+1 字节单元A+2 字节单元A+3
                 图2.4  big-endian格式的存储系统

在little-endian格式中,地址为A的字单元包括字节单元A、A+1、A+2、A+3,其中字节单元由高位到低位字节顺序为A+3、A+2、A+1、A;地址为A的字单元包括半字单元A、A+2,其中半字单元由高位到地位字节顺序为A+2、A;地址为A的半字单元包括字节单元A、A+1,其中字节单元由高位到低位字节顺序为A+1、A。这种存储器格式如下图所示:
     31            24 23           16 15          8 7           0
字单元A
半字单元A+2 本文来自辣文论文网半字单元A
字节单元A+3 字节单元A+2 字节单元A+1 字节单元A
                  图2.5  little-endian格式的存储系统
2.2.4   ARM指令集介绍
ARM指令系统属于RISC指令系统。标准的ARM指令每条都是32位,有些ARM核还可以执行16位的Thumb指令集。一般地,ARM指令具有以下特点[9]:
 指令的条件执行
ARM指令都是条件执行,条件标志位位于程序代码字节的cond位(位28-31,下文会介绍)。根据cond的不同编码,可以选择根据条件码标志决定指令的执行。
 灵活的第二操作数
ARM指令的另一个重要的特点是数据处理类指令有灵活的第二操作数operand2(位与程序代码的位0-11)。它既可以是立即数,也可以是逻辑运算数,使得ARM指令可以在读取数值的同时进行算术和移位操作。
 协处理器的作用
ARM内核可提供协处理接口,通过扩展协处理器完成更加复杂的功能。因此ARM
指令中还包括了多条协处理器指令,使用多达16个协处理器,允许将其他处理器通过协处理器接口进行紧耦合;ARM还包括几种内存管理单元的变种,包括简单的内存保护到复杂的页面层次。
 Thumb指令
ARM在有的版本支持16位Thumb指令。Thumb指令集的整体执行速度比ARM
32位指令集快,而且提高了代码密度。
 具有RISC指令的特点
由于ARM指令属于RISC指令,所以多具有RISC指令的特点,指令少,且等长,
    便于充分利用流水线技术,使用多寄存器,且为简单的Load和Store指令。
ARM指令按功能大致可以分为跳转指令、数据处理指令、乘法类指令、数据传送指令、协处理器类指令以及杂项指令(包括状态寄存器传送指令、乘法类指令、软件中断指令和断点指令)。ARM指令字长为固定的32位,一条典型的ARM指令编码格式如下[9]:
   31    28 27  26 2524      21  20  19     16 15   12 11         0
Cond  00  I opcode  S  Rn Rd operand2
        图2.6
其中:
 cond  位28-31,执行指令的条件编码。
 I   位25,决定operand2的格式。
 opcode   位21-24,操作码。
 S   位20,表示结果是否影响状态寄存器标志位:1影响,0不影响。
 Rn   位16-19,第一操作数的寄存器编码。
 Rd   位毕业论文http://www.Lwfree.cn位0-11,表示第二操作数编码。
ARM指令包括60多个指令,并且支持多种寻址方式:寄存器寻址、立即数寻址、寄存器间接寻址、寄存器变址寻址、多寄存器寻址、堆栈寻址、块拷贝寻址以及相对寻址等。对于具体的指令集,可以参考相关文档。
2.2.5   ARM体系的异常中断
在ARM体系中通常有以下3种方式控制程序的执行流程[6]:
 在程序正常执行过程种,每执行一条ARM指令,程序计数器寄存器(PC)的值加4个字节;每执行一条Thumb指令,程序计数器寄存器的值加2个字节。整个过程是按顺序执行。
 通过跳转指令,程序可以跳转到特定的地址标号处执行,或者跳转到特定的子程序处执行。
 当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。在异常中断处理程序执行完成后,程序返回到发生中断的指令的下一条指令处执行。
ARM体系中中断向量表中指定了各异常中断及处理程序的对应关系。它可以放在存储地址的低端,也可以放在存储地址的高端。异常中断向量表的大小位32字节,其中每个异常中断占据4个字节大小,保留了4个字节空间。
每个异常中断对应的中断向量表中的4个字节的空间中放了一个跳转指令或者一个向PC寄存器中赋值的数据访问指令。通过这两种指令,程序将跳转到相应的异常中断处理程序处执行。
下面是ARM体系中各异常中断向量的描述表:

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页

嵌入式系统ARM的通用bootloader的设计与实现 第4页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。