このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
制限とヒント
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 コード生成では、生成コードのパフォーマンスを向上させるためにループ展開のしきい値 (Simulink Coder)などの最適化がサポートされています。それらの最適化が生成コードで実装される環境はリリースやターゲットによって異なることがあります。
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 ジェネレーターと一緒に使用するとコンパイルされない場合があります。
AUTOSAR コード生成での複素数のサポート
AUTOSAR コード生成では、ソフトウェア コンポーネント内部の複素数がサポートされます。ただし、モデル インターフェイス レベルでの複素信号はサポートされていません。このコード生成設定の詳細については、サポート: 複素数 (Embedded Coder)を参照してください。
ルートレベルの使用されていない Inport ブロックの最適化
接地されている Inport ブロックは、ソフトウェアで使用されていないものと見なされ、コード生成時に最適化で除外されます。その結果、それらの入力端子が RTE スタブの生成時に考慮されず、生成される Rte_Type.h ヘッダー ファイルにそれらのブロックのデータ型が記述されないことがあります。
コード置換の一貫性のない動作
コード置換が想定と異なるように動作することがあり得ます。たとえば、入力データ型と出力データ型が実装コードと一致している場合でも、Simulink® ブロックの中間データ型は、実装コードで使用される中間データ型と一致しないことがあります。
また、置換コードの実装の詳細が原因で不一致が生じることもあります。実装が、Simulink がシミュレーションに使用するロジックと異なる場合があるためです。これにより、シミュレーションと生成されたコードの動作の間に不一致が生じることがあります。シミュレーションと生成されたコードの動作の間に不一致が生じる可能性がある場合は、生成されたコードを調べてコード置換を検証し、実装を確認することで、不一致を正当化します。
AUTOSAR 4.x コード置換ライブラリの詳細については、AUTOSAR コード置換ライブラリによるコード生成を参照してください。
参考
トピック
- サポート: 複素数 (Embedded Coder)
- SIL および PIL による AUTOSAR コードの検証
- ループ展開のしきい値 (Simulink Coder)