使用DMA通信PCIe

时间:2017-12-10 04:29:44

标签: c++ xilinx dma pci-e

Xilinx corp。发布了一些使用DMA PCIe IPcore的程序here。在这些程序中,有一些程序可以执行C2H或反之亦然的高速操作。

它主要是在主机端使用DMA还是必须在这些代码中写入多余的东西?例如,以AXI-ST模式写入/读取的代码片段如下:

void do_transfers_in_parallel(unsigned index, device_file& h2c, device_file& c2h, 
                       std::array<uint32_t, array_size>& h2c_data, 
                       std::array<uint32_t, array_size>& c2h_data) {

std::cout << "    Initiating H2C_" << index << " transfer of " << h2c_data.size() * sizeof(uint32_t) << " bytes...\n";
std::thread read_thread(&device_file::write, &h2c, (void*)h2c_data.data(), 
                        h2c_data.size() * sizeof(uint32_t));
std::cout << "    Initiating C2H_" << index << " transfer of " << c2h_data.size() * sizeof(uint32_t) << " bytes...\n";
std::thread write_thread(&device_file::read, &c2h, (void*)c2h_data.data(), 
                         c2h_data.size() * sizeof(uint32_t));

write_thread.join();
read_thread.join();

}

1 个答案:

答案 0 :(得分:1)

我认为这完全依赖于PCIe规范的性质以及在PG195中完全描述的Xilinx PCIe驱动程序。