RIFFA的读写函数名为fpga_recv和fpga_send,函数接口也类似于一个文件读写命令,只不过可以在参数中指定PCIe的通道编号、数据的大小等信息。 fpga_send的流程 fpga_recv的流程 里面都有有一个叫做build scatter gather list的步骤,我的理解是在PC上malloc申请内存时候容易申请到非连续的物理内存,可能被分为好几块,所...
recvd = fpga_recv(fpga, chnl, recvBuffer, numWords, 25000); printf("words recv: %d\n", recvd); } 1. 2. 3. 4. 5. 然后关闭设备。显示接收缓存的前20个数据。 AI检测代码解析 // Display some data for (i = 0; i < 20; i++) { printf("recvBuffer[%d]: %d\n", i, recvBuffer[...
PC接收FPGA板卡数据通过用户应用程序调用库函数fpga_recv,然后由FPGA端启动。用户应用程序通过内核驱动程序接收FPGA的读请求,并将数据分包发送。若未收到请求则等待。启动发送函数后,驱动程序将数据存储地址和长度信息放入共享缓冲区,用户应用程序将这些信息发送给FPGA。驱动程序安装步骤涉及下载RIFFA发行版并...
riffa分析框图 Title: riffa_drv Author: Farmer Li Date: 2018-3-19
if (atomic_read(&used_fpgas[id])) { sc = fpgas[id]; // Disable interrupts atomic_set(&sc->intr_disabled, 1); // Reset the FPGA //read_reg(sc, INFO_REG_OFF); wake_up(&sc->recv_waitq); wake_up(&sc->send_waitq); ...
PC接收FPGA板卡数据是用户应用程序调用库函数fpga_recv,然后由FPGA端启动。用户应用程序线程进入内核驱动程序,然后开始接收上游FPGA的读请求,将数据分包发送,如果没收到请求,将会等待它达到。 启动发送函数后,服务器将建立一个散列收集元素的列表,将数据存储地址和长度等信息放入其中,将其写入共享缓冲区。用户应用程序将...
有人知道为什么吗? [图片] [图片]看看上位机代码中的fpga_send和fpga_recv函数收发数据的大小 ...