PSoC 6 MCU デバイスを PSoC Creator 4.2 でサードパーティ製ツールチェーンを使用してデバッグ時に CY_ASSERT() が失敗するとコールスタックウィンドウ内のコールスタックがアンワインドされない - KBA229134 - Community Translated (JA)

Version 2

    Community Translated by  MoTa_728816          Version: **

     

    問題:
    PSoC® Creator™ 4.2 MDK-ARM ルチェンを使用してのデバッグモド時、プログラムが CY_ASSERT() 関数内で失敗すると1のようにコルスタックウィンドウがコルスタック全体を表示しなくなる (部分)

     

    1. ルスタックウィンド

    原因: これは MDK-ARM ルチェンのデフォルトの設定に起因します。現在のアプリケションスタックのアドレスを保持するフレムポインタレジスタは、最も低い最適化レベルでも汎用レジスタ (r11)として使用されます。その、デバッガは全スタックをアンワインド出なくなります

     

    解決策: あるレジスタをフレムポインタとして予約するためには、コマンドラインオプション --use_frame_pointer を使用する必要があります。Thumb-2 テクノロジをサポトしている最近のプロセッサ (ARMv6T2 およびそれ以降) では予約されるレジスタは常に r11 です

     

    コンパイラでこのコマンドを設定するのには、2 に示されるように以下の手順にってください

     

    1. プロジェクトを右クリックして Build Settings を選択する
    2. CM4 ARM MDK Generic > Compiler > Command Line を選択する
    3. Custom Flags フィールドに --use_frame_pointer と入力して OK をクリックする

     

    2. Build Settings Custom Flags

    この理後には、3 のようにデバッグ時にコルスタックの全体を見ることが出るようになります

     

    3. アンワインドできたコルスタッ

    より詳しい情報と考資料

    1. Compiler User Guide --use_frame_pointer, --no_use_frame_pointer
    2. ARM registers
    3. Arm MCU Usage of Frame Pointer 
    4. PDL 内の CY_ASSERT()