cgsl_0413: コンポーネント展開用のコンポーネントの状態と出力でのメモリの再利用
ID: タイトル | cgsl_0413: コンポーネント展開用のコンポーネントの状態と出力でのメモリの再利用 | |
---|---|---|
説明 | 状態と出力のデータにメモリを再利用することでコンポーネントのメモリ使用量を最適化するには、次のいずれかの方法を使用します。 | |
A | 関数ループバック パターンを使用して状態変数を信号としてモデル化します。 | |
B | Delay ブロックを使用して状態変数を明示的にモデル化します。Delay ブロックと関数出力端子の状態を同じリテラルの初期条件値に設定します。 | |
メモ | これらの方法では永続的なメモリにアクセスできるため、このアプローチは [Outside Execution] と [Direct Access] のデータ通信方法に適用されます。 方法 B の場合、コード ジェネレーターによるメモリ使用量の最適化はベスト エフォートになります。パラメーターではなく信号を使用して動的に初期化が行われる場合など、状況によってはコード ジェネレーターで最適化が適用されないことがあります。最適化が行われない場合は、方法 A の使用を検討してください。A と B のいずれのアプローチを使用するかに関係なく、関数の同時実行によるデータ アクセスのロバストな処理がコード ジェネレーターで実装されます。 | |
根拠 | A | 状態と出力のデータへのメモリの再利用。 動的初期化でも最適化を実施。 |
B | 状態と出力のデータへのメモリの再利用。 | |
モデル アドバイザー チェック | このガイドラインについてのモデル アドバイザー チェックは提供されていません。 | |
例 | この例では、データ通信方法を [Direct Access] に設定します。 void CD_accumulator(void) { int32_T i; for (i=0; i<10; i++) { Out[i] += In[i]; } } この例では、データ通信方法を [Outside Execution] に設定します。 void CD_accumulator(void) { real_T tmpIrvRead[10]; int32_T i; tmp = set_CD_accumulator_her_out_y(); for (i=0; i<10; i++) { tmp[i] = (get_CD_accumulator_DataTransfer(tmpIrvRead))[i] + tmp[i]; } } |
参考
Code Interfaces and Code Interface Specification (Embedded Coder)
Service Interfaces (Embedded Coder)
Embedded Coder ディクショナリ (Embedded Coder)
Data Communication Methods (Embedded Coder)
モデルの初期化に動的メモリ割り当てを使用 (Embedded Coder)