wince USB HUB使用注意

2190 ワード

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を使用して2つの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
"), 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
"), dwCapability)); } RegCloseKey(hKey); }

 
上記の状況はHUBを使用して3 Gモジュールのデバッグ時に現れたもので、現在は基本的に修正されているので、ここに記録しておきます.
 
そのbufferを大きくしないと、3 Gモジュールに接続するとUSB仮想化されたシリアルポートの中に、1つのシリアルポートが正常にATコマンドインタラクションを行うことができない(正常な場合は2つのシリアルポートがATコマンドを行うことができ、1つはダイヤルアップインターネット、1つは通話メールなどのATコマンドインタラクションに使用される).
USBがシステムがスリープしている間に対応するスリープ処理に入ることを確保しないと、USBが切れるという問題が発生し、メインUポートが使えないという問題が発生します.