读书人

使用READ_REGISTER_UCHAR函数遇到的怪

发布时间: 2012-02-05 12:07:14 作者: rapoo

使用READ_REGISTER_UCHAR函数遇到的怪问题
在Windows下写了一个很简单的WDM驱动程序,在用READ_REGISTER_UCHAR函数去读PCI卡的内存空间时发现一个好奇怪的问题,那就是所有奇数地址(BaseAddress + 0x00F1)的内存读出来的值是正确的,而偶数地址(BaseAddress + 0x00F0)的内存读出来的值却是随机的,这是怎么回事啊?用READ_REGISTER_USHORT读取16位寄存器地址的值总是返回FFFF,只有一次成功过,这是为啥?

[解决办法]
是不是 数据总线宽度 16与 8的问题?

帮顶下。
[解决办法]
我在linux下遇到过同样的问题,每次调用ioread8读出来的寄存器值都不一样,后来偶然发现一个规律,就是在读取连续几个寄存器值时,每个值都是上一个读取的寄存器值,也就是说,第一次读取的时候没有获取到正确的寄存器值,而第二次读取的时候才得到正确的值,所以我在自己的函数里连续调用两次ioread8,解决了问题。之所以会出现这种情况,估计是因为读写异步的原因,因为我那设备没有读写同步时钟信号。我是这样猜测的,没有证据
[解决办法]
到我的博客考,http://blog.csdn.net/IcePhoenix/archive/2010/04/25/5526379.aspx是一取PCI的例,源代到 http://bbs.codeheaven.com.tw/htm_data/2/1004/1.html 下.

读书人网 >驱动开发

热点推荐