2 Replies Latest reply on Apr 2, 2020 1:53 AM by JuyoungJ_06

    Community Translation - KBA#45 Invalid Sequence Error in Multi-Channel Commit Buffer - KBA218830

    RyKi_1693141

      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

        • 1. Re: Community Translation - KBA#45 Invalid Sequence Error in Multi-Channel Commit Buffer - KBA218830
          RyKi_1693141

          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;

                    }

          • 2. Re: Community Translation - KBA#45 Invalid Sequence Error in Multi-Channel Commit Buffer - KBA218830
            JuyoungJ_06

            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