- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
I want to translate KBA223338, please confirm to my work.
Regards,
Nino
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, Nino-san
Confirm to work this KBA.
Thanks,
Jenna
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
タイトル:USBを介したホストからのデータ送信はFX3のスレーブFIFOとして構成されたGPIFでコミットされない – KBA223338
バージョン 1
chaitanyav_41が 2018/04/02 5:17 に作成。chaitanyav_41が 2018/04/02 5:17 に変更。
Version: **
質問:
サイプレスコントロールセンター/ カスタムホストアプリケーションから送信されたデータパケットは何故GPIFインターフェースでコミットされませんか?
回答:
USB 3.0の下記のシナリオを考えてみましょう:
- 下記のように構成されている車載DMAチャネルを検討してみます:
dmaCfg.size = 16384; //バッファサイズは16KB
dmaCfg.count = CY_FX_SLFIFO_DMA_BUF_COUNT_U_2_P;
dmaCfg.prodSckId = CY_FX_PRODUCER_USB_SOCKET; //Producer : USB
dmaCfg.consSckId = CY_FX_CONSUMER_PPORT_SOCKET; //Consumer : GPIF
- この構成で、下記のどの条件も満足している場合、バッファはGPIFでコミットされます。
- 全ての16KBバッファがUSBで埋められている。
- 一部のパケットはUSBから受信される。(注意:これが起きた場合、バッファに埋められたデータの量はUSB 3.0では1024 バイトの倍数にはならず、USB 2.0では512 バイトの倍数になります。)
- ゼロ‐長パケットはUSBから受信される。
従って、これら3つの条件を考慮してホストアプリケーションを設計して下さい。
例えば、OUT送信がXバイトで作られる必要がある場合、下記のようになります。
- If X < 16 KB and (X % 1024) != 0, Xバイトが完了すると何も必要ありません。
- If X == 16 KB, Xバイトが完了すると何も必要ありません。
- If X > 16 KB, then let Y = (X % 16 KB). 今:
i) If Y == 0, Xバイトが完了すると何も必要ありません。
ii) If Y < 16 KB and (X % 1024) == 0, Xバイトが完了すると、デバイスのバッファがGPIFにコミットされるように、ゼロ長パケットが送信される必要があります。
- ゼロ長パケットを送信するためには、ゼロに設定する「len」パラメータと一緒にXferData() APIをコールして下さい。
XferData()の使用方法に関しては、FX3-SDKをインストールした後、C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\libraryで入手できるAPIガイドを参照して下さい。
278 閲覧 カテゴリ: USB: SuperSpeed Peripherals
タグ: firmware, usb, dma, usb 3.0, fx3, fx3 sdk, gpif, host application, gpif ii, slave fifo, slavefifo, commit