jjtjjt1234
驱动牛犊
驱动牛犊
  • 注册日期2002-09-28
  • 最后登录2005-04-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1655回复:8

我得68013为什么调用一次IOCTL_EZUSB_BULK_READ最大只能读1K?

楼主#
更多 发布于:2004-02-28 12:12
我得68013为什么调用一次IOCTL_EZUSB_BULK_READ最大只能读1K?
我把inPacketSize设成32K,inBuffer也设成对应得数字,但发现读进来得数据还是只有1K,(用bushound监控),我就改inPacketSize和inBuffer这两个参数,是不是还有其他参数要改啊?

success_read = DeviceIoControl (handle,
                     IOCTL_EZUSB_BULK_READ,
                     &bulkControl,
                     sizeof(BULK_TRANSFER_CONTROL),
                     &inBuffer[0],          inPacketSize,
                     &nBytes,
                     NULL);

最新喜欢:

farorleefarorl...
jiang
xmx00
驱动牛犊
驱动牛犊
  • 注册日期2004-05-15
  • 最后登录2008-06-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-01 15:41
我的更诡异,每个bulk transfer只能读一个packet的长度。
你的问题解决了么?
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-01 15:52
检查一下你设备端固件程序提供数据了没有
i_tingfeng
驱动牛犊
驱动牛犊
  • 注册日期2002-11-28
  • 最后登录2004-12-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-07-02 06:52
能给我一份原理图吗?
i_tingfeng@hotmail.com
pengenwen
禁止发言
禁止发言
  • 注册日期2003-03-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1586分
  • 威望8380点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-07-02 09:32
用户被禁言,该主题自动屏蔽!
wangzhu100
驱动牛犊
驱动牛犊
  • 注册日期2003-10-06
  • 最后登录2006-10-18
  • 粉丝0
  • 关注0
  • 积分41分
  • 威望6点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-07-02 12:46
我的也差不多。。用getmaxtransferlength。。函数得到的数值就是一个包的大小。。我只好build很多个Transfer。。

我看这个值,设备描述符表也没有说命呀。。。。不知道怎么得到。

windrv
驱动牛犊
驱动牛犊
  • 注册日期2004-07-05
  • 最后登录2004-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-07-05 03:53
问题就在这,maxtransferlength被设成一个包的大小,一次只能读一包了。

如果maxtransferlength设成4MB,一次DeviceIoControl就可以最多读4MB。

如果设备不提供数据,DeviceIoControl会死等。

如果设备在中间提供了一个非满包或者0包, Host Controller会返回一个错误信息给驱动程序。

另外请注意,在Cypress提供的8051程序中,包的大小通常是1KB,但是USB 2.0协议规定的包大小是512 bytes。如果你非要把包大小设成1KB,在某些USB卡上数据就会读不上来。
wangzhu100
驱动牛犊
驱动牛犊
  • 注册日期2003-10-06
  • 最后登录2006-10-18
  • 粉丝0
  • 关注0
  • 积分41分
  • 威望6点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-07-05 11:50
我知道呀。。但是,,这个在哪里设置呀。。好像没有设置的函数吧。。描述符表里。也没有这种字段。。只有包大小的定义。。

这个transfer的长度,可以通过函数设置的吗。。我也没找到这个函数啊。。郁闷。。
windrv
驱动牛犊
驱动牛犊
  • 注册日期2004-07-05
  • 最后登录2004-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-07-10 13:39
在驱动程序里,configure interface的时候,可以把每个pipe的MaximumTransferSize设置成你需要的值。在USB 2.0的时候可以设成2MB,在USB 1.1的时候要小很多,我一般设成16KB,也许还可以更大点。
游客

返回顶部