问题标签 [pci]
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.
linux - PCI 设备的“echo 1 > rom”有什么作用,如何以编程方式完成?
我正在尝试编写一个程序来在 linux 上转储选项/扩展 ROM。我已经有必要的 PCI 端口 IO 从偏移 0x30 处的 PCI 配置数据中获取扩展 ROM 的基地址并使其启用,但是当我尝试访问内存中的基时,我得到了段错误。因此,我试图了解当您从 linux 命令行执行“echo 1 > rom”时会发生什么,因为此后 rom 似乎很容易访问(有关更多上下文,请参见此处:http: //etherboot.org/维基/romdumping)
例如,假设我执行以下操作:
lspci
01:00.0 VGA 兼容控制器:ATI Technologies Inc RV370 5B60 [Radeon X300 (PCIE)]
cd /sys/bus/pci/devices/0000:01:00.0
lspci -x -v -s 01:00.0
请注意“扩展 ROM at dfe00000 [disabled] [size=128K]”的行0xdfe00001,然后我得到
(注意偏移量 0x30 处的 0x01 和现在显示“扩展 ROM 在 dfe00000 [size=128K]”的行)。
但我无法访问 0xdfe00000。同时,当 O 在命令行中执行“echo 1 > rom”时,它不会更改行以删除“禁用”,实际上它根本不会对 lspci 的输出进行任何更改。那么“echo 1 > rom”在做什么而我不是,这使得随后可以执行“dd if=rom of=/tmp/rom”?
非常感激
io - 基于 FPGA 的 PCI IO 卡的 dma
我有台面电子 5i20 PCI 卡。提供了一个应用程序,它在 PC 上接收数据并将其发送到卡上的 FPGA,同样它从卡上的 FPGA 读回数据到 PC。
PCI 支持 33MHz 数据传输。使用简单的 for 循环,我可以分别向 FPGA 发送数据和从 FPGA 接收数据。但是我如何使用 DMA 概念,以便我可以读取文件数据并通过 PCI 将几块数据直接发送到卡。
问候
c - 读/写原子性是否适用于多台计算机内存?
我在多计算机环境中工作,其中两台计算机将通过 32 位 PCI 总线访问相同的内存。
第一台计算机只会写入 32 位 int。
*int_pointer = number;
第二台计算机将仅从 32 位 int 读取。
number = *int_pointer;
两个操作系统 / CPU 都是 32 位架构。
带有 PCI 的计算机是基于 Intel 的。
PCI卡上的电脑是power PC。
我担心的情况是,如果只读计算机在读取变量的同时更改变量,导致读取计算机的数据无效。
我想知道读取/写入内存中相同位置的原子性是否保留在多台计算机上。
如果是这样,以下是否会阻止竞争条件:
我可以保证每 16 毫秒 * 发生一次写入,而读取将随机发生。
*时间会漂移,因为两台计算机都有不同的计时器。
memory-management - 使用 pci_alloc_conssitent 分配内存时收到警告消息
我需要分配4K对齐的64 个块的128K 内存。Currentyl按分配使用需要具有DMA 功能。当我这样做时,我收到以下警告消息。这是否意味着我的请求失败了?pci_alloc_consistent()
phy_addr
正如我所读到的,pci_alloc_consistent()
应该能够分配超过128K 的内存,但找不到它可以做的最大值。请让我知道这里出了什么问题。
c# - 确定哪些(如果有)PCI 设备插入主板 PCI(e) 插槽
我正在用 C# 编写一个程序来跨许多 Windows XP 工作站执行硬件审计。
我需要确定哪些 PCI 设备是通过主板插槽连接的实际卡 - 而不是也使用 PCI 总线(内置在主板中)的板载设备。
我可以使用各种 WMI 类成功列出使用所有 PCI 总线的所有设备,但没有提供任何指示板载与通过插槽连接的内容。
只要信息可靠,我对如何检索信息或信息来源(例如 Pinvoke、WMI、注册表等)并不挑剔。
谢谢!
linux - 从 PCI 设备复制到 CUDA GPU 内存
有什么方法可以从 PCI 设备写入 CUDA 设备内存。该 PCI 设备正在以非常快的速度记录数据。因此,为了获得最大性能,我想将数据直接复制到 GPU 内存中,以便通过主机传输进行处理。
我在 CUDA 5.0 中阅读了有关 RDMA 的信息。我如何使用 RDMA/GPUDirect 将数据从 PCI 传输到 GPU 内存。
请帮助我为此提供一些样本。
我使用的操作系统是 Windows 7 64 位和 CentOS 64 位 CUDA SDK 是 5.0 而 GPU 是 Tesla K20
memory - 在 Linux 中,我正在尝试编写一个可以检查一些物理内存的用户空间应用程序(出于调试目的)
我正在尝试编写一个可以检查一些物理内存(用于调试目的)的用户登陆应用程序。
(w/ CONFIG_STRICT_DEVMEM=n
) 使操作系统崩溃。
我的目录中不存在函数ioremap
、、phys_to_virt
和。我研究并尝试了该过程,但这些功能仍然没有进入我的 usr/include 目录。AFAIK 这意味着它们不适用于用户级应用程序。有谁知道如何从用户空间应用程序访问物理内存?还有一个仅供参考,我试图读取的物理地址是一个 PCI BAR,它是我在“memory at”行中执行的。phys_to_page
/usr/include
make headers_install
lspci -v
storage - SCSI和PCI之间的区别
SCSI 是标准电子接口,允许个人计算机与磁盘驱动器、磁带驱动器等外围硬件进行通信。
外围组件互连 (PCI),顾名思义,是描述如何将系统的外围组件连接在一起的标准。结构化和受控的方式。
现在我的问题是是什么让它们与众不同,数据传输的方式?还是硬件?
谢谢你的帮助 。
linux-kernel - 从 Linux 内核空间到 PCIe 卡的 DMA
我正在尝试为 PCIe 设备编写 linux 驱动程序 - Adlink PCIe 7300A 高速数字 IO 卡。
该驱动程序对于正常的内存传输工作正常,但尝试使用卡的总线主控功能启动缓冲区从 CPU 内存到设备的输出 FIFO 缓冲区的 DMA 传输根本不起作用。
我一直在尝试以几周而不是几天的顺序来解决这个问题。
任何见解都将非常感激。
驱动代码——https://github.com/sbrookes/timing_driver_sdarn/blob/master/kernel_land/timing.c
设备数据表——http: //www.acceed.com/manuals/adlink/P7300A%20Manual.PDF
PLX 9080 PCI 接口芯片数据表 -- http://www.der-ingo.de/bin/milanhelp/PLX9080.pdf
我无法解释我会多么感激任何一点洞察力。
谢谢,
斯科特
storage - NVMe排队接口和PCIe排队接口的区别
任何人都可以让我知道两者之间的区别。
如果有,请避免相关链接。