网站公告列表

  没有公告

加入收藏
设为首页
联系本站
您现在的位置: AnalogCN安诺电子 >> 文章 >> 技术交流 >> 文章正文
  uclinux-2008r1-rc8(bf561)的中断处理(11):do_irq           ★★★ 【字体:
uclinux-2008r1-rc8(bf561)的中断处理(11):do_irq
作者:快乐虾    文章来源:http://blog.csdn.net/lights_joy    点击数:    更新时间:2008-5-26    
前面提到,当内核发生IVG6-IVG13这8个中断时,最后都会调用do_irq函数进行处理,下面看看这个函数的实现:
void do_irq(int vec, struct pt_regs *fp)
{
     if (vec == EVT_IVTMR_P) {
         vec = IRQ_CORETMR;
     } else {
         struct ivgx *ivg = ivg7_13[vec - IVG7].ifirst;
         struct ivgx *ivg_stop = ivg7_13[vec - IVG7].istop;
         unsigned long sic_status[3];
 
         SSYNC();
         sic_status[0] = bfin_read_SIC_ISR0() & bfin_read_SIC_IMASK0();
         sic_status[1] = bfin_read_SIC_ISR1() & bfin_read_SIC_IMASK1();
         for (;; ivg++) {
              if (ivg >= ivg_stop) {
                   atomic_inc(&num_spurious);
                   return;
              }
              if (sic_status[(ivg->irqno - IVG7) / 32] & ivg->isrflag)
                   break;
         }
         vec = ivg->irqno;
     }
     asm_do_IRQ(vec, fp);
 
}
当调用此函数时,vec保存了内部中断的中断号,即6-13,然后此函数通过读取SIC_ISR和SIC_IMASK,确定外部中断号,并将之转换为内核的中断描述表的序号。最后使用此序号调用asm_do_IRQ函数。
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    对比ADI两代TD-SCDMA射频IC得
    [结尾篇]ADSP-TS20XS系列DSP
    一种基于DDS的幅值可调信号发
    基于ADSP2181的CAN总线通讯设
    一种采用单片机控制AD9854为
    在vs2008下使用ffmpeg(5):
    在vs2008下使用ffmpeg(4):
    在vs2008下使用ffmpeg(3):
    ADI AD8275电平转换16位ADC驱
    Boot在ADSP-BF533上的移植
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    版权所有:AnalogCN安诺电子 湘ICP备06016315号