2011-12-19 6 views
7

私はPOSIX以外の組み込みシステム用のプロジェクトを書くので、gccオプション--coverage(私は読み書きしません)を使うことはできません。 gcovのような出力を生成するために何ができるでしょうか。私は出力機能を持っています。埋め込みでコードカバレッジを行う方法

+1

コードカバレッジは、あまり一般的に組み込みシステム上で実行されます。しかし、あなたの質問に対する良い答えには、あなたのシステムについてもっと多くの詳細が必要です。どのCPU?どのようなOSですか?どのコンパイラツールチェーン? – TJD

+1

あなたは書き込み機能または読み書き機能が必要ですか?書き込み(オープン、クローズ、ライト)だけの場合は、自分で作成し、書き込み出力をシリアルポートに移動して他の場所に保存/ログすることができます。 –

+0

カバレッジオプションを使用できるシステムでテストをコンパイルして実行できますか? –

答えて

9

これは、トレースが組み込まれたプロセッサ、トレースポートを公開するボードデザイン、適切なハードウェアデバッガおよび関連ソフトウェアによって最も簡単に実行できます。たとえば、多くのCortex-Mベースのデバイスには、ARMの組み込みトレースマクロセル(ETM)が組み込まれています。これは、KeilのuVision IDEおよびULINK-Proデバッガでサポートされ、リアルタイムのプロファイリングと同様にコードカバレッジと命令/ハードウェアトレースには、侵入しないという利点があります。コードはリアルタイムで実行されます。

ハードウェアサポートがない場合は、シミュレーションに頼らなければならない場合があります。多くのツールチェーンには、トレース、コードカバレッジ、およびプロファイリングを実行する命令レベルシミュレータが含まれていますが、すべてのパスの実行を強制するハードウェアをシミュレートするデバッグスクリプトまたはコードスタブを作成する必要があります。

第3の選択肢は、ターゲットハードウェア依存性を置き換えるスタブを備えたデスクトッププラットフォーム上にコードを構築し、その上でテストおよびコードカバレッジを実行することです。ターゲットのCコンパイラとテストシステムのコンパイラは、ソースが同じセマンティクスで翻訳されていることを信頼する必要があります。ここでの利点は、利用可能なデバッグツールが、組み込みシステムで使用可能なものより優れていることです。ハードウェアが利用可能になる前にコードの多くをテストすることもできます。ほとんどの場合、コードをはるかに高速に実行し、より広範なテストを可能にします。

POSIX APIを持たなくても、GCCの使用を排除するものではなく、単にGNU Cライブラリの使用を排除します。 POSIXのない組み込みシステムでは、Newlibなどの代替Cライブラリが使用されます。 Newlibには、I/Oと基本的なヒープ管理が実装されたシステム移植層があります。

0

family of C/C++ test coverage toolsソースコードを組み込み、組み込みコンパイラでコンパイルしたプログラムを作成し、テストカバレッジデータをプログラムに追加された「小さな」データ構造にまとめます。これは、ANSI、GCC、Microsoft、GreenHillsなどのさまざまな方言で動作します。

埋め込み実行コンテキストからそのデータ構造をPC上のファイルにエクスポートする必要があります。これは、余分なシリアルまたはパラレルポートと、あなたのポートに特有の小さなカスタムコードで簡単に行うことができます。このツールは、テストカバレッジビューとその結果ファイルのサマリーを提供します。

したがって、ほとんどの場合、これらのツールを使用して、組み込みシステムからテストカバレッジデータを収集できます。

1

免責事項:私が働く会社(Rapita Systems)は、組み込みアプリケーションを対象としたコードカバレッジソリューションを提供しています。

エンベデッドシステムは、独自の特殊かつ幅広く変化する要件を持っているため、コードカバレッジの「最良の」ソリューションも大きく異なります。あなたはデバッガ経由で計測することなく、カバレッジを実行することができETMやNEXUS対応の部品とのARMチップのようなトレースベースのデバイスを、持っている

  • そうでない場合は、あなたが最も可能性の高い計測ベースのソリューションに直面している:RAMが制限されたソリューションについては
    • 、良い解決策は、あなたが機器を記録することができ、
    • またI/Oポートに機器を書くことですRAMバッファーを使用して、これをターゲットから抽出するためにさまざまな手段を使用します。コードカバレッジの異なる味のコースロットの

も用意されています機能、声明、決定/支店、MC/DC

関連する問題