网站公告列表

  没有公告

加入收藏
设为首页
联系本站
您现在的位置: AnalogCN安诺电子 >> 文章 >> 技术交流 >> 文章正文
  uclinux-2008r1-rc8(bf561)的中断处理(7):evt_evt7-13           ★★★ 【字体:
uclinux-2008r1-rc8(bf561)的中断处理(7):evt_evt7-13
作者:快乐虾    文章来源:http://blog.csdn.net/lights_joy    点击数:    更新时间:2008-5-26    
这7个中断入口的实现都在arch\blackfin\mach-common\interrupt.S中:
ENTRY(_evt_evt7)
       INTERRUPT_ENTRY(EVT_IVG7_P)
ENTRY(_evt_evt8)
       INTERRUPT_ENTRY(EVT_IVG8_P)
ENTRY(_evt_evt9)
       INTERRUPT_ENTRY(EVT_IVG9_P)
ENTRY(_evt_evt10)
       INTERRUPT_ENTRY(EVT_IVG10_P)
ENTRY(_evt_evt11)
       INTERRUPT_ENTRY(EVT_IVG11_P)
ENTRY(_evt_evt12)
       INTERRUPT_ENTRY(EVT_IVG12_P)
ENTRY(_evt_evt13)
       INTERRUPT_ENTRY(EVT_IVG13_P)
在这里INTERRUPT_ENTRY的定义为:
///* This is used for all normal interrupts. It saves a minimum of registers
//   to the stack, loads the IRQ number, and jumps to common code. */
#define INTERRUPT_ENTRY(N)                         \
    [--sp] = SYSCFG;                               \
                                          \
    [--sp] = P0;   /*orig_p0*/                      \
    [--sp] = R0;   /*orig_r0*/                      \
    [--sp] = (R7:0,P5:0);                          \
    R0 = (N);                                  \
    jump __common_int_entry;
注意,这里的R0保存了中断号N,N可取7-13。在对__common_int_entry的分析中我们可以发现,它的R0寄存器一直没有改变,直到调用do_irq。do_irq是一个用C写的函数,其声明为
void do_irq(int vec, struct pt_regs *fp)
而我们又知道,VDSP编译器在函数参数小于3个的情况下会使用R0, R1, R2这三个寄存器来传值,这就是do_irq中vec这个参数的来源。
文章录入: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号