HighTec社 Compiler:欧州車載品質

 

HighTec 社 は、GCC および LLVM ベースのオープンソース テクノロジを利用して、主要なマイクロコントローラ ファミリおよび組み込みマイクロプロセッサ向けの機能安全認定済み C/C++ コンパイラ スイートを開発しています。TriCore(Infineon AURIX microcontroller family TC2x, TC3x and TC4x)、Power Architecture (PowerPC)、ARM、RISC-V など、自動車および産業用アプリケーション市場をリードするマイクロコントローラをサポートして、組み込みソフトウェア開発のための最も信頼性が高くセキュアなツールを提供します。HighTec EDV Systeme は、1982 年の設立以来非公開企業であり、世界最大の商用オープンソースコンパイラベンダーです。

Infineon AURIX TC3x、TC4x用 Rustコンパイラの提供を開始

LLVM テクノロジを活用することで、既存のC/C++ コードをRustに統合できるため、開発者はアプリケーション全体を再設計することなく、メモリの安全性、同時実行性、相互運用性など、Rust 言語のあらゆる機能を利用して、安全でセキュア、かつ高性能なアプリケーション開発を支援します。

 

C/C++ Development Platform
C/C++ compiler suites for automotive and industrial

 

主な特徴

 

  • マルチアーキテクチャ対応
  • 最先端の最適化技術を備えたC/C++コンパイラ
  • リンカレベルでの高度なマルチコアサポート(ソースコードの変更不要)
  • 専用の C コンパイラによる GTM/MCS や HSM モジュールなどのアーキテクチャ固有の機能ブロックのサポート
  • ISO 26262クオリフィケーションキット
  • Frozen:固定ツールバージョンのサポート
  • 拡張されたプロジェクト設定とリンカ記述構成用のグラフィカルインターフェイスを備え、デバッガ統合のために簡単に拡張できる Eclipse IDE
  • TriCore, AURIX, AURIX 2G, Power Architecture (PowerPC), ARM, RISC-V

 

一般的な最適化機能

 
HighTecのコンパイラの最も高度な最適化技術は、最小のフットプリントで最速のコードを生成します。 コンパイラは、バッチ処理のためにコマンドラインインターフェースを介して、またはEclipseベースのHighTecによるSafe Multi-Core PlatformなどのIDE内で使用することができます。 当社のコンパイラは、市場で最速のビルドシステムであり、並列コンパイルプロセスをサポートしています。コンパイラは、次の要素で構成されます。
 

  • 言語固有のフロントエンド
  • グローバルオプティマイザ
  • ターゲット固有のオプティマイザ
  • 商用ライブラリ(オープンソースなし)

 
HighTec C / C++コンパイラは、完全にEABIに準拠しており、最新のANSI / ISO CおよびC++コンパイラ標準(C89、C99など)に準拠しています。 ユーザーは、プログラミング言語、ターゲットアーキテクチャ、パフォーマンスレベル - 速度やコードサイズの最適化、デバッグレベルなど、さまざまな機能を選択できます。
 

マルチアーキテクチャ対応

 
HighTecコンパイラは幅広い組み込みアーキテクチャをサポートしており、あるアーキテクチャから別のアーキテクチャにいつでも移行できます。 異なるアーキテクチャーに対応できる開発ツールであれば、学習の時間を短縮し、生産性を高め、市場投入までの時間を短縮します。 以下のアーキテクチャがサポートされています。
 

  • Infineon AURIX TMマイクロコントローラー ファミリ TC2x、TC3x、TC4xで使用されるTriCore
  • ARM v8-M、ARM v8-R 32 ビット、および ARM v8 64 ビット
  • STおよびNXPマイクロコントローラで使用されるPowerPCアーキテクチャ
  • ARC EVx  AURIX TC4x ファミリに統合された PPU 
  • GTM/MCS
  • RISC-V
  • AURIX マイクロコントローラー ファミリのスタンバイコントローラーとして使用される8051/SCR

 

ターゲット固有の最適化

 

  • TriCore / AURIX:絶対アドレス指定モード、サーキュラー
  • 可変長符号化のPowerPC NON-VLE命令とVLE命令の混合
  • レガシーNON-VLEコードは、同等のVLEコードでPowerPCアセンブラによって変換されます
  • サポートされているPowerPC機能:VLE、SAT、LSP、パイプライン最適化によるデュアル発行
  • HSMコンパイラおよびGTMアセンブラ

 
小さなデータ領域の最適化は、AURIX、Power Architecure、RISC-V などの特定のアーキテクチャで使用できます。これらのコントローラは、アドレス計算を省略できるため、コードサイズと実行時の動作を最適化するさまざまなアドレッシングモードを提供します。
豊富なリンクコマンド言語により、コードとデータのメモリ内のレイアウトを最適な方法できめ細かく制御できます。特に、マルチコアのターゲットでは、コードとデータのレイアウトによって実行時の動作が大幅に改善されます。 HighTecコンパイラは、既存のソースコードを変更することなく、各要素が別のサブセクションに配置されるように、プラグマセクションのステートメントを分解するコマンドラインオプションを提供します。サブセクションの分割により、ユーザーは各要素を最適なメモリ位置に配置することができます。例えば、マルチコア・アプリケーションでのデータ・アクセスの頻度を考慮すると、セクションの頻繁に使用されるいくつかのデータ要素をグローバル・メモリよりもはるかに高速なコアのローカル・メモリに配置することは有益です。マルチコアでの性能向上は10%以上にもなります。 HighTecまたはパートナーのGliwaとTiming Architectsがマルチコア・アプリケーションの全体的なパフォーマンスを最適化するために、追加のコンサルティング・サービスを提供しています。
任意のアドレスにロードできる位置独立コード(PIC)と位置独立データ(PID)は、High-Tecコンパイラでサポートされています。
主要半導体パートナーとの優れたコラボレーションに基づいて、最新の車載マイクロコントローラに対応したハイテックのコンパイラは、Elektrobit、ETAS、Vectorなどの主要なAUTOSARオペレーティングシステムベンダーによるMCALドライバとともにサポートされています。
 

高度なマルチコアサポート

 
自動車のマルチコアアプリケーションでは、いわゆる共通リンクが使用されます。つまり、異なるコアに分散されたアプリケーションは、データやコードを共有できます。自動車アプリケーションのほとんどは、もともとマルチコア環境で使用するように設計されていなかったレガシーコードを含んでいます。そのため、ソースコードを変更せずにシングルコアからマルチコアにアプリケーションを移行することが強く望まれます。
この需要に応えるため、HighTecはソースコードを変更することなくリンカレベルでコードとデータを異なるコアに簡単にマッピングする、いわゆるアドバンストマルチコアサポートを提供しています。この機能により、お客様はプログラミングの自由度が得られ、既存のコードを最小限の労力で簡単に再利用することができます。
異なるコア間のデータ交換は、リンカレベルでコア間のユーザー定義のインターフェイスを指定する 'hide-and-visibility' コンセプトよって処理されます。データとコードは、他のどのコアにも表示されるように明示的に指定する必要があります。
リンカは、異なるコアアーキテクチャ用のオブジェクトファイルを相互にリンクし、その結果の出力ELFファイルを生成することができます。このマルチコア機能は、Lauterbach などの主要なデバッガベンダーによってサポートされています。
 

ISO 26262

 
革新のCompiler Qualification Kit(QKit)は、お客様が機能安全規格への準拠ためのコンパイラツール認定(クオリフィケーション)をシンプルかつ簡単に実行することができるツールを提供します。 QKitは、Validas AGおよび自動テストフレームワークと協力して開発されたクオリフィケーション支援ツール(QST)で構成されています。 QSTにはコンパイラツールチェーンの詳細なモデルが含まれており、ツール認定に必要なテストとドキュメントを顧客のユースケースから生成します。
機能安全規格ISO26262の要件を満たすためにブランチカバレッジ分析が必要です。通常、カバレッジ解析ツールは、この目的のためにソースコードに対するインスツルメンテーションを使用します。しかし、これによりアプリケーションのバイナリコードを変更するため、分析されたアプリケーションと最終的なアプリケーションが異なります。 HighTecは、ブランチカバレッジ分析を実行するための代替アプローチを提供します。
ソースコードをインストルメントする代わりに、HighTecコンパイラは、アプリケーションの制御フローをアプリケーションの別のデバッグセクションに出力します。この情報は、デバッガと共に使用されて、最終アプリケーションのブランチカバレッジ分析を実行できます。
もう1つの重要な安全対策は、最終イメージのポストビルド検査です。機能安全に関わるアプリケーションでは、メモリレイアウトの検証や最終的なELFファイルの整合性などのエラーチェックが不可欠です。この目的のために、HighTecは以下の拡張を提供します:
 

  • 詳細マップファイル
  • ELFファイルのダンプ

 
生成されたデータは、標準のXML形式で出力され、コードとデータのコア割り当てに関する情報も含まれています。 コア間通信は、Mapfileの相互参照テーブルにリストされています。 この情報に基づいて、ユーザーはアプリケーションの出力と一貫性を検証する追加のスクリプトを実装することができます。
 

固定ツールバージョンのサポート

 
安全関連のアプリケーションでは、コンパイラのような開発ツールを含め、製品のライフサイクルを完全にコントロールする必要があります。 HighTecは、お客様がライフサイクルをコントロールできるように固定バージョンのコンパイラブランチを提供しています。 Frozen Branch Maintenanceを使用すると、コンパイラの変更がコードに及ぼす影響を最小限に抑えることができます。これにより、顧客は、どのアップデートやカスタマイズされたバグ修正を取り入れるかなど、新しいQAサイクルの実行時期を決定することができます。
 

 

For more information please visit www.hightec-rt.com

HighTecの製品ではライセンス管理にRLM(Reprise License Manager)を使用しています。ライセンスの形態には下図に示すように、ノードロック・フローティングキャッシュ・ローミングの3種類があります。
 

 
 

HighTec Content ManagerからHighTec社のクラウドにアクセスして、多彩なサンプルプロジェクトを入手できます。これらにはアプリケーションノートも付属し、マルチコア、GTM / MCS、MCALなどの情報も得られます。この HighTec Content Manager は評価版にも含まれます。
 

 

特定のソースファイルをHighTec Eclipse IDEでのビルドから除外することが、素早く簡単にできることをご存知ですか?プロジェクトエクスプローラウィンドウで対象とする「*.c」ファイルを右クリックし、メニューからResource Configurations > Exclude from Build... と選択するだけです。同じモジュールで異なるバージョンを試したりコードを変更する場合など、モジュールをビルドから素早く除外する必要があるとき、この機能は最高です。

HighTec Eclipse IDEでは、プロジェクトのビルドターゲットを複数設定できることをご存知ですか?これによって、単一のプロジェクトで(例えば、デバッグとリリース用、FLASHやRAMのコードの実行用というように)コンパイラの設定を簡単に切り替えることができます。
ビルドから除外されたリソース(前のヒント参照)は、現在選択されているビルドターゲットにも反映されます。このように、別のコードモジュール(ソース)とツールチェーンの別のオプションを使用して、プロジェクトのビルドのバリアントを簡単に設定できます。
新しいビルドコンフィグレーションを作成するには、以下のスクリーンショットに示すようにツールバーのActive Build Configurationアイコンを左クリックします。また、アクティブなビルドコンフィグレーションを選択するには、このアイコンの横の小さな矢印を左クリックし、ドロップダウンメニューから必要とするターゲットを選択します。
 

HighTecのツールには最適化のクラスがいくつかあり、速度向上を重視するもの、より良いメモリフットプリントを目指すものというように、それぞれが異なった最適化のターゲットを提供します。例えば、コードサイズの最適化によってターゲットのハードウェアアーキテクチャ基づいてデータやコードの局所性が向上し、より良いパフォーマンスを与えるということが起こるので、この最適化のクラスは、ツール内で設定でき、適用のためのガイドとなることを意図しています。最高の結果を得るため、アプリケーションに合わせてさまざまな最適化戦略を試してみることをお勧めします。

不均一なメモリ階層を持つ現在のハードウェアアーキテクチャにおいては、コードとデータの局所性が重要になります。コードとデータの配置で鍵となる役割を果たすのは、コードおよびデータをまとめてメモリ領域にマッピングするリンカファイルです。
より良いパフォーマンスを得るには以下のような戦略があります。
 

  • 頻繁に実行されるルーチンを局所的なコード用スクラッチパッドRAM(CSPR)メモリに置く
  • 割込みルーチンをCSPR領域に置く
  • スタック領域を局所的なデータ用スクラッチパッドRAM(DSPR)メモリに置く
  • 演算要求の高いデータをDSPR領域に置く

 
これらはすべて、ツールチェーンをインストールしたときに得られるToolchain User Manualに記載されています。

コンパイルとビルドの設定すべてをワンストップで行うことができます。以下のスクリーンショットのようにツールチェーン設定アイコン(Active Project Properties)を左クリックするだけです。
 

 

商用版のツールチェーンではXML形式でMemoryMapファイルを生成する機能があり、他ツールとの統合が容易になります。

HighTec Compiler Qualification Kit (QKIT)によって、セーフティクリティカルアプリケーションのツールチェーン認定に要する時間を大幅に削減できます。
ISO 26262、IEC 61508、EN50128いずれにおいても、QKITは認定プロセス全体およびドキュメント生成を自動化することで、御社のリソースと時間を節約します。詳細は、こちらをご覧ください。

ツールチェーンの複数バージョンを、IDE環境での簡単な操作で追加できることをご存知ですか?
HighTec IDEには、インストールされているツールチェーンをメンテナンスするToolchain Managerが統合されています。
 

フリーエントリーツールチェインから商用版への移行は簡単にできることをご存知ですか?
以下の手順になります。
 

  • 新しいツールチェーンを今あるIDEに追加します(上記参照)
  • プロジェクトの設定でツールチェーンを変更します
  • プロジェクトを再ビルドします

日本語版チュートリアル

コンパイラとデバッガ入門

HighTec 社統合開発環境を用いてプロジェクトをコンパイル・リンクして実行形式ファイルを生成することと、ローターバッハ社TRACE32 の最も重要なデバッグ機能やデバッガの使用に役立つ多くのヒントとコツを紹介します。

 

単体テストツールとコンパイラ/デバッガの連携

国際スタンダード認証に最も実績のあるLDRA 社テストツールは、あらゆるターゲット環境をサポートします。これについて、HighTec 社 コンパイラとローターバッハ社デバッガを用いて紹介します。 動画デモ、スライド資料も公開中

お問い合わせ

購入前の製品説明・資料請求・見積依頼・デモ依頼など

 メールでお問い合わせください 
 

購入後の製品の技術サポートに関するお問い合わせ

 技術的なお問い合わせは、ヘルプデスクまでメールでお問い合わせください