wince USB HUB 使用注意

在ce上使用了hub集线器之后,USB驱动要注意几点:

1、传输buffer要确定足够大才行。

2、如果设置了USB休眠模式,那么在休眠的时候,要确保能够进入到休眠的处理中。

 

修改buffer:

E:\WINCE600\PLATFORM\SMDK6410\src\drivers\USB\hcd\s3c6410_ohci.c

// Amount of memory to use for HCD buffer
static const DWORD gcTotalAvailablePhysicalMemory = 64*1024;    // 64K
static const DWORD gcHighPriorityPhysicalMemory = 16*1024;        // 16K

这个是原代码中定义的buffer,如果使用hub扩展为两个USB,则改大一倍

休眠处理:

看InitializeOHCI()函数中的:

    // PCI OHCI support suspend and resume
    if ( hKey!=NULL)
    {
        DWORD dwCapability;
        DWORD dwType;
        DWORD dwLength = sizeof(DWORD);
        if (RegQueryValueEx(hKey, HCD_CAPABILITY_VALNAME, 0, &dwType, (PUCHAR)&dwCapability, &dwLength) == ERROR_SUCCESS)
        {
            HcdMdd_SetCapability(pobOhcd, dwCapability);
            USBH_INF((_T("[USBH:INF] InitializeOHCI() : USB Host Cap : 0x%08x\n"), dwCapability));
        }

        RegCloseKey(hKey);
    }

修改为:

    // PCI OHCI support suspend and resume
    if ( hKey!=NULL)
    {
        DWORD dwCapability;
        DWORD dwType;
        DWORD dwLength = sizeof(DWORD);
        if (RegQueryValueEx(hKey, HCD_CAPABILITY_VALNAME, 0, &dwType, (PUCHAR)&dwCapability, &dwLength) == ERROR_SUCCESS)
        {
            dwCapability |= 0x01;
            HcdMdd_SetCapability(pobOhcd, dwCapability);
            USBH_INF((_T("[USBH:INF] InitializeOHCI() : USB Host Cap : 0x%08x\n"), dwCapability));
        }

        RegCloseKey(hKey);
    }



 

上述情况在使用HUB接3G模块调试的时候出现的,现在已基本修正,特此记录一下。

 

如果不改大那个buffer,接上3G模块后会出现USB虚拟出来的串口中,有一个串口无法正常进行AT指令交互(正常的情况应该有两个串口可以进行AT指令,一个用于拨号上网,一个用于通话短信等的AT指令交互)。

如果不确保USB在系统休眠的时候进入到对应的休眠处理的话,会出现USB挂掉的问题,导致主U口都用不了的问题。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值