PCI设备读写问题
我现在需要在一个大端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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
in_XXX/out_XXX应该是读写I/O空间的,而你用MMIO是映射到内存空间的,要用普通内存的方式读写吧?它本身就是一个物理内存的地址而不是I/O空间地址了,用readX/writeX是操作系统推荐的方式,因为有些设备上的地址比较特殊,直接通过操作内存的方式访问有时会出问题。
同意,访问的时io内存,应该用这个