我在做关于MPC8260的工作.目前,我想为DMA加入中断处理程序.MPC8260的参考手册中
说,IDMA1的中断号是6,我使用如下函数:
intConnect(INUM_TO_IVEC(6),dma_isr,0);
连接中断处理程序与中断源.但是一旦DMA结束,BC中断到来之后,整个EP8260板子就死掉了.我
估计原因是中断处理程序没有设置好,导致CPU进入一段错误的代码中了.另外,通过printf,我
看到INUM_TO_IVEC(6)的返回值仍然是6,这是不是有问题?是不是还要设置一下中断向量表的
基地址?
建议楼主 再次审核下 你的中断处理函数,
另外在中断处理函数最后部分加上打印,看看中断处理是否完成,看是否由于DMA中断本身出错导致死掉的
另外既然你怀疑 在中断后,跑到错误地址死掉,你在看看是否能打印他跑到哪个函数中?
INUM_TO_IVEC(6)的正确返回值是可以查的啊!你自己找找看对不对。还有,你的中断处理程序最好越简单越好,不要把太多的东西放到里面。如果需要处理一些工作,应该放到外面。如果中断处理函数里东西太多,可能会出问题。
希望对你有帮助。
中断号是你初始化MPC8260的中断控制器时候指定的,你要看看你bsp初始化中断控制器的时候写进的是多少,不一定是6的!
在中断处理函数中不要调用printf,应该使用logMsg
在中断处理函数里面调用清中断试试
很可能是中断服务程序有问题,用排除法,
中断服务程序有很多限制的,
两点建议:
1.检查中断挂接时是否正常,入参是否正确。
2.检测中断服务程序中是否存在"printf"打印,这类的打印是需要抢占系统I/o相关资源的,可能会造成系统挂死。