程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> wince USB HUB 使用注意

wince USB HUB 使用注意

編輯:C++入門知識

在ce上使用了hub集線器之後,USB驅動要注意幾點:
1、傳輸buffer要確定足夠大才行。
2、如果設置了USB休眠模式,那麼在休眠的時候,要確保能夠進入到休眠的處理中。
 
修改buffer:
E:\WINCE600\PLATFORM\SMDK6410\src\drivers\USB\hcd\s3c6410_ohci.c
[cpp]
// 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()函數中的:
[cpp] 
// 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); 

修改為:
[cpp] 
// 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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved