阅读:3371回复:5
如何跟硬件打交道
我做了一个WDM的PCI驱动,正在和硬件联调,我的卡上有一个FPGA做的
RAM,在初始化时应该是由系统分配好卡上的RAM的地址,并在Startdevice这个PnP消息中的resource域中会以 PCM_PARTIAL_RESOURCE_LIST list=&AllocatedResourcesTranslated->List[0].PartialResourceList; port = resource->u.Port.Start; 的方式传过来,然后用 dx->BufferMemBase=(PULONG)MmMapIoSpace(port, nports, MmNonCached); 把它存起来,在硬件操作的例程中再用RtlCopyMemory把信息写到RAM中或提取出来,我认为BufferMemBase就应该是对应RAM的,结果却不能从该地址读出东西。请问在WDM里与硬件应怎样打交道。是用的RtlCopyMemory(参数是虚拟地址还是物理地址?)吗? 还是其他的函数(WRITE_PORT_ULONG我也用过了,也不行)。谢谢先。 |
|
最新喜欢:okincn |