您好、欢迎来到现金彩票网!
当前位置:彩之网 > 中断寄存器 >

ARM处理器模式和片内寄存器 ARM 异常及中断

发布时间:2019-06-16 18:16 来源:未知 编辑:admin

  Arm体系结构将存储器看做是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字(32位)数据,从第四个字节到第七个字节放置第二个存储的字数据,一次排列。作为32位的微处理器,

  Arm微处理器的指令长度是32位的,也可以为16位(thumb状态下)。Arm微处理器中支持字节(8位),半字(16位),字(32位)三种数据类型,其中,字需要4字节对齐,半字需要2字节对齐。

  注:所谓的指令长度是一条完整的指令的长度,而不是单纯的mov这3个字母长度

  在程序运行的过程中,可以在两种状态之间进行相应的转换。处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。

  5、数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储以及存储保护;

  7、未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件;

  这里所指的片内寄存器是指CPU内部的寄存器, 而控制GPIO的寄存器属于外设。

  主动切换:通过软件改变,即软件设置寄存器来经行arm的模式切换,应为arm的工作模式都是可以通过相应寄存器的赋值来切换的。

  Tips:当处理器运行在用户模式下,某些被保护的系统资源是不能被访问的。

  ARM有31个通用的32位寄存器,6个程序状态寄存器,共分为7组,有些寄存器是所有工作模式共用的,还有一些寄存器专属于每一种工作模式;

  R14程序连接寄存器,当执行BL子程序调用指令时,R14中得到R15的备份,而当发生中断或异常时,R14保存R15的返回值;

  快速中断模式有7个备份寄存器R8R14,这使得进入快速中断模式执行很大部分程序时,甚至不需要保存任何寄存器;

  其它特权模式都含有两个独立的寄存器副本R13、R14,这样可以令每个模式都拥有自己的堆栈指针和连接寄存器;

  当切换进入某一个特权模式时,SPSR保存前一个工作模式的CPSR值,这样,当返回前一个工作模式时,可以将SPSR的值恢复到CPSR中;

  4、令PC值等于这个异常模式在异常向量表中的地址,即跳转去执行异常向量表中的相应指令;

  ARM 构架下,中断为异常的一种。以中断为例,当接收到中断后,ARM core 首先将当前模式下的 CPSR,PC 寄存器分别保存到异常模式下的 SPSR,LR 寄存器,然后将目标模式的 PC 寄存器值设为地址 0x00000018(或0xFFFF0018),最后切换到目标模式----即 IRQ 模式。切换到目标模式后执行的第一条指令便是地址 0x00000018(或0xFFFF0018)上的指令。此处一般为一个跳转指令,用于跳转执行中断处理函数。其它异常处理方式相似。

  刚上电,初始化中断,使S3C6410 能接收并处理中断。中断发生后,先执行 0x00000018 中的异常跳转,转去执行 IROM 中的中断处理函数。此处理函数很简单:将 0x0C001FF8 (落于 SRAM 地址范围)处的值赋给 PC。所以,我们可将我们自己的中断处理函数的入口地址存于 0x0C001FF8 处,当中断发生后,便会自动调用我们的中断处理函数。其它异常的实现方法类似,只是 0x0C001FF8 要改成别的值。具体为何值,需分析 IROM 中的代码。

  S3C6410 IROM 的反汇编代码,可以在网上搜索到。或者也可以自己提取进行反汇编。

http://ando2.com/zhongduanjicunqi/86.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有