sensen
驱动牛犊
驱动牛犊
  • 注册日期2006-10-08
  • 最后登录2007-12-22
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望3点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
阅读:1033回复:2

ce5.0中断处理代码的问题?

楼主#
更多 发布于:2007-09-07 16:29
OEMInterruptHandler应该是中断响应程序了,我看了一下这个函数,只处理了很少的中断,最后有一段代码
sysIntr = NKCallIntChain((UCHAR)irq);
 if (sysIntr == SYSINTR_CHAIN || !NKIsSysIntrValid(sysIntr)) {
            // IRQ wasn't claimed, use static mapping
            sysIntr = OALIntrTranslateIrq(irq);
 }
好象其他中断是在OALIntrTranslateIrq()这里处理的,应该这个函数调用了用户自己的处理函数,不知道我的理解对不对?
如果是的,自己的处理函数应该加在什么地方,函数的原形应该是什么样的,才能被该函数调用?
请各位高手指点
dillonhua
驱动小牛
驱动小牛
  • 注册日期2004-07-30
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望401点
  • 贡献值0点
  • 好评度128点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-09-07 18:38
OEMInterruptHandler只是做一下Sysint和IRQ之间的对应,也就是说将物理的中断号和系统中断号对应起来,并且返回系统中断号,也有些会在这里做关中断的处理,当这个返回后,CE会根据系统中断号去触发相关的事件(你的驱动在init的时候注册的),然后你的中断处理线程就开始干活了
buaadallas
驱动牛犊
驱动牛犊
  • 注册日期2005-03-16
  • 最后登录2007-10-18
  • 粉丝0
  • 关注0
  • 积分470分
  • 威望47点
  • 贡献值0点
  • 好评度47点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-09-10 16:38
这段代码只是做静态映射,一般来说用不着,你还是需要看看上面的中断处理代码,一般也就是关中断等一些简单的操作。对于一个处理器来说,这些 操作都可以用统一的 代码来实现,所以也就精简成了一个操作,但是注意传进来的参数是中断号。根据不同的中断号实际上是在处理不同的 中断。
游客

返回顶部