嵌入式linux学习笔记20160720-每天进步一点点,向嵌入式进军 之ARM中断过程

2019-07-16 08:26发布

ARM中断处理学习总结:
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,经过试验中断发生时还是会跳转到正确的中断服务程序,这是什么原理?求解释,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
海盗Geek
1楼-- · 2019-07-16 14:23
请问楼主学习的是哪一种芯片
charles_jinbao
2楼-- · 2019-07-16 18:30
 精彩回答 2  元偷偷看……

一周热门 更多>