阅读:2057回复:5
请教大侠,ISA卡的驱动程序怎么调试?
请教大侠,ISA卡的驱动程序怎么调试DriverEntry(。。。)函数,是不是Driver Monitor和Symbol Loader就可以了?是不是在Report Resource (IOReportResourceUsage())和Create Device(IoCreateDevice())之后可对ISA卡的port write or read?
|
|
沙发#
发布于:2002-04-20 03:33
用调试工具在你想断的函数里边设断点即可,这对driverentry和别的函数都一样,也和驱动对应的总线无关。Driver Monitor和Symbol Loader是两个不同的调试工具,用一个就行了。在任何时候,得到了硬件资源后就可以做读写
|
|
板凳#
发布于:2002-04-21 22:35
谢谢斑竹的关注,我给您加分,怎么加
不过我的程序部分如下: KeAcquireSpinLock(&pLCI->Locker, &OldIrql); pLCI->OnLineStat = 0xff; WRITE_PORT_UCHAR( (PUCHAR)(pLCI->BasePort + DTMF_ONLINE_REG), pLCI->OnLineStat ); failflag=0xff; for (i=7; i >= 0; i--) { // set RS0 to ctrl & status WRITE_PORT_UCHAR( (PUCHAR)(pLCI->BasePort + DTMF_CTRL_REG), 1 ); READ_PORT_UCHAR( (PUCHAR)(pLCI->BasePort) ); WRITE_PORT_UCHAR( (PUCHAR)(pLCI->BasePort + i), 0 ); WRITE_PORT_UCHAR( (PUCHAR)(pLCI->BasePort + i), 0 ); WRITE_PORT_UCHAR( (PUCHAR)(pLCI->BasePort + i), 8 ); WRITE_PORT_UCHAR( (PUCHAR)(pLCI->BasePort + i), 0 ); u = READ_PORT_UCHAR( (PUCHAR)(pLCI->BasePort + i) ); if(u == 0xff) { failflag = (UCHAR)i; } WRITE_PORT_UCHAR( (PUCHAR)(pLCI->BasePort + i), 9 ); WRITE_PORT_UCHAR( (PUCHAR)(pLCI->BasePort + i), 0 ); } KeReleaseSpinLock(&pLCI->Locker, OldIrql); if(failflag != 0xff) return STATUS_INSUFFICIENT_RESOURCES; return STATUS_SUCCES 调试时总是执行 if(u == 0xff) { failflag = (UCHAR)i; }中的failflag = (UCHAR)i; 您看一下怎么回事? |
|
地板#
发布于:2002-04-25 16:45
查查你的硬件吧,应该是接口返回的值每次都是0xff,另外不要用和当前正在使用的版本不一样的.nms文件,不然softice会定位错的。
|
|
地下室#
发布于:2002-04-27 16:26
谢谢,怎么“给分”给不出去。我发帖子时都是默认选项啊
|
|
5楼#
发布于:2002-05-01 10:04
最好在BUILD的时候设置好SOURCE的编译中的调试符号参数。这样你能在内核中清楚的调试信息。
|
|