[S3C2440] MDK+2440+仿真+外部中断

[复制链接]
1968|6
 楼主| phonelong 发表于 2013-11-20 16:16 | 显示全部楼层 |阅读模式
开发环境:MDK For ARM V4.72.10.0
开发部:FL2440
仿真器:盗版JLINK V8
启动代码汇编部分见附件2440init.zip
问题:
仿真中当由按键产生外部中断时,不能跳转到中断处理函数
但能够运行到附件中
147行:HandlerFIQ        HANDLER HandleFIQ
如果在C程序中对HandleFIQ地址重新函数赋值如:
pISR_IRQ=(unsigned)HaltIRQ;
那么程序跳转到函数HaltIRQ中。

系统初始化和中断初始化都没问题,中断向量表也映射了
根据2440init.s中
          ; Setup IRQ handler
371        ldr        r0,=HandleIRQ        ;This routine is needed
372        ldr        r1,=IsrIRQ        ;if there is not 'subs pc,lr,#4' at 0x18, 0x1c
373        str        r1,[r0]
当外部中断产生后,应该先运行到
147行:HandlerFIQ        HANDLER HandleFIQ
然后跳转到IsrIRQ中查找中断源,并跳到对应中断子函数,但是没有这样运行。
不知道发生了什么事情,还请高手帮忙!
为什么没有跳转到IsrIRQ中????

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
阿南 发表于 2013-11-20 16:57 | 显示全部楼层
HandlerFIQ?设置成了FIQ,应该是普通的IRQ吧
 楼主| phonelong 发表于 2013-11-20 17:47 | 显示全部楼层
阿南 发表于 2013-11-20 16:57
HandlerFIQ?设置成了FIQ,应该是普通的IRQ吧

南哥说的是,一着急复制错了!
应该是:
148行 HandlerIRQ        HANDLER HandleIRQ
普通的中断,不是快速中断
 楼主| phonelong 发表于 2013-11-20 23:13 | 显示全部楼层
没人知道吗
阿南 发表于 2013-11-21 07:15 | 显示全部楼层
如果能够到中断入口,说明中断是有响应的,那么肯定就是中断向量表那里出现问题了,在IRQ中断入口设一个断点,再单步跟进去就很好找问题了
 楼主| phonelong 发表于 2013-11-21 09:38 | 显示全部楼层
阿南 发表于 2013-11-21 07:15
如果能够到中断入口,说明中断是有响应的,那么肯定就是中断向量表那里出现问题了,在IRQ中断入口设一个断 ...

单步也试过了,不过不好使!
中断确实有响应,INTOFFSET也有变化。
就是跳不到启动代码中的IsrIRQ。我试了下在C中重新嵌入一个IsrIRQ函数,然后把地址赋到HandleIRQ地址上就能自动跳转。
莫非
        ; Setup IRQ handler
371        ldr        r0,=HandleIRQ        ;This routine is needed
372        ldr        r1,=IsrIRQ        ;if there is not 'subs pc,lr,#4' at 0x18, 0x1c
373        str        r1,[r0]
没起作用?
阿南 发表于 2013-11-22 09:55 | 显示全部楼层
有没有起作用,跟踪进去查看寄存器,应该就可以看出来了。
PS:可以看看我的书中,中断向量表这部分的解释及调试手段。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

29

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部