superrobust
驱动牛犊
驱动牛犊
  • 注册日期2003-01-04
  • 最后登录2007-08-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1395回复:3

请教对9052的INTCSR的读写(急)

楼主#
更多 发布于:2004-03-17 17:00
请教对9052的INTCSR的读写

有一个疑问:9052的内部local寄存器可以通过Mem映射和I/O映射来访问。
并且在2k的设备管理器中可以看到它的资源列表。头两个是BAR0和BAR1,分别为Mem映射空间
和I/O映射空间,大小都是固定的128字节。和DataBook上是一样的。

问题1:
INTCSR寄存器的Register Offset是0x4C,但它属于BAR0还是BAR1?或者说可以通过某种办法
把它映射到BAR0或BAR1空间?

问题2:
我用的是Driverwork,在申请资源的时候定义了m_MemoryRange0和m_IoPortRange0,在初始化的
时候引用PciConfig.BaseAddressIndexToOrdinal(0)来排序。
那么如何使m_MemoryRange或者m_IoPortRange0和BAR0/BAR1联系起来。难道说我只要按这样的
方式:
m_IoPortRange0.ind(0x4c, pBuffer, dwTotalSize)就可以读出INTCSR的值了么?

我试了一下,但是测试程序在读过程中出现错误

Debug Error!

Program: E:\pci9052\exe\objchk\i386\Test_pci9052.exe

DAMAGE: after Normal block(#47) at 0x00880F60


还请大侠们不吝指教
everything is developing
CYoung
驱动中牛
驱动中牛
  • 注册日期2003-06-10
  • 最后登录2005-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-03-17 18:43
直接这样就可以了:m_IoPortRange0.ind(0x4c)。
答得好的话,请兄弟们加点分,那是对我的肯定
superrobust
驱动牛犊
驱动牛犊
  • 注册日期2003-01-04
  • 最后登录2007-08-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-03-17 21:02
谢谢,刚才测试程序读操作的时候越界了。

但是如果我想把local的寄存器映射到BAR0中该怎么做?
everything is developing
mydrive
驱动牛犊
驱动牛犊
  • 注册日期2001-06-21
  • 最后登录2004-05-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-03-27 03:33
在EEPROM的配置中,可以选择配置到BAR0或者BAR1,或者两者都用。
游客

返回顶部