arm体系

1032阅读 0评论2012-04-22 android_bsp
分类:

  1. 一、计算机二大体系结构:
  2.   ().诺伊曼结构:
  3.         代码和数据在相同总线上传输
  4.   ()哈佛结构:
  5.         代码总线和数据总路线分开

  6. 二、五级流水线:
  7.     fetch(取址)-->decode(译码)-->execute(执行)-->memory(缓存)-->write(回写)

  8.     注(缺点):
  9.      五级流水线可以几条指令同步执行,当执行循环或if语句时,会发生指令跳转,导致后面的指令浪费.

  10. 三、ARM920T内核工作模式:
  11.      1、用户模式(usr): 正常程序执行模式,大部份任务执行在这种模式下;
  12.      2、快速中断模式(FIQ): 当一个高优先级中断产生时将会进入这种模式,一般用于高速数据传输和通道处理;
  13.      3、外部中断模式(IRQ): 当一个低优先级中断产生时将会进入这种模式,一般用于通常的中断处理;
  14.      4、特权模式(SVC): 当复位或软中断指令执行时进入这种模式,是一种提供操作系统使用的保护模式;
  15.      5、终止模式(abt): 当存取异常时将会进入这种模式,用于虚拟存储或存储保护;
  16.      6、未定义指令模式(und): 当执行未定义指令时进入这种模式,有时用于通过软件仿真协处理器硬件的工作方式;
  17.      7、系统模式(sys): 使用和Usr模式相同寄存器集的模式,用于运行特权级操作系统任务;
  18.        
  19.     (:)
  20.       大多数用户程序运行在用户模式下.处理器模式可以通过软件控制进行切换,也可以通过外部中断或异常处理过程进行切换.当应用程序发生异常中断时,处理器进入相应的异常模式,在每一种异常模式中都有一组专用寄存器以供相应的异常处理程序使用,这样就可以保证在进入异常模式时用户模式下的寄存器(保存程序运行状态)不被破坏.

  21. 四、寄存器组织:
  22.     ARM处理器有37个32位长的寄存器:
  23.       (1):30个通用寄存器.
  24.       (2):6个状态寄存器:1个CPSR(current program status register,当前程序状态寄存器),5个SPSR(saved program status register,备份程序状态寄存器).
  25.       (3):1个PC(program counter,程序计数器).

  26.       (:)
  27.           1、r0 ~ r10:通用寄存器.
  28.      2、r11: 也叫fp,程序帧指针
  29.      3、r12: 也叫ip,用于临时存储
  30.           4、r13: SP(the stack pointer,栈指针).
  31.              每一种异常模式都拥有自已的R13,异常处理程序负责初始化自已的R13,使其指向该异常模式专用的栈地址,在异常处理程序入口处,将用到的其它寄存器的值保存在堆栈中,返回时,重新将这些值加载到寄存器中,通过这种保护程序现场的方法,异常不会破坏被其中断的程序现场.
  32.           5、r14: LR(the link register,链路寄存器).
  33.              (1):每一种处理器模式用自已的R14存放当前子程序的返回地址.此时可用MOV PC, LR或BX LR实现子程序返回
  34.       (2):当异常中断发生时,该异常模式特定的物理寄存器R14被设置成访异常模式的返回地址.
  35.           6、r15: PC(始终指向下一条即将要执行的指令地址).

  36.     通用寄存器根据其分组与否可以分为以下2类:
  37.        (1)未分组寄存器:r0 ~ r7
  38.           在所有处理器模式下对于每一个未分组寄存器来说,只要名字相同指的都是同一个物理寄存器.由于其通用性,在异常中断所引起的处理器模式切换时,因其使用的是相同的物理寄存器,所以也很容易使寄存器中的数据被破坏,用的时候要注意这点.
  39.        (2)分组寄存器:r8 ~ r14
  40.           它们每一个访问的物理寄存器取决于当前的处理器模式.

  41. 五、程序状态寄存器:
  42.     CPSR:当前程序状态寄存器---可以在任何处理器模式下被访问,它包含:
  43.         (1):ALU(arithmetic logic unit,算术逻辑单元)状态标志的备份.
  44.         (2):当前的处理器模式.
  45.         (3):中断使能模式.
  46.         (4):设置处理器的状态(只在4T架构).
  47.    SPSP:备份程序状态寄存器---每一种处理器模式下都有一个SPSR,当特定的异常中断发生时,这个物理寄存器负责存放当前程序状态寄存器(CPSR)的内容;当异常处理程序返回时,再将其内容恢复到当前程序状态寄存器.

  48.    CPSR和SPSR中的位分配图:

  49.      31 30 29 28 7 6 5 4 3 2 1 0
  50.      N Z C V ...... I F T M4 M3 M2 M1 M0
  51.      | | | |_overflow:溢出标志位 | | | |_ |_ |_ |_ |_四个模式位(这些位的组合确定了处理器处于哪种状态:处理器共7种状态)
  52.      | | |_carry:进位标志 | | |_状态位(1:Thumb状态 0:ARM状态)
  53.      | |_zero:零标志 | |_FIQ使能位(1:禁止 0:允许)
  54.      |_negative:负数标志 |_IRQ使能位(1:禁止 0:允许)


  55. :关于SAMSUNG S3C2440处理器的介绍详见手册,其BLOCK DIAGRAM在手册P34.(AHB-BUS:高速设备总线 APB-BUS:低速设备总线)
上一篇:关于C语言指针的用法
下一篇:linux 内存管理逻辑地址,物理地址以及虚拟地址