嵌入式linux学习笔记20160720-每天进步一点点,向嵌入式进军 之ARM中断过程
时间:10-02
整理:3721RD
点击:
ARM中断处理学习总结:
1.设置中断向量:start.s中按照中断向量表按顺序设置,进入返汇编确认程序地址是否和中断向量地址一致;
@ 0x18: 中断模式的向量地址
b HandleIRQ
2.初始化中断寄存器:GPXCON,EINTMASK,INTMSK
3.写中断服务程序HandleIRQ
a.保护现场:
SUB r14,r14,#4 ;计算返回地址
c.用户程序;
d.清中断:置位EINTPEND,SRCPND,SRCPND寄存器
e.恢复现场:LDMFD r13,{r0-r3,pc}^
4.程序跳转到之前地址的下一个地址执行;
问题点:若链接地址为0x00000000,则中断向量地址为00000000~0000001C,但是链接地址为0x30000000,
则中断向量地址为0x30000000~0x3000001C,经过试验中断发生时还是会跳转到正确的中断服务程序,这是什么原理?求解释,谢谢!
1.设置中断向量:start.s中按照中断向量表按顺序设置,进入返汇编确认程序地址是否和中断向量地址一致;
@ 0x18: 中断模式的向量地址
b HandleIRQ
2.初始化中断寄存器:GPXCON,EINTMASK,INTMSK
3.写中断服务程序HandleIRQ
a.保护现场:
SUB r14,r14,#4 ;计算返回地址
STMFD r13,{r0-r3,r14} ;保护现场,一般只需要保护{r0-r3,lr}
b.读INTOFFSET,EINTPEND判断哪个中断被触发;c.用户程序;
d.清中断:置位EINTPEND,SRCPND,SRCPND寄存器
e.恢复现场:LDMFD r13,{r0-r3,pc}^
4.程序跳转到之前地址的下一个地址执行;
问题点:若链接地址为0x00000000,则中断向量地址为00000000~0000001C,但是链接地址为0x30000000,
则中断向量地址为0x30000000~0x3000001C,经过试验中断发生时还是会跳转到正确的中断服务程序,这是什么原理?求解释,谢谢!
请问小编学习的是哪一种芯片
S3C2440,开发板:mini2440