njuvcpt
驱动牛犊
驱动牛犊
  • 注册日期2003-10-10
  • 最后登录2003-10-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1267回复:4

cy7c68013问题

楼主#
更多 发布于:2003-10-11 19:37
   我在深圳一家公司买了一块CY7C68013的开发板,用来开发一块视频数据采集卡,用随板的Cypress开发包都能很好的运行,但是用我们自己开发的驱动程序和固件程序时却不能下载代码,不知是什么原因(现学现用,功夫不够深)?眼看就要快到交货时间了,都急死了。恳请各位高手指教。

最新喜欢:

lmhhlmhhlmhhlm...
lioniamhero
驱动小牛
驱动小牛
  • 注册日期2003-05-31
  • 最后登录2005-10-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-10-11 21:32
你可以 用vc调试代码,Cypress开发包里有源代码的。你下载代码是固件的16进制的.hex文件。所以你要看懂开发包的源码。或用它提供的。
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-10-12 08:35
估计是驱动程序里下载代码那一段有问题吧,用softice调试一下,源代码如下,你看看你的驱动程序里是不是有问题:
      case IOCTL_Ezusb_ANCHOR_DOWNLOAD:
      {
#define CHUNKLENGTH 512

         PURB                urb             = NULL;
         int   chunkcount;
         int   chunklength = 1024;
         PVOID ioBufferPtr = NULL;
         int i;

         urb = ExAllocatePool(NonPagedPool,
                             sizeof(struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST));

         Ezusb_KdPrint ((\"IOCTL_Ezusb_ANCHOR_DOWNLOAD\\n\"));
                
         if (urb)
         {
            chunkcount = inputBufferLength / CHUNKLENGTH;
            ioBufferPtr = ioBuffer;

            for (i=0;i<chunkcount;i++)
            {
               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;

               Ezusb_KdPrint ((\"ioBuffer: %x | inputBufferLength: %d | outputBufferLength: %d\\n\",
                                 ioBuffer, inputBufferLength, outputBufferLength));

               urb->UrbControlVendorClassRequest.TransferBufferLength = CHUNKLENGTH;
               urb->UrbControlVendorClassRequest.TransferBuffer = ioBufferPtr;
               urb->UrbControlVendorClassRequest.TransferBufferMDL = NULL;
               urb->UrbControlVendorClassRequest.Request = 0xA0;
               urb->UrbControlVendorClassRequest.Value = (i * CHUNKLENGTH);
               urb->UrbControlVendorClassRequest.Index = 0;

               ntStatus = Ezusb_CallUSBD(fdo, urb);

               (char *) ioBufferPtr += CHUNKLENGTH;
            }

            ExFreePool(urb);
         }
      }

      break;

      case IOCTL_EZUSB_ANCHOR_DOWNLOAD:
      {
         PANCHOR_DOWNLOAD_CONTROL downloadControl = (PANCHOR_DOWNLOAD_CONTROL) ioBuffer;

         Ezusb_KdPrint ((\"IOCTL_EZUSB_ANCHOR_DOWNLOAD\\n\"));

         //
         // check the arguments
         //
         if (inputBufferLength != sizeof(ANCHOR_DOWNLOAD_CONTROL) ||
             outputBufferLength == 0)
         {
            Ezusb_KdPrint ((\"Error: Invalid Parameter\\n\"));
            ntStatus = STATUS_INVALID_PARAMETER;
         }
         else
         {
            ntStatus = Ezusb_AnchorDownload(fdo,
                                            downloadControl->Offset,
                                            (PUCHAR) MmGetSystemAddressForMdl(Irp->MdlAddress),
                                            outputBufferLength);
         }

         break;
      }
cherry
驱动小牛
驱动小牛
  • 注册日期2001-11-28
  • 最后登录2006-03-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-10-12 18:10
同意楼上的说法,我刚开始用的时候就是程序地址有问题,耽误很长时间
njuvcpt
驱动牛犊
驱动牛犊
  • 注册日期2003-10-10
  • 最后登录2003-10-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-10-14 15:02
问题还真出在这里了,作了一些修改,代码嫩下载了,但还不能正确运行,在努力一下,我想应该会成功的。多谢各位指点了。
游客

返回顶部