主な機能

  • MATLAB Coder™ および Simulink Coder™ を拡張する最適化とコードの設定オプション
  • データ ディクショナリを使用したストレージ クラス、タイプ、エイリアスの定義
  • RTOS の有無に関わらない、マルチレート、マルチタスク、マルチコアのコード実行
  • SIL および PIL テスト、カスタム コメント、モデルとコード/要求仕様間の追跡機能を備えたコード レポートといった、コードの検証
  • ASAP2、AUTOSAR、DO-178、IEC 61508、ISO 26262、および MISRA C® (Simulink® 使用) を含む各種標準規格のサポート
  • 特定のハードウェア (ARM®、Intel®、NXP™、STMicroelectronics®、Texas Instruments™ など) 向けの高度なコードの最適化とデバイス ドライバー

生成した量産コードと SIL/PIL 実行用シミュレーション機能を使用したモーター制御モデル。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 コードとランタイム インターフェイスを生成します。

共有ライブラリ ターゲット — ホスト プラットフォームでの実行のために、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) の有無に関わらず、シングルタスキング、マルチタスキング、マルチコア、または非同期モードでコードを実行できます。また、Software-In-the-Loop (SIL) テストや Processor-In-the-Loop (PIL) テストを使用して、コードの実行結果を検証できます。

Embedded Coder によって生成されたコードの Software-In-the-Loop (SIL) テストと Processor-In-the-Loop (PIL) テストを実行します。


メイン プログラムの生成

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


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

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


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

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