当前位置: 代码迷 >> 驱动开发 >> 使用READ_REGISTER_UCHAR函数遇到的怪有关问题
  详细解决方案

使用READ_REGISTER_UCHAR函数遇到的怪有关问题

热度:71   发布时间:2016-04-28 11:16:08.0
使用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 下載.
  相关解决方案