利用w indriver 开发了个usb 的驱动,写个开发心得 项目组需要利用2440 采集数字电视的采样数据,所以让我开发一个usb 的数据采集系统,就两个要求 1 速度要达到500kbyte/s 以上 2 稳定 由于之前没有做过windows 驱动的经验,所以花了3,4 天时间读了读ddk 的文档,期间还上chinapub找个本书,读了免费的第1 章,按照他配置了vc 的 编译环境,呵呵。 然后就吧 ddk 下面的bulkusb 源代码进行了修改,写好 usb device 的驱动,有些了个应用程序,测试一下,采集数据是 ok 了,但是发现有时候蓝屏,特别是采集100m 左右,就会出现蓝品!这下没办法了,由于我本身就对 windows 内核编程不熟悉,有调试了大概 3,4 天确认问题可能处在电源管理方面,联系到自己对这方面不是很熟悉,而且时间紧迫,没办法转向 windriver 开发 !我安装的是 9.21 版本(请到迅雷下载)。 1. 驱动的开发: a 这步开发比较简单,首先确认你的device 固件正确能枚举成功,然后将device 连接到pc usb host 端。 b 按照向导指引刷出你的设备进行配置,然后点击编译按钮生成代码。这部分内容请参考安装文档的快速开发向导! 2.应用程序开发: 最主要的几个函数是,opendevice 和 readwrite 函数:其实大家只要摘录向导生成代码的内容即可,这里贴一个我的 static WDU_DRIVER_HANDLE hDriver = 0; static DRIVER_CONTEXT DrvCtx ; static BOOL DLLCALLCONV DeviceAttach(WDU_DEVICE_HANDLE hDevice, WDU_DEVICE *pDeviceInfo, PVOID pUserData) { DRIVER_CONTEXT *pDrvCtx = (DRIVER_CONTEXT *)pUserData; DEVICE_CONTEXT *pDevCtx, **ppDevCtx; DWORD dwInterfaceNum = pDeviceInfo->pActiveInterface[0]->pActiveAltSetting->Descriptor.bInterfaceNumber; DWORD dwAlternateSetting = pDeviceInfo->pActiveInterface[0]->pActiveAltSetting->Descriptor.bAlternateSetting; TRACE("\nDeviceAttach: received and accepted attach for vendor id 0x%x, " "product id 0x%x, interface %ld, device handle 0x%p\n", pDeviceInfo->Descriptor.idVendor, pDeviceInfo->Descriptor.idProduct, dwInterfaceNum, hDevice); /* Add our device to the device list */ pDevCtx = (DEVICE_CONTEXT *)malloc(sizeof(DEVICE_CONTEXT)); if (!pDevCtx) { ...