ホーム > ユーザーサポート > FAQ カバレッジマスターwinAMS

FAQ / カバレッジマスターwinAMS

ツール起動・スタートアップに関する問題

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

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

【回答】
カバレッジマスターで、コンパイルされたオブジェクトコードを動作させるためには、必要な設定事項があります。以下の手順を参考にしてください。

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

カバレッジマスターでテスト対象とするオブジェクトコードは、コンパイル&リンクされ、実行可能なオブジェクトコードである必要があります。また、オブジェクトコードにはデバッグ情報が含まれている必要があります。使用する開発環境にて、デバッグ情報を出力するオプションをONにした状態で、コンパイルを行ってください。最適化などその他のコンパイルオプションは、実際に製品に適用するものを使用して問題ありません。

ガイオのクロスコンパイラ(XASSVシリーズ)以外の他社製のコンパイラを使用する際には、オブジェクトコードをカバレッジマスターが読み込める形式(*.xlo)のファイルに変換する必要があります。カバレッジマスターには、「OMF変換」(OMF = Object Module Format)の機能が内蔵されており、この機能を使用して他社のオブジェクトファイル(ルネサスHEWでは *.abs、PM+では *.out など)をカバレッジマスターが読み込める形式(*.xlo)に変換する必要があります。この変換設定は、「OMFコンバート」のビューで行います。

 (参考FAQ)オブジェクトファイル・OMF変換に関する問題

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

カバレッジマスターで使用するマイコンシミュレータは、実機のマイコンと同じ仕組みを持っています。そのため、マイコンシミュレータを動作させるためには、スタックポインタ、レジスタ設定など、実際の製品で動作する状態と同じにする必要があります。

カバレッジマスターは、このマイコン初期状態の設定を、オブジェクトに組み込まれたスタートアップルーチンを使用し、動作させて行います。そのため、マイコンシミュレータ起動時に、PC(プログラムカウンタ)をリセットベクタに設定する必要があります。これはスタートアップコマンドファイルに記述するスクリプト(マクロ)によって行われます。

 ※スタートアップコマンドファイル : 「起動設定」ビューに設定されています

通常のマイコンには「@reset」というコマンドがあり、これをスタートアップコマンドファイルに設定しておくことで、マイコンシミュレータ起動時に、マイコンのハードウエア仕様に基づきリセットシーケンス(リセットベクタを読み出しPCにセットする)が動作するようになっています。

ただし、OSが介在する場合や、ユーザーが独自の設定をマイコンに行っている場合は、リセット時のアドレスがPC値に正しく設定されない場合が有ります。この際には、以下の様なスクリプトをスタートアップコマンドファイルに設定して、リセット時のスタートアドレスをPCに設定します。リセット時のスタートアドレス値は、マイコンのマニュアルやメモリマップ情報を参照して調べる必要があります。

 set reg pc = 0x******** ; ←リセット時のスタートアドレス

リセットアドレスには、オブジェクトコードにあるシンボルの名称を使う事もできます。

 (例)set reg pc = PowerON_Reset ; PowerON_Reset()がリセット時の関数の場合

このリセット時のアドレスが適切でない場合は、シミュレータ起動時に、
  「Invalid Operation code found [code = 16] (pc=********)」
などのエラーが発生します。

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

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

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

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

 参考FAQ:011_02 : 「テスト設定」ビューにある「初期設定終了アドレス」とは何ですか?

 

関連サポート情報検索

【サポート情報サイト内Google検索】

検索キーワード: スタートアップルーチン | マイコン設定

他のキーワード検索

 





参考情報・リンク