Community Translation - PSoC 6 MCU: Code in main() executes before the debugger halts at the first line of main() – KBA231071

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 KBA231071 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

Hi, Kenshow-san

Confirm to work this KBA.

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:

PSoC 6 MCU: Code in main() executes before the debugger halts at the first line of main() – KBA23107...

Thanks.

Kenshow

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

タイトル: PSoC 6 MCU:デバッガがmain()の最初の行で停止する前にmain()のコードが実行される – KBA231071

バージョン:**

問題: CM4 CPUでは、main()の先頭でデバッガが停止する前に、main()の一部のコードが実行されます。つまり、一部のコードは2回実行されます。デバッガが実行を停止する前と、デバッガがプログラムカウンターをmain()の先頭にリセットした後です。

背景: この問題はデバッグにのみ影響します。ターゲットを取得するためのデバッガのプロセスには時間がかかります。デバッガはターゲットをリセットしてから、CM4 CPU上のアプリケーションを停止します。リセット後、停止する前に、main()の一部のコードが実行されるのに十分な時間があります。デバッガはプログラムカウンターをmain()の最初の行に配置します。デバッグを開始すると、一部のコードが2回実行されます。

この複数の実行は目に見えないことがよくあります。Main()の先頭のコードが情報を端末ウィンドウに出力する場合、印刷コマンドが2回表示され、この問題が明らかになる場合があります。

通常、繰り返し実行しても問題は発生しませんが、発生する可能性があります。たとえば、コードがフラグをテストして設定するとします。コードが2回目に実行されたときに、そのフラグの状態が異なる場合、コードの動作が異なる可能性があります。これは、デバッグ中にプログラムカウンターを手動で移動して一部のコードを再実行した場合と同じです。

解決策: CM4 CPUmain()関数の複数実行がコードの問題である場合、簡単な回避策は、コードの先頭に遅延ループを置くことです。これにより、機密コードが2回実行されるのを防ぎます。必要な遅延の長さは、デバッグ環境の性質(IDE、プローブなど)によって異なります。以下のスニペットは400ミリ秒の遅延を使用します。これは通常、ModusToolboxEclipse IDEには十分です。ご使用の環境で必要な遅延は、長くなる場合と短くなる場合があります。

/* アクティブなデバッガが検出された場合は、SYSRESETREQを実行するための時間を与えます

* それ以外の場合、デバッガが完全に動作する前にアプリケーションが実行されます */

If(CoreDebug-> DHCSR&CoreDebug_DHCSR_C_DEBUGEN_Msk

{

Cy_SysLib_Delay(400u);

}                           

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

24-August-2020

  Kenshow

0 Likes