旧タイトル『DS-5 活用テクニック~ブレークポイント設定のコツ』のアップデート版です。
インテル® SoC FPGA 向けのソフトウェア統合開発環境として標準採用される Arm 純正ツールが Arm® DS-5 for Intel® SoC FPGA Edition (DS-5) から Arm® Development Studio for Intel® SoC FPGA Edition (Arm® DS) へと変更になりました。Arm® DS は DS-5 の後継製品となっており使い勝手は大きくは変わりません。このシリーズ記事の内容も Arm® DS / DS-5 両方に適用できるものが大半ですが、違いがある箇所はその旨明記する形でアップデートしています。
***
この記事では、インテル® SoC FPGA 向けのソフトウェア統合開発環境として利用可能な Arm® DS / DS-5 の使い方に関する補足情報を記載します。
今回は、ソフトウェアのデバッグ作業時には必ずと言っていいほど使用される「ブレークポイント」の種類とその違い、実際の使い方について紹介します。この記事では基本的な内容のみを記載していますので、デバッガーの使い方の詳細については、Arm® DS / DS-5 のマニュアルを参照してください。
Arm® Development Studio ドキュメント・ページ(Arm® Developer サイト)
DS-5 ドキュメント・ページ(Arm® Developer サイト)
Arm® DS / DS-5 のブレークポイント機能
ブレークポイントの種類
一般的にブレークポイントの種類には、ハードウェア (HW)・ブレークポイントとソフトウェア (SW)・ブレークポイントの2通りが存在しますが、Arm® DS / DS-5 においても HW ブレークポイントと SW ブレークポイントを使い分けることが可能です。
現在設定されているブレークポイントが HW と SW のどちらになっているかは、図 1 に示すアイコンで区別できるようになっています。もしくは、専用の画面(ブレークポイント・ビュー)の表示で確認することもできます。
※Arm® DS の場合、標準の画面配置上にはブレークポイント・ビューが表示されていません。Arm® DS の画面上部のメニュー『 Window → Show View → ブレークポイント 』より追加してください。
ブレークポイントの指定方法
ブレークポイントの指定方法を 図 2 に示します。基本的にはソースコードの左側(もしくは逆アセンブル画面の左側)をクリックして行います。指定済みのブレークポイントをまとめて確認・変更したい場合には 図3 のブレークポイント・ビューでの操作がおすすめです。
※右クリックメニューからブレークポイントを設定する場合、Arm® DS と DS-5 でメニューの名称が異なります。Arm® DS の場合は「DS ブレークポイント」以下から指定したい項目を選択します。
ブレークポイント・ビューの操作メニューの中で、「ブレークポイントの無効化」と「ファイルに移動」が便利で特におすすめです。
「ブレークポイントの無効化」は、リスト左側のチェックボックスの ON/OFF 切り替えのみで、登録済みのブレークポイントを一時的に無効化することができます。無効化中はブレークポイントの処理が実行されても CPU はブレークしません。
また、「ファイルに移動」メニューでは、ブレークポイントとして登録されているソースコードの該当行を一発で表示させることができるので、複雑なプログラムをデバッグする際に役立ちます。
他にも便利な機能が用意されているので実際にデバッガを操作して確認してみてください。(ブレークポイントのプロパティを変更することで複雑なブレーク条件を指定することもできるようになっています)
HW ブレークと SW ブレークの違い
以下の表に HW ブレークと SW ブレークの違い、特徴をまとめます。
種類 | 特徴 | 設定可能数 |
HW ブレーク |
|
6 |
SW ブレーク |
|
無制限 |
HW ブレークと SW ブレークの最も大きな違いは、プログラムの書き換えを伴うか否かです。
SW ブレークポイントはプログラムの書き換えを伴います。そのため、デバッグ中にプログラムがリロードさるような場合や、不具合によりブレークポイント周辺のプログラムメモリーが破壊されるようなケースには対応できません。また、メモリーの保護機能や Flash 上のプログラムを直接実行する(XIP)など、プログラムエリアの書き換えが行えないシステムでは使用することができません。
HW ブレークポイントであれば、プログラムの書き換えを伴わないため、SW ブレークポイントのような制約事項はありません。
HW ブレークポイントの方が機能的には優れていますが、登録可能なブレークポイント数に上限があります。そのため、登録したいブレークポイントが多い場合には、SW ブレークと HW ブレークを併用して使用することになります。
ブレークポイントの使用例
以下、ブレークポイントの便利な使い方について2通りの例を紹介します。
ユースケース1:例外発生の瞬間を捕捉
リセットやアボートなど、異常系の例外割り込み発生に備えて、割り込みベクターにブレークポイントを設定しておくと、不具合の発生箇所を調査する際に非常に役立ちます。
ソフトウェアが異常な動作を行った結果、不正なアドレスへの Read/Write アクセスが発生してデータアボートなどの例外割り込みが発生することがありますが、割り込みベクターにブレークポイントをセットしておくことで、例外発生の瞬間を捉えることができます。
以下の記事で紹介するトレース機能を併用することで、例外発生の直前にソフトウェアが行った処理を遡って確認することもできます。
割り込みベクターにブレークポイントを設定する方法を図 4 に示します。
ユースケース2:ブレーク条件の指定
Arm® DS / DS-5 のブレークポイント機能は、指定箇所のコードが実行された場合に無条件にブレークを行う以外に、ブレーク条件を与えることもできるようになっています。
例えば、ある処理が 100 回実行された以降の動作をデバッグしたい場合などに有用です。具体的には、ブレークポイントの停止条件の「無視する回数」に 99 を指定すると 100 回目でブレークする動作となります。
回数以外にも条件式を与えることで複雑な条件を作ることも可能になっているので、いちど各種設定をお試し頂くことをおすすめします。
以下、ブレーク条件の指定方法を図 5 に示します。
以上、今回はブレークポイント機能の使い方を紹介させて頂きました。ブレークポイント自体はデバッガーとして当たり前の機能ですが、Arm® DS / DS-5 には複雑なブレーク条件の指定など、便利な機能が多数備わります。これらの機能を活用して、ソフトウェアの検証作業や不具合調査の効率化に役立てて頂ければ幸いです。
おすすめ記事/資料はこちら
Arm DS 活用に関する記事一覧
SoC FPGA 関連の記事や資料
インテル® FPGA の SoC FPGA
インテル® FPGA の開発フロー/FPGA トップページ
おすすめ FAQ はこちら
おすすめセミナー/ワークショップはこちら
インテル® SoC FPGA Seminar in a Box: 自席で自由な時間にSoC FPGA の設計フローを習得