このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
AUTOSAR コード置換ライブラリによるコード生成
モデルが AUTOSAR コード生成用に構成されている場合は、AUTOSAR 4.0 コード置換ライブラリを使用して、AUTOSAR 規格により詳細に準拠する関数を生成できます。
AUTOSAR コード生成のコード置換ライブラリ
AUTOSAR 4.0 コード置換ライブラリにより、コード ジェネレーターをカスタマイズして AUTOSAR 規格により詳細に準拠する C コードを生成できます。次の場合にコード置換ライブラリの使用を検討します。
ライブラリで提供されているサービス ルーチンを使用する。
サービス ルーチンの置換コードがある。
AUTOSAR のファイル命名規則 (任意の指定内容を処理するためのルーチン) に従う置換コードが 1 つのヘッダーファイルに含まれている (
Mfl.h
やMfx.h
など)。AUTOSAR ライブラリをコンパイルして生成されたコードとリンクするビルド ハーネス設定がある。AUTOSAR 用のコードをビルドする方法の詳細については、コード生成を参照してください。
メモ
MATLAB® および Simulink® のルックアップ テーブルのインデックスは AUTOSAR MAP のインデックスとは異なります。MATLAB は、行 (u1
) および列 (u2
) の線形代数アプローチを採用しています。AUTOSAR (および ASAM) は x 軸 (u2
) および y 軸 (u1
) の直交座標アプローチを採用しています。ここで、u1
および u2
は Simulink 2 次元ルックアップ テーブル ブロックへの入力引数です。この違いにより、コード置換ソフトウェアは AUTOSAR MAP ルーチンの入力引数を転置します。
コード置換とコード置換ライブラリの詳細については、コード置換とは (Embedded Coder)およびコード置換ライブラリ (Embedded Coder)を参照してください。
サポートされている AUTOSAR ライブラリ ルーチンの検索
AUTOSAR コード置換ライブラリでサポートされている AUTOSAR ライブラリ ルーチンを参照するには、コード置換ビューアー (Embedded Coder)を使用します。ビューアーを開くには、コマンド プロンプトで「crviewer('AUTOSAR 4.0')
」と入力します。
詳細については、コード置換ライブラリの選択 (Simulink Coder)を参照してください。
AUTOSAR 4.0 コード置換ライブラリを使用するようにコード ジェネレーターを構成
モデルに AUTOSAR コード置換ライブラリを使用するようにコード ジェネレーターを構成するには、[コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。[コード生成] 、 [インターフェイス] 、 [コード置換ライブラリ] 、 [AUTOSAR 4.0] を選択します。
コード置換とコード置換ライブラリの詳細については、コード置換とは (Embedded Coder)およびコード置換ライブラリ (Embedded Coder)を参照してください。
AUTOSAR 4.0 ライブラリのホスト コード検証
AUTOSAR モデルの MATLAB ホスト コード検証をサポートするために、AUTOSAR Blockset は AUTOSAR 4.0 ライブラリで IFX、IFL、MFX、および MFL ルーチンのホスト実装を提供しています。ホスト ライブラリ実装では、AUTOSAR 4.0 ライブラリからコード置換をトリガーするモデルのソフトウェアインザループ (SIL) 検証を有効にします。
次の AUTOSAR モデルを検討してください。このモデルには、AUTOSAR IFX および MFX ルーチンのコード置換をトリガーするように調整された内挿および数学ブロックが含まれています。モデル コンフィギュレーション パラメーターで、[システム ターゲット ファイル] (Simulink Coder) は [autosar.tlc]
に設定され、[コード置換ライブラリ] (Embedded Coder) は [AUTOSAR 4.0]
に設定されています。
モデルの SIL シミュレーションを構成して実行します。SIL シミュレーション:
モデル コードを生成します。MathWorks® ホスト ライブラリの実装は IFX、IFL、MFX、および MFL ルーチンのコード置換で使用されます。
SIL アプリケーションをビルドします。ホスト ライブラリは SIL 実行可能ファイルにリンクされます。
モデルを実行すると、SIL 設定に基づいてシミュレーション出力が生成されます。
SIL シミュレーションに自分のホスト ライブラリまたはカスタム コードを使用する場合は、次のコマンドを使用して MathWorks ホスト ライブラリを無効化できます。
set_param(modelname,'DisableAUTOSARRoutinesHostLibrary','on');
コード置換ライブラリのチェック
コード置換では、入力、ブレークポイント、table、出力のそれぞれの型の組み合わせについて AUTOSAR 仕様と互換性があることが必要です。浮動小数点 (IFL) の置換は single 型のみをサポートしますが、固定小数点 (IFX) の置換は uint8、uint16、int8、int16 および関連付けられている固定小数点型をサポートします。これらのルーチンのブロックを使用する場合、型の組み合わせ要件は変化し、必要に応じて適用されます。
IFX/IFL 関数の置換の AUTOSAR コード置換ライブラリ例
"コード置換ビューアー"には、ルックアップ テーブルの C コードに生成できる AUTOSAR 浮動小数点内挿 (IFL) ライブラリ ルーチンおよび固定小数点内挿 (IFX) ライブラリ ルーチンがリストされます。ルックアップ テーブルの C コードを IFL ライブラリ ルーチンまたは IFX ライブラリ ルーチンに置き換えるために、AUTOSAR ブロックは AUTOSAR コード生成用に事前構成されたルックアップ テーブル ブロックを提供します。モデルに Curve または Map などのブロックを挿入してから、ブロック ダイアログ ボックスを開き、設計に必要な固有の内挿ルーチンを生成するようブロックを設定します。詳細については、AUTOSAR キャリブレーションおよび測定用のルックアップ テーブルの設定を参照してください。
この例では、AUTOSAR のルックアップ テーブル ブロックに対して生成されるコードを、AUTOSAR の IFL ライブラリ ルーチンと互換性のある関数で置換する方法を説明します。IFX ライブラリ ルーチンでコードを置換する場合は、ルックアップ テーブル ブロックのダイアログ ボックスを編集して、ターゲットのルーチン ライブラリを変更できます。
AUTOSAR ルックアップ テーブル ブロックPrelookup、Curve Using Prelookup、Map Using Prelookup、Curve、またはMapのいずれかを使用して、Simulink モデルを作成できます。たとえば、Curve Using Prelookup ブロックに接続されている Prelookup ブロックがあります。
MATLAB® コマンド ラインで次のコマンドを入力して、モデル ファイルを開くこともできます。
open_system('mAutosarLutObjs');
各ルックアップ テーブル ブロックを開いて、AUTOSAR 4.0 コード置換ライブラリ (CRL) からルーチンを生成するように設定します。ブロック設定を変更すると、ブロック ダイアログ ボックスでターゲットの AUTOSAR ルーチンの名前が更新されます。
この例にあるブロックの設定の詳細については、ルックアップ テーブル オブジェクトとブレークポイント オブジェクトを使用した COM_AXIS ルックアップ テーブルの設定を参照してください。
モデルに対して AUTOSAR 4.0 CRL を使用するようにコード ジェネレーターを設定します。[コンフィギュレーション パラメーター] ダイアログ ボックスで [コード生成]、[インターフェイス]、[コード置換ライブラリ]、[AUTOSAR 4.0] を選択します。あるいは、コマンド ラインまたはプログラムで実行する場合、
set_param
を使用してCodeReplacementLibrary
パラメーターを'AUTOSAR 4.0'
に設定します。オプションで、コード置換をトリガーしたブロックについてまとめたコード生成レポートを生成するようにモデルを設定できます。[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成]、[レポート] ペインで、オプション [コードの置き換えをトリガーするブロックをまとめる] を選択します。あるいは、コマンド ラインまたはプログラムで実行する場合、
set_param
を使用してGenerateCodeReplacementReport
パラメーターを'on'
に設定します。モデルをビルドし、期待どおりにコードが置換されているか、生成されたコードをレビューします。たとえば、ルーチンの接頭辞
Ifl
を求めて、生成されたコードを検索します。
IFL/IFX 関数とブロック マッピングに必要なアルゴリズム プロパティ設定
IFL/IFX 関数とブロック マッピング | アルゴリズム プロパティのパラメーター | 値 |
---|---|---|
Prelookup | 外挿法
|
|
インデックス検索法
|
| |
上限またはそれを超える入力に対して最後のブレークポイントを使用する
| オン | |
生成コードの範囲外入力に対する保護を削除する
| オフ | |
整数丸めモード
|
| |
Interpolation Using Prelookup | 内挿法
|
|
外挿法
|
| |
インデックスの入力を最後のインデックスに達するようにする
| オン | |
生成コードの範囲外インデックスに対する保護を削除する
| オフ | |
整数丸めモード
|
| |
Interpolation Using Prelookup | 内挿法
|
|
外挿法
|
| |
インデックスの入力を最後のインデックスに達するようにする
| オン | |
生成コードの範囲外インデックスに対する保護を削除する
| オフ | |
整数丸めモード
|
| |
n-D Lookup Table | 内挿法
|
|
外挿法
|
| |
インデックス検索法
|
| |
最後のブレークポイントまたはそれを超える入力に対してテーブルの最後の値を使用する
| オン | |
生成コードの範囲外入力に対する保護を削除する
| オフ | |
整数丸めモード
|
| |
n-D Lookup Table | 内挿法
|
|
外挿法
|
| |
インデックス検索法
|
| |
最後のブレークポイントまたはそれを超える入力に対してテーブルの最後の値を使用する
| オン | |
生成コードの範囲外入力に対する保護を削除する
| オフ | |
整数丸めモード
|
| |
Prelookup | 外挿法
| クリップ |
インデックス検索法
|
| |
上限またはそれを超える入力に対して最後のブレークポイントを使用する
| オン | |
生成コードの範囲外入力に対する保護を削除する
| オフ | |
整数丸めモード
|
| |
Interpolation Using Prelookup | 内挿法
|
|
外挿法
|
| |
インデックスの入力を最後のインデックスに達するようにする
| オン | |
生成コードの範囲外インデックスに対する保護を削除する
| オフ | |
整数丸めモード
|
| |
Interpolation Using Prelookup | 内挿法
|
|
外挿法
|
| |
生成コードの範囲外インデックスに対する保護を削除する
| オフ | |
整数丸めモード
|
| |
インデックスの入力を最後のインデックスに達するようにする
| オン | |
Interpolation Using Prelookup | 内挿法
|
|
外挿法
|
| |
インデックスの入力を最後のインデックスに達するようにする
| オン | |
生成コードの範囲外インデックスに対する保護を削除する
| オフ | |
整数丸めモード
|
| |
Interpolation Using Prelookup | 内挿法
|
|
外挿法
|
| |
生成コードの範囲外インデックスに対する保護を削除する
| オフ | |
整数丸めモード
|
| |
インデックスの入力を最後のインデックスに達するようにする
| オン | |
Interpolation Using Prelookup | 内挿法
|
|
外挿法
|
| |
生成コードの範囲外インデックスに対する保護を削除する
| オフ | |
整数丸めモード
|
| |
インデックスの入力を最後のインデックスに達するようにする
| オン | |
n-D Lookup Table | 内挿法
|
|
外挿法
|
| |
インデックス検索法
|
| |
最後のブレークポイントまたはそれを超える入力に対してテーブルの最後の値を使用する
| オン | |
生成コードの範囲外入力に対する保護を削除する
| オフ | |
整数丸めモード
|
| |
n-D Lookup Table | 内挿法
|
|
外挿法
|
| |
インデックス検索法
|
| |
生成コードの範囲外入力に対する保護を削除する
| オフ | |
整数丸めモード
|
| |
最後のブレークポイントまたはそれを超える入力に対してテーブルの最後の値を使用する
| オン | |
n-D Lookup Table | 内挿法
|
|
外挿法
|
| |
インデックス検索法
|
| |
最後のブレークポイントまたはそれを超える入力に対してテーブルの最後の値を使用する
| オン | |
生成コードの範囲外入力に対する保護を削除する
| オフ | |
整数丸めモード
|
| |
最後のブレークポイントまたはそれを超える入力に対してテーブルの最後の値を使用する
| オン | |
モデル コンフィギュレーション パラメーター [最適化] 、 [既定のパラメーター動作]
|
| |
ブレークポイント データは 2 のべき乗の間隔に一致していなければなりません。 | ||
n-D Lookup Table | 内挿法
|
|
外挿法
|
| |
インデックス検索法
|
| |
生成コードの範囲外入力に対する保護を削除する
| オフ | |
整数丸めモード
|
| |
モデル コンフィギュレーション パラメーター [最適化] 、 [信号とパラメーター] 、 [既定のパラメーター動作]
|
| |
ブレークポイント データは 2 のべき乗の間隔に一致していなければなりません。 | ||
n-D Lookup Table | 内挿法
|
|
外挿法
|
| |
インデックス検索法
|
| |
最後のブレークポイントまたはそれを超える入力に対してテーブルの最後の値を使用する
| オン | |
生成コードの範囲外入力に対する保護を削除する
| オフ | |
整数丸めモード
|
| |
ブレークポイント データは 2 のべき乗の間隔に一致してはなりません。 | ||
n-D Lookup Table | 内挿法
|
|
外挿法
|
| |
インデックス検索法
|
| |
生成コードの範囲外入力に対する保護を削除する
| オフ | |
整数丸めモード
|
| |
最後のブレークポイントまたはそれを超える入力に対してテーブルの最後の値を使用する
| オン | |
ブレークポイント データは 2 のべき乗の間隔に一致してはなりません。 | ||
n-D Lookup Table | 内挿法
|
|
外挿法
|
| |
インデックス検索法
|
| |
最後のブレークポイントまたはそれを超える入力に対してテーブルの最後の値を使用する
| オン | |
生成コードの範囲外入力に対する保護を削除する
| オフ | |
整数丸めモード
|
| |
n-D Lookup Table | 内挿法
|
|
外挿法
|
| |
インデックス検索法
|
| |
生成コードの範囲外入力に対する保護を削除する
| オフ | |
整数丸めモード
|
| |
最後のブレークポイントまたはそれを超える入力に対してテーブルの最後の値を使用する
| オン | |
n-D Lookup Table | 内挿法
|
|
外挿法
|
| |
インデックス検索法
|
| |
生成コードの範囲外入力に対する保護を削除する
| オフ | |
整数丸めモード
|
| |
最後のブレークポイントまたはそれを超える入力に対してテーブルの最後の値を使用する
| オン | |
n-D Lookup Table | 内挿法
|
|
外挿法
|
| |
インデックス検索法
|
| |
最後のブレークポイントまたはそれを超える入力に対してテーブルの最後の値を使用する
| オン | |
生成コードの範囲外入力に対する保護を削除する
| オフ | |
整数丸めモード
|
| |
モデル コンフィギュレーション パラメーター [最適化] 、 [信号とパラメーター] 、 [既定のパラメーター動作]
|
| |
ブレークポイント データは 2 のべき乗の間隔に一致していなければなりません。 | ||
n-D Lookup Table | 内挿法
|
|
外挿法
|
| |
インデックス検索法
|
| |
生成コードの範囲外入力に対する保護を削除する
| オフ | |
整数丸めモード
|
| |
最後のブレークポイントまたはそれを超える入力に対してテーブルの最後の値を使用する
| オン | |
モデル コンフィギュレーション パラメーター [最適化] 、 [信号とパラメーター] 、 [既定のパラメーター動作]
|
| |
ブレークポイント データは 2 のべき乗の間隔に一致していなければなりません。 | ||
n-D Lookup Table | 内挿法
|
|
外挿法
|
| |
インデックス検索法
|
| |
生成コードの範囲外入力に対する保護を削除する
| オフ | |
整数丸めモード
|
| |
最後のブレークポイントまたはそれを超える入力に対してテーブルの最後の値を使用する
| オン | |
モデル コンフィギュレーション パラメーター [最適化] 、 [信号とパラメーター] 、 [既定のパラメーター動作]
|
| |
ブレークポイント データは 2 のべき乗の間隔に一致していなければなりません。 | ||
n-D Lookup Table | 内挿法
|
|
外挿法
|
| |
インデックス検索法
|
| |
最後のブレークポイントまたはそれを超える入力に対してテーブルの最後の値を使用する
| オン | |
生成コードの範囲外入力に対する保護を削除する
| オフ | |
整数丸めモード
|
| |
ブレークポイント データは 2 のべき乗の間隔に一致してはなりません。 | ||
n-D Lookup Table | 内挿法
|
|
外挿法
|
| |
インデックス検索法
|
| |
生成コードの範囲外入力に対する保護を削除する
| オフ | |
整数丸めモード
|
| |
最後のブレークポイントまたはそれを超える入力に対してテーブルの最後の値を使用する
| オン | |
ブレークポイント データは 2 のべき乗の間隔に一致してはなりません。 | ||
n-D Lookup Table | 内挿法
|
|
外挿法
|
| |
インデックス検索法
|
| |
生成コードの範囲外入力に対する保護を削除する
| オフ | |
整数丸めモード
|
| |
最後のブレークポイントまたはそれを超える入力に対してテーブルの最後の値を使用する
| オン | |
ブレークポイント データは 2 のべき乗の間隔に一致してはなりません。 |