- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I would like to translate KBA229099 into Japanese.
Please confirm to my work.
Thanks,
Kenshow
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello, Kenshow-san
Yes, Confirm to work this KBA.
Thanks,
Jenna
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Jenna-san,
Japanese translation was over.
Please check below.
Original KBA:
Adding Communication Device Class Interface to FX3 Firmware - KBA229099
- Thanks.
==============================
タイトル: サイプレスタイトル – KBA番号
バージョン:**
質問1:
コミュニケーションデバイスクラス(CDC)インターフェイスをベンダークラスアプリケーションに追加するにはどうすればよろしいでしょうか?
回答:
すべてのUSBデバイスには、ホストにデバイス情報を記述するディスクリプタの階層があります。一般的なUSBディスクリプタは次のとおりです。
- デバイスディスクリプタ:USBデバイスディスクリプタには、適切なドライバーをロードするためのUSBバージョン、プロダクト、ベンダーID、およびデバイスで可能な構成の数などの情報が含まれています。
- コンフィグレーションディスクリプタ:コンフィグレーションディスクリプタは、構成で使用される電力量、デバイスがバスパワーであるかセルフパワーであるか、インターフェイスの数などの値を指定します。
- インターフェイスディスクリプタ:インターフェイスディスクリプタは、デバイスの単一の機能を実行する機能グループへのエンドポイントのヘッダーまたはグループ化である可能性があります。
- エンドポイントディスクリプタ:エンドポイントディスクリプタは、エンドポイント0以外のエンドポイントを記述するために使用されます。ホストは、エンドポイント情報を使用して、バスの帯域幅要件を決定します。
- インターフェイスアソシエーションディスクリプタ:インターフェイスアソシエーションディスクリプタを使用すると、デバイスは、機能に属するインターフェイスをグループ化できます。
FX3ベンダークラスファームウェアへのCDCインターフェイスの追加
FX3ベンダークラスファームウェアへのCDCインターフェイスの追加には、次のものが含まれます。
- コンフィグレーションディスクリプタの変更
- インターフェイスディスクリプタの変更
- エンドポイントディスクリプタの変更
- CDCリクエストの処理とCDC機能の追加
コンフィグレーションディスクリプタの変更
- このディスクリプタとすべてのサブ・ディスクリプタの長さのフィールドをコンフィグレーションディスクリプタとすべてのインターフェイスディスクリプタの全長で修正します
- CDCインターフェイスを追加した後、インターフェイスの総数でインターフェイス数のフィールドを更新し ます。
図1は、SDKでスレーブFIFOにCDCインターフェイスを追加する例を示しています。
図1. スレーブFIFOへのCDCインターフェイスの追加
注:これらの変更は、USB3.0のSuperSpeedディスクリプタに適用されます。アプリケーションがUSB 2.0の場合は、ハイスピードディスクリプタにも同様の変更を加えることができます。
インターフェイスディスクリプタの変更
1. ディスクリプタのインターフェイス番号 フィールドは順番に並んでいる必要があります。
この例では、スレーブFIFOインターフェイスのインターフェイス番号 が0x00であり、CDCインターフェースディスクリプタがスレーブFIFOインターフェースディスクリプタの後に追加される場合、CDCインターフェースの番号付けは次のようになります。
- コミュニケーションインターフェースディスクリプタ– 0x01
- データインターフェイスディスクリプタ– 0x02
2.スレーブFIFOに使用されるインターフェイスのインターフェイスディスクリプタとエンドポイントディスクリプタの後に、CDCインターフェイスに関連するディスクリプタを追加します。CDC仕様に従って、CDCデバイスには2つのインターフェイス(コミュニケーションインターフェイスディスクリプタとデータインターフェイスディスクリプタ)が必要です。インターフェイスアソシエーションディスクリプタは、両方のCDCインターフェイスをバインドするために使用されます。そのバインドは最初のCDC i/FのI/F番号とCD i/Fの数によって決定されます。
図2. インターフェイスアソシエーションディスクリプタの追加
エンドポイントディスクリプタの変更
エンドポイントディスクリプタに変更はありません。各インターフェイスに使用されるエンドポイントアドレスとディスクリプションフィールドに記載されているエンドポイントアドレスが一意であることを確認してください。
CDCリクエストの処理とCDC機能の追加
ここで説明した変更により、UsbUartサンプルの機能がSDKのスレーブFIFOサンプルに追加されます。このナレッジベース記事(KBA)で利用可能なファームウェアで#define cdcを有効にすると、デフォルトのスレーブFIFO(cyfxslfifosync.c)ファームウェアに次の変更が追加されます。
1. CDCデバイス機能を処理するためのスレッドを作成します。
2. USBセットアップコールバック関数で次のコミュニケーションデバイスクラス要求を処理します。
- SET LINE CODING
- GET LINE CODING
- SET CONTROL LINE STATE
3. UARTブロックとUSBブロック間の転送用のDMAチャネルを作成します。
4. 作成したチャネルのエンドポイントを設定します。
5. プロジェクトをビルドすると、{project_name} .imgファイルが生成され、それぞれのプロジェクトフォルダパスに保存されます。この.imgファイルでFX3をプログラムします。
6. ドライバーのバインドが不適切なため、デバイスはコントロールセンターに表示されません。
CDCインターフェイスが自動的にドライバーにバインドされる場合は、以下の手順に従って、ドライバーをslavefifo(ベンダー)インターフェイスに手動でバインドします。
1. ファームウェアでFX3をプログラミングすると、ドライバーは正しくバインドされません。図3は、不適切なドライバーバインディングのデバイスマネージャーを示しています。
図3. 不適切なドライバーのバインド
2. Cypress cyusb3ドライバーを正しくバインドするには、以前にバインドされたドライバーをアンインストールします。
3. デバイスをリセットし、.imgファイルで再プログラムします。図4は、再プログラミング後のデバイスマネージャーを示しています。
図4. FX3にバインドされたドライバーのアンインストール
4. デバイスマネージャーの[その他のデバイス]セクションに表示されるFX3にcyusb3ドライバーをバインドします。モデルCypress FX3 USB StreamerExample Deviceを選択します。ドライバーがFX3デバイスに正常にバインドすると、デバイスがコントロールセンターに表示されます。これで、スレーブFIFOに関連付けられたインターフェイスとCDCインターフェイスの両方のインターフェイスを同時に使用できます。ドライバーをFX3インターフェイスに強制的にバインドする方法の詳細については、ドライバーのバインドを参照してください。
図5. ドライバーを手動でバインドした後
CDCインターフェイスがドライバーに自動的にバインドされない場合、両方のインターフェイスが Other devicesセクションに表示される可能性があるため、それぞれのドライバーに手動でバインドする必要があります。
図6. 自動的にバインドされないCDCインターフェイス
正しいドライバーを両方のインターフェイスにバインドするには、デバイスマネージャーのデバイスプロパティをチェックして、両方のインターフェイスのクラスを確認します。
図6. デバイスのプロパティ
値がクラスFF(ベンダクラス)の場合、 slavefifo(ベンダー)インターフェイスにcyusb3ドライバーをバインドするためには手順4に従います。
値がクラス02(CDCクラス)の場合、CDCインターフェイスにCypressドライバーをバインドするには、次の手順に従います。
- このリンクからCypressDriverInstaller_1.exeをダウンロードしてインストールします。デフォルトのインストール後、Cypress USB-Serial DriverフォルダーがC:\Program Files(x86)\Cypressに作成されます。
- デバイスマネージャーで、 Other Devices の[ FX3 ]を右クリックし、[ ドライバーソフトウェアの更新 ]をクリックします。
- ポップアップウィンドウで、[ コンピューターを参照してドライバーソフトウェアを検索 ]をクリックします。
- [ コンピューター上のデバイスドライバーのリストから選択]をクリックします。
- [ すべてのデバイスを表示 ]を選択し、[ 次へ ]をクリックします。
- [ ディスク使用…]をクリックします。
- win7のために、x64のPCは、ポップアップウィンドウで、参照を... クリックし、C:\Program Files (x86)\Cypress\Cypress USB-Serial Driver\DriverBinary\CDC_Driver\bin\win7\x64に移動します。
- CypressSerial.infファイルを選択し、[ 開く ]をクリックします。
- [ OK ]をクリックします。次のウィンドウで、[ USB to UART Adapter ] を選択し、[ 次へ ]をクリックします。
- ドライバーの更新警告ウィンドウで、[ はい ]をクリックします。これで、CDCインターフェイスの1つがデバイスマネージャーでUSB-UARTアダプターとして表示されます。
これで、デバイスマネージャーのOther devicesセクションに別のデバイスの仮想シリアルポートが表示されます。 - [ 仮想シリアルポート ]を右クリックし、[ ドライバーソフトウェアの更新 ] を選択します。
- 手順3〜8に行います。
- [ USB Serial Port ]を選択して、[ 次へ ]をクリックします。
- ドライバーの更新の警告ウィンドウで、[ はい]を選択します。USBシリアルポート(COM x)(ここで、xは任意の数にすることができます)は、デバイスマネージャーのポート(COMおよびLPT)セクションに表示されます。これで、Uartターミナルアプリケーション(TeraTerm)とスレーブFIFOアプリケーションを開いて、CDCインターフェイスの同時動作を確認できます。
注:CDCインターフェイスは、Windows 10 PCのMicrosoftドライバーに自動的にバインドされ、ポート(COMおよびLPT)に表示されます。CDCインタフェイスはサイプレスドライバにバインドする場合は、USBシリアルポート(COM x)をクリックし、手順1-14に従ってください。
質問2: UVCアプリケーションにコミュニケーションデバイスクラスインターフェイスを追加するにはどうすればよろしいでしょうか?
CDCインターフェイスをUVCアプリケーションに追加するには、このスレッドに添付されているファームウェアを参照してください。
ファームウェアはCX3アプリケーション用です。FX3デバイスのUVCアプリケーションについても、同様の変更を行う必要があります。
==============================
22-May-2020