Hi,
I'd like to translate KBA227094 into Japanese.
moto
Original KBA: KBA227094
PSoC 6 MCU CM4 Core Debug Issue - KBA227094
Translated by: MoTa_728816
=============================
タイトル: PSoC 6 MCU での CM4 コアデバッグ時の問題 - KBA227094
質問:
PSoC® Creator™ 4.2、PDL 3.1.0、 PSoC Programmer 3.28 を使用して PSoC 6 MCU の CM4 コアをデバッグしようとしています。
デバッガが main() の中ではなく、逆アセンブルの画面で停止してしまいます。正しくデバッグするのにはどうしたら良いでしょうか?
回答:
この問題は PDL 3.1.0 の起動コードに追加されたシステムコールが CM4 コアのデバッグセッションが初期化された後では実行できないことに起因します。PSoC Programmer はデバッグアクセスポート (DAP) を除く IPC_INTR_STRUCT.INTR_MASK レジスタ内のすべての割込み通知を無効にします。結果として、PDL からのシステムコールは起動されますが、IPC のロック解除を待つループないで立ち往生してしまいます。この問題は PSoC Programmer 3.28.3 リリースで修正されています。
当面、以下のワークアラウンドのどれかをお使いいただけます:
1: 通常 cyfitter_cfg.c 内にある Cy_SystemInit 起動コード内で、
Cy_SysPm_LdoSetVoltage() をコールする前に CYREG_IPC_INTR_STRUCT0_INTR_MASK レジスタの初期値を設定します。
CY_SET_REG32(CYREG_IPC_INTR_STRUCT0_INTR_MASK, 0x00070000u);
注意:プロジェクトの生成を行うと、このワークアラウンドは消されてしまいます。プロジェクトが生成されてからこの変更を適用してください。
2: main_cm4.c の先頭に無限ループを追加する
このループはデバッガが実行中のターゲットにアタッチして状態を変更するまで続きます。実行はループの中で停止することになります。
デバッガは無限ループで止まっています。
5. flag 変数の値を '0' から他の値に変更します。
6. Step over をして、デバッグセッションを続けてください。
デバッグがもう不要になり、リセットイベント後、すぐに CM4 コードを実行したい場合には、ワークアラウンド部分を main() から削除してください。
=============================
10-Apr-2020
moto