问题标签 [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.

0 投票
1 回答
2216 浏览

c# - 在 .NET 中访问 PCI-7250 NuDAQ

我想使用 .NET 使用 PCI-7250 NuDAQ 卡打开继电器。

我知道在VB中打开的代码是:

并关闭:

我需要将此迁移到 C# 代码。谁能帮我解决这个问题?

0 投票
2 回答
1723 浏览

bash - 如何通过管道输入 awk 脚本

我有这个 awk 脚本:

是否有一种语法可以始终通过管道sudo lspci -vvv传输到该脚本?sudo lspci -vvv|./checkpci每次运行脚本时我都必须输入。我知道我可以创建第二个脚本来启动第一个脚本,但我认为这很麻烦,我想知道这样做的正确方法。

顺便说一句,我的显卡崩溃时遇到了一些问题,并且在某些设备上看到了 UncorrErr 标志,是否有人参考了这意味着什么或如何进一步排除故障?现在,我将定期运行此脚本以查看错误何时出现在 lspci 中,以查看是否存在时间相关性。

0 投票
1 回答
1609 浏览

linux-kernel - 将 64 位 linux 主机上的地址分配给 64 位 pcie 卡

我在 64 位 linux 主机上使用 64 位 PCI Express 卡,问题是它的条是 64 位,但总是得到一个位于 32 位地址范围内的地址,即 BAR 的高 32 位始终为零。

如何强制它使用真正的 64 位地址?我试图通过将引导时间参数覆盖到内核来强制执行它,以便内核可以枚举 pci 设备,但结果与 BIOS 相同。

Linux 不支持真正的 64 位地址吗?

0 投票
2 回答
2349 浏览

dos - 通过即插即用 BIOS 分配资源

即插即用 BIOS 规范说,如果您有 PnP BIOS,它可以配置硬件。

这意味着您的 BIOS 读取所有设备的资源需求并配置它们(为它们分配总线资源)。

PnP 是否总是为嵌入/集成在主板上的设备分配资源(即分配 I/O 或内存地址和中断)?

PnP BIOS(即存在 $PnP 结构)是否总是将资源(I/O 和内存地址)分配给主板上存在的所有设备(即嵌入式/集成在主板上)以及PCI 扩展卡上。

虽然 BIOS 可能不知道如何“配置”非嵌入式设备(即未嵌入主板上的设备),并且只会配置嵌入式/集成在主板上的设备,但它“应该”分配地址(I/O 和内存)和 irq 以避免在使用像 DOS 这样的非 PnP 操作系统时发生冲突。

我的问题是:

PnP BIOS 是否必须在 POST 期间(即在加载和将控制权转移到 OS bootlader 之前)将 I/O、内存地址和 irq 分配给PCI 扩展卡设备?所有 PnP BIOS 都是这样吗?

假设 [Plug-and-Play OS] 选项设置为No。即我们告诉 BIOS 我们没有 PnP 操作系统,而是像 DOS 这样的非 PnP 操作系统。

某些 BIOS 没有此选项。他们是否总是将资源分配给所有设备(即嵌入式设备和扩展槽上的设备)?

2012-08-01 更新:

PnP BIOS 规范 v1a 标题为“系统 BIOS POST 要求”的第 2.1 节说:

(我只提到了与这篇文章相关的 3 点。(*)标记的信息是对标准声明的解释。)

为了实现即插即用的目标,系统 BIOS POST负责实现下列要求:

  1. 系统 BIOS已知的所有“静态”设备的配置:

    至少包括系统板设备。它“可以”还包括“即插即用 ISA 卡”位于 EISA、ISA、PCI或任何其他可用静态总线架构上的设备。

    *实际上,上述声明表明,设备“嵌入/集成”在系统板上的任何静态总线(例如,PCI、ISA 或 EISA)上。)“必须”由 BIOS 配置,因为 *BIOS 知道“所有嵌入在主板上的设备,作为设计部分。* 系统 BIOS 程序员必须结合规定将嵌入主板上的设备配置为系统设计部分。

    这是否还包括“安装在 PCI/ISA/EISA 卡插槽中的卡”?

  2. BIOS POST 资源仲裁:系统 BIOS 现在必须知道系统资源的使用情况。使用通过运行时服务提供的信息(将在后面的部分中描述)以及系统 BIOS 已知的资源信息,可以避免关键的资源冲突。“在禁用冲突设备的情况下加载操作系统比导致资源冲突和可能的系统故障要好。”

    *这似乎适用于嵌入/集成在主板或 ISA/EISA 扩展卡插槽上的 ISA/EISA 设备。 由于 PCI 设备的资源在 I/O(或内存)地址分配方面不会发生冲突(因为 PCI 设备的地址不是硬连线的,因此在BIOS 的“手中”分配不冲突的地址。)和 irq 分配(因为 PCI 中断在设计上是可共享的。),因此这意味着“所有”PCI 设备(嵌入式或非嵌入式)将被初始化/分配内存或 I/O 地址和 irq 分配。

  3. 支持即插即用和非即插即用操作系统:即插即用系统 BIOS POST “必须”配置系统以“既”即插即用感知,“以及”非即插即用操作system.* 在非即插即用环境中,“要么”系统 BIOS ,“要么适当的系统软件(设备驱动程序),“必须”配置“所有”设备(即插即用 ISA 卡、PCI 设备等)。这将允许所有环境“完全像在标准 PC 兼容系统上那样加载”。但是,在即插即用环境中,系统 BIOS 现在可以协助操作系统执行功能,例如系统板设备的运行时配置和系统板设备发生变化时的事件识别。

*规范中的所有这 3 条语句似乎都表明,如果要启动非 PnP 操作系统(例如 DOS),那么系统 BIOS 必须“必须”配置(或者,至少分配地址和 irq)“全部” PCI 设备,无论是否嵌入/集成在主板(主板)上。对于 ISA 和 EISA 设备,BIOS“不得”为那些 ISA/EISA 设备(无论是嵌入式还是非嵌入式)启用/分配资源,这将导致资源分配冲突。

从规范的上述陈述中得出结论是否正确。那:“如果 BIOS 必须启动非 PnP 操作系统,它必须启用(即启用即分配资源)系统中的‘每个’PCI 设备(无论是嵌入在主板上还是在 PCI 扩展卡插槽上),以便它们可用供操作系统和应用程序使用”?

2012-08-04 更新:

查看Linux Device Drivers 3rd ed 的第 12 章。. 作者在很多地方明确指出,I/O 或内存地址和 IRQ 分配在 linux 内核开始执行时已经由 bios 完成,linux 内核可以根据需要定制分配。

可能是另一个提到我们想要达到的目标的参考。

0 投票
1 回答
2273 浏览

windows - 在 Windows 中读取 PCI 设备内存寄存器

我需要读取位于系统 PCI 总线上的 AHCI 控制器的 HBA 内存寄存器。我有一个驱动程序,我可以使用它读取系统中所有 PCI 设备的配置空间(使用 ReadConfig 和 WriteConfig)。通过这个,我能够获得 ABAR 内容,它是 AHCI 设备配置空间中的最后一个 BAR。现在,我需要读取这些内存寄存器的值。有谁知道如何做到这一点?PCITree 能够做到这一点,所以我知道这是可能的。

我是驱动程序开发的新手,所以任何帮助将不胜感激...... :)

0 投票
2 回答
5566 浏览

bios - 定位 PCI 并口的基地址

我正在为 DOS 开发一个应用程序。我需要通过并行端口进行通信。

目前我被困在如何确定哪个 PCI 功能的 BAR(基地址寄存器)包含该并行端口的基地址(即数据端口地址)?:?

准确地说,是否存在特定 BAR 将始终包含该并行端口的基地址的行业约定或标准或事实上的标准?

如果不是,那么我如何确定该 PCI 并行端口的基地址(无论是在 pci 扩展卡上还是集成在主板上)?

实际上我关心的是PCI 扩展卡上的并行端口。AFAIK,BIOS 不知道这些。BIOS 只会将资源分配给 pci 卡,仅此而已。因此,BDA 中可能没有此类并行端口的条目,因为 BIOS 制造商只知道他们的主板拥有的所有设备。

例如,在 PC 上,我在 pci 扩展卡上安装了 4 个并行端口,并且在主板上集成了 1 个并行端口。现在其他 2 个并行端口的条目在哪里?

这就是为什么 BIOS 似乎只包含集成在芯片组或主板上的三个并行端口的条目。所以,我认为我们必须读取 PCI BAR 以获取安装在主板上的 pci 扩展卡上的任何并行端口的基地址。

谢谢

0 投票
1 回答
2509 浏览

linux-kernel - 关于访问 pci 配置空间,宏 PCI_CONF1_ADDRESS 让我感到困惑

我正在学习linux内核代码,关于pci的部分,我阅读了文件/arch/x86/pci/Direct.c,一些代码让我感到困惑:

内核版本是 2.6.18,所以宏 PCI_CONF1_ADDRESS 让我很困惑。众所周知,使用IO口CF8/CFC时只能访问pci配置空间的前256字节,如果要访问256~4095字节之间的空间,必须使用ECAM(Enhanced Configuration Access机制),但上面的注释说:

具有类型 1 访问的扩展(每个 PCI 功能 4096 字节)配置空间。

这是否意味着在使用 IO 口 CF8/CFC 时可以访问 pci 配置空间的全部 4096 字节?但是为什么 PCI LOCAL BUS SPECIFICATION 从来没有提到这一点呢?

同时,我也对这个表达感到疑惑:

((reg & 0xF00) << 16)

它使用这种方式生成 pci 配置地址,我从未在任何书籍或 SPECIFICATION 中看到此表达式。

0 投票
1 回答
1720 浏览

linux - How Pci driver works in Linux

I'm trying to learn about how pci drivers works in Linux in PC environment but really find it difficult to go thorugh.There are few following statement which I like to understand before make a move.

  1. The PCI specification permits a system to host up to 256 buses.(buses = pci slots?)

  2. Each bus hosts up to 32 devices.

  3. Each device can be a multifunction board with a maximum of eight functions.(what exactly this line means?)

On my PC can see only three pci slots (are these are called buses) and from each slots one irq lines is directed to cpu.

It seems my understanding is quite wrong and thats why wanted to get in more views in.

0 投票
1 回答
241 浏览

linux - linux设备资源号?

我正在查看嵌入式 x86 系统设计文档。包含 Xilinx FPGA 的 I/O 板连接到 linux x86 PCI 总线。FPGA实现描述如下:

连接后,它声称 x86 现在可以访问“MB 处理器”、“双端口 RAM”、“外围设备”。

然后它声称PCI板本身发布了两套资源资源 0是一个 4Meg 区域,用于连接 MB 处理器和 ioboard 上的 IO 点。资源 1是 MB 处理器和 x86 之间的双端口 RAM 接口。

我是 linux 设备驱动程序的新手,刚刚开始学习。

谁能解释一下“PC板本身发布两组资源”是什么意思?这是否意味着插入板后(需要安装驱动程序?)Linux操作系统会检测到一些资源?

以及这些资源信息将如何用于为 IO 板编写设备驱动程序?或者可能为 MB、RAM 和外围设备编写单独的设备驱动程序?

谢谢,

0 投票
1 回答
4593 浏览

c# - 确定哪些(如果有)PCI 设备插入主板 PCI(e) 插槽

我正在用 C# 编写一个程序来跨许多 Windows XP 工作站执行硬件审计。

我需要确定哪些 PCI 设备是通过主板插槽连接的实际卡 - 而不是也使用 PCI 总线(内置在主板中)的板载设备。

我可以使用各种 WMI 类成功列出使用所有 PCI 总线的所有设备,但没有提供任何指示板载与通过插槽连接的内容。

只要信息可靠,我对如何检索信息或信息来源(例如 Pinvoke、WMI、注册表等)并不挑剔。

谢谢!