This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

6678跑SYS/BIOS系统时的串口中断问题

大家好,

我遇到一个问题,是用6678跑SYS/BIOS系统时触发串口中断的问题,目前情况如下:

在.cfg文件中进行了串口中断的声明

var hwiParams = new Hwi.Params();
hwiParams.instance.name = "Uart_Handle";
hwiParams.eventId = 92;
hwiParams.enableInt = true;
Program.global.Uart_Handle = Hwi.create(4, "&Uart1_Handle", hwiParams);

但是现在一直无法触发串口中断,请问是我的eventId找错了吗,还是其他的配置有问题,烦请各位解答一下,非常感谢。

  •  参考6678手册,UART时间要通过CIC0映射到DSP中断上,即需要先配置CIC0,映射149或者150号事件到CIC0的出口,再把92号开始的CIC0事件MAP到中断。

  • 请问这个映射的过程要在哪里实行呢,我是在.cfg文件里定义的串口中断,可以在这里实行吗?还是需要在主函数里操作库函数?有没有手册或者例程可以参考?

  • 我之前在看数据手册的时候看到了CIC0里的UART,然后对照上面的interrupt的表,猜想应该是92,所以在.cfg文件里将eventId设置成了92,发现还是进不去中断,听您讲完之后觉得可能是没有映射的问题,可是还是不知道怎么操作。。。抱歉,打扰您的时间了。

  • 问题解决了,因为需要对CIC0的串口中断进行一次映射,再将这个MAP到核0,参考6678数据手册161页,首先要读懂那几个表的含义,6678一共有128event,然后如果需要用串口终端的,其中98个自带的,加上17CIC映射的,其中八个核都可以响应中断,看图figure7-29CIC0对应核0-3CIC1对应核4-7,我们想用核0响应中断,就选用,CIC0,然后找表,发现149号是串口接收中断,然后再定义映射event21-3192-95任意id,就可以完成这一步的映射。

    KeyStone_CIC_event_map(gpCIC_regs, 149 , 92);   //149映射到92

    gpMSMC_regs->INTMUX1=

    CSL_GEM_CIC0_OUT_4_PLUS_8_MUL_N_OR_CIC0_OUT_4_PLUS_8_MUL_N_MINUS_4<<CSL_CGEM_INTMUX1_INTSEL5_SHIFT;

    //92MAP到核05中断