Embedded Coder

組込みシステム用に最適化された C コードと C++ コードの生成

Embedded Coder® は、量産で使用される組み込みプロセッサ用に高速かつコンパクトで可読性に優れた C コードと C++ コードを生成します。また、生成する関数、ファイル、データを細かく調整できる高度な最適化により、MATLAB Coder™ と Simulink Coder™ の機能を拡張します。こうした最適化により、コードの効率性が向上すると同時に、レガシーコード、データ型、およびキャリブレーション パラメーターとの統合が容易になります。また、サードパーティの開発ツールを統合し、組み込みシステムやラピッド プロトタイピング ボードでターンキー展開のための実行ファイルを作成することもできます。

Embedded Coder には、AUTOSARMISRA C®、ASAP2 ソフトウェア標準のサポートが組み込まれています。また、DO-178、IEC 61508、ISO 26262 ソフトウェア開発をサポートするため、トレーサビリティ レポート、コード ドキュメンテーション、およびソフトウェアの自動検証も提供されています。Embedded Coder コードは移植可能であり、あらゆるプロセッサでコンパイルして実行できます。また、Embedded Coder は、特定のハードウェア向けの高度な最適化とデバイスドライバーを含むサポートパッケージを提供します。

企業が、制御信号処理画像処理、およびコンピューター ビジョン機械学習の分野で Embedded Coder を使用して、どのように量産コードを生成しているかをご紹介します。

詳細を見る:

コード生成用の設定

Embedded Coder® のコード生成設定を構成するには、MATLAB® 用 MATLAB Coder アプリまたは Simulink 用 Embedded Coder クイックスタートを使用します。また、MATLAB コマンドとスクリプトで各設定を直接構成することも可能です。

MATLAB Coder アプリを使用すると、以下を行うことができます。

  • MATLAB ファイルと関数のコードの生成
  • プロセッサとコード生成出力の選択
  • Embedded Coder 最適化の選択

Simulink 用 Embedded Coder クイックスタートを使用すると、以下を行うことができます。

  • Simulink モデルとサブシステム用のコード生成
  • プロセッサとコード生成出力の選択
  • Embedded Coder で RAM と実行速度のどちらを最適化するかの選択

Embedded Coder クイックスタートを使用して、Simulink から量産コードを簡単に生成できます。

ターゲットの選択

Embedded Coder は構成オブジェクトとシステム ターゲット ファイルを使用して、MATLAB コードと Simulink モデルを量産に適したソースコードと実行ファイルに変換します。

MATLAB の場合、次のいずれかの出力ターゲットを指定します。

  • MEX ファイル
  • C/C++ 静的ライブラリ
  • C/C++ 実行ファイル

Simulink の場合、次のいずれかの即座に実行可能な構成を指定します。

組込みリアルタイム ターゲット — 基本的にあらゆる量産プロセッサで効率的なリアルタイム実行を行うための、浮動小数点または固定小数点のデータをもつ ANSI/ISO C コード、C++ コード、およびカプセル化された C++ コードを生成します。

AUTOSAR ターゲットAUTOSAR ソフトウェア コンポーネントの開発をサポートする、C コードとランタイム インターフェイスを生成します (AUTOSAR ブロックセットが必要)

共有ライブラリ ターゲット — ホスト プラットフォームでの実行のために、Windows® ダイナミック リンク ライブラリ (.dll) ファイル、または UNIX® 共有オブジェクト (.so) ファイルのいずれかとして、共有ライブラリ用のコードを生成します。

なお、MathWorks およびサードパーティは、特定のハードウェア (ARM®、Intel®、NXP™、STMicroelectronics®、Texas Instruments™ など) をサポートするために Embedded Coder を拡張する MATLAB アドオンを提供しています。

ハードウェア サポート パッケージを使用して、生成したコードを組込みデバイスに簡単に展開できます。

カスタムデータの操作

Embedded Coder を使用すると、生成されるコードにどのようにモデルデータが表現されるかを定義および制御し、ソフトウェア統合を効率化できます。

MATLAB コードについては、固定小数点オブジェクトおよび事前定義されたストレージクラスを含むすべての MATLAB Coder データ定義が Embedded Coder でサポートされています。

Simulink モデルについては、次のデータ仕様とデータディクショナリ機能が Embedded Coder でサポートされています。

Embedded Coder ディクショナリ — 関数インターフェイス、ストレージクラス、メモリセクションを含むコード定義を表示し、カスタマイズを可能にします。

Simulink データオブジェクト — constant、volatile、exported global、imported global、define命令、構造体、ビットフィールド (ビットパックした構造体を含む)、get および set アクセスメソッドなどの定義済みのストレージクラスを提供します。

モジュール パッケージング データ オブジェクト — ルックアップ テーブルのチューニングやキャリブレーションのためのメモリセグメントといった、一般的に量産で使用される高度なデータオブジェクトのための設定済みの属性を提供します。

ユーザーデータ型 — 複雑なデータの抽象型を作成することで、生成されるコードでのモデルデータの表現、レガシーデータとのインターフェイス、組み込みの Simulink タイプの拡張や置き換えを正確に制御することができます。

Embedded Coder では、Simulink で ASAP2 データ交換ファイルにアクセスできるため、ASAP2 標準に準拠した任意の複雑なデータ定義でモデルデータをエクスポートすることができます。また、組み込みの機能を変更して、別のデータ交換メカニズムを作成することもできます。

Embedded Coder ディクショナリを使用して、生成したコードにおけるモデルとデータの表現を定義し、制御できます。

コードの最適化とパッケージング

Embedded Coder を使用すると、関数の境界の制御や式の維持が可能であり、複数ブロックにまたがる最適化を設定して、コードサイズをさらに削減することができます。生成されたコードとのデータの交換は、グローバル変数や関数の引数を通じて行われます。生成されたコードから、モデル内のブロックと信号をたどることが可能です。

Embedded Coder に用意されている、MATLAB コードおよび Simulink モデルからコードを生成するためのオプションを使用すると、以下を行うことができます。

  • 数学関数および数学演算についてプロセッサ固有のコードを生成
  • 既存または外部環境にエクスポートするためのコードの再利用
  • 初期設定、ターミネーション、ログ記録、エラー処理などの不要なコードを削除
  • 整数のみのアプリケーションから浮動小数点コードを削除

Simulink モデルには、Embedded Coder の追加の最適化や設定オプションが用意されており、以下を行うことができます。

  • プリプロセッサ コンパイルのために、マクロを使用してコードバリアントを生成
  • 各生成ファイルのフォーマットを制御
  • グローバルデータの定義方法と参照方法を指定
  • コメントの内容と配置を指定

Simulink モデルから SIMD コードを生成。

コードのコメント設定、追跡、および文書化

Embedded Coder には、MATLAB ファイルと関数または Simulink モデルとサブシステム用に生成されたコードを調べるための機能が複数用意されています。これらの機能を使用して、以下を行うことができます。

  • コードモジュール、関数インターフェイス、静的コードメトリクスを記述するコードレポートを生成する
  • 生成されるグローバルデータ、データタイプ、および関数の識別子の書式を制御する
  • 生成されるコードに、関数のヘルプ テキストを含む MATLAB コードをコメントとして含める

また Simulink では Embedded Coder によって、高レベルの要件をコードのコメントとして挿入し、要件のソースへのリンクを設ける機能も提供されています (Simulink Requirements™が必要)。Simulink コード生成レポートには、コード インターフェイスの説明、トレーサビリティ レポート、生成されたソースファイルとコードも記載されます。モデルと生成されたコードの間には双方向のリンクがあり、コードの各行と対応する Simulink モデル要素 (サブシステム、ブロック、MATLAB 関数とコード、Stateflow® チャートと遷移など) の間を簡単に行き来することができます。

アルゴリズムと実装間での双方向のトレーサビリティを示す、Simulink コード生成レポート。

コードの実行と検証

Embedded Coder では、生成したコードをコードの実行環境に取り込むことができます。

MATLAB では、Embedded Coder から生成したコードを実行する際には、MATLAB Coder で提供されるものと同じ実行フレームワークを使用します。

Simulink では、Embedded Coder が、Simulink Coder で提供されるリアルタイム実行フレームワークを大幅に拡張します。デフォルトでは、コードはリアルタイム オペレーティング システム (RTOS) の有無に関わらず、シングルタスキング、マルチタスキング、マルチコア、または非同期モードでコードを実行できます。また、ソフトウェアインザループ (SIL) テストやプロセッサインザループ (PIL) テスト用に Embedded Coder を使用して、コードの実行結果を検証することもできます。Simulink Test™Simulink Coverage™ は、テストの実行、結果の比較、カバレッジの解析を自動化するのに役立ちます。また、コード実行プロファイリングの解析にも対応しています。

メイン プログラムの生成

Embedded Coder では、リアルタイム環境へのコードの実装に関してユーザーが提供した情報に基づいて、拡張性に優れたメインプログラムが生成されます。この機能では、モデルから完全にカスタマイズされた実行ファイルを生成およびビルドできます。

マルチレート、マルチタスク、マルチコアコードの実行

Embedded Coder では、モデルに指定されている周期的なサンプル時間を使用して、シングルレートまたはマルチレートでコードが生成されます。マルチレート、マルチタスキング モデルでは、モデル内のベースレートのタスクと各サブレートのタスクについて別々の関数を生成する、レートのグループ化という方法が採用されています。Simulink 同時実行モデリングを使用し、マルチコア処理用のマルチスレッド コードを作成することも可能です。

SIL テストと PIL テストの実行

Embedded Coder では、Simulink のシミュレーション モードや S-function ブロックを使用して、SIL テストのための Simulink における生成コードの実行、または、PIL テストのための組込みターゲットでの生成コードの実行を、それぞれ自動化できます。 Simulink Test™  を利用すると、テストの実行のほか、テスト結果と元のモデルからのシミュレーション結果の比較が自動的に行われます。 Simulink Coverage  の使用またはサードパーティのツールとの統合によって、テストの完全性を測定するための構造的なコードカバレッジ解析を実行できます。コード プロファイリング解析は、ホストまたはターゲットプロセッサにおける実行時間を出力します。

Embedded Coder によって生成されたコードのソフトウェアインザループ (SIL) テストとプロセッサインザループ (PIL) テストを実行します。