chenjihua
驱动牛犊
驱动牛犊
  • 注册日期2004-03-23
  • 最后登录2005-03-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2046回复:11

为什么 MaxtransferSize 不起作用呢?

楼主#
更多 发布于:2004-07-23 09:00
无论一个URB请求多少字节,每次只能传64B
我应该怎么办阿
zfw
zfw
驱动小牛
驱动小牛
  • 注册日期2001-12-16
  • 最后登录2006-09-01
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-23 09:08
你读写的Endpoint只支持64B吧,或者你的端点描述符设置的wMaxPacketSize是64
zfw
chenjihua
驱动牛犊
驱动牛犊
  • 注册日期2004-03-23
  • 最后登录2005-03-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-23 09:30
Endpoint 是只能最多传64B
不过usbd可以把上层驱动要求的字节数自动分包。

我不知道是否要自己设置某些参数来达到这个效果!

谁能给我提点阿?
我会痛快地给分!
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-07-23 09:39
你可以跟一下你的固件程序,看在DMA传输之前是否DMA计数器就只给你传了64字节.
你的片子不知道,无法具体给你意见.
新手上路,请多关照.
chenjihua
驱动牛犊
驱动牛犊
  • 注册日期2004-03-23
  • 最后登录2005-03-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-07-23 09:47
应该不是DMA的问题,因为我用别的驱动(windriver自己的)可以达到最多一次传4k的数量。我是用ds做的
Jane_11
驱动牛犊
驱动牛犊
  • 注册日期2002-06-07
  • 最后登录2006-03-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-07-23 10:01
是不是驱动的关系?因为好像在驱动里有一个地方要设置一次最多读写的缓存区的大小,如果那里写的只是64的话,那你肯定只能一次传64.一般这个地方会给出一个比较大的值来传输数据,由USB部分来分次接受和发送.
bab
chenjihua
驱动牛犊
驱动牛犊
  • 注册日期2004-03-23
  • 最后登录2005-03-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-07-23 11:03
是不是就是在端点初始化函数里的maxtransfersize参数?

但是没用阿,还有什么地方要设置呢???

metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-07-23 11:16
那可能是你的驱动的问题,你可以看一下在你的驱动下DMA传输时USBD
给你发的信息和WINDRV的驱动下DMA传输时USBD给你发的信息,你比较一下,有什么差别,特别是传输长度方面.
新手上路,请多关照.
chenjihua
驱动牛犊
驱动牛犊
  • 注册日期2004-03-23
  • 最后登录2005-03-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-07-23 11:24
很感谢metalwing

但我不太明白怎么查看usbd发的信息阿
能否说详细点,拜托了!
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-07-23 11:57
用BUSHOUND,USB MONISTOR等等工具,它们可以显示在USB总线上的
数据(过滤过的),你可以通过来往的数据进行判断和调试.
新手上路,请多关照.
Jane_11
驱动牛犊
驱动牛犊
  • 注册日期2002-06-07
  • 最后登录2006-03-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-07-23 12:02
是不是就是在端点初始化函数里的maxtransfersize参数?

但是没用阿,还有什么地方要设置呢???

我指的不是端点初始化部分,是驱动里的一个参数,不是你的固件程序,象前边大侠说得
bab
chenjihua
驱动牛犊
驱动牛犊
  • 注册日期2004-03-23
  • 最后登录2005-03-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-07-23 13:17
我发现我的驱程有时可以传多于64B的 ,但多数不行,还会发生data overrun 的error(busbound中的信息)
我真是百思不得其解
游客

返回顶部