制限とヒント
AUTOSAR のコード生成には次の制限が適用されます。
[コード生成のみ] チェック ボックス
[コード生成のみ] チェック ボックスを選択しない場合、モデルをビルドしたときにエラー メッセージが出力されます。このメッセージでは、次の場合にのみ AUTOSAR システム ターゲット ファイルの実行可能ファイルがビルドできることが伝えられます。
SIL (ソフトウェアインザループ) ブロックまたは PIL (プロセッサインザループ) ブロックを作成するようにモデルを設定する
SIL シミュレーション モードまたは PIL シミュレーション モードでモデルを実行する
カスタムのテンプレート makefile を指定する
AUTOSAR コンパイラの抽象化マクロ (Classic Platform)
以下のものから生じたデータまたは関数に対しては、AUTOSAR コンパイラ抽象化マクロは生成されません。
Model ブロック
Stateflow®
MATLAB® Coder™
共有されたユーティリティ関数
カスタム ストレージ クラス
ローカル変数または一時変数
エクスポートされた ARXML およびコードにおけるバス要素の次元の保持
[行優先]
に設定されたプロパティ [配列のレイアウト] でモデルが構成されている場合、バス要素の次元はエクスポートされた ARXML および生成コードで保持されます。以前は、多次元配列 Simulink.BusElement
が含まれる Simulink.Bus
データ型がモデルに含まれていた場合、エクスポートされた ARXML と生成コードにより、バス要素は 1 次元配列にフラット化されていました。今後は、生成コードとエクスポートされた ARXML に想定どおりの次元数が保持されます。
AUTOSAR Adaptive アプリケーションに対して生成された C++11 スタイルのスコープ内 Enum クラス
より簡単な統合を促進するために、既定の設定で、AUTOSAR Adaptive モデルに対して生成された C++ コードは、C++ 11 スタイルのスコープ内 enum クラス データ型を生成したコードに出力します。このデータ型の定義はビルド フォルダーの aragen/stub
フォルダーに配置されている列挙型のヘッダー ファイルで確認できます。このデータ型の定義は標準化され、コード生成の前に検証されます。
以下の表に、スコープ内 enum クラス定義と、動的列挙に対して以前に生成されたコードの動作の比較を示します。
Simulink.defineIntEnumType('BasicColors', ... {'Red','Green','Blue'},... [0;1;2],... 'DataScope','Auto',... 'StorageType','uint8')
ヘッダー ファイル内の生成された列挙型定義
以前の動作 (C++03) | 現在の既定の動作 (C++11) |
---|---|
#ifndef IMPL_TYPE_BASICCOLORS_H_ #define IMPL_TYPE_BASICCOLORS_H_ #include <cstdint> using BasicColors = uint8_t; const BasicColors Red = 0; const BasicColors Green = 1; const BasicColors Blue = 2; #endif //IMPL_TYPE_BASICCOLORS_H_ | #ifndef IMPL_TYPE_BASICCOLORS_H_ #define IMPL_TYPE_BASICCOLORS_H_ #include <cstdint> enum class BasicColors : uint8_t { Red = 0, Green = 1, Blue = 2 }; #endif //IMPL_TYPE_BASICCOLORS_H_ |
既定の動作は C++11(ISO)
に設定されたモデルに対する既定の [言語標準] によって決定されます。モデルで C++ 03 が生成されるようにこの設定を行う場合、生成されたコードにより以前のコード定義の動作が出力され、サードパーティの ARA ジェネレーターと一緒に使用するとコンパイルされない場合があります。