问题标签 [pci-bus]
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.
c# - C# PCI Express 串行端口
我用 C# 创建了新程序,它使用串行端口通信。与 Digitus RS232-USB 转换器通讯时程序运行正常。但它不连接有 PCI Express 串口模块的电脑。连接时出现 I/O 错误。你能帮我解决这个错误吗?
solaris - OracleSolaris 11.2——PCI 是否需要 /usr/kernel/drv/driver.conf?
我正在为学术目的实现一个小型 PCI 驱动程序,我不清楚我们是否真的必须提供一件事driver.conf
?我阅读的不同材料(包括http://blog.csdn.net/hotsolaris/article/details/1763716)说,对于 PCI,驱动程序配置文件是可选的,但在我的情况下,似乎pci_config_setup()
只有驱动程序才能成功。 conf提供:
然后我做:
它添加到系统中,没有警告或错误消息。所以我假设 PCI 设备的某些属性不能由系统自动派生,例如父总线?
如果有人能对此有所了解,我将不胜感激。谢谢。
linux-device-driver - PCIe 和流量控制积分
通常是软件,即设备驱动程序,负责在 PCIe 总线上设置 FC 信用吗?我在哪里可以熟悉相关的 linux API?
linux-kernel - 无法从 D3 睡眠状态唤醒 pci 总线
在我的板上(x86_64,Android Lollipop,内核:3.14),“pci bus”进入 D3 睡眠状态,当我试图通过将其设置为 D0 状态来唤醒它时,它失败并显示消息:
错误日志:拒绝更改电源状态,目前在 D3 中。
在经历了 pci 架构之后,我才知道我们无法将 pci 从 D3hot 调到 D0 初始化,我们需要遵循类似:D3hot -> D0Uninitialized -> D0Initialized
但我无法弄清楚如何做到这一点,请帮我找到合适的解决方案
进一步调试后,我发现,当在 pci 驱动程序(即 pcieport)中请求它时,pci 设备(即 D3 到 D0)的电源状态转换工作正常,但是当我试图通过面向上方的 iwlwifi 驱动程序唤醒 pci 设备时提到的问题,因为它无法将唤醒请求写入 pci 芯片。
任何帮助或任何线索将不胜感激。
linux-kernel - cdev 及其关联的文件操作是如何工作的?
实际上正在研究PCI驱动程序。我有两个具有相同设备 ID 和供应商 ID 的 PCIe 卡。因此,为了有所作为,我为这两张卡分配了两个不同的 MINOR 编号。
我这样做是因为我在互联网上找到的所有文档都建议一台设备使用一个 MINOR 号码。
但是我不明白当我执行 fops_open 时操作系统如何知道哪个卡是针对的,因为 fops 捆绑到所有设备上。
需要你的帮助,谢谢大家。
PS:fops = 文件操作
windows - 使用 Win32 API 访问 PCI 配置空间
给定 PCI 设备的地址(即总线、设备、功能),如何在用户空间中使用 Win32 API 调用以编程方式读取该设备的配置空间(例如供应商 ID、设备 ID)?
在 Linux 上,打开 /sys/bus/pci/devices//config 文件并从正确的偏移量读取。
pci-e - PCIe 对等通信
两个独立的设备(端点)可以在没有根联合体参与 PCIe 的情况下相互通信(根据 PCIe 规范是的,但是如何)?
在内存和 IO 事务的情况下,一个端点如何知道另一个端点的地址?
交换机如何在两个下游端口之间路由数据包?
谢谢并恭祝安康
hardware - PCI ROM 是如何被遮蔽的?
在几个资源中我发现: ROM 映像必须通过 000DFFFFh 复制到 RAM 到 000C0000h。如果类代码表明这是 VGA 设备 ROM,则必须将其代码复制到从位置 000C0000h 开始的内存中。
1:如果我有一个ROM大于128KB的PCI饥渴河马卡怎么办?
2:如果我有 ROM 64KB 的普通 PCI 设备但我有 4 个怎么办?它们是否按顺序加载到此内存范围中?如果是这样(尽管我对此表示怀疑)如何在初始化和引导阶段之间保留代码映像?
3:如果 BIOS 决定不符合规范并指定不同的内存位置会发生什么?为什么无论如何使用这个范围很重要?
4:普通机箱和VGA接口有什么区别?仅仅是限制造成了差异吗?
io - 了解 PCI 地址映射
我正在研究 PC 体系结构,但觉得我没有掌握 PCI 地址的基础知识。
我们在 PCI 中有三个地址空间:内存、输入输出端口和配置。我知道 CPU 可以使用不同的命令区分内存和端口,但是 PCI 会发生什么?我们在总线上有几个命令(读/写这些空间,中断处理等)。我认为在读取内存空间时,我们会寻址到物理 RAM 地址,但在阅读了一些手册之后,看起来我们寻址的是内部设备的内存。
- 为什么要使用内存映射?这是否意味着当某些程序写入映射到某个 PCI 设备的 RAM 地址时,它实际上会写入设备内存?为什么不使用标准 IO 端口写入?
- 如果需要,如何访问真实内存?例如,如果设备要在 RAM 中存储一些数据,那么这个请求将如何与“内存空间”访问区分开来?
linux - Linux Kernel 4.7 (Arch ARM64) 不会在 /sys/bus/pci/devices/*/ 中为 PCI BAR0 创建“resource0”文件
我正在做一个项目,我需要从用户空间通过 PCI BAR0 访问 FPGA 内存。
我以前在旧内核中所做的是打开位于/sys/bus/pci/devices/my_device/中的名为resource0的文件,然后使用mmap()函数将 FPGA 内存暴露给用户空间。
不幸的是,在内核版本 4.7(架构 ARM64)中,似乎由于某种原因没有创建 resource0 文件。
当我使用lspci时,我可以看到系统识别了 FPGA 的 PCI BAR。此外,当我搜索/sys/bus/pci/devices/my_device/目录时,我可以看到有一个名为resource的文件,其中包含写入其中的 PCI BAR 的地址。
有没有人熟悉类似的情况?如何让linux创建resource0文件?