1

我的情况如下:

  • 一块板充当 PCIE 根端口 (RP),一块板充当 PCIE 端点 (EP)。
  • PCIE 端点导出了一个内存区域。该内存区域在 RP 和 EP 之间共享。每当我们需要访问这个共享内存区域时(实际上我们只是访问这个区域的前几个字节的控制数据结构)。我们必须为读取和写入后刷新缓存做一个无效缓存。
  • 我尝试将结构声明如下,但没有无效/刷新缓存,读/写不会生效。

    typedef volatile struct { u32 front; u32 后部;u32 n_msg; u32 偏移量;} queue_ctl_t;

谁能告诉我访问这个共享内存区域的正确方法。我只是想知道一些网络驱动程序(用于 PCIE 总线上的网卡)如何在不执行无效/刷新缓存的情况下一致地访问数据。任何建议表示赞赏,非常感谢!

4

1 回答 1

1

您应该使用来映射有问题的内存区域,并使用and函数ioremap_nocache()读取/写入它们。ioread*()iowrite*()

于 2013-03-19T11:25:32.117 回答