历史上的今天
今天是:2024年12月19日(星期四)
2018年12月19日 | ARM中断处理过程
2018-12-19 来源:eefocus
ARM有七种异常中断类型,优先级、工作模式(有七种工作模式)、地址、功能都不一样。如其中软件中断SWI优先级为6,工作模式管理模式,异常向量地址为0x00000008,功能是用户定义的中断指令,可用于用户模式下的程序调用特权操作。
当中断产生后,除了复位中断立即中止当前指令外,其余情况都是处理器完成当前指令后,才去执行异常处理程序。
(1)将CPSR的值保存到将要执行的异常中断对应的各自SPSR中,以实现对处理器当前状态、中断屏蔽及各标志位的保护。
(2)设置当前状态寄存器CPSR的相应位。设置CPSR中的M4~M0的5位,进入相应工作模式,设置I=1禁止IRQ中断,如果进入复位模式或FIQ模式,还要设置F=1以禁止FIQ中断。
(3)将引起异常指令的下一条地址(断点地址)保存到新异常工作模式的LR(R14)中,使异常处理程序执行完后正确返回原来程序处继续向下执行。
(4)给程序计数器PC强制赋值,转入向量地址,以便执行相应的处理程序。
每种中断异常模式对应两个寄存器SP和LR。
从中断返回。如果是复位异常,系统自动从0x00000000开始重新执行程序,无需返回。
(1)首先恢复原来被保护的用户寄存器。
(2)将SPSR寄存器复制到CPSR中,使得原来CPSR状态从相应的SOSR中恢复,一恢复被中断的程序状态。
(3)根据异常类型将PC值恢复成断点地址,以继续执行用户原来运行着的程序。
(4)清除CPSR中的中断禁止标志I和F,开放外部中断和快速中断。
注意:(1)程序状态寄存器及断点地址的恢复必须同时进行。
(2)由于异常随机发生,所以要对异常向量进行初始化,即在异常向量的地址处放置一条跳转指令,跳转到异常处理程序。
下一篇:ARM基本接口之外部中断实验
史海拾趣
|
这款VAIO概念笔记本电脑采用了触摸的设计,无论是键盘还是鼠标都是是通过触摸进行操作。而且它的屏幕设计也非常个性。 打开机器时,跟普通屏幕一样可以显示图像,而当机器被关闭时,屏幕则变成了像玻璃一样的全透明状。如此精致的笔记本拿在手里, ...… 查看全部问答> |
|
我想通过串口下载镜像文件到目标机,config,h文件配置如下: #define DEFAULT_BOOT_LINE \"tsfs(0,0)PC-12032051:/vxWorks 主机上只有一个串口,所以这就把打印信息输出到屏幕了,#define INCLUDE_PC_CONSOLE &nb ...… 查看全部问答> |
|
想GDI全屏画图,(0,0)并不是屏幕坐标顶点,如何才能使得(0,0)代表屏幕坐标顶点? WinCE下,我的MFC程序用GDI全屏画图,但是(0,0)并不是屏幕坐标顶点B,而是对应着title下面的区域的顶点A, B-------------------- title A-------------------- --------------------- Menu -------------------- ...… 查看全部问答> |
|
问题1:我想修改我的WINCE 6.0系统的启动LOG,我将JPEG图片转化成.C文件后复制都SRC\\BOOTLOADER\\EBOOT中的 Bitmap.C中,const unsigned char ScreenBitmap[45880] = {} 其他都没改.编译后起来.发现图象LOG显示 ...… 查看全部问答> |
|
最近在玩hdmi解码器,解码器连接液晶电视显示我采集好的视频源,在没有解码时,电视上出现的是颜色条,但是在颜色条的最右边会看到一条清楚的绿边,本人觉得这条绿边影响了视频的质量,而且从抓图来看,我的视频源是没有绿边的,这绿边可能只是相邻 ...… 查看全部问答> |




