打印

C6455怎样在在DSP/BIOS下 设置EDMA3传输中断

[复制链接]
2086|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qsqqsqqsq|  楼主 | 2011-1-4 16:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本来的程序没有使用BIOS。由于要在程序中加入网络模块NDK,没办法只好使用了BIOS,问题来了。原来响应的很好的EDMA传输中断和GPIO中断,现在都响应不了了。
在BIOS中静态设置了HWI模块,设好interrupt section number,钩上dispatcher,添加上ISR函数。GPIO的中断可以响应了。EDMA传输完成中断仍然响应不了。EDMA的中断设置需要如下代码:
/***************** interrupt configration for EDMA completed ***************/   
    //设置中断5为传输完成中断
    vectId = CSL_INTC_VECTID_6;
    hIntcEdma = CSL_intcOpen (&intcObjEdma, CSL_INTC_EVENTID_EDMA3CC_INT0, &vectId , NULL);
    /* Association of an EDMA event handler with the INTC routine */
    EventRecord_EDMA.handler = &eventEdmaHandler;
    EventRecord_EDMA.arg = (void*)(Edma3_hModule);
    CSL_intcPlugEventHandler(hIntcEdma, &EventRecord_EDMA);
    /* Enabling event edma  */
    CSL_intcHwControl(hIntcEdma, CSL_INTC_CMD_EVTENABLE,NULL);
   
    /* Hook up the EDMA event with an completion code function handler */
    EdmaEventHook(tranIntTcc, EDMACompleted_INT);
    /* Enable interrupts */
    regionIntr.region = CSL_EDMA3_REGION_0 ;
    regionIntr.intr |= 1<<tranIntTcc ;      
    regionIntr.intrh = 0x0 ;
    CSL_edma3HwControl(Edma3_hModule, CSL_EDMA3_CMD_INTR_ENABLE, &regionIntr);
   
  //  printf("enable over;");
/***************** interrupt configration for EDMA completed ***************/

响应的应该是eventEdmaHandler这个函数,改使能的都使能了,大家帮忙看下到底是什么问题啊

相关帖子

沙发
qsqqsqqsq|  楼主 | 2011-1-4 16:24 | 只看该作者
调试到现在,知道的就是原来系统初始化中断的代码:
void IntcInit()
{
    /* Intc module initialization */
        intcContext.eventhandlerRecord = EventHandler;
    intcContext.numEvtEntries = 10;
    CSL_intcInit(&intcContext);
   
    /* Enable NMIs */
    CSL_intcGlobalNmiEnable();
   
    /* Enable global interrupts */
    CSL_intcGlobalEnable(&intc_state);
}
其中初始化CSL的CSL_intcInit(&intcContext);是和BIOS有冲突的
使用这句话就可以响应EDMA中断,但网络EMAC的中断失效
不使用的话就刚好相反
不知道有没牛人能解释一下

使用特权

评论回复
板凳
qsqqsqqsq|  楼主 | 2011-1-6 21:39 | 只看该作者
怎么没大牛来解答下呢 自己顶一下

使用特权

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

本版积分规则

0

主题

10

帖子

1

粉丝