新人技術者のためのロジカル・シンキング入門(6) ―― ハードウェア基礎の基礎

冴木 元

tag: 組み込み

技術解説 2008年9月25日

【4】回路を使いこなすための具体例(1/2)

 以上をまとめて,冒頭の例にあったような割り込みハンドラの中にアルゴリズムを実装する場合について考えてみましょう.図9に示すように,「デバイス1」と呼ばれる回路の割り込みを契機としてアルゴリズムが駆動されるケースを考えてみます.

zu09_01.gif
図9 割り込みハンドラの中にアルゴリズムを実装する例
図は,デバイス1の割り込みでアルゴリズムが起動する実装の例.(1) デバイス1そのものの設定,(2) 外部回路から割り込み信号が届く経路の確保,(3) ハンドラの実装,(4) アルゴリズムの組み込み,がそれぞれ必要.

 まず,デバイス1そのものの設定が必要であることはいうまでもないでしょう.このデバイスの仕様を調べてレジスタに設定を行い,動作することを確認します.

 次に,デバイス1がCPUに対して外部にある場合など,割り込みをCPUにたどり着かせるためにもマルチプレクサの設定などが必要となることがあります.その場合,割り込み線をどのように割り当てればよいのかを調べます.最終的に,デバイス1の割り込みがCPUの「割り込みの何番」にたどり着くのかを調べ,実装します.

 続いて,割り込みが無事CPUにたどり着くことが確認できれば,割り込みハンドラを実装します.割り込みの実装だと少し敷居が高いという場合は,まず図10(a)に示すポーリングで実装してみる,という段階を踏むこともできます.ポーリングというのは,回路の処理終了を知らせるレジスタのビットをプログラムのフラグで見張れるようにしておいて,フラグが切り替わるとCPUでは次の処理に進む方法です.

zu10_01.gif
図10 アルゴリズムを通信回路と同期させて動かす2種類の方法
(a)は処理終了をポーリングする例,(b)は割り込みハンドラを実装する例.割り込みハンドラの実装が最終的な目標でも,切り分けのために,まず(a)のように実装してみることもある.

 ここまで組み上がれば,いよいよアルゴリズムの組み込みに移ります.

 図9の(3)までの段階のテスト・プログラムが作成済みでアルゴリズムの組み込みに移るのと,いきなりアルゴリズムの組み込みに入ってしまうのには,大きな違いがあります.例えば,図9の(3)までの(アルゴリズム未実装の)段階で1時間くらいシステムを放置しても問題なく動き続けることまで確認してから,冒頭のようなバグに出くわした場合を想像してください.この場合,バグを見つけたときに「動かなくなった原因は,どうもアルゴリズムが怪しい」と推測できると思います.なぜなら,アルゴリズムが実装されていない状態では一定時間システムが問題なく動くことがすでに確認されているのですから....

 ここまで単純にいかないケースもあるでしょう.しかし,そのような場合でも回路を一つ一つ動作確認しながらプログラムを組み上げれば,途中で問題が発生しても切り分けがスムーズに進められることが少なくありません.

● 「ハードウェア透過性」の落とし穴

 近年は,組み込みの開発環境でもOSが整備され,周辺回路を設定する際にもC言語から使えるライブラリ関数が最初から用意されることも多くなってきました(図11).そして,ゼロからプログラムを組み上げなくても,提供されたサンプル・コードを使って目的のアルゴリズムを組み込むことで,システムの統合作業を進められるようになりました.ハードウェアを意識せずにソフトウェアを開発できる環境が次第に整いつつあるようにも思えます(これらをまとめて,「ハードウェア透過性の向上」と呼ぶことができる).

zu11_01.gif
図11 透過性の落とし穴
組み込み環境でもOSが整備され,アプリケーションがハードウェアを意識しないですむ環境が増えてきた.ところが,実際にはしばしばハードウェアの設定を意識せざるをえないことがあり,ブラックボックス化が逆に見通しを悪くすることもある.

 これは歓迎すべきことです.ハードウェア,ソフトウェアともに複雑化した現在の組み込み開発において,ひと昔前のように周辺回路を一つ一つ動かしてシステムを組み上げていたのでは,納期に間に合わないことが多々あるからです.

 ただしこれには,提供されるライブラリやそれによって動く周辺回路が,「完ぺきに設計されていた場合」という大前提が必要となります.組み込みの開発環境においては現実問題として,不安定な,つまりバグのあるソフトウェアやハードウェアが提供されてくることが少なからずあります.また,開発環境の品質がそこまでひどくなくても,わかりにくい動作条件を持った回路に出くわすことはしばしばあります.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日