Junius
驱动牛犊
驱动牛犊
  • 注册日期2004-11-15
  • 最后登录2004-12-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1051回复:2

读写pci卡上memory的问题(Driverworks)

楼主#
更多 发布于:2004-12-03 16:00
用driverWorks写了个对pci卡上memory的读写驱动,可确发现并没有真正写进去。下面是代码,哪位高手指点一下是什么问题。

这是onStart中的

PCM_RESOURCE_LIST pResListRaw = I.AllocatedResources();
PCM_RESOURCE_LIST pResListTranslated = I.TranslatedResources();

KPciConfiguration PciConfig(m_Lower.TopOfStack());

status = m_MemoryRange.Initialize(
pResListTranslated,
pResListRaw,
PciConfig.BaseAddressIndexToOrdinal(0)
);
if (!NT_SUCCESS(status))
{
Invalidate();
t << "error\n";
return status;
}

在write时

m_MemoryRange.outd(0,0x11223344);

ULONG ver = m_MemoryRange.ind(0);

写进去的和读出来的已经不对了
m_MemoryRange的物理地址我看过了,的确是卡上的映射地址,可就不知道为什么没写进去,请指点一下
lilanzhen
驱动牛犊
驱动牛犊
  • 注册日期2004-06-03
  • 最后登录2005-02-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-02-23 10:13
PciConfig.BaseAddressIndexToOrdinal(0)
好象这话有问题,你把0换成2或者别的试试
cover_me
驱动牛犊
驱动牛犊
  • 注册日期2004-04-25
  • 最后登录2006-04-29
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望9点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-02-23 18:05
对,BaseAddressIndexToOrdinal(0)中的0指的是配置寄存器空间,不是内存映射空间。你用的哪一个PCI BAR寄存器进行内存映射,就把0改为与其对应的。
游客

返回顶部