【问题标题】:how is the communication of PCIe using BAR defined?使用 BAR 的 PCIe 通信是如何定义的?
【发布时间】:2014-04-11 10:10:11
【问题描述】:

我是 PCIe 的初学者,必须开发一个简单的 PCIe 驱动程序。

如果我有一个内存为 1kByte 的 PCIe 设备,BAR 包含什么? 1kByte 空间的地址? BAR 被“映射”到内存或 i/o 地址空间是什么意思?

试图在不同的书中找到答案,但没有成功......

最好的问候 托马斯

【问题讨论】:

  • 你用什么语言编写驱动程序?你用的是什么系统?你试过什么?
  • 我正在使用 C. Ubuntu 12.04 LTS 好吧,我尝试通过阅读 ldd3 和另一本 linux 驱动程序书来了解内部情况。我开始开发驱动,但我不明白PCIe中整个寻址的原理。如果我想从我的 PCIe 设备(在我的情况下是 FPGA)中读取一个寄存器,我应该使用哪个地址? BAR 有什么用?

标签: pci-e


【解决方案1】:

BAR 最初将包含所请求内存的类型(位 0 - MEM 或 IO),如果它是 MEM 条,您需要选择它是 32b 还是 64b 区域条,以及它是否对应于可预取(可缓存)区域。这些属性占据 4 个 LSB 或 BAR。该栏的其余部分用于分配请求的大小,您的设备请求分配的大小(字节对应位)应该是值为 0 的只读位。例如,1 kb 内存必须表示为位 4-9 只读值设置为 0 的条。位 3-0 将具有属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    相关资源
    最近更新 更多