- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I would like to translate this KBA218830 into Japanese.
Invalid Sequence Error in Multi-Channel Commit Buffer - KBA218830
I will start right away.
Regards,
RiKiRyKi_1693141
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Community Translated byRyKi_1693141
==========================
タイトル:マルチチャネルコミットバッファでの無効なシーケンスエラー
Version:**
質問:
"Error in CyU3PDmaMultiChannelCommitBuffer: code 71 "というメッセージがFX3で動画をストリーミングしているときにUART端末に表示されます。
このエラーの原因と復旧方法を教えてください。
回答:
"Error in CyU3PDmaMultiChannelCommitBuffer: code 71 "というメッセージは、DMAバッファオーバーフローが発生した場合に表示されます。
code 71のエラーは「CY_U3P_ERROR_INVALID_SEQUENCE」エラーを指します。
このエラーは、UVC ホストアプリケーションが DMA バッファをクリアするのに十分な速さで IN トークンを発行しなかった場合に発生する可能性があります。
code 71のエラーから回復するには、
1.ファームウェアに割り当てられた DMA バッファ領域を増やす。
2.AN75779 に関連付けられたサンプル・プロジェクトに以下を実装します。
-1.CyU3PDmaMultiChannelCommitBuffer() APIがCY_U3P_SUCCESSを返すのに失敗した場合、CyFxUvcApplnDmaCallback()関数にフラグ(例えば、commit_buffer_failure)を設定する。
-2,UVCAppThread_Entry()関数のfor(;;)ループで、このフラグがセットされているかどうかを確認します。セットされている場合は、以下のコードスニペットを実装して、DMA チャネルをリセットし、GPIF II ステートマシンを再起動します。
if (commit_buffer_failure == 1)
{
commit_buffer_failure = 0;
/* Stop the GPIF state machine to stop data transfers through FX3 */
CyU3PGpifDisable (CyFalse);
streamingStarted = CyFalse;
/* Place the Endpoint in NAK mode before cleaning up the pipe. */
apiRetStatus = CyU3PUsbSetEpNak (CY_FX_EP_BULK_VIDEO, CyTrue);
if (apiRetStatus != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "\r EP_NAK=%d\n", apiRetStatus);
}
/* Reset the DMA channel and flush the endpoint pipe. */
apiRetStatus = CyU3PDmaMultiChannelReset (&glChHandleUVCStream);
if (apiRetStatus != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "\r DMA_RESET=%d\n", apiRetStatus);
}
apiRetStatus = CyU3PUsbFlushEp (CY_FX_EP_BULK_VIDEO);
if(apiRetStatus != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "\r EP_FLUSH=%d\n", apiRetStatus);
}
apiRetStatus = CyU3PDmaMultiChannelSetXfer (&glChHandleUVCStream, 0, 0);
if (apiRetStatus != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "\r DMA_XFER = %d\n", apiRetStatus);
}
apiRetStatus = CyU3PUsbSetEpNak (CY_FX_EP_BULK_VIDEO, CyFalse);
if(apiRetStatus != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "\r EP_ACK=%d\n", apiRetStatus);
}
apiRetStatus = CyU3PGpifSMStart (START_SCK0, ALPHA_START_SCK0);
if (apiRetStatus != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "CyU3PGpifSMStart = %d\n", apiRetStatus);
}
apiRetStatus = CyU3PGpifSMSwitch (257, 0, 257, 0, 2);
if (apiRetStatus != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "CyU3PGpifSMSwitch = %d\n", apiRetStatus);
}
streamingStarted = CyTrue;
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
We receive your translation, and this KBA is claimed to translate.
I will get back to you after conducting internal review.
Thanks for your contribution!,
Jenna Jo