サポートの概要
サポート対象コンパイラ
サポートされる EWARM (Embedded Workbench for ARM) コンパイラ/環境バージョンについては「コンパイラ」を参照してください。
EWARM プロジェクトのインポート
cpptesttrace
を使用して EWARM プロジェクトをインポートできます。詳細については「プロジェクトのインポート」を参照してください。
コンポーネントのサポート
IAR Embedded Workbench プロジェクトのテストを容易にするために、以下のコンポーネントが提供されます。
- サポートされている ARM 用 IAR コンパイラ (上記のリストを参照) の各バージョンに対応するコンパイラ構成。
- "Use options from IAR Embedded Workbench project" オプション ソース
- "Import IAR Embedded Workbench projects" インポーター GUI
CLI/バッチ モードでのインポート: "-ewp" オプション + "settings" プロパティ: "ewp.import.config", "ewp.import.linked", "ewp.import.location", "ewp.import.subdirs", "ewp.import.pathvar.enabled", "ewp.import.pathvar.name", "ewp.import.pathvar.value"
- make を使って IAR コンパイラ v. 6.1x 以降で C++test ランタイム ライブラリをビルドするための IAR_iccarm.mk ランタイム ライブラリ ビルド構成ファイル。
- make を使って IAR コンパイラ 5.3x から 5.5x でランタイム ライブラリをビルドするための IAR_iccarm_5_5x_and_older.mk ランタイム ライブラリ ビルド構成ファイル。
- C-SPY シミュレーターで単体テストとアプリケーション テストを開始するためのテスト コンフィギュレーション
- Run IAR EW Tests (Batch Template) - EW によって生成されたバッチ スクリプト ('.cspy.bat') を使用してシミュレーターを起動
- Run IAR EW Application with Mem Monitoring (Batch Template) - EW によって生成されたバッチ スクリプト ('.cspy.bat') を使用してシミュレーターを起動
- Run IAR ARM Tests - 純粋なマニュアル シミュレーターのコンフィギュレーション
- Run IAR ARM Application with Mem Monitoring - 純粋なマニュアル シミュレーターのコンフィギュレーション
既知の制限事項
- 古いバージョンの EW によって生成されたプロジェクト、またはその他の方法で生成されたプロジェクトには、特定のオプションの記述が欠けている場合があります。GUI ベースの EW プロジェクト インポート機能を使用しているときに、この問題が発生した場合、C++test は対応するコンパイラ/リンカー オプションがないものとして処理します。この処理は、 「一部の重要なオプションに対しては内部的なデフォルト値を設定する」という EW の処理と矛盾する可能性があります。
- C++test の GUI ベースの EW プロジェクト インポート機能は、以下の IAR EW プロジェクト (.ewp) 設定をサポートしていません。
- [General Options] >[Library Configuration] > [CMSIS] > [DSP library] 設定は無視されます (リンカー オプションに関して)。
回避策: [Parasoft] > [C++test] > [ビルド設定] > [リンカーオプション] に手動で適切なライブラリを追加します。 - [General Options] >[Target] > [FPU] 設定は無視されます。
回避策: [プロジェクト プロパティ] >[Parasoft] > [C++test] > [ビルド設定] > [コンパイラオプション] に手動で適切な--fpu
オプションを追加します。 - [Linker] >[List] > [Generate linker map file] 設定は無視されます。
回避策: [プロジェクト プロパティ] >[Parasoft] > [C++test] > [ビルド設定] > [リンカーオプション] に手動で適切な--ma
p オプションを追加します。 - Cortex-Ax コアの場合、[General Options] > [Target] > [FPU] の設定にかかわらず、
.no_neon
指定されたコア名が--cpu
オプションに設定されません。
回避策: [プロジェクト プロパティ] >[Parasoft] > [C++test] > [ビルド設定] で [IAR Embedded Workbench プロジェクトのオプションを使用] を [すべてのオプションを手動で指定] に変更し、手動ですべてのオプションを指定します。
- [General Options] >[Library Configuration] > [CMSIS] > [DSP library] 設定は無視されます (リンカー オプションに関して)。
IAR ARM compiler v. 7.2x およびそれ以前に含まれるプリプロセッサの制限により、C++test は次のコードを解析できません。
#define MHZ *1000000l #define FREQ (1MHZ) void foo(long freq); void bar(void) { foo(FREQ); }
回避策:
1
とMHZ
の間に空白を挿入します。#define FREQ (1 MHZ)
- C++test は、例外がキャッチされた後に再スローされるため、
__nounwind
キーワードをサポートしていません。プログラムに__nounwind
が含まれる場合、[プロジェクト プロパティ] > [Parasoft] > [C++test] > [ビルド設定] でコンパイラ オプションに次のマクロを追加します。-DCPPTEST_COLLECT_STACK_TRACE=0
- C++test は C 言語のマルチバイト文字を正確に再構築しません。
IAR EW Build System (および 'iarbuild' コマンド ライン ユーティリティ) は、EWP プロジェクトに定義された各インクルード パスの最後に '\' (バックスラッシュ) を追加します。これは、ビルドをスキャン/トレースした後の BDF にも反映されます。
C++test はインクルード パス オプションを引用符で囲むため、最後の引用符がエスケープされるのを防ぐため、バックスラッシュをエスケープする必要があります。iccarm に関連するバグのため、パス オプションにスペースと最後に 2 つのバックスラッシュの連続が含まれる場合、引用符に囲まれていても、単一のオプションとして解釈されません。
これには、2 つの回避策があります。スペースを含まないパスに IAR EW をインストールし、パスにスペースが含まれないようにします。
BDF を後処理してパス オプションから末尾のバックスラッシュを削除するか、オプション内のすべてのスペースをエスケープします。