阅读:1051回复:2
读写pci卡上memory的问题(Driverworks)
用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的物理地址我看过了,的确是卡上的映射地址,可就不知道为什么没写进去,请指点一下 |
|
沙发#
发布于:2005-02-23 10:13
PciConfig.BaseAddressIndexToOrdinal(0)
好象这话有问题,你把0换成2或者别的试试 |
|
板凳#
发布于:2005-02-23 18:05
对,BaseAddressIndexToOrdinal(0)中的0指的是配置寄存器空间,不是内存映射空间。你用的哪一个PCI BAR寄存器进行内存映射,就把0改为与其对应的。
|
|