HI3559AV100和FPGA 7K690T的PCIE接口调试记录

1、基本情况

        HI3559AV100和690t之间使用pcie2.0 x2接口连接,3559作为RC端,690T作为EP端,驱动使用XDMA。系统主要功能是FPGA采集srio接口过来的图像数据,再通过pcie把数据传递给3559,3559再实现图像数据的存储、AI处理、编码输出等。

2、问题及过程

2.1、内核配置RC功能

        参考海思手册即可,主要是在kernel的menuconfig中打开相应的功能即可。

2.2、LINKUP失败

        系统启动后,通过lspci不能查看到ep设备,但是FPGA的PCIE状态显示linkup。

        后偶然发现,对3559软复位后,lspci可以查看到ep了,显示如下:

HI3559AV100和FPGA 7K690T的PCIE接口调试记录_第1张图片

        由此判断,可能是RC启动快于EP,需要等待EP的启动。

        修改代码如下:

HI3559AV100和FPGA 7K690T的PCIE接口调试记录_第2张图片

        修改后,多次测试rc可以直接检测到ep。

2.3、XDMA驱动加载失败

        编译xdma驱动后,加载驱动失败,显示如下:

HI3559AV100和FPGA 7K690T的PCIE接口调试记录_第3张图片

        经过尝试发现驱动配置为poll模式可以正常,加载结果如下:

HI3559AV100和FPGA 7K690T的PCIE接口调试记录_第4张图片

2.4、数据调试过程

        数据的调试过程需要和FPGA精密配合,最后我这边形成的状态是访问对应的DMA通道设备即可完成和FPGA的PCIE接口数据交互。

2.4.1、RC数据接收测试

        ./dma_from_device -v 1 -d /dev/xdma0_c2h_0 -f output_datafile_4K.bin -s 0x5eec00 -c 10 

        结果显示如下:

HI3559AV100和FPGA 7K690T的PCIE接口调试记录_第5张图片

        由结果得知,实测的RC读速度为500MB/s,而理论的pcie2.0 X2速度为1000MB/s。

2.4.2、RC数据发送测试

        ./dma_to_device -v 1 -d /dev/xdma0_h2c_0 -f data/datafile_32M.bin -s 0x5eec00 -c 10

        结果显示如下:

HI3559AV100和FPGA 7K690T的PCIE接口调试记录_第6张图片

        由结果得知,实测的RC写速度为670MB/s,而理论的pcie2.0 X2速度为1000MB/s。

3、遗留问题

        3.1、PCIE的中断模式使用失败

                待查

        3.2、PCIE的实际速度和理论速度有较大差异

                待查

你可能感兴趣的:(pcie,PCIE,3559)