阅读:1694回复:6
usb枚举结束,找到硬件并提示安装驱动,但?
usb枚举结束,找到硬件并提示安装驱动,但是设备却不知该进入何种状态,请问这时firmware 应做什么工作,怎样和usb驱动程序通信呢?usb设备驱动完成什么功能呢,和设备硬件及firmware关联如何?是不是按照我特定的应用(上传数据给PC)所特制的,别人的例程不能直接使用吧?它和用户应用程序间的通信如何实现,好迷茫呀!哪位高手指教?
|
|
最新喜欢:![]() |
沙发#
发布于:2003-06-21 11:41
你的固件中应该初始化你的设备,开好需要的管道,处理好下位机的数据。
之后在应用层打开设备驱动后,用DeviceIoControl和需要的管道通信! 别忘了在驱动中将固件下载到下位机(如果需要的话)! |
|
板凳#
发布于:2003-06-21 15:45
在做好楼上兄弟所说的同时要保证硬件的完整比如电路工作正常,EEPROM里面要有程序等,以免造成误解。其实我觉得USB只是一个传输的通道而已,PC发出命令,设备理解接受并处理然后回答PC,WIN32应用程序接受数据然后做进一步处理。要理解USB SPEC协议部分和具体USB器件SPEC
|
|
|
地板#
发布于:2003-06-23 09:02
多谢指教,我是通过deviceiocontrol在端点0发vendor request“请求发送数据”和“请求接收数据”的命令给固件,固件正确接收并解析命令,然后该怎么处理下位机数据呢?例如,对“请求发送数据”来讲,固件把待发送数据是否直接从端点1(我的bulk in)发送出去呢,还是放在端点1的缓冲区待主机readfile()读呢?我现在最迷茫的就是readfile()实现何功能,何时调用,我怎样用它来读数据到主机。我现在的驱动是在driver works的基础上做的。
|
|
地下室#
发布于:2003-06-23 11:29
呵呵!
usb的通信全部都是主机发起的(设备的枚举和初始化可能例外!)!也就是说,全部的通信都需要主机向usb设备请求,usb设备应答! 我们作的usb设备是动态下载固件的,如果你的eeprom中有静态写好的固件就不用下载了!不过不管怎么样,都需要在eeprom中静态保存厂商id和设备id等必备信息!不然驱动怎么装啊! 关于通信,我们不用0 pipe,而是开了1 2 3共3个管道。 Pipe: 0 Type: BLK Endpoint: 1 OUT MaxPktSize: 0x40 Pipe: 1 Type: BLK Endpoint: 1 IN MaxPktSize: 0x40 Pipe: 2 Type: BLK Endpoint: 2 IN MaxPktSize: 0x40 Pipe: 3 Type: INT Endpoint: 3 IN MaxPktSize: 0x40 刚才说了,usb通信都是主机发起,就是说,没有中断的可能,(注意和中断传输方式的区别!!),这样,就必须不断的查询设备的状态(管道3),利用管道3返回的状态,我再处理,是读2还是读1。 我们的设备返回两种信息,所以使用管道1和2,你应该看情况处理。 这样,我就建立了一个应用层的线程,时刻去读3,并将数据在应用层作了缓冲区,这之后数据的处理,就不用我说了吧? 例子代码:(好像有点多元啊!呵呵) BTC.pipeNum = 3; //查询管道 State=DeviceIoControl (DevHandle, IOCTL_EZUSB_BULK_READ, &BTC, sizeof(BULK_TRANSFER_CONTROL), &GetStateBuf, 1, &nBytes, NULL); if (GetStateBuf>5) { BTC.pipeNum = 1; //点数据管道 DeviceIoControl (DevHandle, IOCTL_EZUSB_BULK_READ, &BTC, sizeof(BULK_TRANSFER_CONTROL), GetDataBuf, GetStateBuf, &nBytes, NULL); } else { BTC.pipeNum = 2; //键盘代码管道 DeviceIoControl (DevHandle, IOCTL_EZUSB_BULK_READ, &BTC, sizeof(BULK_TRANSFER_CONTROL), &GetCmdBuf, 1, &nBytes, NULL); } 呵呵!具体的配置看你的设备和你的需要! 我说的够多的了呀!呵呵!给分!!:) |
|
5楼#
发布于:2003-06-23 17:18
不胜感激,哈。不过我现在脑海有很多问题,一直没有机会找高手交流,论坛聊效率有点低,不知能否电话请教?我的qq是64855124,方便的话请给信我,谢谢,没人沟通的日子太难过了,我们这都没有做这方面的,痛苦呀。
|
|
6楼#
发布于:2003-07-03 17:59
请教chaijih:D12枚举的过程是什么样的?我这边设备上电之后,有中断,应该是总线复位,之后就没有动静了,系统也提示发现新硬件。
|
|