Real-Time Workshop User's Guide | ![]() ![]() |
インラインおよび非インラインドライバ
ターゲットシステムで、デバイスドライバは、2つの機能をもちます。1つ目は、Real-Time Workshopによって生成されたその他のコードをコンパイル、リンクするコードモジュールとして機能します。さらに、ドライバはシミュレーション中にSimulinkと相互作用する必要があります。これらの両方の要求を満たすために、ドライバコードをSimulinkのデバイスドライバブロックに組み込む必要があります。
いくつかの方法でドライバのS-Functionをビルドすることができます。
多くの場合、リアルタイムの実行用にドライバブロックから生成されたコードは、シミュレーションではブロックが利用するコードとは異なって実行されなければなりません。たとえば、出力ドライバは、リアルタイムでハードデバイスのアドレスに書き込みます。しかし、これらの書き込み操作は、シミュレーションではエラーになります。
Real-Time Workshopは、標準のコンパイルの条件文とインクルードファイルを提供し、両方の場合に対してドライバを作成します(「Simulinkとリアルタイムに対する条件付きのコンパイル」を参照)。
S-Functionのインライン化は、性能を著しく向上させます。しかし、増加する開発とメンテナンスの負荷が代わりに発生します。デバイスドライバブロックをインライン化するには、ブロックを最初にC MEX-ファイルとして、2回目にTLCプログラムとして、2回実現する必要があります。
C MEX-ファイル版は、シミュレーションで利用されます。シミュレーションは、通常I/Oボードやその他のターゲットハードウェアへのアクセスをもたないので、C MEX-ファイル版はモデル内でしばしば"ダミー" ブロックとして扱われます。たとえば、ディジタル-アナログコンバータ(DAC)デバイスドライバブロックは、シミュレーションに対してはしばしばスタブとして実現されます。
あるいは、C MEX-ファイル版は、ハードウェアの挙動をシミュレーションすることができます。たとえば、アナログ-ディジタルコンバータ(ADC)デバイスドライバブロックは、データファイルまたはMATLABワークスペースからサンプルの値を読み込みます。
TLC版は、製品システムでターゲットハードウェアにアクセスする実際の作業コードを生成します。
インラインデバイスドライバは、以下の場合に適切な設計の選択肢です。
Simstruct
を作成します。各Simstruct
は、1K以上のメモリを使います。インラインS-Functionは、Simstruct
を割り当てません。最適なメモリ使用量のために、ERTターゲットと共にインラインS-Functionを使うことを考慮してください。![]() | デバイスドライバの作成 | デバイスドライバの必要条件と制限 | ![]() |