打印
[ZLG-ARM]

(转)ARM学习笔记_2——工作模式,寄存器,异常

[复制链接]
2295|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yoyowodeai|  楼主 | 2011-12-23 17:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
·内核模块描述
·ARM处理器都支持基于JTAG的调试方法。它利用芯片内部的Embedded ICE来控制ARM内核操作,可完成单步调试和断点操作,但不能在
   CPU运行过程中对实时数据进行仿真,而ARM处理器一般都带有嵌入式追踪宏单元ETM,解决了上述问题,能在CPU的运行过程中实时扫描
   处理器的现场信息,并将数据送往TAP控制器
·ARM7系列内核的三级流水线分别为取指(fetch),译码(decode),执行(execute)。PC指向正被取指的指令而不是正在执行的指令
·ARM9系列内核的五级流水线为取指,译码,执行,存储器访问,寄存器回写。
·ARM处理器的工作模式--7种工作模式
·用户模式——大部分任务在这种模式下执行,如果有异常发生,处理器会自动切换工作模式
·FIQ快速中断模式——支持高速数据传输和通道处理
·IRQ普通中断模式,按中断的处理器方式又分为向量中断和非向量中断
·SVC管理模式——一种操作系统保护模式,当复位或软中断指令执行时处理器将进入这种模式
·中止模式——当存取异常时将进入该种模式,用来处理存储器故障,实现虚拟存储或存储保护
·未定义指令异常模式——支持硬件协处理器的软件仿真,因为未定义指令多发生在对协处理器的操作上。
·系统模式——使用和用户模式相同寄存器组的特权模式,用来运行特权级的操作系统任务
·除了用户模式,其他6种可称为特权模式,特权模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。
   除了系统模式外的其他5种特权模式又称为异常模式,每种异常都对应有自己的异常处理切入点。
·内部寄存器
·ARM处理器共有37个寄存器,这些寄存器包括31个通用寄存器和6个状态寄存器
·在任意时刻,可见的寄存器组包括15个通用寄存器R0~R14,一个或两个状态寄存器和PC
·R0-R7和PC在所有的模式都可以访问,是真正意义上的通用寄存器
·对于ARM指令来说,PC指向当前指令的下两条指令的地址(因为流水线机制)
·FIQ模式下的R8-R14都是其私有寄存器,使用时无需备份
·R12一般在子程序连接代码中使用,作为子程序间的中间结果寄存器
·R13通常被用作堆栈指针,也称为SP,每一种模式都有自己的物理SP
·R14,链接寄存器(LR)
  ·每一种处理器模式在自己的物理R14中存放当前子程序的返回地址
  ·当发生异常中断的时候,此时R14被设置成该异常模式将要返回的地址
·ARM处理器程序状态包括CPSR和SPSR,其中CPSR可以在任何处理器模式下被访问,SPSR是每一种异常模式下专用的物理状态寄存器
·32位的程序状态寄存器分为四个域:控制域,扩展域,状态域和标志域
  ·控制域PSR[7:0]--在特权级模式下,软件可以修改这些控制位
   ·PSR[4:0]--为处理器模式标志位
   ·I(PSR[7])--IRQ中断使能位,0为允许IRQ中断,1禁止
   ·F(PSR[6])--FIQ中断使能位,0允许FIQ中断,1禁止
   ·T(PSR[5])--指令执行的状态控制位,用来说明本指令是ARM指令还是Thumb指令。不同版本的ARM处理器,该位含义有所不同
  ·扩展域(PSR[15:8])--当前ARM版本未使用
  ·状态域(PSR[23:16])--当前ARM版本未使用
  ·标志域(PSR[31:24])
   ·J--Jazelle状态标志位,仅某些ARM架构支持,1表示处理器处于Jazelle状态,0没有
   ·Q--增强型DSP指令是否溢出标志位,1表示溢出,若使用增强型DSP指令,0表示没有溢出
   ·V--符号位溢出标志位
   ·C--进位或借位标志位,对于包含移位操作的非加减法运算指令,C中包含最后一次溢出位的数值
   ·Z--结果为0标志位,Z=1表示运算结果是0,对于CMP指令,Z=1表示进行比较的两个数大小相等
   ·N--符号标记位,本位设置成当前指令运算结果的bit[31]的值
·ARM异常处理
·异常包括ARM内核产生复位,取指或存储器访问失败,遇到未定义指令,执行软件中断指令,或者出现外部中断等。
·ARM处理器的异常分为数据中止,快速中断请求,普通中断请求,预取指中止,软件中断,复位及未定义指令共七种
  ·复位具有最高的优先级,复位程序对异常处理程序和系统进行初始化(包括配置寄存器和cache)
  ·数据中止异常指示访问了无效的存储器地址,或者当前代码没有正确的数据访问权限
  ·预取指中止是由于处理器预取的指令地址不存在,或者地址无法访问
  ·FIQ中断的优先级高于IRQ中断
  ·软中断(SWI)和未定义指令异常的优先级最低   
·存储方式与存储器映射机制
·每执行一条ARM指令,当前指令计数器加4个字节,每执行一条Thumb指令,加2个字节。
·ARM处理器处于ARM状态时,最低2位不为0;处于Thumb状态时,最低位不为0,这两种情况对存储地址空间进行访问统称为‘非对齐存储器地址访问’

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

191

主题

1265

帖子

2

粉丝