Microchip 社のMPLAB X 1.60でXC8 Cコンパイラ1.12を使用してブートローダを開発しています。対象チップはPIC18F87J60です。私のブートローダは、ブートローダが通常行わないいくつかの追加のことを行います。アプリ イメージをダウンロードしてサーバーからフラッシュし、MD5ハッシュサムを計算してその整合性を検証します。また、このプロジェクトに固有のサーバーで認証テストに合格する必要があります。これらすべてを機能させるために、私は Microchip の TCP/IP スタックv5.42を使用しています。
今やりたいことは、ブートローダーを徹底的にテストすることですが、正しい方法とツールを選択するのに苦労しています. Pickit 3 ICDにはアクセスできますが、ロジック アナライザーなどの他の専用ハードウェアにはアクセスできません (オシロスコープを除く)。ブートローダは階層的なFSMとして実装されているため、さらに複雑になる場合があります (またはそうでない場合もあります)。
少なくとも、ブートローダーのすべての異なる部分の単体テスト/モジュール テストを考え、FSM のすべての状態を個別の機能と見なしていました。インターネット上にはいくつかの単体テスト フレームワークがあり、そのうちのいくつかは、私のような組み込み環境や制限付き環境で使用できると主張しています。
それらの問題は、ほとんどが何らかのCライブラリとして実装され、プログラムの残りの部分と一緒にコンパイルされることですが、それらはすべて、コンパイラが何らかの標準に従うことを期待しています。XC8コンパイラは実際にはC90標準に準拠していますが、完全には拡張されていません(ドキュメントの「ANSI C標準からの逸脱」の章から明らかです) 。これは、フレームワークのコンパイルで問題を引き起こしています。
すべてのハードウェアとレジスタ アクセスをモックアップし、Windows 7 開発マシンでテストすることでこの問題を回避できるかもしれませんが、ブートローダーが大きく依存している TCP/IP ライブラリを使用しているため、それは膨大な作業になります。もう 1 つの欠点は、C コードがインテル i7とは異なる動作を PIC チップ上で行う可能性があるため、最終的にはチップ上でテストしたいということです。
ブートローダーを適切に行う方法について誰かアイデアがありunit-/moduletest
ますか? そのようなプラットフォームでそのようなプログラムを単体テストすることは良い考えですか? 他に使用できるテスト方法はありますか?
要件/前提条件/メモ:
- ホワイトボックステストの方法について話しています。現時点では、ブラックボックス テストは苦痛ではありません。さらに、機能的にブートローダーはコンパイルされておらず、すべての機能要件は測定可能です。
- テストを可能な限り自動化し、「コンパイル」を押したときにテストを自動的にトリガーしたいと考えています。
- 厳密なパフォーマンス要件はなく、予備の ROM メモリもいくつかあるので、多くのプローブを配置するようなコード計測は大きな問題にはなりません。
- 私はテストの達人ではありません。上記で使用した派手な言葉は、ほんの数時間の調査から得たものですが、実際のテスト経験はありません.
ご意見やご提案をお寄せいただきありがとうございます。
ビットジャンキー、