工程师您好,
我在进行C6678和FPGA之间的数据通信,有两个问题想请教:
1、DSP在接收FPGA发来的GPIO0中断和数据时,在DSP端中断响应函数中对SRIO连接情况进行判断(之前连接建立成功),代码如下:
| //判断SRIO连接是否成功 for(i=0; i<SRIO_MAX_PORT_NUM; i++) { if(srio_cfg.blockEn.bLogic_Port_EN[i]) { //读SRIO中SPn_ERR_STAT寄存中的port_ok位 if( ( gpSRIO_regs->RIO_SP[i].RIO_SP_ERR_STAT & CSL_SRIO_RIO_SP_ERR_STAT_PORT_OK_MASK ) == 0) printf("Error! port_ok = %d\n",gpSRIO_regs->RIO_SP[i].RIO_SP_ERR_STAT & CSL_SRIO_RIO_SP_ERR_STAT_PORT_OK_MASK); } } |
在接收一些中断之后,会打印“Error! port_ok = 0”,表示SRIO连接断开,之后又会正常接收并打印中断。与此同时,FPGA端监测SRIO是没有断开连接的,我想请问,为什么DSP在接收FPGA端发来的GPIO0中断和数据时会产生SRIO断开的情况?
2、通过SRIO接口SWrite函数向FPGA写数据。在中断函数中调用没有问题;
可是现在改为:在中断到来时,在中断函数中置标志位SWrite_Flag为1,在main()中while(1){}中对标志位进行判断,满足条件时调用SWrite函数向FPGA写数据。单步调试时,图示实时监测标志位为1,满足if()中的条件,却没有进,而是进了else,这是为什么?是和嵌入式开发中硬件平台有关吗?有什么解决思路吗,请指教!(部分代码如下)
|
//Interrupt service routine for GPIO if( int_cnt % 32 == 0 ) …… } |
|
main() { while(1) } } |
