よくある質問(FAQ)

テスト環境を構築するとき「オブジェクトコード」に関して必要な設定を教えてください。

設定について

質問

「カバレッジマスターwinAMS」でテスト環境を構築するとき、オブジェクトコードに関して必要な設定について教えてください。

回答

コンパイルされたオブジェクトコードを動作させるためには、下記の設定が必要です。

1)コンパイルされたオブジェクトコードをOMF変換する

「カバレッジマスターwinAMS」でテスト対象とするオブジェクトは、コンパイルおよびリンクが完了した「実行可能なオブジェクトコード」である必要があります。また、当該ファイルにはデバッグ情報が含まれている必要があります。コンパイルの際は、必ずデバッグ情報出力オプション(例:-gdwarf2)を指定してください。なお、最適化等のその他のコンパイルオプションについては、製品に適用するものと同一の設定で問題ありません。
生成したオブジェクトコードは、「カバレッジマスターwinAMS」が読み込める形式(*.xlo)へ変換する必要があります。この変換設定は、「OMFコンバート」画面にて行ってください。

2)スタートアップルーチンを正しく動作させる様に設定する

「カバレッジマスターwinAMS」ではマイコンシミュレータを使用します。シミュレーションは、通常「オブジェクコード」に組み込まれた「スタートアップルーチン」から開始されるため、起動時にPC(プログラムカウンタ)をリセットベクタへ正しく設定する必要があります。この設定は、「起動設定」画面で指定するスタートアップコマンドファイル(SS_STARTUP.txt)内のスクリプトによって行われます。

通常は、スタートアップコマンドファイルに @reset コマンドを記述しておくことで、起動時にリセットシーケンス(リセットベクタを読み出しPCへのセット)が自動実行されます。ただし、RTOSの介在やユーザー独自のマイコン設定がある場合、PC値が正しく設定されないことがあります。その場合は、以下のようなスクリプトを記述し、リセット時のスタートアドレスを直接PCへ設定してください。なお、適切なアドレス値については、マイコンのユーザマニュアルやマップファイル等で事前に確認しておく必要があります。

set reg pc = 0x********  ; ←リセット時のスタートアドレス
リセットアドレスには「オブジェクトコード」にあるシンボルの名称を使う事もできます。

(例)
set reg pc = PowerON_Reset  ; PowerON_Reset()がリセット時の関数の場合
このリセット時のアドレスが適切でない場合は、シミュレータ実行時に下記のエラー等が発生します。
「Invalid Operation code found [code = 16] (pc=********)」

3)スタートアップルーチンの終了位置を指定する

実際の動作では、スタートアップルーチン実行後、main()関数に移行しアプリケーションが実行が開始しますが、「カバレッジマスターwinAMS」では スタートアップルーチン実行後、main()関数は実行せず、直接テスト対象の関数へ移動し (PCがテスト対象関数にセットされる) テストが行われます。

スタートアップルーチンの終了位置を、「テスト設定」画面の「初期設定終了アドレス」で行います。設定したアドレスが単体テストの起点となり、ここからテスト対象関数へ直接ジャンプして実行が行われます。

main関数の名称が「main」の場合であれば、デフォルトのまま main+0x0 を指定します。
main関数の名称が異なる場合には、そのシンボル名称を指定します。