您好,
请问下,upp dma buffer我设置128个字节,具体的Byte Count,Line Count设置如下:
#define UPP_DMA_BYTE_COUNT (64) //DMA行字节数,每行64个字节,行的字节必须是64的整数倍
#define UPP_DMA_LINE_COUNT 2 //DMA行数, DMA行数 = DMA缓冲区大小/UPP_DMA_BYTE_COUNT
#define UPP_DMA_BUFFER_SIZE (UPP_DMA_BYTE_COUNT * UPP_DMA_LINE_COUNT)
发送1~128共128个字节给FPGA,FPGA端只接收到第1行1-64共64个字节,第2行就没接收到;
附:
WindowAddress:0xc2010300, LineCount:2, ByteCount:64, LineOffsetAddress:64(UPP DMA 设置的几个值)
请问:可能会是什么原因导致fpga只收到1行问题?
Shine:
自循环模式下能不能收发?可以参考BSL里的uPP例程。另外,cache有没有使能?
wensen liang:
回复 Shine:
您好,upp配置的是从channel b发送,数据位是data8~15,单倍率模式;channel a是接收,数据位是data0~7,单倍率模式。
我做了如下测试:
1、fpga端如果之间把channel b之间接到channel a上,相当于回环测试,可以正常接收到数据。
2、fpga端如果经过fifo处理,就出现上述模式,只接收到一行数据,如果我把Byte Count改为128字节,138端接收也随着改变,只接收到1~128字节。
Shine:
回复 wensen liang:
回环正确的话,那要检查FPGA的fifo设置问题。
wensen liang:
回复 Shine:
你好,还有个问题咨询下,
DataNode *node = NULL; int *data = NULL;
node = (DataNode *)ListMP_getTail(server->upp_recv_list_free); data = (int *)SharedRegion_getPtr(node->SR_buffer);
通过SharedRegion_getPtr获取出来的地址data都是8字节对齐的吗?目前打印出来的地址都是8字节对齐。
Shine:
回复 wensen liang:
如果在定义DMA buffer的时候8字节对齐了,那SharedRegion_getPtr获取出来的也是8字节对齐。