ホーム > ユーザーサポート > FAQ カバレッジマスターwinAMS
【質問】
MC/DC、C0、C1のカバレッジ計測に、オブジェクト構造の影響を受けない「埋め込みコード」の機能を使用したいのですが、埋め込みを行ったコードをコンパイルしたところ、オブジェクトサイズが大きくなりマイコンのROM容量を超えてしまいます。どのようにすれば良いですか?
【回答】
回避方法には以下の通りです。
1)埋め込みコードの適用範囲を制限する
埋め込みを行うコードは、ソースファイル単位に選択できます。テスト対象の関数が含まれるソースファイルのみに埋め込みを行う事で、オブジェクトコードサイズの増加を回避することができます。
CasePlayer2 → [プロジェクトメニュー] → [埋め込みコードビルド環境生成]にて、「埋め込みコードの設定」タブで、テスト対象の関数があるソースのみを選択してください。(下図参照)
2)圧縮埋め込みの機能を使用する
カバレッジマスターには、埋め込みコードのサイズを小さくする「圧縮埋め込みコード(フックコード)を使用する」という機能があります。マイコンやコンパイラにより縮小できるサイズは異なりますが、このオプションをONにすることで、埋め込みコードの冗長性を抑えて、生成オブジェクトコードを小さくします。
3)使用しているマイコンと同じシリーズの別型番で、ROM容量の大きい型番でコンパイルする
同じシリーズのマイコンで、実際のマイコンよりもROM容量の大きなマイコンが有る場合であれば、埋め込みコードのコンパイル環境のみ、ROM容量の大きな型番を指定して、埋め込みコードのオブジェクトを生成する回避方法があります。
埋め込みコードからの計測の仕組みは、マイコンのオブジェクト構造には依存せず、埋め込んだフック関数の機能により計測されます。このため、実際のマイコンと異なる型番で実行した場合でも、そのコードが実行可能であれば、MC/DCテスト結果には影響を与えません。
実コード(製品実装と同じ)のコンパイル環境はそのままにして、埋め込みコードのコンパイル環境のみに上記のROM容量の大きい型番を選択してオブジェクトを生成してください。関数実行後の出力変数の値の評価は、埋め込みコード側ではなく、並行して動作する実コードの方から取得されますので、カバレッジ計測以外の単体テスト結果には影響はありません。
4)上記の回避方法を使用してもROM容量を超えてしまう場合は、オブジェクトを調整する
1つのソースファイルを埋め込み対象にしただけでも、オブジェクトコードのROM容量をオーバーしてしまう場合は、テストに関係しないオブジェクトをリンクから外すなどの方法で、テスト実行に影響しない範囲でオブジェクトを小さくするしか、回避方法はございません。
(参考)入門セミナー資料からの抜粋: (参考)埋め込みコードによるコードサイズ増加(PDFファイル)