新人技術者のためのロジカル・シンキング入門(6) ―― ハードウェア基礎の基礎
【4】回路を使いこなすための具体例(2/2)
● 小さく作って積み上げること
たいせつなことは,でき合いのサンプル・コードなどを流用する場合も,必要に応じてなるべく「小さな単位」に戻ることができる環境や考えかたを備えておくべき,ということになると思います.図9に挙げたような順番で回路をつなげていかなくても,いきなりアルゴリズムの組み込みに移れるようなサンプル・コードが最初から提供されていれば,それに越したことはありません.しかし,その場合でもケース・バイ・ケースで,それぞれの回路がどのように設定され,どのように使われているかを理解しておく必要があるでしょう.
一つ一つの回路には,回路が正しく動作しているかを確認するデバッグ用のレジスタが用意されていることがあります.図9の例で「割り込みがCPUまでたどり着かない」などという場合,途中の回路の確認用レジスタを一つ一つチェックすることで割り込み信号がどこで止まっているのかがわかることがあります.
● アセンブラと高級言語を使い分けて
パソコン用のOSを組み込み環境に移植したものなどは,「すべてはファイル」という設計思想で作られているものが少なくありません.この設計思想は,ファイル・ハンドラを取得して初期化関数を呼ぶという一連の手続きを踏めば,制御する対象がハード・ディスク装置であろうが,ソケットであろうが,プログラマはあまり意識することなく制御処理が書けるという利点があります.
しかし,この設計思想がかえって見通しを悪くすることもあります.例えば,デバッグのためにOSのライブラリそのもののコードを追ってみたりすると,コール・シーケンスの階層構造があまりに深すぎて見通しが悪く閉口することがあります.そのようなときに,ハードウェアの制御をアセンブラで直接書いてみたら,ひと目で見通せる程度の規模になってしまってあぜんすることも少なくありません.
ハードウェアを完全にブラックボックス化できない,というのは組み込みの開発環境ではまだしばらく消えない傾向のような気がします(図12).
図12 ハードウェア・デバッグの全体像
ソフトウェア技術者は,大まかにでもハードウェアの信号線の基本を理解する必要がある.全体像を明らかにして一つ一つモジュールを組み上げる.ハードウェア透過性の理想と現実も見分けること.
さえき・はじめ
<筆者プロフィール>
冴木 元.システム・エンジニア.最近,毎週ジョギングしているのだが,たいていルーム・ランナでこなしてしまうのが,難点か....距離が長くなると車輪をまわすネズミのような気分になってくる.秋になったら久しぶりに遠出してみるか,と思うきょうこのごろ.
tag: 技術教育