この記事は、インテル® デベロッパー・ゾーンに掲載されている「Should I use Intel® System Studio?」(http://software.intel.com/en-us/articles/intel-system-studio-embedded-features) の日本語参考訳です。
はじめに
インテル® System Studio は、インテル® アーキテクチャー・ベースのインテリジェント・システム/組込みデバイス向けシステム・ソフトウェアおよびアプリケーション・ソフトウェアの開発を支援する包括的な統合ソフトウェア開発ツールスイートです。そのため、インテルのほかのソフトウェア開発ツールや Studio 製品とはいくつかの点で異なります。この記事では、インテリジェント・システム/組込みデバイス向けソフトウェア開発ツールとしてインテル® System Studio を選択する上で重要な相違点と独特な機能を紹介します。
主な相違点の 1 つは、インテル® System Studio は拡張されたアナライザーに加えて、新しいインテル® JTAG デバッガー、コード・インストルメンテーションに基づく低オーバーヘッドのデータ・イベント・トレース・テクノロジー SVEN (System Visible Event Nexus) により、安定性と完成度を重視していることです。
また、インテル® System Studio はクロス開発にも対応しています。インテル® System Studio は、ホスト開発環境とターゲットシステムのソフトウェア・スタックが大きく異なる場合、それを認識してサポートするクロスビルド、クロス解析、クロスデバッグ・ソリューションです。さらに、ホスト上およびターゲット・プラットフォーム上で利用可能なターゲット・コンポーネントのアーカイブを *.tgz 形式で提供します。
Eclipse* CDT との統合
インテル® System Studio には、Eclipse* IDE と統合する eclipse_integration.sh スクリプトが用意されています。そのため、業界で広く使用されている IDE を利用して、インテル® C++ コンパイラーおよびその他のコンポーネントの主な機能を容易に使用できます。統合スクリプトを実行すると、新しい [Intel Tools] メニューが追加され、ガイド付き自動並列化、インテル® C++ コンパイラーの選択、インテル® C++ コンパイラーの環境ファイルエディターを利用できます。
環境ファイルエディターは、インテル® C++ コンパイラーと GNU* クロスビルド・ツールの統合をカスタマイズするインテル® System Studio 固有の機能で、Poky-Linux* ベースの Yocto Project* や Wind River* Linux* だけでなく、その他のクロスビルド環境のセットアップにも対応しています。
Eclipse* 統合環境では、インテル® C++ コンパイラーのチートシートとインテル® C++ コンパイラー固有のビルドオプションを簡単に使用できるメニューも提供されます。
同様に、SVEN データ・イベント・トレーシング・フレームワーク (詳細は後述) も Eclipse* と統合され、SVEN Trace Viewer が追加されます。
インテル® C++ コンパイラーのクロスビルド・サポート
インテル® System Studio では、インテル® C++ コンパイラーの標準機能に加えて、クロスビルド・サポートおよびインテル® C++ コンパイラーと Yocto Project*、Wind River* Linux*、CE Linux* の統合が追加されています。Yocto Project* との統合については、『Yocto Project* Application Developer’s Guide』 (http://www.yoctoproject.org/docs/current/adt-manual/adt-manual.html (英語)) を参照してください。
ビルド用の sysroot のトップレベルとクロスツールの場所を定義する環境変数の設定がまとめられています。この設定が完了したら、後はインテル® C++ コンパイラー用の正しいクロスビルド環境ファイルを指定するだけです。
Yocto Project* では、次のように指定します。
YL_SYSROOT=/opt/poky/1.2/sysroots/i586-poky-linux
YL_TOOLCHAIN=/opt/poky/1.2/sysroots/i686-pokysdk-linux/usr/bin
$ icc -platform=yl12 my_source_file.c
$ icpc -platform=yl12 my_source_file.cpp
Wind River* Linux* 5 とそのツールでも同様の操作が必要です。
http://www.windriver.com/products/linux/ (英語) が参考になります。
WRL_TOOLCHAIN=
WRL_SYSROOT=
クロスコンパイルを行うコンパイラー・オプションは次のとおりです。
$ icc -platform=wrl50 my_source_file.c
$ icpc -platform=wrl50 my_source_file.c
インテル® Atom™ プロセッサー CE42xx または CE53xx 上で実行する CE Linux* でも、同様に環境変数を設定し、インテル® System Studio に含まれるインテル® C++ コンパイラーのプラットフォーム環境ファイルを使用します。
CEL_TOOLCHAIN=/celpr28/staging_dir
CEL_SYSROOT=/celpr28/i686-linux-elf
は CE Linux* PR28 製品リリース・サポート・パッケージのインストール・パスです。
$ icc -platform=celpr28 my_source_file.c
$ icpc -platform=celpr28 my_source_file.cpp
インテル® IPP とインテル® MKL
インテル® System Studio には、高度に最適化された信号処理およびメディア処理を行うインテル® インテグレーテッド・パフォーマンス・プリミティブ (インテル® IPP) と、インテル® Core™ プロセッサー上の大規模なデータセット向けに最適化された浮動小数点の解析および複雑な演算処理を行うインテル® マス・カーネル・ライブラリー (インテル® MKL) が含まれています。
インテル® VTune™ Amplifier for Systems
ほかの Studio 製品に含まれているインテル® VTune™ Amplifier コンポーネントの強力な解析機能に加えて、インテル® VTune™ Amplifier for Systems には、サンプリング・データの転送メカニズムに ssh を使用する新しいリモートデータ収集ユーティリティーが含まれているため、解析を行うホストとテストを行うターゲット間で手動によるサンプリング・データの転送が不要です。
さらに、インテル® System Studio は、仮想ターゲット環境でインテル® VTune™ Amplifier for Systems を使用する方法と、クロスビルド環境内で組込みシステム向けにターゲット・イベント・ベース・サンプリング・ドライバーをビルドし、配布する方法に関するアドバイスを提供します。
インテル® Inspector for Systems
インテル® System Studio のほかのコンポーネントと同様に、インテル® Inspector も組込みシステム向けに多少改良されています。system_studio_target.tgz パッケージに、インテル® Inspector のコマンドライン・バージョンが追加されており、ユーザー・インターフェイスとメモリー制限のあるプラットフォーム上でこれを使用することができます。データ解析は、ターゲット・プラットフォーム上のコマンドラインから実行することも、サンプリング・データを開発ホストにコピーして、インテル® Inspector のグラフィカル・ユーザー・インターフェイス (GUI) を使用して行うこともできます。
インテル® JTAG デバッガー
インテル® JTAG デバッガーは、インテル® System Studio にのみ含まれているシステム・ソフトウェア・デバッガーです。現在、インテル® Atom™ プロセッサー (インテル® Atom™ プロセッサー Z5xx、E6xx、N2xxx、D2xxx、CE4xxx、CE53xx、およびインテル® Puma6™ Media Gateway) のみサポートしています。Eclipse* RCP ベースの GUI から EFI/UEFI ファームウェア、ブートローダー、Linux* OS カーネル、動的にロードされるデバイスドライバーをデバッグできます。
現在のインテル® System Studio 2013 リリースに含まれるインテル® JTAG デバッガーは、1 つの Linux* ターゲット開発コンポーネントで Linux* ホストと Windows* ホストをサポートします。サポートされる JTAG デバイスは、Macraigor Systems* usb2Demon* および インテル® ITP-XDP3 です。
SVEN SDK (System Visible Event Nexus)
インテル® System Studio には、ソフトウェアの完成度をさらに高めるツール、SVEN SDK も含まれています。SVEN SDK は、データ・イベント・トレーシング用の高度にカスタマイズ可能なインストルメンテーション・フレームワークを提供します。最近の高度な集積チップ上の複数の IP ブロックにまたがる複雑なソフトウェア・スタックにおいて、再現が困難なタイミングに依存する問題を追跡します。
SVEN は、スタティック・コードのインストルメンテーションと、タイミング・オーバーヘッドが 5µs 以下の小さな DRAM バッファーを利用するため、ハイゼンバグ (heisenbug) が発生する可能性を最小限に抑えます。SVEN により、従来の方法では見つけられない、タイミングに依存するランタイムの問題を特定することができます。製品版コードにインストルメンテーション・コードを残しても、ロギングを有効にしなければ実行に影響しないため、SVEN はアクセスが困難な場所に配置されたアプリケーションのオフラインデバッグに最適です。
当初、インテル® Atom™ プロセッサー CExxxx ベースのプラットフォーム向けに開発された SVEN は、現場で実証されたテクノロジーであり、現在はすべてのインテル® アーキテクチャーで利用できます。SVEN は現代の複雑なシステム向けに設計されているため、チップセット全体にわたって非同期メッセージとデータイベントを追跡できます。高度に設定可能で、システム・ソフトウェアとアプリケーションの両方のインストルメンテーションに使用できます。
SVEN SDK には、Eclipse* に統合される独自の Trace Viewer と、SVEN イベントがシステムレベルのデータ・ブレークポイントをトリガーし、実行中のターゲットデバイス上でリアルタイム・デバッグを行えるインテル® JTAG デバッガーへの統合機能が含まれています。
GDB – GNU* プロジェクト・デバッガー
最後に、インテル® System Studio には、実行フローを巻き戻し、(コールスタックが破損している場合も含め) ランタイム問題の原因を特定する分岐命令のトレースなど、インテル® アーキテクチャー向けの固有の拡張機能を備えた独自の GDB が含まれています。また、インテル® System Studio のインタラクティブな GDB 拡張は、通常のデバッグフローでデータ競合と並行性 (コンカレンシー) の問題を検出するため、アルゴリズムのコーディングに関する問題とともにこれらの問題に取り組むことができます。
もちろん、インテル® System Studio は、ホスト開発システムにある標準の GDB の代わりに、この GDB 拡張を Eclipse* へ統合する方法も提供しています。
ターゲット・コンポーネントのアーカイブ
前述のように、インテル® System Studio は組込みデバイスおよびインテリジェント・システム向けのクロス開発に特化しています。そのため、system_studio_target.tgz ターゲット・パッケージが提供されているのは必然と言えます。インストーラーの .tgz ファイルを展開すると、../l_cembd_p_2013.0.xxx/rpm ディレクトリー以下にこのアーカイブが配置されます。オンライン・インストーラーを使用する場合は、root の tmp ディレクトリーに配置されます (スーパーユーザー権限でインストールした場合)。
ターゲット・コンポーネントのアーカイブは、開発ターゲットにコピーすることができます。このアーカイブには、クロス開発環境に必要な次のコンポーネントが含まれています。
- インテル® C++ コンパイラーの再配布用ランタイム・ライブラリー
- インテル® VTune™ Amplifier のサンプリング・コレクター (SEP) とリモートデータ収集用のターゲット・サポート・パッケージ
- インテル® Inspector のコマンドラインのインストーラー
- インテル® JTAG デバッガーの idbntf.ko (動的にロードされるカーネル・モジュールのメモリー位置とロードステータスのエクスポート・ハンドラー)
- GNU* プロジェクト・デバッガー (GDB) の gdbserver リモート・デバッグ・エージェント
まとめ
インテル® System Studio は、PC やハイパフォーマンスなワークステーション向けのネイティブ開発ツールを大幅に拡張し、Eclipse* IDE 統合の強化、クロス開発とクロスデバッグ手法のサポート、そして迅速に問題を解決し、製品の完成度を高め、開発期間を短縮するより強力な解析ツールとデバッグツールが追加された開発ツールです。
そのため、開発ホストとターゲット・プラットフォーム間のソフトウェア・スタックが大きく異なるクロスビルド環境で組込み Linux* 向けアプリケーションを開発するための最適なソリューションです。
さらに詳しい情報 (英語) は、以下の資料を参照してください。
ダウンロード
コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。