
組込みソフトのデバッグでは、実行するコード、メモリの値、スタックポインタ、割り込みのタイミング、そしてレジスタの値といったものに注目します。本稿では、統合開発環境IAR Embedded Workbench for ARMを使って、どのようにレジスタの値を確認していくかをご紹介します。基本的なものからファイルへの出力、最新版で追加された新機能まで、いくつかの特徴を取り上げます。 あなたの想像以上に、たくさんの機能が利用可能かもしれませんよ。
レジスタウィンドウ
レジスタの値を確認する基本的な機能です。View > Register(表示 > レジスタ)で表示します。
レジスタウィンドウではカテゴリごとに分けられたレジスタの値が確認できます。さらに、書き込み可能なレジスタであれば値を変更することもできます。
IAR Embedded Workbench for ARMのヴァージョン7.50以降では、 検索機能が追加されています。
レジスタがマッピングされているアドレスの確認
レジスタの値を、そのレジスタがマッピングされているアドレスによって確認したいこともあるでしょう。マイコンおよびプロセッサのベンダは多くの場合、周辺のドライバをソースコードで提供します。しかし、そういったソースコードは複雑で、各レジスタのアドレスを読み解くのが難しいことがあります。そこで、IAR Embedded Workbench for ARMが提供するレジスタ名とそのマッピングされたアドレスを確認する方法が便利です。.
Project > SFR setup(プロジェクト > SFRの設定)を見てみましょう。
SFRの設定ウィンドウが開きます。
このウィンドウは、C-SPYが把握している、定義されたSFR(Special Function Registers)の一覧を示します。ユーザは、もともと定義されたSFRのみ、追加で定義したSFRのみ、または両方を見ることができます。先頭行にあるAddress(アドレス)をクリックすると、マッピングされたアドレスでソーティングすることもできます。
デバッグ中に全レジスタの値をファイルに出力
検証中のソフトが正常に動作したり・しなかったりする場合、問題を発見するのにレジスタの値を比べてみることが有効です。一つの方法として、デバッグセッションで、全てのレジスタの値をファイルに出力することで実現できます。
Project > Save List of Registers(プロジェクト > レジスタリストを保存)を見てみましょう。
こうすることで、プロジェクトのフォルダにsfrList.txtというテキストファイルが出力されます(ファイル名は変更可能)。
出力されたファイルは、タブで区切ったレジスタのリストで構成されます。内容は、各レジスタのサイズ・アドレス・アクセスタイプになります。デバッグセッションで実行した場合、その時点での値も出力されます。
こうすることで、スプレッドシートなどで利用でき、より解析がしやすくなります。
まとめ
レジスタの値は組込みシステムで最も重要なもののひとつで、IAR Embedded Workbench for ARMはデバッグをより便利にする様々な機能を提供します。本稿では、レジスタの値をデバッグする上で利用可能な機能についてご紹介しました。さらなる詳細については、ユーザーガイドをご参照ください。