templa
驱动牛犊
驱动牛犊
  • 注册日期2005-01-04
  • 最后登录2013-03-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望8点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1877回复:9

请教:SLAVE回应HOST要求上传512字节,用64*8可以,但用32*16则不行,为甚么呢?

楼主#
更多 发布于:2005-07-29 15:36
  我用811作SLAVE,MASS STORAGE。我使用一些自定义的命令,诸如要向HOST发送65(字节)*1000(次)的数据,我想按照(64+1)*1000的方式进行发送,因为我缓冲比较小,一下子准备好全部数据有困难。
为此我使用READ10命令作了一下测试,使用64*8的方式传送512字节的方法是没有问题的,而我如果试图用32*16的方式传送,结果在发出第一个32字节后就收到HOST发来的BUS RESET,SSTS为NO DEVICE,然后就又收到MODE SENSE等一系列检查命令。(我定义端点的能力是64字节)
我不能解释此中的原因,大侠们出剑救救我吧。
templa
驱动牛犊
驱动牛犊
  • 注册日期2005-01-04
  • 最后登录2013-03-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望8点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-08-05 08:26
谢谢Levis75的无私帮助,看来我还有努力学习才行啊!
Levis75
驱动小牛
驱动小牛
  • 注册日期2001-08-06
  • 最后登录2006-06-28
  • 粉丝0
  • 关注0
  • 积分68分
  • 威望7点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-08-04 17:42
我是Linux OS,
Slave 和Host 都是所以好改些
如果是Windows的话有点麻烦
不过你可以参考BulkUSB去做
应该也可以
templa
驱动牛犊
驱动牛犊
  • 注册日期2005-01-04
  • 最后登录2013-03-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望8点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-08-04 10:46
非常感谢您的意见!您的意思是说让驱动程序预先分割,SLAVE来执行?驱动端我懂的不多,惭愧!
因为大部分的时候我还是要执行UFI命令,只在特定的自定义命令处理中采用上述分段传输。我现在还不能完全抛弃WINDOWS自带的USBSTOR,只是要增加一些自定义命令,我的伙伴负责驱动开发。
我有过这样的想法:另外开辟2个控制传输端点,借用HID设备的驱动程序来完成这些自定义的命令。不知道是否可行?
Levis75
驱动小牛
驱动小牛
  • 注册日期2001-08-06
  • 最后登录2006-06-28
  • 粉丝0
  • 关注0
  • 积分68分
  • 威望7点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-08-04 10:10
楼主为何要这么做?可以改变host端的驱动
templa
驱动牛犊
驱动牛犊
  • 注册日期2005-01-04
  • 最后登录2013-03-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望8点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-08-04 08:59
再次谢谢LEVIS75的帮助。如果这样行不通的话我就只好建立FIFO缓存了。
Levis75
驱动小牛
驱动小牛
  • 注册日期2001-08-06
  • 最后登录2006-06-28
  • 粉丝0
  • 关注0
  • 积分68分
  • 威望7点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-08-03 13:48
USB is a kind of host※slave device.
The EP_buffer in Hardware is the condition you can use the max buffer size.
templa
驱动牛犊
驱动牛犊
  • 注册日期2005-01-04
  • 最后登录2013-03-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望8点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-08-01 16:10
谢谢Levis75,也就是说如果PAYLOAD定义了64字节,一旦主机要求我上传65个字节,我只能64+1对吗?有什么方法可以让我根据自己的要求分割传送吗?
Levis75
驱动小牛
驱动小牛
  • 注册日期2001-08-06
  • 最后登录2006-06-28
  • 粉丝0
  • 关注0
  • 积分68分
  • 威望7点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-08-01 15:06
你如果定义64为一个包
那么32会作为一个短包做处理
这样Host会认为是一个结束标志
所以不会在发IN_TOKEN过来
所以。。。。
templa
驱动牛犊
驱动牛犊
  • 注册日期2005-01-04
  • 最后登录2013-03-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望8点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-08-01 11:23
知道的大侠说说吧。
游客

返回顶部