このサイトのキャッチフレーズです。デバッグが好きな人はいないと思います。仕事でも趣味でも時間と労力をとられてしまい、心すら折れてしまうのがバグ(不具合)です。とうぜん大嫌い!です。
◀ この記事の前に: 複数のMCUをつなぐ
▶ この記事の次に:
デバッグとは
デバッグは英語で “debug”と書きます。de + bug で debug です。”bug”とは「虫」です。除去するという接頭辞 “de”を関して “debug”です。虫を除去するという意味です。
ここでいう虫は害虫であり、プログラムや電子回路の不具合のことを「害虫」と見なして「虫を除去する」ということです。不具合を除去して正しく動作するように対策することを言います。
デバッグが好な仙人もいる
発売前の製品、開発設計の段階ではデバッグを重ねることになります。しかし、設計のも締め切り(納期)があり、デバッグが多くなると時間に迫られることが多くなります。とてもストレスが多くなります。
技術者であればそのような状況を好む人は多分いないと思います。しかし、仙人のような人もごく希にいます。バグを解決したときの達成感を感じてしまった人です。そうなれれば良いのですが、多くの技術者にとってデバッグはつらい作業です。そもそも不具合(バグ)がないことが大切なのですが、最初からバグをゼロにすることは至難の業です。
原因が分からない
バグの対策は大きくは三段階に分かれています。以下のとおりです。
- バグを発見する
- バグの原因を見つける
- 対策する
バグの対策には原因を特定することが必要です。どこにどのような原因があるのかわからないと対策することはできません。この原因を見つけることが難しいのです。特にプログラムの場合は原因を特定できれば、対策することは難しくないことが多いと思います。
なぜ、原因を見つけることが難しいのでしょうか。客観視することが難しいことが要因のひとつです。
「プログラムは書いたとおりに動作する。」
まさにこのとおりなのですが、多くの技術者は「プログラムは思ったとおりに動作する」と思っているのです。自分の中の想いを否定する、自分を疑わないと見えてこないのです。自己否定はとても難しいと思います。( 筆者の個人的な感想です。)
組み込みシステムはバグが許されない
製品の設計で不具合は越したことはありません。と言うかあってはなりません。しかし、完全になくすことはとても難しく、PCなどのプログラムはアップデートの名の下に機能向上ばかりでなく不具合の修正を行うことが多くなっています。
PCなどのプログラムのようにアップデートができる場合は良いのですが、組み込みシステムはアップデートできなかったり、容易でない場合が少なくありません。例えば電子炊飯器に組み込まれているコンピュータ(MCU)にバグがあった場合、その利用者はアップデートしてくれるでしょうか。多分、製品の修理や交換になります。医療機器みたいな高い信頼性が求められる場合、海底ケーブルの場合はどうでしょうか。バグがあること自体が問題であったり、アップデートが難しいのではないでしょうか。
プログラムを ICに書き込み、変更ができない場合もあります。(マスクROMというメモリの場合)この場合は ICを作り直すところからやり直す必要があります。とても高い費用がかかります。組み込みシステムは簡単にプログラムを変更することができないため、バグが許されない場合が多くなります。
バグを少なくする方法
ハードウエアから設計するときは、使用する MCUも自分で選択します。必要な機能を事前に明確にしておきます。これを仕様を作成すると言います。仕様を作成した後にその仕様に見合う MCUを選択します。ハードウエアを設計せずに購入するときは、ボードの機能を調べてその使用に見合うボードを選択します。
参考情報
参考になる情報は以下のとおりです。
このホームページ内
- 複数のMCUをつなぐ: このロボットには複数の MCUが搭載されています。その MCU間の接続の概要です。
他のWebサイト
- SN74LVC1G3157 SPDT アナログスイッチ Datasheet