阅读:2566回复:17
高分:SL811HS 中使用UFI指令问题!(加分啦!100)
我的SL811HS驱动U盘枚举成功以后,只能执行一条UFI指令,执行下一条时,U盘返回NAK,不知道咋回事?劳烦大虾们指点指点
;;;;;;;;;;;;;;;; 根据单批量传输协议(书上写的):每一笔IN或OUT事务都是从DATA0开始,所以我发送一条UFI指令(OUT事务)是从DATA0开始的,接下来发送数据(OUT事务)或接收数据(IN事务)也是从DATA0开始的。 具体过程如下: 1,枚举USB设备,返回OK! 2,调用UFI_READ_INQURY,返回数据OK! ;;;;;;;;;;;;;;;;;; 1,枚举USB设备,返回OK! 2,调用UFI_READ_CAPACITY,返回数据OK! ;;;;;;;;;;;;;;;;;;; 所以我认为UFI_READ_INQURY以及UFI_READ_CAPACITY指令本身应该都是没有问题的! ;;;;;;;;;;;;;;;;;;;; 问题是: 1,枚举USB设备,返回OK! 2,调用UFI_READ_INQURY,返回数据OK! 3,调用UFI_READ_CAPACITY,返回NAK!通知端点忙! 不知各位大虾有何看法,敬请多多指教! [编辑 - 8/27/04 by sunnysky] |
|
|
沙发#
发布于:2004-08-26 14:53
D0/D1有没有切换
|
|
|
板凳#
发布于:2004-08-26 17:31
命令格式正确吗,有时字节序需要转换
|
|
地板#
发布于:2004-08-26 21:13
命令格式正确吗,有时字节序需要转换 agree,你可以找已开发成功的ufi设备(如u盘),用bushound截获数据,再和自己发送接收的数据比较一下 |
|
地下室#
发布于:2004-08-27 10:43
具体过程如下:
1,枚举USB设备,返回OK! 2,调用UFI_READ_INQURY,返回数据OK! ;;;;;;;;;;;;;;;;;; 1,枚举USB设备,返回OK! 2,调用UFI_READ_CAPACITY,返回数据OK! ;;;;;;;;;;;;;;;;;;; 所以我认为UFI_READ_INQURY以及UFI_READ_CAPACITY指令本身应该都是没有问题的! ;;;;;;;;;;;;;;;;;;;; 问题是: 1,枚举USB设备,返回OK! 2,调用UFI_READ_INQURY,返回数据OK! 3,调用UFI_READ_CAPACITY,返回NAK!通知端点忙! 不知各位大虾有何看法,敬请多多指教! |
|
|
5楼#
发布于:2004-08-27 10:50
D0/D1有没有切换 ;;;;;;;;;;;;;;;; 根据单批量传输协议(书上写的):每一笔IN或OUT事务都是从DATA0开始,所以我发送一条UFI指令(OUT事务)是从DATA0开始的,接下来发送数据(OUT事务)或接收数据(IN事务)也是从DATA0开始的。 具体过程如下: 1,枚举USB设备,返回OK! 2,调用UFI_READ_INQURY,返回数据OK! ;;;;;;;;;;;;;;;;;; 1,枚举USB设备,返回OK! 2,调用UFI_READ_CAPACITY,返回数据OK! ;;;;;;;;;;;;;;;;;;; 所以我认为UFI_READ_INQURY以及UFI_READ_CAPACITY指令本身应该都是没有问题的! ;;;;;;;;;;;;;;;;;;;; 问题是: 1,枚举USB设备,返回OK! 2,调用UFI_READ_INQURY,返回数据OK! 3,调用UFI_READ_CAPACITY,返回NAK!通知端点忙! 不知各位大虾有何看法,敬请多多指教! |
|
|
6楼#
发布于:2004-08-27 20:39
高手呢?
|
|
|
7楼#
发布于:2004-08-28 08:56
注意data1、0交换,另外好像是in是data1开始
调用UFI_READ_CAPACITY,返回NAK解决很简单,调用request sence,询问出错原因。然后再次UFI_READ_CAPACITY,3次失败你可以不用管了。前面UFI_READ_CAPACITY、UFI_READ_INQURY都无关紧要,最重要是test uni ready ok后能读出扇区就行了。 [编辑 - 8/28/04 by clementzhao] [编辑 - 8/28/04 by clementzhao] [编辑 - 8/28/04 by clementzhao] |
|
8楼#
发布于:2004-08-28 12:44
再请:
使用SL811HS时,EPXControl的bit6是指示data0,1的,而EPXStatus的bit3(sequence)也是指示data0,1,请问有何区别? 根据我所获取的数据,好象没多大联系? |
|
|
9楼#
发布于:2004-08-28 12:55
注意data1、0交换,另外好像是in是data1开始 但是资料里说明的是: 1,单批量传输时都是从data0开始的? 问题: 2,请问data0,1交换是以啥为界定的呢?比如:是不是以发送CBW-DATA-CSW为一次事务,data_in或者data_out分别从data0开始,而下一次发送CBW包时又重新从data0开始呢? |
|
|
10楼#
发布于:2004-08-29 12:03
顶一下!没反应?????!!!
|
|
|
11楼#
发布于:2004-08-30 15:36
上星期网络有问题,上不来
记错了,批量传输都是data0开始,控制传输才是data1 搞定出错处理应该就可以了 |
|
12楼#
发布于:2004-08-30 16:18
问题:
2,请问data0,1交换是以啥为界定的呢?比如:是不是以发送CBW-DATA-CSW为一次事务,data_in或者data_out分别从data0开始,而下一次发送CBW包时又重新从data0开始呢? clementzhao: 大佬: 能加我的QQ:397912594 聊一下吗? |
|
|
13楼#
发布于:2004-08-30 18:40
再顶!还是没反应!
|
|
|
14楼#
发布于:2004-08-31 09:04
问题: 梅花间竹地变,每个数据包交换一次 |
|
15楼#
发布于:2004-08-31 09:07
我看你的主要问题还是处理好reques sence
[编辑 - 8/31/04 by clementzhao] |
|
16楼#
发布于:2004-08-31 10:20
我看你的主要问题还是处理好reques sence 可是糟糕的是:如果所发的UFI请求返回BUSY以后,发送reques_ sence请求同样会返回NAK!我也尝试过BULK_ONLY MASS STORAGE复位,再发reques_sence,也回返回NAK! |
|
|
17楼#
发布于:2004-08-31 14:05
再顶!还是没反应!! :( :( :( :( :( :(
|
|
|