阅读:1762回复:5
我的PLX 9052 PCI 卡为什么一读它就当机了呢?
我一执行这个函数,winxp就当机重启了,为什么呢,我的卡绝对是好的.我想自己做一个driver.
if (!DeviceIoControl(hDevice, PCI1753_IOCTL_800_ReadBase0, bufInput, IOCTL_INBUF_SIZE, bufOutput, IOCTL_OUTBUF_SIZE, &nOutput, NULL) ) { printf("ERROR: DeviceIoControl returns %0x.", GetLastError()); Exit(1); } printf("\n------>data read : %x",bufOutput[0]); //add ) |
|
|
沙发#
发布于:2004-07-19 20:48
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2004-07-20 09:27
谢谢猫兄的回复,
是这样的,我有一片PLX 9052 PCI 介面卡,板子是好的,原先的driver也能用,但没有源码,想自己做一个driver,我用的是ds2.7生成的模板 来写的,只增加了一点点代码而已,如下: 请问我应该从哪里下手来进行分析呢?好象没办法调试,一执行到这里就系统就重启.是否是base address0位址有问题呢? 在属性栏内查看此卡的输入输出范围是"d000~d0ff". void Test_PCI1753_IOCTL_800_ReadBase0(void) { ULONG bufOutput[1]; // Output from device ULONG nOutput; // Count written to bufOutput // Call device IO Control interface (PCI9054_IOCTL_800_ReadBase0) in driver printf("\n----------- ready for reading Base0 -----------"); if (!DeviceIoControl(hDevice, PCI1753_IOCTL_800_ReadBase0, NULL, 0, bufOutput, sizeof(bufOutput), &nOutput, NULL) ) { printf("\nERROR: DeviceIoControl returns %0x.", GetLastError()); Exit(1); } printf("\n------>data read : %x",bufOutput[0]); } |
|
|
地板#
发布于:2004-07-22 11:14
已经ok了.
但还有一个疑问: 我现现能对pci9050进行读写操作了,但是我如何知道它控制的是9050的哪个pin脚呢? 如我向Bar0传送一个值是0x90, 写进去之后再读出来,核对是正确的. 但是我想知道是哪个pin脚产生的,你知道吗? |
|
|
地下室#
发布于:2004-07-22 16:43
已经可以进行读写操作了,但是想知道一些原理及用法.
如: 我向编移地址0x00写入0x00; 但这是干什么用呢? 是不是可以理解为向PLX 9052 Local bus LAD[31-0]送出的值是0x00呢? |
|
|
5楼#
发布于:2004-07-22 17:20
用户被禁言,该主题自动屏蔽! |
|