微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > 嵌入式linux学习笔记20160720-每天进步一点点,向嵌入式进军 之ARM中断过程

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

时间:10-02 整理:3721RD 点击:
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,经过试验中断发生时还是会跳转到正确的中断服务程序,这是什么原理?求解释,谢谢!

请问小编学习的是哪一种芯片

S3C2440,开发板:mini2440

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top