EWARMを⽤いたCortex-M デバッグテクニック April 2015 IAR Systems K.K. FAE Team 本ドキュメントについて ⽬的 Cortex-Mシリーズには優れたデバッグ機能が搭載されている。各機能を理 解し、ARM⽤統合開発環境、ARM⽤IAR Embedded Workbench (EWARM)を⽤いて、効率的なデバッグテクニックを習得する。 内容 ARM Cortex-MのCoreSight Cortex-Mの基本的なデバッグ機能 Cortex-M3/4、M7のSWOトレース機能 Cortex-M3/4、M7のETMトレース機能 ※コネクタ詳細は、「STM32デバッグのためのICE・コネクタガイド」を参照 ※本ドキュメントは、2015年4⽉現在のIARシステムズWebサイト、ST社Webサイト、 およびEWARMバージョン7.40.2を元に作成しています。 2 IAR SYSTEMS— A LEADING GLOBAL VENDOR 168 Employees with HQ in Uppsala, Sweden Listed in Stockholm/Nasdaq R&D investment 32% of revenue 32 years in the industry 24 hour technical support in 13 languages Uppsala Munich Sao Paulo Tokyo Seoul Shanghai London Paris San Francisco Dallas Boston Los Angeles +Distributor representation in 43 countries Stability and growth Licenses # (000’s) 2010 - 2013 Operating Margin % 20 20 15 15 10 10 5 5 0 0 2010 2011 License # 2012 2013 Operating Margin ARM Cortex-MのCoreSight Cortex-MのCoreSightテクノロジ Cortex-Mマイコンには、様々なデバッグ機能とインタフェースが搭載 FPB DWT 6 breakpoints 4 watchpoints PC sampler ETM trigger ITM DAP live core access software trace 32 channels JTAG time stamping SWD/SWO interrupt trace CPU statistics ETM trace port instruction trace 5 Cortex-MのCoreSightテクノロジ Cortex-Mのデバッグピンは、デバッグ制御⽤とトレース⽤がある 名称 デバッグ 制御 接続 基本機能 JTAG TMS TCK TDO TDI nRESET SWDIO SWDCLK SWO nRESET I-jet I-jet Trace ST-LINK ○ SWDIO SWDCLK SWO nRESET I-jet I-jet Trace ST-LINK ○ SWD TMS TCK TDO TDI nRESET 名称 トレース 機能 ICE SWV ETM 接続 TMS TCK TDO TDI nRESET CLK D0 D1 D2 D3 ICE SWDIO SWDCLK SWO nRESET 1,2,4本 から選択 特徴 ・ディジーチェーン可能 ・(低速)printfデバッグ ・必要PIN数:最⼩(2本) ・(低速)printfデバッグ ・SWVトレースが可能 Cortex-MではSWDが主流 サンプリング I-jet Trace 分岐トレース (実⾏) M0,M3/4,M7 特徴 ⽅式 I-jet I-jet Trace ST-LINK M0,M3/4,M7 ・パソコンにリアルタイム転送 ・(⾼速)prinfデバッグ ・ピン数:1 ・データ⽋落可能性→⼤ ・様々なデータ出⼒ M3/4,M7 ・ICEのメモリに保存→ブレーク時にパ ソコンに転送 ・対応しているかはCPU依存 M3/4,M7 ・データ⽋落可能性→⼩ ※データ線の本数に依存する (注意点)実装により機能が外されることがあります。 6 JTAG/SWD接続で実現する基本デバッグ JTAG/SWD接続で実現する基本デバッグ CoreSightテクノロジを活⽤し、様々なデバッグが実現可能 • 実⾏制御 • 停⽌ • 実⾏ • ステップ実⾏ • ブレークポイント • コードブレークポイント • データブレークポイント • ベクタキャッチ 接続⽅式はソフト的に 切り替え可能 • 表⽰ • 変数 • メモリ • レジスタ 8 基本デバッグ:実⾏制御 デバッグ画⾯のアイコンあるいは、メニュー、ショートカットで制御 デバッグの終了 実⾏ カーソルまで実⾏ 次のステートメント ステップアウト ステップイン ステップオーバ ブレーク リセット 9 基本デバッグ:ブレークポイント ブレークポイントはコアにより、対応する数が異なる。 Flashメモリに対しコー ドブレークを設定 RAMメモリに対し コードブレークを設定 静的変数のアドレスア クセスに対し、ブレー クを設定 ハードウェア ブレークポイント ソフトウェア ブレークポイント データ ブレーク Cortex-M0/M0+ 2 ∞ 2 Cortex-M3/M4 6 ∞ 4 Cortex-M7 8 ∞ 4 クリックで設置 もう⼀度クリックで解除 10 基本デバッグ:ブレークポイント データブレークポイントで、データ異常を検知 静的変数を右クリックし、データブレークポイントを 設定。 変数へのアクセスでブレーク 表⽰>ブレークポイントで 右クリック>編集 リード、ライトアクセス指定可能 11 基本デバッグ:ブレークポイント ICEによっては、ベクタテーブルにブレークポイントを設置できる リセットイベント発⽣ 12 基本デバッグ:表⽰機能 基本的な変数ウォッチ以外にも多くの表⽰機能を使⽤可能 ウィンドウ 更新タイミング 観測対象 の選択 観測可能なもの オート C-SPY停⽌時 ⾃動 実⾏近くの⽂や式にある変数や式 ローカル C-SPY停⽌時 ⾃動 現在の関数のローカル変数および引数 静的 C-SPY停⽌時 ⾃動 静的変数 ただし、volatile変数は除く ウォッチ C-SPY停⽌時 ⼈⼿ C-SPY式や変数値をモニタ可能。配列/構造体/共⽤体は展 開可能。 シンボル C-SPY停⽌時 ⾃動 静的な位置情報を持つ変数、関数などすべて表⽰ メモリ C-SPY停⽌時or 今すぐ更新orラ イブ更新 ⾃動 メモリ上の値 スタック C-SPY停⽌時 ⾃動 スタック レジスタ C-SPY停⽌時 ⾃動 CPUレジスタ/周辺レジスタ クイック 再評価ボタンor 式の⼊⼒ ⼈⼿ C-SPYマクロ、関数、C-SPY式や変数や式などを評価可能。 ライブ 実⾏時(サンプ リング*1) ⼈⼿ 特定のアドレスに配置された変数(ローカル変数のように スタック上の変数は観測不可) 13 基本デバッグ:表⽰機能 ライブウォッチやメモリは、実⾏を停めずに更新可能 変数値を実⾏しながら 観測可能 メモリ画⾯でも ライブ機能が利⽤可能 ツール>オプション デバッガ から更新間隔を設定 ※デフォルト 1000m秒 14 基本デバッグ:表⽰機能 レジスタからサイクルカウンタの確認可能 →ニ点間処理速度計測 表⽰>レジスタ>CPUレジスタ CYCLECOUNTER 64bitの起動からのサイクル数 ※書き込み可能 CCTIMER1 / CCTIMER2 CYCLECOUNTERのソフト拡張 任意に書き込み可能 2,742,812,247 + 126 = 2,742,812,373 前回CYCLECOUNTER CCSTEP CCSTEP 前回表⽰(ブレーク)時からの 経過サイクル数。 現在CYCLECOUNTER 15 Cortex-M3/4、M7のSWOトレース機能 SWD+SWOを使⽤して、トレース実現 SWD経由で機能を有効にすることで、SWOから様々なデータを取得可能 ※M3/M4,M7のみ対応 • SWOトレース • 割込みログ • データログ • イベントログ • ⾼速printf JTAG接続では、SWOピンを他の⽤途で使 ⽤するため、SWOは使えない 17 SWOトレース 定期的にプログラムカウンタを取得し、簡易トレース実現 [ICE] > SWOトレース サイクルカウンタ 実⾏命令 実⾏アドレス 数百から数千サイクルに⼀度プログラムカウンタを取得 ※CPUオーバヘッドなし 18 割込みログ 各種割込みの、開始、終了を⾃動的にログ収集 [ICE] > 割込みログ 発⽣時間 割込み名 In / Out 終了するまでの 処理時間 ※CPUオーバヘッドなし 19 データログ 指定した静的変数(M3/M4は最⼤4つ)へのアクセスログを⽣成 [ICE] > データログ 発⽣時間 実⾏アドレス データの値 変数のアドレス 表⽰ > ブレークポイントから 右クリック>編集 で設定可能 ※CPUオーバヘッドなし 20 イベントログ (1/2) 専⽤コードを記述することで、コードの実⾏履歴を取得可能 arm_itm.hをインクルード ⼀つ⽬の引数:チャンネル(1-4) ⼆つ⽬の引数:任意の値(変数も可) 20-40サイクル程度のCPUオーバヘッド 21 イベントログ (2/2) 専⽤コードを記述することで、コードの実⾏履歴を取得可能 発⽣時間 実⾏アドレス チャンネル1の データの値 データの値 チャンネル2の データの値 22 ⾼速printf (1/2) SWOのITMポート0を使って、printf出⼒可能 stdio.hをinclude インタフェースは SWD固定になる stdoutをSWO経由 に指定 ※printf⾃体のオーバヘッドは⼤きい 23 ⾼速printf (2/2) SWOのITMポート0を使って、printf出⼒可能 表⽰>ターミナルI/Oを開いて実⾏ stdoutをセミホスティング経由に指 定するとJTAG/SWDでprintf出⼒ JTAGも選択可能 24 Cortex-M3/4のETMトレース機能 Cortex-M3/4のETMトレース機能 JTAG/SWDとは別に、専⽤TRACEポートから実⾏履歴データを取得 ※取得データを元に解析・表⽰ • ETMトレース ETMトレース設定 • 関数トレース • 関数プロファイラ • コードカバレッジ MCUからの出⼒ 26 Cortex-M3/4のETMトレース機能 ETMトレース対応ICE(I-jet Traceなど)の内蔵メモリに トレースデータを蓄積し、デバッグ停⽌時にPCに転送 ICE内蔵メモリに トレースデータを蓄積 トレース データ 27 ETMトレース 実⾏の開始から停⽌までのトレースデータを取得 有効化 アドレス 命令 命令モード (Thumb固定) 28 関数トレース ETMトレースの結果を、関数In/Outで解析表⽰ 有効化 関数の開始 アドレス 関数の実⾏ 命令モード (Thumb固定) 29 関数プロファイラ 関数ごとの呼び出し回数および、コードの実⾏時間を表⽰ 有効化 関数名 関数⾃体の 実⾏時間 関数の呼び出 し回数 関数から呼ぶ内部関数 も含めた実⾏時間 全トレース データ内の割合 全トレース データ内の割合 30 コードカバレッジ アプリケーション内の各関数のコード実⾏率を表⽰ 有効化 クリックで展開 緑:100%実⾏ ⾚:0%実⾏ 31 まとめ まとめ Cortex-Mベースのデバイスには、強⼒なデバッグモ ジュールが搭載されている。 CPU停⽌時の表⽰系には、解析につながる様々なウィン ドウが⽤意されている。 SWOトレースを応⽤することで、リアルタイム系の解析 が可能となる。 クリティカルなトラブルや、統計にはETMトレースが有 効な解決⼿段となる。 33 本資料について 本資料取り扱い上の注意 本資料は2015年4⽉1⽇時点の情報を基に作成されており、将来変更の可能性 のあるものです。あわせてご紹介する設定や機能に関連して、動作保証をお約束す るものではございませんので、ご了承ください 本資料で提供している情報は、ご利⽤されている⽅のご判断・責任においてご使⽤ ください。提供した情報に関連して、ご利⽤される⽅が不利益等を被る事態が⽣じ たとしても、弊社及び執筆者は⼀切の責任を負いかねますので、ご了承ください。 本資料の内容に関する弊社または各社へのお問合せはご遠慮ください。 本資料及びデータの再配布・無断転⽤・転載等はご遠慮ください。 35 商標について • IAR Systems, IAR Embedded Workbench, C-SPY, C-RUN, C-STAT, visualSTATE, Focus on Your Code, IAR KickStart Kit, I-jet, I-scope, IAR, お よび IAR Systems のロゴタイプはIAR Systems ABが所有する商標または登録 商標です。 • ARMおよびCortexは、ARM Limited(またはその⼦会社)のEUまたはその他の 国における登録商標です。CoreSightは、ARM Limited(またはその⼦会社)の EUまたはその他の国における商標です。 All rights reserved. • STM32は、STマイクロエレクトロニクスの登録商標です。 • その他、本資料中の製品名やサービス名は全てそれぞれの所有者に属する商標ま たは登録商標です。 36
© Copyright 2024 ExpyDoc