阅读:2059回复:4
EZ-USB驱动问题
各位高手:
我用EZ-USB2131QC开发了一套系统,下位机软件采用PC机下传方式,下载下位机软件的驱动程序我是用CYPRESS公司提供的ezloader,我只不过改了其中的firmware.c,然后在2000DDK中重新编译。结果该驱动程序和客户驱动程序在98中可以成功安装,并运行。但在2000底下却不能安装成功。通过输出调试信息,我发现这个ezloader.sys的驱动程序是在下传下位机8051代码时被中断并退出的。其中负责下传8051代码的程序段如下: while (ptr->Type == 0) { if (INTERNAL_RAM(ptr->Address)) { RtlZeroMemory(urb,sizeof(struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST)); urb->UrbHeader.Length = sizeof(struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST); urb->UrbHeader.Function = URB_FUNCTION_VENDOR_DEVICE; urb->UrbControlVendorClassRequest.TransferBufferLength = ptr->Length; urb->UrbControlVendorClassRequest.TransferBuffer = ptr->Data; urb->UrbControlVendorClassRequest.Request = ANCHOR_LOAD_INTERNAL; urb->UrbControlVendorClassRequest.Value = ptr->Address; urb->UrbControlVendorClassRequest.Index = 0; Ezusb_KdPrint ((\"Downloading %d bytes to 0x%x \\n\",ptr->Length,ptr->Address)); ntStatus = Ezusb_CallUSBD(fdo, urb); Ezusb_KdPrint ((\"下载代码\\n\")); if (!NT_SUCCESS(ntStatus)) { Ezusb_KdPrint ((\"Downloading failed\\n\")); break; } } ptr++; } Ezusb_KdPrint ((\"having successed download\\n\")); }在调试中我发现,在2000底下,该程序的while(ptr->Type == 0)还没有完全执行完,驱动程序就被异常中止,而在98下该代码却是好的。请问您能帮我吗? |
|
最新喜欢:![]() |
沙发#
发布于:2002-05-07 09:56
个人建议,换个编译环境试试, 或者在98ddk下试试,
或者是重新安装2000DDK,-hoho,最后是换台计算机试试。 |
|
|
板凳#
发布于:2002-05-07 11:21
你的ptr在哪里定义与赋值???
|
|
地板#
发布于:2002-05-11 00:40
谢谢你们的热心,可问题还是没解决,我在安装设备时遇到的出错的提示画面,是这样的:安装设备时出现一个错误,
名称已用做服务名或服务显示名 同时这个画面我已保存下来的,请看附件 |
|
地下室#
发布于:2002-05-13 14:23
把注册表里面的那个service删除。不过,一般都没有用,只能重装系统。
|
|
|