我们应该在将所有F写入BAR之前还是之前阅读BAR类型?

时间:2018-02-14 10:56:37

标签: driver pci-e

我正在开发PCI Express驱动程序。我正在读取根复合设备的BAR,以查找内存类型和所需的大小。 我知道要找到内存大小,我们需要将所有F写入BAR并将其读回,清除最后4位,将其反转然后再添加1.我很困惑何时读取最后4位字节以了解BAR的类型。我应该在写完所有F之前还是之后阅读它?

例如,在我写F&C 39s之前阅读栏的情况下,我得到0x0000000C。 这意味着它是一个64位可预取的内存条。 但是当我在写完所有1之后阅读它时,它返回0xffff000f。根据这里的最后4位,它是一个I / O栏。

有人可以指导我哪种BAR类型是正确的。

1 个答案:

答案 0 :(得分:0)

在写F之前或之后检查低四位并不重要。那些位不可写。如果它们发生变化,那么该设备就会出现问题。但首先检查你的代码;你的代码中更容易出错。