メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

制限とヒント

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 コード置換ライブラリによるコード生成を参照してください。

参考

トピック