gpt4 book ai didi

memory - PCI Express BAR 内存映射基本理解

转载 作者:IT王子 更新时间:2023-10-28 23:30:15 25 4
gpt4 key购买 nike

我正在尝试了解 PCI Express 的工作原理,以便我可以编写一个 Windows 驱动程序,该驱动程序可以读取和写入没有板载内存的自定义 PCI Express 设备。

我了解 PCIE 配置空间中的基地址寄存器 (BAR) 保存 PCI Express 应响应/允许写入的内存地址。 (理解正确吗?)

我的问题如下:

  • 在谈到 PCIE 时,与物理地址相比,什么是“总线特定地址”?
  • BAR 何时以及如何填充地址?驱动程序是否负责分配内存并将地址写入外围 BAR?
  • 将数据从外围设备传输到主机内存时是否使用 DMA?

感谢您的宝贵时间。

最好的问候,

最佳答案

我还在使用自定义板开发设备驱动程序(尽管是在 linux 上)。以下是我尝试回答您的问题:

BAR 代表主机系统 (CPU) 看到的与设备通信的内存窗口。设备不会写入该窗口,而只会回答 TLP(事务层数据包)请求(MRd*、MWr*)。

如果您的架构没有总线层转换机制,我会说“总线特定”=“物理”地址。查看 this thread了解更多信息。

到目前为止,在我使用的所有 x86 消费类 PC 中,BAR 地址似乎是由 BIOS 或操作系统启动时分配的。驱动程序必须使用已分配的任何地址。

DMA 一词似乎被滥用,而不是总线主控,我认为这是 PCIe 中的正确术语。在 PCIe 中,每个设备都可以是总线主机(如果在其 command register bit 2 中允许)。它通过向总线中的其他设备(但通常是系统内存)发送 MRd、MWr TLP 并向 CPU 发出中断信号来实现这一点。

关于memory - PCI Express BAR 内存映射基本理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20901221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com