目前使用CORE0 单核运行 ,准备配置 GPIO8 管脚为输入,上升沿触发中断
中断配置使用的时CSL方式,讲GPIO8对应的82号事件直接映射到INT5上去。
中断服务程序是 HandleGPIO_INT,其中只是写了一句测试用的全局变量累加语句
FPGA端发送脉冲信号后,DSP端没有触发中断,未能进入到HandleGPIO_INT测试函数中去,烦请TI的专家给看看怎么排查,谢谢。
core 0的GIE IER都查过了是使能的,由FPGA发给DSP的GPIO8脉冲是一个单个的持续秒级的很长的高脉冲信号
1 通过查看寄存器状态发现EVENTFLAG如下图1所示:
EVENTFLAG[2]=0x00040000 说明82号事件(对应EVENTFLAG[2]值为82-64=18)硬件已经检测到了
2.通过查看寄存器状态发现INTMUX1
值为0x 0706525B,说明82号事件已经成功的通过中断选择器映射给了INT5
图1
Shine:
请问IFR.int5置1了吗?
user4787357:
回复 Shine:
查看了 通过CCS view register查看CORE 0的控制寄存器里IFRIF0-IF15全是0,这个会是神马问题
Shine:
回复 user4787357:
把EVTMASK2设成0。
user4787357:
回复 Shine:
1. 这个EVTMASK[0]-EVTMASK[2]我查手册是控制把32个事件是否可以合并为一个单一事件EVENT0-EVENT2输出的,我这里不需要事件合并,就单GPIO事件,应该用不到这个吧。
相应bit设为0—-事件可以合并
相应bit设为1—-事件不能合并
我按照建议把EVTMASK[2]=0; 测试依然没有触发GPIO8中断,应该不是这个EVTMASK2的问题
2. 我又在线查了一下配置,发现CORE0的控制寄存器里,ISTP是指向0x00862000 ,这个地址在map文件里显示是.csl_vect段的地址(.map文件贴图)
之前调C6455的时候也是用同样的CSL配置的,GPIO服务程序用CSL_intcPlugEventHandler绑定的,没有特定指定具体位置,也能触发中断的
我在想是不是6678有差异,导致GPIO的中断服务程序它找不到入口。
Shine:
回复 user4787357:
现在的问题是IFR位没有置1,只有置1了才会进入中断服务程序,您可以手动将IFR置1,来验证您的中断向量表,中断服务程序有没有问题。
user5491830:
把EVTMASK2设成0
user5491821:
初始化的时候需要全部处理吗
user5491821:
回复 user5491830:
必须要设成0吗
user5491821:
回复 Shine:
这样应该只是一个中断设置吧