(转自:http://www.elechome.com/bbs)<br /><br />ARM9微处理器系列<br />ARM9系列微处理器在高性能和低功耗特性方面提供最佳的性能。具有以下特点:<br />- 5级整数流水线,指令执行效率更高。<br />- 提供1.1MIPS/MHz的哈佛结构。<br />- 支持32位ARM指令集和16位Thumb指令集。<br />- 支持32位的高速AMBA总线接口。<br />- 全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。<br />- MPU支持实时操作系统。<br />- 支持数据Cache和指令Cache,具有更高的指令和数据处理能力。大小都为16K。<br />ARM9系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。<br />ARM9系列微处理器包含ARM920T、ARM922T和ARM940T三种类型,以适用于不同的应用场合。<br />ARM920T =ARM9TDMI core plus cache and MMU<br /><br />ARM微处理器结构<br />1、 RISC体系结构:RISC结构优先选取使用频最高的简单指令,避免复杂指令<br /> 1、RISC体系结构应具有如下特点:<br />- 采用固定长度的指令格式,指令归整、简单、基本寻址方式有2~3种。<br />- 使用单周期指令,便于流水线操作执行。<br />- 大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/ 存储指令可以访问存储器,以提高指令的执行效率。<br />除此以外,ARM体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗:<br />- 所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。<br />- 可用加载/存储指令批量传输数据,以提高数据的传输效率。<br />- 可在一条数据处理指令中同时完成逻辑处理和移位处理。<br />- 在循环处理中使用地址的自动增减来提高运行效率。<br />2、ARM微处理器的寄存器结构<br />ARM处理器共有37个寄存器,被分为若干个组(BANK),这些寄存器包括:<br />- 31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器。<br />- 6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位,目前只使用了其中的一部分。<br />同时,ARM处理器又有7种不同的处理器模式,在每一种处理器模式下均有一组相应的寄存器与之对应。即在任意一种处理器模式下,可访问的寄存器包括15个通用寄存器(R0~R14)、一至二个状态寄存器和程序计数器。在所有的寄存器中,有些是在7种处理器模式下共用的同一个物理寄存器,而有些寄存器则是在不同的处理器模式下有不同的物理寄存器。<br />3、ARM微处理器的指令结构<br />ARM微处理器的在较新的体系结构中支持两种指令集:ARM指令集和Thumb指令集。其中,ARM指令为32位的长度,Thumb指令为16位长度。Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省30%~40%以上的存储空间,同时具备32位代码的所有优点。<br /><br />ARM微处理器的启动过程<br />1、Bootloader的启动:其一般要实现的功能如下:<br />(1)初始化CPU速度、存储器、存储器配置寄存器以及串口等;<br />(2)激活指令/数据Cache、建立堆栈指针、建立启动参数区、构造参数结构和标识列表;<br />(3)通过上电自检,来识别存在哪些设备,并报告异常,提供对电源管理中休眠/恢复的支持;<br />(4)跳转到内核起始处,系统启动。<br /><br />ARM微处理器的工作状态<br />从编程的角度看,ARM一般有两种工作状态:ARM状态和Thumb状态。并可在两个状态之间随时切换。<br />ARM状态下,大多数指令都是有条件执行的;而Thumb状态下,只有分支指令是有条件执行的。<br />ARM体系结构的存储器结构<br />ARM体系结构可以用两种方式存储:大端格式和小端格式。最大寻址空间为4GB(232字节)<br />在big-endian格式中,对于地址为A的字单元其中字节单元由高位到低位字节顺序为A,A+1,A+2,A+3;这种存储器格式如下所示: <br />31 24 23 16 15 8 7 0 <br />------------------------------------------------------------------------------------ <br />字单元A | <br />------------------------------------------------------------------------------------ <br />半字单元A | 半字单元A+2 | <br />------------------------------------------------------------------------------------ <br />字节单元A | 字节单元A+1 | 字节单元A+2 | 字节单元A+3| <br />------------------------------------------------------------------------------------ <br />在little-endian格式中,对于地址为A的字单元由高位到低位字节顺序为A+3,A+2,A+1,A,这种存储格式如下所示 <br />31 24 23 16 15 8 7 0 <br />---------------------------------------------------------------------------------- <br />字单元A | <br />---------------------------------------------------------------------------------- <br />半字单元A+2 | 半字单元A | <br />---------------------------------------------------------------------------------- <br />字节单元A+3 |字节单元A+2 | 字节单元A+1 | 字节单元A | <br />----------------------------------------------------------------------------------<br />指令长度和数据类型<br />ARM处理器的指令长度可以是32位(ARM状态下),也可以是16位(Thumb状态下)。ARM处理器支持字节(8位)、半字(16位)、字(32位)三种数据类型。其中字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0)。<br /><br />处理器模式<br />ARM微处理器支持7种运行模式:<br />――用户模式(usr)<br />――快速中断模式(fiq)<br />――外部中断模式(irq)<br />――管理模式(svc)<br />――数据访问中止模式(abt)<br />――系统模式(sys)<br />――未定义指令中止模式(und)<br /><br />ARM体系结构所支持的异常类型<br />复位、未定义指令、软件中断、指令预取中止、数据中止、IRQ(外部中断请求)、FIQ(快速中断请求)。<br /><br />对中断的响应:<br />1、将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。若异常是从ARM状态进入,LR寄存器中保存的是下一条指令的地址(当前PC+4或PC+8,与异常的类型有关);若异常是从Thumb状态进入,则在LR中保存当前PC的偏移量。<br />2、将CPSR复制到相应的SPSR。<br />3、根据异常的类型,强制转换CPSR的运行模式位。<br />4、强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。<br /><br />各类异常的具体描述:<br />FIQ异常是为了支持数据传输或者通道处理而设计的。<br />IRQ属于正常的中断请求。<br />ABORT意味着对存储器的访问失败<br /> |
|