系统引导程序(boot-loader)的设计与实现毕业设计说明书(编辑修改稿)内容摘要:

杂,然而,在 CISC 指令集的各种指令中,其使用频率却相差悬殊,大约有 20%的指令会被反复使用,占整个程序代码的 80%。 而余下的 80%的指令却不经常使用,在程序设计中只占 8 20%,显然,这种结构是不太合理的。 基于以上的不合理性, 1979 年美国加州大学伯克利分校提出了 RISC( Reduced Instruction Set Computer,精简指令集计算机)的概念, RISC 并非只是简单地去减少指令,而是把着眼点放在了如何使计算机的结构更加简 单合理地提高运算速度上。 RISC 结构优先选取使用频率最高的简单指令,避免复杂指令;将指令长度固定,指令格式和寻址方式种类减少;以控制逻辑为主,不用或少用微码控制等措施来达到上述目的。 到目前为止, RISC 体系结构也还没有严格的定义,一般认为, RISC 体系结构应具有如下特点: ★ 采用固定长度的指令格式,指令归整、简单、基本寻址方式有 2~ 3 种。 ★ 使用单周期指令,便于流水线操作执行。 ★ 大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载 / 存储指令可以访问存储器,以提高指令的执行效率。 ARM 主要使 用 32 位的 RISC 指令,但是指令代码利用率低, ARM 为了弥补此不足,在新型 ARM 构架( V4T 版本以上)定义了 16 位的 Thumb 指令集。 Thumb指令集比通常的 8 位和 16 位 RISC/CISC 处理器具有更好的代码密度,而芯片面积只增加 6%,可使程序存储器更小。 另外,为了加速通信和多媒体中有关数字信号的处理, ARM 处理器在 RISC的基础上增加了许多原属 DSP 核中的关键部件。 双核协同工作,各用所长,有效地提高了数据处理能力核传输速度,但是 RISC+DSP 分立的双核结构存在两核之间互相通信的困难和分别编程的麻烦,为 此发展了两核融合在一起的单核结构,同时将指令集也合二为一,简化编程提高效率,将 CPU 提升到可快速运算多媒体的算法,实现许多音视频的解码功能。 低功耗 由于 ARM 架构的处理器主要用于手持式嵌入式系统之中,因此 ARM 构架在设计中十分注意低电压、低功耗这一点,因而在手持式嵌入式系统得到广泛的应用。 ARM 架构的设计采用了以下一些措施: ★ 降低电源电压 ★ 减少门的翻转次数,当某个功能电路不需要时,禁止门翻转 ★ 减少门的数目,即降低芯片的集成度 ★ 降低时钟频率 ARM 还其他采用了一些特别的 技术,在保证高性能的前提下尽量缩小芯片的面积: 9 ★ 所有的指令都可以根据前面的执行结果决定是否被执行,从而提高指令的执行效率; ★ 可用加载 /存储指令批量传输数据,以提高数据的传输效率; ★ 可在一条数据处理指令中同时完成逻辑处理和移位处理; ★ 在循环处理中使用地址的自动增减来提高运行效率; ARM 的低功耗,使得 ARM 在专门针对嵌入式系统的处理器市场中始终处于有利的地位。 一组典型数据是:对于 ARM7 系列处理器,当核电压是 时,每 MHz,其功耗只为。 10 3 ARM 体系结构介绍 在介绍 具体的 ARM Bootloader的实现之前,首先介绍一下 ARM的体系结构,因为 Bootloader 是与处理器芯片紧密相连的。 为了更好的在后面篇幅中介绍实现,先简单介绍相关的体系结构以及相关指令集。 ARM core 描述 尽管本本文实现主要涉及软件上的开发,但是软件上代码的实现更多的都涉及芯片构架,因此在这里简要介绍一下一般 ARM core 构架。 下图所示的是 ARM 构架图。 它由 32 位 ALU、若干个 32 位通用寄存器以及状态寄存器、 32 8 位乘法器、 32 32 位桶形移位寄存器、指令译码以及控制逻辑、指 令流水线和数据 /地址寄存器组成。 1. ALU:它 由 两个操作数锁存器、加法器、逻辑功能、结果以及零检测逻辑构成。 2. 桶形移位寄存器: ARM 采用了 32 32 位的桶形移位寄存器,这样可以使在左移 /右移 n 位、环移 n 位和算术右移 n 位等都可以一次完成。 3. 高速乘法器:乘法器一般采用 “加一移位 ”的方法来实现乘法。 ARM 为 提高运算速度,则采用两位乘法的方法,根据乘数的 2位来实现 “加一移位 ”运算 ;ARM 高速乘法器采用 32 8 位的结构,这样,可以降低集成度(其相应芯片面积不到并行乘法器的 1/3)。 4. 浮点部件 :浮点部件是作为选件供 ARM 构架使用。 FPA10 浮点加速器是作为协处理方式与 ARM 相连,并通过协处理指令的解释来执行。 5. 控制器: ARM 的控制器采用的是硬接线的可编程逻辑阵列 PLA。 6. 寄存器:具体参考下节相关介绍。 不同的 ARM core 可能还有所不同。 因此,图 描述的仅仅针对一般而言。 11 图 ARM构架图 ARM 处理器工作状态及模式 本节主要简单介绍 ARM 处理器模式, ARM 寄存器组, ARM 存储系统, ARM指令集, ARM 体系异 常中断等内容。 ARM 处理器模式 ARM 处理器共有 7 种运行模式,如表 所示: 12 表格 ARM处理器模式 除了用户模式之外的其他 6 种处理器模式称为特权模式( Privileged Modes)。 在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。 其中,除系统模式外,其他 5 种特权模式又称为异常模式。 处理器模式可以通过软件控制进行切换,也可以通过外部中断或异常处理过程进行切换。 大多数的用户程序运行在用户模式下,这时,应用程序不能够访问一些受操作系统保 护的系统资源,应用程序也不能直接进行处理器模式的切换。 当需要进行处理器模式的切换时,应用程序可以产生异常处理,在异常处理过程中进行模式的切换。 这种体系结构可以使操作系统控制整个系统的资源。 当应用程序发生异常中断时,处理器进入相应的异常模式。 在每一种异常模式中都有一组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模式时,用户模式下的寄存器(保证了程序运行状态)不被破坏。 系统模式并不是通过异常过程进入的,它和用户模式具有完全一样的寄存器。 但是系统模式属于特权模式,可以访问所有的系统资源,也可以直 接进行处理器模式的切换,它主要供操作系统任务使用。 通常操作系统的任务需要访问所有的系统资源,同时该任务仍然使用用户模式下的寄存器组,而不是使用异常模式下相应的寄存器组,这样可以保证当异常中断发生时任务状态不被破坏。 ARM 寄存器组介绍 ARM 处理器一般共有 37 个寄存器,其中包括: ★ 31 个通用寄存器,包括程序计数器( PC)在内,这些寄存器都是 32 位寄存器; ★ 6 个状态寄存器,这些寄存器也是 32 位寄存器; 上一节已经说过, ARM 处理器共有 7 种不同的处理器模式,在每一种处理 13 器模式中 有一组相应的寄存器。 任意时刻(也就是任意的处理器模式下),可见的寄存器包括 15 个通用寄存器( R0- R14)、一个或者两个状态寄存器以及程序计数器( PC)。 在所有的寄存器中,有些是各模式共用的同一个物理寄存器;有些寄存器是各模式自己拥有的独立的物理寄存器。 图 表示了各处理器模式下的可见寄存器: 图 ARM状态下的寄存器组 从 图 中可以看出,通用寄存器 R0- R7 在所有的处理器模式下指的都是同一个物理寄存器 , 而对于 R8- R12 寄存器组,除了在快速中断模式下有自己专有的物理寄存器,其它模式下也共 有统一物理寄存器。 R13 寄存器对应 6 个不同的物理寄存器,即除了前面提过的用户模式与系统模式共用一个寄存器外,其它模式都有相应的物理寄存器;一般地, R13 寄存器在 ARM 中通常用作栈指针,在 ARM 指令中这只是一种习惯的用法,并没有任何指令强制性的使用 R13 作为栈指针。 R14 寄存器又被称为连接寄存器( Link Register, LR),在 ARM 体系中有下面两种特殊的作用: 14 ★ 每一种处理器模式自己的物理 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 的格式如图 所示: 图 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 位称为控制位,当异常中断发生时这些位发生改变。 在特权模 15 式下,软件可以修改这些控制位: 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 位控制处理器模式,在这不再赘述。 ARM 存储系统 这里仅仅介绍 ARM 编程模型中与存储系统相关的一些概念。 ( 1) ARM 体系中的存储空间 ARM 体系中使用单一的平板地址空间。 该地址空间的大小 232个 8 位字节。 这些字节单元的地址是一个无符号的 32 位数值,其取值范围为 0 到 232- 1。 ARM 的地址空间也可以看作是 230个 32 位的字单元。 这些字单元的地址可以被 4 整除,也就是说该地址的低两位为 0b00。 地址为 A 的字数包括地址 A、A+ A+ A+3 这 4 个字节单元的内容。 ( 2) ARM 的存储器格式 在 ARM 体系中,每个字单元中包含 4 个字节单元或者两个半字单元,其中 1个半字单元中包含两个字节单元。 但是在字单元中, 4 个字节哪一个是高位字节,哪一个是低位字节,则有两种不同的格式: bigendian 格式和 littleendian 格式。 在 bigendian 格式中,对于地址为 A 的字单元包括字节单元 A、 A+ A+A+3,其中字节单元由高位到低位字节顺序为 A、 A+ A+ A+3;地址为 A的字单元包括半字单元 A、 A+2,其中半字单元由高位到 低 位字节 顺序为 A、 A+2;地址为 A 的半字单元包括字节单元 A、 A+1,其中字节单元由高位到低位字节。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。