看书上说,设备如果返回NAK,那么bus driver会再一次发送读写请求,那如果我没又设置timeout,是不是bus driver会一直发送读写请求? 我现在在驱动里读D12里的数据,不设置timeout,如果fireware一直不往D12的输入缓冲区填充数据,D12就会发送NAK,如果按书上的说法,bus driver会再一次发送读请求,并且一直等待设备发送数据。但是出现了个问题,几秒或者十几秒过后我的urb的回调函数就给调用了,并且urb->status返回了-84(-EILSEQ),我查了下错误说明,又下面三种可能:a) CRC mismatch;b) no response packet received within the prescribed bus turn-around time;c) unknown USB error;这是什么原因呢?
补充一下:我在fireware是这样做的,D12 bulk in端点收到了驱动读数据中断后什么也不做,只是读最后处理状态降中断标志清除掉了。 刚才我对D12的这个端点的中断次数计了下数,发现中断的次数都不一定,又时候几千上万次,又时候又几百次,(我觉得这就是驱动收到了NAK后又发送了读数据请求的次数)大侠给我解释下我哪里有问题了,万分感谢了。。。。。。
|