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

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Kenshow
Level 8
Level 8
Distributor - Marubun (Japan)
50 solutions authored 25 solutions authored 10 solutions authored

Hi,

I would like to translate KBA229847 into Japanese.

Please confirm to my work.

Thanks,

Kenshow

0 Likes
2 Replies
JennaJo
Moderator
Moderator
Moderator
1000 replies posted 750 replies posted 500 replies posted

Hello, Kenshow-san

Confirm for your work.

Thanks,

Jenna

Jenna Jo
0 Likes
Kenshow
Level 8
Level 8
Distributor - Marubun (Japan)
50 solutions authored 25 solutions authored 10 solutions authored

Hi Jenna-san,

Japanese translation was over.
Please check below.

Original KBA:

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

Thanks.

Kenshow

==============================

タイトル: Segger J-Linkの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 を削除することで実行できます。

==============================

26-May-2020

Kenshow

0 Likes