あなたが書く;
「マイクロコントローラー用に書かれたコードの多くは、構成とデータ値のレジスターへの書き込み、レジスターからの受信データの読み取り、および割り込みイベントへの応答を中心に展開しています」.
これは実際にはよくあることに同意しますが、実際にはこれが良いことだとは思いません。物事を少し考え直すと、テストの目標を達成するのに役立つと思います。
おそらく、マイクロコントローラーのプログラマーは好きなときに手を伸ばしてハードウェアに触れることができるため、多くの (ほとんどの?) プログラマーは、コード全体でまさにそれを行う習慣を身につけています。多くの場合、この習慣は疑う余地なく守られています。おそらく、この種の作業を行っている非常に多くの人々が、トレーニングや傾向によってコンピューター サイエンティストではなく EE であるためです。私は知っています、私は自分でそのように始めました。
私が言おうとしているのは、マイクロコントローラ プロジェクトは、他のソフトウェア プロジェクトと同じように適切に設計できるし、適切に設計する必要があるということです。優れた設計の非常に重要な部分は、ハードウェア ドライバーへのハードウェア アクセスを制限することです。レジスタの書き込み、割り込みへの応答などを行うすべてのコードをモジュールに分割し、ソフトウェアの残りの部分にハードウェアへの適切でクリーンな抽象化されたアクセスを提供します。ロジック アナライザー、オシロスコープ、カスタム テスト リグ、またはその他の適切なものを使用して、ターゲット上でこれらのドライバー モジュールをテストします。
非常に重要な点は、ソフトウェアの残りの部分 (できれば大部分) が、ホスト システムで実行およびテストできる単なる C コードになっていることです。ホスト システムでは、テスト対象のコードが何を行っているかを可視化できるように、ハードウェア モジュールがスタブ アウトされます。このコードでは、主流の単体テスト アプローチを使用できます。これにはいくつかの準備と作業が必要ですが、よく整理されていれば、すべてのプロジェクトに適用できる再利用可能なシステムを作成できます。潜在的なメリットは計り知れません。ここで、これらのアイデアについてもう少し詳しく書きました。
[ http://discuss.joelonsoftware.com/default.asp?joel.3.530964.12][1]