PCI设备读写问题

发布于 2022-09-22 11:58:50 字数 323 浏览 12 评论 0

我现在需要在一个大端CPU平台上读写一个PCI设备,PCI设备内数据存取都是小端的,现在需要读写PCI设备的Memory和Memory mapped IO(即MMIO区域),请问应该用:
out_le32()/in_le32()还是out_be32()/in_be32()呢?我还看到了一些接口:writel(), readl(), writew(),readw()...

到底用什么接口呢?不知道它们之间的区别。
我用out_be32()/in_be32()试过了发现读写PCI设备的MMIO区域的寄存器时写入的数据非零,但写完后就读发现读出来的数据为0,就是数据根本就没有写进去啊。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一袭白衣梦中忆 2022-09-29 11:58:50

in_XXX/out_XXX应该是读写I/O空间的,而你用MMIO是映射到内存空间的,要用普通内存的方式读写吧?它本身就是一个物理内存的地址而不是I/O空间地址了,用readX/writeX是操作系统推荐的方式,因为有些设备上的地址比较特殊,直接通过操作内存的方式访问有时会出问题。

情场扛把子 2022-09-29 11:58:50

原帖由 Cyberman.Wu 于 2008-10-17 14:08 发表
in_XXX/out_XXX应该是读写I/O空间的,而你用MMIO是映射到内存空间的,要用普通内存的方式读写吧?它本身就是一个物理内存的地址而不是I/O空间地址了,用readX/writeX是操作系统推荐的方式,因为有些设备上的地址 ...

同意,访问的时io内存,应该用这个

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文