阅读:1708回复:10
谁是真正的高手, 请告诉我这个长度从哪来的??
谁能告诉我
在BULK IN传输 设备(应用程序)向端点缓冲写数据的长度是如何得知的???? 令牌包, 数据报, 联络报, 还是主机应用程序的BULK读操作, 要先控制传输先传过长度参数, 在进行BULK IN传输。?????? 如何得知??如何得知?? 我都疯了。 奶奶的, 看了所有的资料, 对于这个问题要不不提, 要不一带而过。 简单吗?? 难道我太笨了???? 哎!!! 谢谢各位了 |
|
沙发#
发布于:2004-10-30 19:06
只要不超过usb协议的字节数,BULK IN多少数据是你的固件的问题,什么令牌包都不知道
主机要求多少数据,设备就发多少数据,这不就行了 |
|
|
板凳#
发布于:2004-10-30 19:10
既然我要bulk in数据, 那就是设备的固件要向fifo写主机要求的长度的数据。 关键是主机要求的长度我如何获得。 如果没有我不知道写多少啊
|
|
地板#
发布于:2004-10-30 19:30
我也是USB新手,我是这样实现这个功能的,不知对你有没有用,主机先把要从设备IN进来的字节数和地址OUT给设备,设备根据收到的OUT数据来装载IN数据
|
|
|
地下室#
发布于:2004-10-30 22:33
你这个方式是可以的, 但是与常理不符啊
|
|
5楼#
发布于:2004-11-01 10:54
难道没高手了吗???唔唔
|
|
6楼#
发布于:2004-11-05 09:38
quanxianwang兄,你问问题的思路很零乱(只是我的感觉),我读了半天都没明白你后面几个问号的意思!我觉得,问问题时,你应该把思路整理清楚, 别人好回答,否则很浪费别人的时间。长度是在描述符中设定的。以上建议,请别介意!!
|
|
7楼#
发布于:2004-11-05 09:47
wozhuce兄
谢谢你的建议。 我的问题是当设备处于BULK IN状态的时候, 他是如何获取主机想要的数据的长度。 比方说 ReadFile(hDevice, dBuffer_Address, dLength) dLength是如何传给设备的 其实这个问题在终端传输, 块传输, 以及同步传输都存在。 你刚才说的我查过了, 在控制传输的setup阶段的数据阶段有这种数据长度的描述。但是这只是在控制传输。 我现在怀疑协议有问题。也可能我是错的。 如果我理解错了, 你能详细点吗?? 谢谢 quanxianwang |
|
8楼#
发布于: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. 不知道你要做的无线网卡,用的是什么协议,或许上面也有类似的东西。 |
|
9楼#
发布于:2004-11-06 08:36
quanxianwang兄,批量的传输长度就按wdy9927说的。
|
|
10楼#
发布于:2004-11-06 18:32
如果你用得是USB2.0的芯片,那么这个数值会显示在芯片的一个长度寄存器中,例如你发送了513字节数据,那么设备收到第一个包时该寄存器的值是512,收到第二个包时值是1。
对于USB1.1就不太清楚了,根据片子的不同也许定义方法会有不同。 |
|