「カバレッジマスターwinAMS」でテスト環境を構築するとき、オブジェクトコードに関して必要な設定について教えてください。
よくある質問(FAQ)
「カバレッジマスターwinAMS」でテスト環境を構築するとき、オブジェクトコードに関して必要な設定について教えてください。
コンパイルされたオブジェクトコードを動作させるためには、下記の設定が必要です。
「カバレッジマスターwinAMS」でテスト対象とする「オブジェクトコード」は、コンパイル&リンクされた実行可能な「オブジェクトコード」である必要があります。また「オブジェクトコード」にはデバッグ情報が含まれている必要があります。コンパイル時、デバッグ情報を出力するオプション (例: -gdwarf2) を指定してコンパイルを行ってください。最適化などその他の「コンパイルオプション」は、実際に適用するものを使用して問題ありません。生成した「オブジェクトコード」は「カバレッジマスターwinAMS」が読み込める形式 (*.xlo) に変換する必要があります。OMF変換の設定は「OMFコンバート」画面で行います。
「カバレッジマスター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=********)」
実際の動作では、スタートアップルーチン実行後、main()関数に移行しアプリケーションが実行が開始しますが、「カバレッジマスターwinAMS」では スタートアップルーチン実行後、main()関数は実行せず、直接テスト対象の関数へ移動し (PCがテスト対象関数にセットされる) テストが行われます。
スタートアップルーチンの終了位置を、「テスト設定」画面の「初期設定終了アドレス」で行います。設定したアドレスが単体テストの起点となり、ここからテスト対象関数へ直接ジャンプして実行が行われます。
main関数の名称が「main」の場合であれば、デフォルトのまま main+0x0 を指定します。
main関数の名称が異なる場合には、そのシンボル名称を指定します。