halley
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2002-10-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2077回复:11

是否可以设置Endpoint大小?

楼主#
更多 发布于:2002-05-09 10:48
现有一个USB设备,我可以读出它的Enpoint Max Packet 大小为0x40是否可以通过某些函数把这个Endpoint 大小更改为 0x1000?
bunnyh
驱动牛犊
驱动牛犊
  • 注册日期2002-04-25
  • 最后登录2005-09-03
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-09 10:53
0X1000 (4096)??? ISO 的MAX PACKET SIZE 才1023
liumda
驱动小牛
驱动小牛
  • 注册日期2002-01-23
  • 最后登录2012-07-16
  • 粉丝0
  • 关注0
  • 积分76分
  • 威望48点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-09 11:10
一个USB设备在做成以后,他的应许通信包的大小就已经定了,既是要改,也只能往小的改,比如64字节的可以改成32字节
You Happy,So I Happy!
halley
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2002-10-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-09 11:12
我也不是很清楚
我只想知道,是否Endpoint 大小是设备一出厂就给定了不能进行修改,还是在驱动程序里可以设定其大小?
halley
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2002-10-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-05-09 11:15
那就是说,我读出来maxPacketSize = 64是出厂时的设定,不能再往大的Size改了,对不对?
halley
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2002-10-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-05-09 11:24
这里有段程序:

    // Create the URB for the configuration request.
    pstUrb = USBD_CreateConfigurationRequestEx(pstConfigDescriptor, pstInterfaceList);

    if (NULL == pstUrb)
    {
        DBG_ERROR(gDbgInfo,(\"USBD_CreateConfigurationRequestEx failed pUrb=NULL\\n\",pstUrb));

        DBG_RETURN(gDbgInfo,(long)(STATUS_INSUFFICIENT_RESOURCES));
        return (STATUS_INSUFFICIENT_RESOURCES);
    }

    //
    // Initialize the Pipes for MaxTransfer size and
    // rest of the pipe information filled by USBD
    //

    for (i= 0; i< pstInterfaceList[0].Interface->NumberOfPipes; i++) {

        pstInterfaceList[0].Interface->Pipes.MaximumTransferSize =
                                    USB_DEVICE_MAX_BULK_TRANSFER_SIZE;
    }

    // Pass the configuration request to USBD
    NtStatus = UsbDevCallUSBD(pstUsbDev, pstUrb);
。。。。。。。。。。。。。。。。。。。。。。。。。。。
/*****************************************************/
在这段程序中的
#define USB_DEVICE_MAX_BULK_TRANSFER_SIZE PAGE_SIZE
而我看了PAGE_SIZE 为 0x1000

通过用UsbDevCallUSBD()送到USBD上(重新写了IOCallDriver())。
难道这不是设置endpoint 大小为0x1000吗?

谁能解释一下?
huoxy
驱动小牛
驱动小牛
  • 注册日期2002-03-01
  • 最后登录2014-02-24
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-05-09 11:25
是的。
最大包大小是由硬件决定的。
好好学习,天天向上,做一个乖宝宝。
huoxy
驱动小牛
驱动小牛
  • 注册日期2002-03-01
  • 最后登录2014-02-24
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望4点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-05-09 11:29
那好象不是“最大包大小”,你用IOCallDriver()调用下层驱动程序,给它一个数据长度,它会把你需要的长度分成几批读/写。这是我的理解。不知道是否对。
好好学习,天天向上,做一个乖宝宝。
mikelish
驱动牛犊
驱动牛犊
  • 注册日期2002-05-09
  • 最后登录2011-10-27
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-05-09 11:39
usb1.0协议,规定bulk transfer为64,
usb2.0协议, 规定 bulk tranfer为512

详见usb 2.0 specification. chapter 5 page 52.

这是指的在一个td(transfer descriptor)(usb OHCI specification) 可传的数据。

当需要传更多数据时,可用多个td
halley
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2002-10-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-05-09 11:49
谢谢各位!
fanyunxiao
驱动牛犊
驱动牛犊
  • 注册日期2002-04-15
  • 最后登录2005-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-05-09 15:31
Enpoint Max Packet 是USB设备设定的,不是驱动程序能改变的吧?
LIUTANG
驱动大牛
驱动大牛
  • 注册日期2001-03-30
  • 最后登录2020-12-27
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望58点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
  • 社区居民
11楼#
发布于:2002-05-09 22:36
bulk方式最大为64字节,ISOC方式为1023字节,但一般设备会有一些ALTERNATE SETTING供HOST端软件选择,看情况而定。

[编辑 -  5/10/02 by  znsoft]
游客

返回顶部