組み込みプログラムデバッグ【おすすめ:シリアルモニター】

動作チェックとしてのデバッグ

めかのとろ

プログラム転送も無事完了したところで組み込みシステムとしてハードウェアで構成した実機でプログラム動作をチェックします。プログラミングに精通しているひとにとっては改めて解説する必要はないと思いますが、デバッグというものです。あまりプログラムサイズが大きくなるとデバッグも大変であることから区切りのよいところで行うようにするのがよいです。

めかのとろ

単機能で単純なプログラムであればこの段階でほぼ完成なのですが、ある程度多機能で複雑なアプリケーションにおいては設計で想定した機能が正常に実施されているかを確認する作業が必要です。この作業がいわゆるデバッグ作業と呼ばれるものです。

めかのとろ

デバッグはとても地味で繊細で根気がいる作業です。自分との戦いでもあります。一つを解決するのに数日かかることもあります。プログラムは論理的に構成するデジタル技術なのでたった1文字の間違いでも正常に動作しません。バグには必ず原因がありますので頑張って追求してください。

めかのとろ

組み込みシステムの場合はハードウェアの動作を伴うデバッグが要求されますので、ハードウェアの知識もフル活用しながら行います。

めかのとろ

組み込みシステムではPCプログラミングと違って表示モニターがないため、いわゆるWindows等OS向けのprintf文によるデバッグができません。とはいっても、なんとかして演算結果を収めた変数の中身を確認したいことがあります。

めかのとろ

これを実現するには総合開発環境付属のデバッガを使用する場合もありますが、組み込みでよく使用される割り込み処理では使いにくいか使えないなど制約があるのが難点です。

めかのとろ

このデバッガは通常プログラムのフローや変数内容の確認するときには有用です。ツールは書き込みのときに使用していたものと同じです。

総合環境デバッガ

シリアルモニター

めかのとろ

そこで筆者がデバッグ時にもっとも頼る方法はシリアルモニターと呼ばれるものです。これはUSARTシリアル通信が使用できるマイコンであれば簡単に実現できます。

めかのとろ

シリアルモニター用にペリフェラルUARTを準備して、プログラム内でチェックしたい数値や文字などの情報シリアル通信でPCへ出力して表示させるものです。この方法を使用するためにシリアル通信の使い方については慣れておく必要はありますが、結構重宝します。

めかのとろ

ハードウェアで準備するのはマイコンとPCとをつなぐUART-USB変換ケーブルだけです。ケーブルUART側をマイコンに直結するので3.3V仕様のものです。PC側では汎用ターミナルソフトを準備しておき、シリアル通信でマイコンから送信した文字を表示させます。

シリアルモニター
UART-USB変換ケーブル

その他、まとめ

めかのとろ

他に、プログラムが正常に想定通りに進行しているかどうかを調べるために、ある条件分岐直後に何らかの出力(例えばLEDを点灯させるなど)を挿入して確認することも有効な手段です。

めかのとろ

プログラムは絶対に記述したとおりにしか動作しないのですが、いろいろな条件の付け方が甘かったり、標準関数の使い方そのものの解釈が不十分であったりすることで想定通りに動作しないことも多々あります。

めかのとろ

デバッグに行き詰まることもあるとは思いますが、原因は必ずあることを信じて妥協しないでください。

ポイント

現在はインターネットで取得できない情報はないのですが、他人の情報を理解しないままに採用してはいけません。情報はあくまでヒントとして利用し、必ず自分で理解して改良して使用するくらいになってください。
ブラックボックスのままで残しておくと、後々思わぬ落とし穴にはまらないとも限りません。常に自分の頭で考える習慣を見に付けていくといろいろ知恵もチカラもついてきます。スキルアップとはそういうことです。