Real-Time Workshop User's Guide | ![]() ![]() |
Simulink Coderとコードフォーマット
Simulink Coderは、モデルをHLLコードに変換するコードジェネレータです。Simulink Coderは、違った実行環境またはターゲットに対して設計された様々なコードフォーマットをサポートします。
伝統的な組み込みシステムの開発プロセスでは、エンジニアは組み込みシステムにおいて実現されるアルゴリズム(または方程式)を開発します。これらのアルゴリズムは、マニュアルでCやAdaのようなコンピュータ言語に変換されます。通常組み込みシステムエンジニアによって行われる、この変換プロセスは、データ入力のようなものです。
Simulinkを使ってアルゴリズム(または方程式)を指定し、Simulink Coder によって対応するコードを生成することにより、エンジニアはこの冗長な変換ステップを省くことができます。これにより、組み込みシステムエンジニアは、組み込みシステムの作成に関する主要な問題に集中することができます(ハードウェア構成、デバイスドライバ、管理ロジック、モデル方程式に対する補助ロジック)。Simulinkは、システムのアルゴリズム部分が表現されているプログラミング言語です。
Simulink Coderは、様々なコードフォーマットをサポートしているオープンな"グラフィカルコンパイラ"です。コードフォーマットとターゲット間の関係は、以下のようになります。
Figure 1-1: コードフォーマットとターゲット間の関係
組み込みコードフォーマット
組み込みコードフォーマットは、製品ターゲットに対して設計されています。生成コードは、速度、メモリ使用量、簡単さについて最適化されています。一般的に、このフォーマットは、深く組み込まれた、あるいは展開されたアプリケーションで用いられます。ダイナミックなメモリアロケーションコールはありません。すべての固定メモリは、スタティックに割り当てられます。Simulink Coderは、組み込みコードフォーマットにおいてCまたはAdaコードを生成できます。
組み込みコードフォーマットは、呼び出しのインタフェースを簡略化し、メモリ使用量を削減します。このフォーマットは、コンパクトなリアルタイムオブジェクト構造でモデルとタイミングデータを管理します。これは、きわめて大きい、モデル固有のSimulinkデータ構造(SimStruct
)を使って生成コードを管理するその他のコードフォーマットと対照的です。
組み込みコードフォーマットは、生成コードを読みやすくし、コードサイズを削減し、実行を高速化します。組み込みコードフォーマットは、すべての離散時間シングルレートモデル、およびマルチレートモデルをサポートします。
最適化および特化されたデータ構造のため、組み込みコードフォーマットは、インライン化されたS-ファンクションのみをサポートします。
リアルタイムコードフォーマット
リアルタイムコードフォーマットは、ラピッドプロトタイピングに対して最適です。このコードフォーマット(Cのみ)は、モニタリングとチューニングの機能をサポートし、外部モードとの接続を容易にします。リアルタイムコードフォーマットは、連続時間モデル、離散時間シングルレートおよびマルチレートモデル、ハイブリッド連続時間および離散時間モデルをサポートします。リアルタイムコードフォーマットは、インライン化されたS-ファンクションおよび非インラインS-ファンクションの両方をサポートします。メモリ割り当ては、コンパイル時にスタティックに宣言されます。
リアルタイムMallocコードフォーマット
リアルタイムmallocコードフォーマットは、リアルタイムコードフォーマットと似ています。基本的な違いは、リアルタイムmacllocコードフォーマットはメモリをダイナミックに宣言することです。これは、ユニークなデータセットを含む各モデルで、複数の同一モデルをサポートしています。複数のモデルは、名前が重複することなく1つの実行ファイルに統合することができます。複数個のモデルは、1つの実行ファイルに作成することができます。
S-Function/Acceleratorコードフォーマット
このコードフォーマットは、S-Function TargetおよびSimulink Acceleratorで用いられ、Simulink C MEX S-function APIと一致するコードを生成します。
![]() | Real-Time Workshopの利点 | ターゲット環境 | ![]() |