gpt4 book ai didi

Linux 驱动 PCI 突发传输

转载 作者:太空宇宙 更新时间:2023-11-04 04:15:33 30 4
gpt4 key购买 nike

我有一个关于在 PCIe 上使用突发读写的问题。我有一个 fpga,它通过 PCIe 连接到 cpu。我有一个简单的驱动程序,仅用于测试。驱动程序向 FPGA 写入数据以及从 FPGA 读取数据。 fpga 包括一个 sram 核心,可在其中写入和读取数据。读取和写入工作正常,但如果我从设备读取,则不会出现突发情况。如果我将数据写入 fpga,如果我使用 ioremap_wc() 映射 BAR,则突发工作良好。但是如果我从fpga读取,CPU只会进行单次访问而不会突发。我发现我必须将内存标记为回写,以便能够缓存读取和写入传输的数据,但是如果我使用/proc/mtrr 将地址标记为回写,则读取和写入时不会出现突发。 PCI header 中的 BAR 被标记为可预取。你们中有人知道如何在 pci 总线上实现突发读写吗?我希望任何人都可以帮助我。

最佳答案

在 PICe 总线上实现突发传输的最佳方法是使用 DMA Controller 而不是处理器 I/O。如果您的 FPGA 是 PCIe 总线主控,您可以对其进行编程以传输数据。除此之外,大多数平台都内置有 DMA Controller 。

我希望写入组合能够执行与未缓存相同的读取操作。但即使您使用 ioremap_cache(),您的平台也可能不会突发 PIO 读取。它可能取决于您的处理器、执行读取的指令和系统逻辑。

关于Linux 驱动 PCI 突发传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16595280/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com