wince USB HUB使用注意
2190 ワード
ceにhubハブを使用した後、USBドライバはいくつかの点に注意してください.
1、転送bufferは十分な大きさを確定しなければならない.
2、USBスリープモードが設定されている場合は、スリープ時にスリープの処理に入ることを確保する.
bufferの変更:
E:\WINCE600\PLATFORM\SMDK6410\src\drivers\USB\hcd\s3c6410_ohci.c
これは元のコードで定義されたbufferで、hubを使用して2つのUSBに拡張すると倍になります.
スリープ処理:
InitializeOHCI()関数を参照してください.
次のように変更します.
上記の状況はHUBを使用して3 Gモジュールのデバッグ時に現れたもので、現在は基本的に修正されているので、ここに記録しておきます.
そのbufferを大きくしないと、3 Gモジュールに接続するとUSB仮想化されたシリアルポートの中に、1つのシリアルポートが正常にATコマンドインタラクションを行うことができない(正常な場合は2つのシリアルポートがATコマンドを行うことができ、1つはダイヤルアップインターネット、1つは通話メールなどのATコマンドインタラクションに使用される).
USBがシステムがスリープしている間に対応するスリープ処理に入ることを確保しないと、USBが切れるという問題が発生し、メインUポートが使えないという問題が発生します.
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ポートが使えないという問題が発生します.