embedded coder 6 - mathworks - makers of … coder 6.0 組込みシステム用に最適化された...
TRANSCRIPT
Embedded Coder 6.0組込みシステム用に最適化された C コードと C++ コードの生成
Embedded Coder™ は、読み取り可能でコンパクトかつ高速な C コードと C++ コードを生成し、組込みプロセッサー、ターゲット上のラピッド プロトタイピング ボード、量産で使用するマイクロプロセッ
サーなどで使用されます。Embedded Coder では MATLAB Coder™ と Simulink Coder™ に対して追加の設
定オプションと高度な最適化が提供され、生成するコードの関数、ファイル、データを細かく調整で
きます。これらの最適化により、コードの効率性が向上すると同時に、量産で使用されている古いコード、データ タイプ、およびキャリブレーション パラメーターとの統合が容易になります。また、サードパーティの開発環境をビルド プロセスに取り入れて、組込みシステムのターンキー開発のための
実行ファイルを作成することができます。
Embedded Coder には AUTOSAR と ASAP2 のソフトウェア標準のサポートが組み込まれています。また、DO-178、IEC 61508、および ISO 26262 のソフトウェア開発をサポートするために、トレーサビリティ レポート、コード インターフェイスのドキュメンテーション、およびソフトウェアの自動検証も
提供されています。
詳しくは、自動車、航空、および産業オートメーションのアプリケーションにおける MathWorks によ
る認定のサポートについてご覧ください。
主な機能▪ MATLAB Coder と Simulink Coder を拡張する最適化とコードの設定オプション
▪ Simulink® データ ディクショナリ機能を使用したストレージのクラス、タイプ、エイリアスの定義
▪ プロセッサーに合わせたコードの最適化
▪ RTOS の有無に関わらない、マルチレート、マルチタスク、マルチコアのコード実行
▪ SIL および PIL テスト、カスタム コメント、モデルとコード/要求仕様間の追跡機能を備えたコード
レポートといった、コードの検証
▪ Texas Instruments 社製 Code Composer Studio™、Analog Devices™ 社製 VisualDSP++®、およびその他の
サードパーティ製の組込み開発環境と統合
▪ Simulink で ASAP2、AUTOSAR、DO-178、IEC 61508、ISO 26262、および MISRA C® などの標準をサ
ポート
1
SIL 実行用にシミュレーション モードを設定した、固定小数点モデルと生成されたコード。Embedded Coder では、量産組込みシステム用にコードをすばやく生成、記録、テストすることが可能です。
ターゲットの設定と操作
Embedded Coder でコードの生成を設定するには、MATLAB Coder プロジェクト ユーザー インターフェ
イス、または Simulink モデル エクスプローラーを使用します。また、MATLAB のコマンドとスクリプ
トで各設定を直接指定することも可能です。
MATLAB Coder プロジェクト ユーザー インターフェイスでは、次の操作を実行できます。
▪ MATLAB ファイルと関数のコードの生成
▪ Embedded Coder 機能の使用の選択
▪ コード生成のためのプロジェクト設定の指定
▪ 複数のプロジェクトの作成、読み込み、再利用
Simulink モデル エクスプローラーでは、次の操作を実行できます。
▪ Simulink モデルとサブシステムのコード生成
▪ Embedded Coder ターゲットの選択
▪ コード生成のターゲットの設定
▪ 複数の設定セットの作成、読み込み、再利用
ターゲットの選択
Embedded Coder では構成オブジェクトとシステム ターゲット ファイルを使用して、MATLAB コード
と Simulink モデルを量産に適したソース コードと実行ファイルに変換します。
2
MATLAB 構成オブジェクトでは、次のうちいずれかの出力ターゲットを指定します。
▪ MEX ファイル
▪ C/C++ 静的ライブラリ
▪ C/C++ 実行ファイル
Simulink システム ターゲット ファイルでは、生成したコードを実行するリアルタイム環境を指定します。Embedded Coder には、即座に実行可能な構成のターゲット ファイルが付属しており、サードパー
ティやカスタムのターゲットもサポートされています。組込みのターゲットには次のものがありま
す。
組込みリアルタイム組込みリアルタイム ターゲットターゲット— 基本的にあらゆる量産プロセッサーで効率的なリアルタイム実行を行うために、浮動小数点または固定小数点のデータをもつ ANSI/ISO C コード、C++ コード、およびカプセル化された C++ コードを生成します。
AUTOSAR ターゲットターゲット— AUTOSAR ソフトウェア コンポーネントの開発をサポートする、C コードと
実行時インターフェイスを生成します。
共有ライブラリ共有ライブラリ ターゲットターゲット— ホスト プラットフォームでの実行のために、Windows® ダイナミック リ
ンク ライブラリ (.dll)ファイル、または UNIX® 共有オブジェクト (.so)ファイルのいずれかとし
て、共有ライブラリ用のコードを生成します。
IDE リンクリンク ターゲットターゲット— Texas Instruments 社製の Code Composer Studio などの、サポートされているサードパーティの統合開発環境 (IDE) を使用して、コンパイルと実装のためのコードを生成します。
組込みハードウェアの特性の定義
MATLAB や Simulink のコード生成では、あらかじめ定義されているリストから実装先のプロセッサー
を選択するか、汎用のターゲット設定を使用します。また、カスタム環境のために、あらかじめ定義
されているリストを拡張することもできます。
3
コードの実装先マイクロプロセッサーの指定に使用する、あらかじめ定義されたリストや汎用設定へのアクセスを提供する Simulink モデル エクスプローラー。Embedded Coder は、8 ビット、16 ビット、および 32 ビットなどの、あらゆるマイクロプロセッサーや DSP のためのコードを生成します。
カスタム データの定義と制御
Embedded Coder では、生成されるコードにどのようにモデル データが取り入れられるかを定義および
制御することができます。ソフトウェアの統合を簡単にするために、MATLAB Coder プロジェクト ユ
ーザー インターフェイスを使用して、エントリ ポイント関数とグローバル データの MATLAB データ
のクラス、サイズ、複雑さを指定できます。
MATLAB コードにおいて、固定小数点オブジェクトを含むすべての MATLAB Coder のデータ定義がEmbedded Coder でサポートされています。
Simulink モデルにおいて、コード生成のために、次のデータ仕様とデータ ディクショナリ機能がEmbedded Coder でサポートされています。
Simulink データ オブジェクトSimulink データ オブジェクト — constant、volatile、exported global、imported global、define命令、構造体、ビット フィールド (ビットパックした構造体を含む)、および get と set のアクセス方法などの定義済みのストレージ クラスを提供。
モジュール パッケージング データ オブジェクトモジュール パッケージング データ オブジェクト — ルックアップ テーブルのチューニングやキャリブレーションのためのメモリ セグメントといった一般的に量産で使用される高度なデータ オブジェクト
のための、設定済みの属性を提供。
ユーザー データ タイプユーザー データ タイプ — 複雑なデータの抽象型を生成。これにより、生成されたコードでのモデルデータの表現、レガシー データとのインタフェース、既成の Simulink タイプの増加や置き換えをユー
ザーが正確に制御することが可能です。
次のツールは、Simulink でプロジェクト データを設計および管理するのに役立ちます。
4
カスタム ストレージ クラス デザイナーカスタム ストレージ クラス デザイナー — 生成されたコードへのデータ構造のインポート、データのエクスポート、メモリ節約のためのカスタム定義と宣言をグラフィカルに作成し、ASAM や ASAP2 な
どのデータ交換標準に準拠しているデータを自動生成することができます。
Simulink モデル エクスプローラーSimulink モデル エクスプローラー — Simulink モデルと Stateflow® チャートで使用されているすべてのデータを表示し、データ ディクショナリ フォーマットで情報を調整できるように表示をカスタマイズで
きます。
Embedded Coder では、Simulink で ASAP2 データ交換ファイルにアクセスできるため、ASAP2 規格に準拠した任意の複雑なデータ定義でモデル データをエクスポートすることができます。また、既成の機
能を変更して、別のデータ交換メカニズムを作成することもできます。
カスタム ストレージ クラス デザイナーを使用して作成したカスタム ストレージ クラス。カスタム ストレージ クラス デザイナーでは、直観的なグラフィカル インターフェイスを使用して、複雑なデータ タイプを設計、表示、検証できます。
コードの最適化とパッケージング
Embedded Coder を使用すると、関数の境界の制御や式の維持が可能で、複数ブロックにまたがる最適
化を設定して、コードサイズをさらに削減することができます。生成されたコードとのデータの交換
は、グローバル変数や関数の引数を通じて行われます。生成されたコードから、モデル中のブロック
と信号をたどることが可能です。
Embedded Coder に用意されている、MATLAB コードおよび Simulink モデルからのコード生成に関する
オプションでは、以下の作業を行うことができます。
5
▪ 数学関数および数学演算についてプロセッサ固有のコードを生成
▪ 既存または外部環境にエクスポートするためのコードの再利用
▪ コードの初期設定、ターミネーション、ログ記録、エラー処理などの不要なコードを削除
▪ 整数のみのアプリケーションから浮動小数点コードを削除
Simulink モデルには、Embedded Coder で追加の最適化や設定オプションが用意されており、以下の作
業を行うことができます。
▪ モデルからのプリプロセッサー コンパイルのために、マクロを使用してコード バリアントを生成
▪ ブール型データと Stateflow の状態をビットセットに保管
▪ 各生成ファイルのフォーマットの制御
▪ グローバル データの定義方法と参照方法を指定
▪ コメントの内容と配置を指定
6
7
ターゲットに合わせた計算の拡張および再利用可能な最適化の MATLAB の例 (左) と Simulink の例 (右)。EmbeddedCoder は、ターゲットに合わせた移植可能なコードの最適化によって、コードの効率性を向上します。
コードのコメント設定、追跡、および文書化
Embedded Coder では、MATLAB ファイルや関数、または Simulink モデルやサブシステムのために生成
されたコードを調べるために、いくつかの機能が用意されています。これらの機能を使用して、以下
の作業を行うことができます。
▪ モジュールとモデルの構成設定を記述するコード レポートを生成する
▪ 生成されるグローバル データ、データ タイプ、および関数の識別子のフォーマットを制御する
▪ 生成されるコードに、関数のヘルプ テキストを含む MATLAB コードをコメントとして含める。
また Simulink では、Embedded Coder によって、高レベルの要求仕様をコードのコメントとして挿入し、要求仕様のソースへのリンクを設ける機能が提供されています (Simulink Verification andValidation™ が必要です)。Simulink でのコード生成のコード レポートには、コード インターフェイスの説明、トレーサビリティ レポート、およびソース ファイルと生成されたコードの表示も含まれています。モデルと生成されたコードの間には双方向のリンクがあり、コードの各行と対応する Simulink モデル要素 (サブシステム、ブロック、MATLAB 関数とコード、Stateflow チャートと遷移など) の間を簡
単に行き来することができます。クリックするだけで対応するモデル要素やコードの行が強調表示さ
れるので、コードのレビューやデバッグが簡単になります。
アルゴリズムと実装間での双方向のトレーサビリティを示す、Simulink コード生成レポート。
8
製品詳細、デモ、動作環境www.mathworks.co.jp/products/embedded-coder
評価版ソフトウェアwww.mathworks.co.jp/trialrequest
営業窓口www.mathworks.co.jp/contactsales
テクニカル サポートwww.mathworks.co.jp/support
コードの実行と検証
Embedded Coder では、生成したコードをコードの実行環境に取り込むことができます。
MATLAB では、Embedded Coder から生成したコードは、MATLAB Coder で提供されるのと同じ実行フ
レームワークを使用して実行されます。
Simulink では、Simulink Coder で提供されるリアルタイム実行フレームワークが、Embedded Coder によって大幅に拡張されます。デフォルトでは、コードは リアルタイム オペレーティング システム(RTOS) の有無に関わらず、シングルタスキング、マルチタスキング、または同期モードで実行できます。また、Software-In-the-Loop (SIL) テストや Processor-In-the-Loop (PIL) テストを使用して、コードの
実行結果を検証できます。
メイン プログラムの生成
Embedded Coder では、リアルタイム環境へのコードの実装に関してユーザーが提供した情報に基づいて、拡張性に優れたメイン プログラムが生成されます。この機能では、モデルから完全にカスタマイ
ズされた実行ファイルを生成およびビルドできます。
レートのグループ化
Embedded Coder では、モデルに指定されている定期的なサンプル時間を使用して、シングルレートま
たはマルチレートでコードが生成されます。マルチレート、マルチタスキングのモデルでは、モデル内のベース レートのタスクと各サブレートのタスクについて別々の関数を生成する、レートのグルー
プ化という方法が使用されます。
リンクとターゲットの使用
サードパーティの IDE、マイクロプロセッサー、および RTOS (Wind River Systems® 製 VxWorks® を含む)
がサポートされており、生成されたコードの実装、統合、最適化、および実行を自動化することがで
きます。
SIL テストと PIL テストの実行
Embedded Coder では、Simulink のシミュレーション モードや S-function ブロックを使用して、SIL テストのための Simulink における生成コードの実行や、または、PIL テストのための組込みターゲットでの生成コードの実行を、それぞれ自動化できます。コード生成の検証 API によって、テストの実行と、
テスト結果と元のモデルからのシミュレーション結果の比較を自動的に行うことができます。サード
パーティのツールと統合して、テストの完全性を測定するために構造コードのカバレッジを解析する
ことが可能です。
リソース
オンライン ユーザー コミュニティwww.mathworks.co.jp/matlabcentral
技術トレーニング サービスwww.mathworks.co.jp/training
サードパーティ製品とサービスwww.mathworks.co.jp/connections
世界各地のお問い合わせ先www.mathworks.co.jp/contact
© 2011 The MathWorks, Inc. MATLAB and Simulink are registered trademarks of The MathWorks, Inc. See www.mathworks.com/trademarksfor a list of additional trademarks. Other product or brand names may be trademarks or registered trademarks of their respective holders. 9