问题标签 [pci-e]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
fpga - 用于(重新)编程 PCIe 板的 PCIe JTAG
我注意到 PCI 总线有 JTAG 线(即 TCK TDI TDO 等):有没有办法使用该 JTAG 重新编程基于 fpga 的 PCIe 设备?(假设 fpga 的 JTAG 连接到 PCI 线)。
谢谢米歇尔
编辑:因为我看到-1,也许我无法让自己理解......我将尝试更好地解释这种情况。我们有一块 Terasic DE5 (Stratix V FPGA) PCIe 板,它实际上将 PCIe 总线的 JTAG“线”路由到 FPGA。确实,板上焊接了一个 JTAG 端口,但由于机械原因,很难够到和使用。所以我的问题是:是否可以像使用 BLASTER 一样使用 PCI 引脚对 FPGA 进行编程?如果是这样,支持 PCIe JTAG 编程的 linux 基础设施是什么?如果没有机会,有人可以解释我为什么吗?
windows - 在连接时捕获 PCI-Express,然后在系统中进行仿真
有没有办法在设备连接时捕获设备状态,而不是在 Windows 中模拟它?我购买了一些 PCI Express 设备,这些设备需要插入插槽才能使软件正常工作。但我只有一个插槽,软件无法完全运行,正在插槽中搜索另外 2 张卡。有任何想法吗?谢谢!
intel - Intel De2i-FPGA 板卡 PCI
嗨,正如标题所示,我有一块 FPGA 板。我想将 2 个 PCI 卡连接到它。该板的框图显示它有两个 PCIe 端口,但该板的图片不包含一个。FPGA的手册提到了PCIe,但板子根本没有。其他 I/O 包括 USB、RS-232 和 SATA。有什么方法可以让我使用某种适配器或转换器将两个 PCI 卡连接到板上吗?这是框图和图片的链接。http://www.systemseng.cornell.edu/intel/team/upload/DE2i-150.pdf
linux - PCIe 硬件未按顺序查看 Linux 设备驱动程序 DMA 内存缓冲区
我正在为 Xilinx Virtex 6 PCIe 定制板开发设备驱动程序。在进行 DMA 写入(从主机到设备)时,会发生以下情况:
用户空间应用程序:
内核空间:
设备 pcie TLP 转储(通过 Xilinx 内核后的逻辑分析仪获得):
现在,这种明显的内存排序错误发生的概率很高(0.8 < p < 1),并且排序不匹配发生在传输中的不同随机点。
编辑:请注意,上面的 c4 点表明内核驱动程序没有以正确的顺序填充内存(我想内存控制器用连续内存填充 TLP)。64B 是缓存行大小,这可能与缓存操作有关。
当我禁用内核缓冲区上的缓存时,
错误仍然发生,但很少发生(p < 0.1,取决于传输大小)
这只发生在基于 i7-4770 (Haswell) 的机器上(在 3 台相同的机器上测试,带有 3 个板)。我尝试了内核 2.6.32 (RH6.5)、stock 3.10.28 和 stock 3.13.1,结果相同。
我在基于 i7-610 QM57 的机器和 Xeon 5400 机器上尝试了代码和设备,没有任何问题。
欢迎任何想法/建议。
此致
克劳迪奥
c - 如何使用 VxWorks 映射 PCIe 区域?
这是我的第一篇文章 :) 我正在使用 VxWorks 6.9 和 Intel Sandy Bridge 板。我想知道如何在我的应用程序中映射 PCIe 内存区域。PCIe 内存区域是图形内存的一部分,它的物理地址是 0x80000000。
我正在尝试使用不返回虚拟地址的 vmMap 函数。在这种情况下,我将虚拟地址设置为与物理地址相同的值,但我不知道这是否是好的行为。如何从物理地址获取虚拟地址?如果不存在函数,我必须使用什么虚拟地址?
当我在我的应用程序中映射了该区域时,我正在对该区域的访问进行调整。我正在尝试使用函数 vmStateSet 更改缓存状态,但只能设置 COPYBACK、WRITETHRU 和 DEFAULT(设置其他缓存值失败)。所有缓存状态的吞吐量都很低。在 Intel Sandybridge 中,可以将 MMU 设置为写入组合。我如何在 VxWorks 中做到这一点?
这是我到目前为止所尝试的:
谢谢您的帮助 !!
c - 在 ubuntu 上读取、写入、更新 pci 卡上的 eeprom
我试图弄清楚如何在 ubuntu 上使用 c 语言在 pci 网卡上读取、写入和更新 eeprom 的内存地址。
有人可以指出我正确的开始方向吗?谢谢
pci-e - 需要有关 pci/pcie 驱动程序配置中断的帮助
嗨,我正在为使用 DDI8 mp 接口的串行 PCI/PCIe 卡编写 openserver-6 SCO 操作系统的驱动程序。我在 PCIe 卡上遇到中断时遇到问题。尽管驱动程序在 PCI 卡上正常工作。PCIe 卡是否需要任何不同的配置?
gpu - 设备之间的直接数据复制
我正在尝试探索跨设备(GPU、NIC、存储等)实现全局 IO 空间的可能性。这可能归结为这个线程中提出的问题——两个 PCI 设备之间的直接通信。
我一直在阅读 Nvidia GPUDirect,其中内存区域被固定,物理地址是在 nvidia_p2p_* 调用的帮助下获得的。我无法完全理解如何使用 GPU 的物理地址来对 3rd 方设备的 DMA 控制器进行编程以进行数据传输。我对 GPU 内存不可见这一事实感到困惑,这与 cpu 内存空间不同(这可能是由于我对 dma 控制器编程知识贫乏)。对此的任何指示都会非常有帮助。
此外,许多 PCI 设备根据 PCI BAR 公开内存区域(例如,GPU 公开 256M 的内存区域)。有没有办法知道这个 BAR 内存区域映射到的设备物理地址?BAR 内存区域和通过 nvidia 驱动程序分配给 CUDA 运行时的内存之间是否有任何重叠?
提前致谢。
embedded - linux内核需要做什么才能通过PCI-E初始化broadcom L2交换机?
我有一个带有 Armada 370 SoC 的定制板,其中一个 Broadcom L2 交换机现在通过 PCI-E 添加到 SoC。
该板在Linux上运行。我只想初始化 L2 开关寄存器。
我只想要非常少的访问权限,以便我可以访问 L2 开关的寄存器(使用使用 /dev/mem 的程序 - 我有应用程序)。
我是新手,我想知道在 PCI-E 驱动程序和 menuconfig 等方面需要做什么。
如果有人能指出一个从头开始解释所有这些东西的资源,我会很高兴,因为我想了解更多。如果我正确地进行内存映射,我是否能够访问寄存器?我还需要做些什么吗?
linux-kernel - 如何调试 pci 设备和 linux 驱动程序
我正在用verilog编写一个pci设备并编写它的驱动程序,我可能在硬件设计中插入了一些错误,当我用insmod加载驱动程序时,内核只是卡住并且没有响应。现在我试图找出使我的计算机卡住的最后一个驱动程序代码行。我已将 printk 插入到所有相关函数中,例如 probe 和 init,但没有一个被打印。
当我使用 insmod 时,还有什么其他代码在运行到我的 init 函数之前?(我猜内核卡在那里)