阅读:2457回复:0
We beginners should not make such foolish mistake again!!!
kelvin9230 wrote this:
本人有一USB CF读卡器, 芯片是Genesys Logic的GL641USB. BULK ONLY, SCSI TRANSPARENT COMMAND SET. 发出指令后第一次能正确执行(CBW->DATA->CSW三个阶段没有任何错误)(如读一扇区)。 可是后面再发指令就再也不执行了(如再发读一扇区指令), CBW阶段能有ACK响应,后面的DATA阶段就得到NAK,设备无响应,不执行操作。指令都是正确的,放到第一次都能正确执行 我是在DOS下写的UHCI的驱动和设备驱动.想尽一切方法都无效. 欢迎高手指点一二. 欢迎联系kelvin@ldic-china.com Tel:021-64728712 吴华 strongxg wrote this: 我回复你了。好,再详细的说一遍。 你仔细的看批量处理的格式框图。注意以下说明:通过使用数据序列触发比特和DATA0/DATA1 PID,可以获得数据分组同步。并仔细看数据触发同步和重试的内容。 注意: 枚举成功后,将批处理的OUT,IN端点初始化为DATA0 PID。以后按DATA0/DATA1交替使用。 批量写: DATA0,DATA1,DATA0,DATA1。。。。。。 批量读: DATA0,DATA1,DATA0,DATA1。。。。。。 注意:两个管道是独立的。 注意:得到ACK后才翻转。NAK重复原过程。 kelvin9230 wrote this: Thanks a lot. Let me try. Maybe, I make mistake here: The chip\'s bulk_in and bulk_out by 64 bytes in max size. Read one sector(512 bytes), Then read one sector(512 bytes) again. There should be 8 TDs in data section. OUT------------IN CBW(DATA0)-----DATA(DATA0 DATA1 DATA0 DATA1 DATA0 DATA1 DATA0 DATA1)---CSW(DATA0) OUT------------IN CBW(DATA0)-----DATA(DATA0 DATA1 DATA0 DATA1 DATA0 DATA1 DATA0 DATA1)---CSW(DATA0) So, the correct sequence should be like this: OUT------------IN CBW(DATA0)-----DATA(DATA0 DATA1 DATA0 DATA1 DATA0 DATA1 DATA0 DATA1)---CSW(DATA0) OUT------------IN CBW(DATA1)-----DATA(DATA1 DATA0 DATA1 DATA0 DATA1 DATA0 DATA1 DATA0)---CSW(DATA1) The first CSW\'s data toggle is DATA0, so the next bulk_in TD\'s DATA toggle should be DATA1. Is it correct? kelvin9230 wrote this: Gooooooooood!!! My driver works now!!! Thanks, strongxg. You really saved me out from hell!!! The sequence is: OUT------------IN CBW(DATA0)-----DATA(DATA0 DATA1 DATA0 DATA1 DATA0 DATA1 DATA0 DATA1)---CSW(DATA0) OUT------------IN CBW(DATA1)-----DATA(DATA1 DATA0 DATA1 DATA0 DATA1 DATA0 DATA1 DATA0)---CSW(DATA1) We beginners should not make such foolish mistake again!!! :D |
|
最新喜欢:![]() |