quanxianwang
驱动牛犊
驱动牛犊
  • 注册日期2004-09-24
  • 最后登录2004-11-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1709回复:10

谁是真正的高手, 请告诉我这个长度从哪来的??

楼主#
更多 发布于:2004-10-30 16:24
谁能告诉我
在BULK IN传输
设备(应用程序)向端点缓冲写数据的长度是如何得知的????
令牌包, 数据报, 联络报,
还是主机应用程序的BULK读操作, 要先控制传输先传过长度参数, 在进行BULK IN传输。??????

如何得知??如何得知??

我都疯了。 奶奶的, 看了所有的资料, 对于这个问题要不不提, 要不一带而过。 简单吗??
难道我太笨了????


哎!!!

谢谢各位了
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-06 18:32
    如果你用得是USB2.0的芯片,那么这个数值会显示在芯片的一个长度寄存器中,例如你发送了513字节数据,那么设备收到第一个包时该寄存器的值是512,收到第二个包时值是1。

对于USB1.1就不太清楚了,根据片子的不同也许定义方法会有不同。
wozhuce
驱动小牛
驱动小牛
  • 注册日期2004-04-02
  • 最后登录2005-11-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-11-06 08:36
quanxianwang兄,批量的传输长度就按wdy9927说的。
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2004-11-05 11:08
最近在看mass storage 协议。发现在这一层主机有通知设备bulk in/out 的长度。

bulk only原文:
The host indicates the expected transfer in the CBW
using the Direction bit and the
dCBWDataTransferLength field. The device then
determines the actual direction and data transfer length.

不知道你要做的无线网卡,用的是什么协议,或许上面也有类似的东西。
quanxianwang
驱动牛犊
驱动牛犊
  • 注册日期2004-09-24
  • 最后登录2004-11-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-05 09:47
wozhuce兄
谢谢你的建议。
我的问题是当设备处于BULK IN状态的时候, 他是如何获取主机想要的数据的长度。
比方说
ReadFile(hDevice, dBuffer_Address, dLength)
dLength是如何传给设备的

其实这个问题在终端传输, 块传输, 以及同步传输都存在。
你刚才说的我查过了, 在控制传输的setup阶段的数据阶段有这种数据长度的描述。但是这只是在控制传输。

我现在怀疑协议有问题。也可能我是错的。
如果我理解错了, 你能详细点吗??


谢谢
quanxianwang
wozhuce
驱动小牛
驱动小牛
  • 注册日期2004-04-02
  • 最后登录2005-11-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-11-05 09:38
quanxianwang兄,你问问题的思路很零乱(只是我的感觉),我读了半天都没明白你后面几个问号的意思!我觉得,问问题时,你应该把思路整理清楚, 别人好回答,否则很浪费别人的时间。长度是在描述符中设定的。以上建议,请别介意!!
quanxianwang
驱动牛犊
驱动牛犊
  • 注册日期2004-09-24
  • 最后登录2004-11-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-11-01 10:54
难道没高手了吗???唔唔
quanxianwang
驱动牛犊
驱动牛犊
  • 注册日期2004-09-24
  • 最后登录2004-11-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-10-30 22:33
你这个方式是可以的, 但是与常理不符啊
xuhaiqg
驱动牛犊
驱动牛犊
  • 注册日期2004-04-12
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-10-30 19:30
我也是USB新手,我是这样实现这个功能的,不知对你有没有用,主机先把要从设备IN进来的字节数和地址OUT给设备,设备根据收到的OUT数据来装载IN数据
纸上来得终觉浅 绝知此事要躬行
quanxianwang
驱动牛犊
驱动牛犊
  • 注册日期2004-09-24
  • 最后登录2004-11-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-10-30 19:10
既然我要bulk in数据, 那就是设备的固件要向fifo写主机要求的长度的数据。 关键是主机要求的长度我如何获得。 如果没有我不知道写多少啊
xuhaiqg
驱动牛犊
驱动牛犊
  • 注册日期2004-04-12
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-10-30 19:06
只要不超过usb协议的字节数,BULK IN多少数据是你的固件的问题,什么令牌包都不知道
主机要求多少数据,设备就发多少数据,这不就行了
纸上来得终觉浅 绝知此事要躬行
游客

返回顶部