pci相关内容
我正在编写一个设备驱动程序来访问 PCIe 卡上 FPGA 中的内存. 该卡启动并被探测/发现:- /proc/iomem 80000000-840fffff : PCI 总线 #0380000000-83ffffff:0000:03:00.084000000-840fffff : 0000:03:00.0 所以阅读 ldd/etc 我在 80000000 编码了对 request_m
..
我正在用 C# 编写一个程序,以在许多 Windows XP 工作站上执行硬件审计. 我需要确定哪些 PCI 设备是通过主板插槽连接的实际卡 - 而不是也使用 PCI 总线(内置于主板中)的板载设备. 我可以使用各种 WMI 类成功列出使用所有 PCI 总线的所有设备,但没有任何设备提供板载设备与通过插槽连接的设备的任何指示. 只要信息可靠,我不会对信息的检索方式或信息来源(例如
..
有没有办法通过使用 Windows c/c++ API(例如 PnP 配置管理器 API)来获取设备的 PCI 坐标(总线/插槽/功能编号)?我已经知道如何在内核模式下做到这一点,我需要一个用户模式解决方案.我的目标系统是 Windows XP-32 位. 解决方案 我最终找到了一个简单的解决方案(这只是深入 MSDN 的问题). 这个最少的代码根据总线/插槽/功能查找设备的 PCI
..
我试图了解 PCI Express 的工作原理,以便我可以编写一个 Windows 驱动程序,该驱动程序可以在没有板载内存的情况下读写自定义 PCI Express 设备. 我了解 PCIE 配置空间中的基址寄存器 (BAR) 保存 PCI Express 应响应/允许写入的内存地址.(这样理解正确吗?) 我的问题如下: 在谈论 PCIE 时,与物理地址相比,什么是“总线特定地址
..
我想拥有一个允许对Linux可执行文件的关键部分进行“自我分析"的库.以一种可以使用 gettimeofday()或 RDTSC 我希望能够计算诸如分支未命中和缓存命中之类的事件. 有许多工具可以做类似的事情( perf , PAPI , 通常采用的方法是使用 msr 内核读取 MSR模块,并且从 一种方法是通过以root用户身份运行的“访问服务器"代理所有内容.这可以工作,但比使用/p
..
我试图借助 pci_rescan_bus()内核功能在我自己的内核驱动程序中重新扫描PCI总线,但我看不到它的功能相同. 如果我尝试通过运行以下命令在用户空间中执行相同操作,则会看到重新扫描: echo 1>/sys/devices/pci0000:00/0000:00:14.1/rescan 我正在尝试重新初始化位于PCI总线上的以太网端口.下面是我现在使用的代码: struc
..
在驱动程序端,加载驱动程序模块时或在引导时(如果模块是内置的)调用 pci_register_driver().(无论何时添加设备/驱动程序,都会循环遍历驱动程序/设备列表以查找匹配项,我得到了这一部分.) 但是在哪里/什么时候在总线上发现并注册了pci设备?我想这是特定于架构的,并且会在x86上涉及BIOS,例如-BIOS例行探测PCI设备,然后将结果放在RAM中某个位置的列表中,然后再加
..
我目前正在xilinx PFGA中实现PCIE端点设备,并且对该中断有一些问题. 驱动程序初始化时,它将中断映射到IRQ 32 [ 1078.938669] alloc irq_desc for 32 on node -1 [ 1078.938670] alloc kstat_irqs on node -1 [ 1078.938675] pci 0000:06:00.0: PC
..
https://elixir.bootlin.com /linux/latest/source/include/linux/pci.h#L286 在 struct pci_dev, 我只能看到总线和功能: struct pci_bus * bus; 和 unsigned int devfn; 似乎没有(B /
..
在PCI ID标识的多GPU系统上,我希望能够将OpenCL设备与系统中的GPU匹配. 例如,如果我有一个带有多个GPU(可能来自不同供应商)的系统,则可以通过枚举PCI总线来列出设备.这给了我PCI供应商,设备和总线ID.如果我根据某些选择标准选择这些(GPU)PCI设备之一进行OpenCL计算,该如何将其与OpenCL设备进行匹配? 我可以使用 clGetDeviceIDs()枚举
..
可以公平地说,pci_alloc_consistent分配了一个连续的非缓存,非分页的内核内存块.我问的原因是我在某些内核/驱动程序代码中看到了此注释(不是在原始内核源代码中),并且我认为我理解内存是连续的,但是不确定是否将其分配为非缓存的,因为缓存一致性的想法是保持缓存中的数据与DMA内存一致. 此外,不确定为什么他们将其称为非分页的. 例如 https://www.kernel.o
..
我正在编写设备驱动程序以访问PCIe卡上FPGA中的内存. 卡启动并被探测/发现:- /proc/iomem 80000000-840fffff : PCI Bus #03 80000000-83ffffff : 0000:03:00.0 84000000-840fffff : 0000:03:00.0 因此,读取ldd/etc时,我在80000000处编写了对reque
..
背景: 我有一个PCI卡,它基本上是一个时钟.它通过GPS获取时间,并将当前时间保存在某个寄存器中. 目标: 我想一遍又一遍地读取有限数量的寄存器/字节(例如当前时间),并以尽可能低的延迟. (时钟提供了很高的精度,我认为延迟越高,精度就会越低.)操作系统是RedHat.编程语言是C/C ++.我还想写入设备内存,因此延迟不是问题. 可能的前进方式: 我看到了这些方式
..
DMA缓冲区是驱动程序映射的内存. 例如,在使用rtl8319的pci-skeleton.c中,我们有: tp->tx_bufs = pci_alloc_consistent(tp->pci_dev, TX_BUF_TOT_LEN, &tp->tx_bufs_dma); 但是DMA引擎可以驻留在soc或设备中. **即使设备中装有DMA引擎
..
我正在测试PCI端点驱动程序,我想从PCI RootPort端到PCI端点端进行简单复制.在PCI端点方面,我们将地址从PCI地址转换为CPU物理地址.我们可以在转换中配置CPU物理地址,以便它映射到特定的DRAM区域.问题是我们如何才能在该特定的CPU物理地址上分配一个内存缓冲区,以确保从RootPort端进行的写操作确实有效? 任何建议都值得赞赏.非常感谢! 解决方案 如果您可以
..
现有的内核驱动程序(例如xilinx)具有特定的注册方式(作为tty设备),如果它们直接映射到cpu内存映射(如设备树所示): https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842249/Uartlite + Driver 但是在其他情况下,有一个PCIe设备(例如具有xilinx uart IP的FPGA)与cpu连接.
..
实际上在PCI驱动程序上工作. 我有两张具有相同设备ID和供应商ID的PCIe卡. 因此,要有所作为,我为这两张卡分配了两个不同的MINOR号. //request for device numbers error = alloc_chrdev_region(&devt, 0, cards_found, DEVICE_NAME); if (error == 0) { major
..
我有一个e2-2000模型的AMD处理器.这是家庭0fh. 根据0fh BKDG系列,我有以下代码可以读取设备和供应商ID: ReadPCIConfiguration: movq $0x80000100, %rax movq $0x0cf8, %rdx outl %eax, %dx # sigsegv caught here movq $0x0cfc
..
我正在尝试从可加载的内核模块中读写PCI设备. 因此,我遵循此pci_enable_device(dev); pci_request_regions(dev, "expdev"); bar1 = pci_iomap(dev, 1, 0); // void iowrite32(u32 val, void __iomem *addr) iowrite32( 0xaaaaaaaa, bar1 +
..
我想在任何给定的Linux机器上验证是否支持PCI直通.经过一番谷歌搜索后,我发现我宁愿检查是否支持IOMMU,我通过运行以下命令来做到这一点: dmesg | grep IOMMU 如果它支持IOMMU(而不是IOMMUv2),我会得到: IOMMU [
..