「組み込み」ならではの基礎知識 ――スタートアップ・ルーチンからハードウェアまで
ところが,組み込みシステムの場合はそうはいきません.つまり,魔法のようなccコマンドはないのです.すでに実機でプログラムを動かした経験があって,「普通にコンパイルしてプログラムが動いたよ」という方もおられるかもしれません.でもよく思い出してください.先輩から「コンパイル環境」をもらって,コンパイル対象のファイル名を書き換えただけではないですか?そのコンパイル環境に,ccコマンドのような秘密が隠されているのです.その秘密を理解しないことには,いつまでたっても一人前の技術者にはなれません.
また,さらに経験を積むうちに,「プログラムの動作がおかしいのだが,実行するたびに動作が異なっているため,どうしてよいかわからない」とか,「ソース・レベルのデバッグができない」といった場面に出くわすことでしょう.こうしたときのために,プログラムのランタイム構造を理解しておくことはきわめて重要です.
また,WindowsやLinux/UNIX上でプログラミングする場合は,標準入出力を使ってデータを取り込んだり,デバッグ・ライトと呼ぶデバッグのための情報を出力したりできます.ところが,組み込みシステムの実機環境では,この「簡単なこと」がたいへん難しいのです.また,実機ではファイル・システムを搭載していないことがほとんどです.標準入出力やファイルといったデータの入出力を使わずに,いったいどうしているのでしょうか?
組み込み機器は,例えば「ユーザがボタンを押した」といったON/OFFの情報や,光や音などのアナログ的な情報を取り込みながら動作しています.それらのデータは通常マイコンの周辺機能を使って取り込まれ,プログラムはシリアル・インターフェースやポート,あるいは割り込み信号を介してデータを受け取ります.このようなデータの取り込みは,ある程度ハードウェアの知識を持っていると,ぐっと理解しやすくなります.