gouyg
驱动牛犊
驱动牛犊
  • 注册日期2007-03-29
  • 最后登录2007-10-08
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:3087回复:2

pci9054配置的存储器空间和I/O空间地址映射读写问题,请高手赐教!

楼主#
更多 发布于:2007-09-04 16:53
(开发工具DriverStudio)pci9054配置的存储器空间和I/O空间地址是不是映射到m_MemoryRangex和m_IoPortRangex上?
还有m_MemoryRangex和m_IoPortRangex是映射到BAR几?比如我用两个:m_MemoryRange0,m_MemoryRange1和一个:m_IoPortRange0是不是分别映射到BAR0,BAR2,BAR1;如果是一个:m_MemoryRange0,两个:m_IoPortRange0,m_IoPortRange1又是如何映射的呢?
如果我对m_MemoryRange1或m_IoPortRange1进行读/写操作,它应该是对应到前面的存储器空间和I/O空间吧,比如m_MemoryRange1.outb(0Xxx, pBuffer,dwTotalSize)或m_IoPortRange1.outb(0Xxx, pBuffer,dwTotalSize),这个偏移地址0Xxx是全局地址还是局部地址?
用DriverStudio生成的框架里有个dwBytesSent表示传了多少数据,如何设置这个变量呢,是根据outb函数系统自己设的吗?我每次写数据后,dwBytesSent都是0,百思不得其解,请求高手指教!
oceanic
驱动牛犊
驱动牛犊
  • 注册日期2007-06-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分100分
  • 威望22点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-09-05 11:08
一般接口芯片的BAR0,BAR1都是被占用了吧?我不知道这么说是否准确。我的卡用的是9052接口芯片,BAR0和BAR1种的内容是我的EEPROM中的配置信息,当然,这个是在CNTRL中设置的。同时我把存储器影射到局部空间0,memory access,这时候BAR2种就是我的存储器的内容了。
所以我的理解是,具体的BARx要看你影射到局部空间x。
希望有点帮助吧。
poco2008
驱动牛犊
驱动牛犊
  • 注册日期2007-11-15
  • 最后登录2009-07-25
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望58点
  • 贡献值1点
  • 好评度6点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-07-14 21:04
BAR0大小0x100,为Local register,BAR2大小自定,在EEPROM中设定,为自己使用的内存空间,但是WriteFile一般不能达到64MBytes,所以设得太大无意义,BAR1是I/O端口,舍弃不用
游客

返回顶部