打印
[S3C2440]

MDK+2440+仿真+外部中断

[复制链接]
1608|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中????

2440init.zip

5.39 KB

相关帖子

沙发
阿南| | 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 | 只看该作者
没人知道吗

使用特权

评论回复
5
阿南| | 2013-11-21 07:15 | 只看该作者
如果能够到中断入口,说明中断是有响应的,那么肯定就是中断向量表那里出现问题了,在IRQ中断入口设一个断点,再单步跟进去就很好找问题了

使用特权

评论回复
6
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]
没起作用?

使用特权

评论回复
7
阿南| | 2013-11-22 09:55 | 只看该作者
有没有起作用,跟踪进去查看寄存器,应该就可以看出来了。
PS:可以看看我的书中,中断向量表这部分的解释及调试手段。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

29

帖子

1

粉丝