Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

Segger J-LinkのFX3/CX3/FX3Sに関する既知の問題 - KBA229847 - Community Translated (JA)

Segger J-LinkのFX3/CX3/FX3Sに関する既知の問題 - KBA229847 - Community Translated (JA)

SivaK_96
Employee
Employee
50 questions asked 10 questions asked 5 questions asked

Community Translated by  NoTa_4591161     Version: **

Translation - English: Segger J-Link Known Issues with FX3/CX3/FX3S - KBA229847

質問:SEGGER J-Linkのデバッガを使用してCypress FX3/CX3/FX3SUSBスーパースピードデバイスコントローラのデバッグ中に、次のエラーが表示されます。

  • ERROR: Bad JTAG communication: Write to IR: Expected 0x1, got 0x3 (TAP Command: 15)
  • ERROR: Bad JTAG communication: Write to IR: Expected 0x1, got 0x0 (TAP Command: 2) @ Off 0x5

なぜこれらのエラーが発生するのですか?これらのエラーを修正するにはどうすればよいでしょうか?

回答:これらのエラーは、Segger J-Linkを使用したJTAGデバッグ中にFX3/CX3/FX3Sで発生する可能性があります。

  • ERROR: Bad JTAG communication: Write to IR: Expected 0x1, got 0x3 (TAP Command: 15)

このエラーは、メイン関数のCyU3PKernelEntry() APIにステップインすると発生します。 CyU3PKernelEntry() APIは返されない呼び出しであり、CyU3PKernelEntry() APIにステップインを使用すると、返されない呼び出しとしてファームウェアコントロールが呼び出されます。 これにより、J-Linkデバッガを使用してJTAGデバッグセッションが実行中に中断し、TAPコマンド:15エラーが出力される可能性があります。

TAPコマンド:15エラーの防止次の手順に従って、TAPコマンドを回避します。15エラー:

  1. デフォルトでは、デバッガはmain()で停止します。
  2. CyU3PKernelEntry() API に到達したら、ステップオーバーを実行して、コントロールが次のブレークポイントに到達するようにします。
  3. ThreadEntry 関数に別のブレークポイントを追加します(たとえば、AN75779で提供されているUVCファームウェアのUVCAppThread_Entry)。

main のデフォルトのブレークポイントから、CyU3PKernelEntry() APIに到達するまで、ステップインまたはステップオーバーを使用してナビゲートできます。コントロールがCyU3PKernelEntry()に到達したら、ステップオーバーを使用して、アプリケーション定義関数の次のブレークポイントに到達します。そこから、ステップインとステップオーバーを使用して関数内を移動するか、再開を使用してThreadEntry 関数の次のブレークポイントに移動できます。

このエラーは、メイン関数のCyU3PDeviceInit() API が呼び出されたときのランタイム中のFX3 CPU周波数の変化により、Segger J-Linkを使用したJTAGデバッグ中にFX3ファミリーで発生する可能性があります。この問題の解決策については、KBA229087を参照してください。

UVCファームウェアのデバッグ中にも同じエラーが発生します。UVCドライバーは、デバイスにサスペンドリクエストを送信して、デバイスをサスペンドモードにして電力を節約しようとします。

ホストが中断要求を送信すると、USB_SUSP_EVENT_FLAG が生成されます。このイベントフラグは、CyU3PSysEnterSuspendMode() APIを呼び出すことによってデフォルトのファームウェアで処理され、ウェイクアップソースがトリガーされるまでデバイスをサスペンドモードにします。サスペンドモードでは、CPUは実行を停止し、デバイスは低電力状態になり、Segger J-Linkとデバイス(CPU)間のリンクが切断されます。

TAPコマンド:2エラーの防止

TAPコマンド:15エラー防止する手順に加えて、ファームウェアはホストからのサスペンド要求を処理するべきではありません。

これは、CyU3PEventGet() 関数のビットマスクからUSB_SUSP_EVENT_FLAG を削除することで実行できます。

0 件の賞賛
315 件の閲覧回数
寄稿者