Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

コード生成用の AUTOSAR 要素のマッピング

Simulink® では、コード マッピング エディターと AUTOSAR ディクショナリを個別にまたは組み合わせて使用して、AUTOSAR ソフトウェア コンポーネントをグラフィカルに設定し、Simulink モデル要素を AUTOSAR コンポーネント要素にマッピングできます。詳細については、AUTOSAR コンポーネントの構成を参照してください。

Simulink モデルのパースペクティブで Simulink モデル要素を AUTOSAR コンポーネント要素にマッピングするには、コード マッピング エディターを使用します。このエディター表示は、[Functions][Inports][Outports] など、表形式で情報を表示する複数のタブで構成されます。それらのテーブルから Simulink 要素を選択し、対応する AUTOSAR 要素にマッピングします。マッピングの設定内容は、生成される AUTOSAR 準拠の C コードとエクスポートされる ARXML 記述に反映されます。

コード マッピング エディターは、AUTOSAR ソフトウェア コンポーネント モデルから参照されるサブモデルのマッピングも提供します。詳細については、AUTOSAR コンポーネント モデルから参照されるサブモデルのキャリブレーション データのマッピングを参照してください。

Simulink から AUTOSAR へのマッピングのワークフロー

Simulink モデル要素を AUTOSAR ソフトウェア コンポーネント要素にマッピングするには、以下の手順に従います。

  1. AUTOSAR システム ターゲット ファイル [autosar.tlc] が選択されているモデルを開きます。

  2. マッピングされた AUTOSAR モデルのビューを作成するか開きます。モデル ウィンドウで、次のいずれかを行います。

    • [アプリ] タブから、AUTOSAR Component Designer アプリを開きます。

    • 右下隅にあるパースペクティブ コントロールをクリックし、[コード] を選択します。

    モデルがまだ AUTOSAR ソフトウェア コンポーネントにマッピングされていない場合、AUTOSAR コンポーネントのクイック スタートが開きます。AUTOSAR コンポーネント開発用のモデルを構成するには、クイック スタートの手順に従い、[Finish] をクリックします。詳細については、マッピングされた AUTOSAR コンポーネントのクイック スタートでの作成を参照してください。

    AUTOSAR コードのパースペクティブでモデルが開きます。このパースペクティブには、ヘルプ パネルとプロパティ インスペクター ダイアログ ボックスに加え、モデルのすぐ下にコード マッピング エディターが表示されます。

    コード マッピング エディターでは、AUTOSAR マッピング情報を図として得られます。一括編集や要素のフィルターが可能なほか、モデル要素や AUTOSAR のプロパティに簡単に移動することができ、モデル要素のトレーサビリティも備えています。

  3. コード マッピング エディターのタブを切り替えて次の操作を行います。

    • Simulink のエントリポイント関数を AUTOSAR のランナブルにマッピングします。

    • Simulink の入力端子または出力端子を特定のデータ アクセス モードで AUTOSAR の受信ポートまたは送信ポートと送信側/受信側データ要素にマッピングします。

    • Simulink モデルのワークスペース パラメーターを AUTOSAR コンポーネントのパラメーターにマッピングします。

    • Simulink データ ストアを AUTOSAR 変数にマッピングします。

    • Simulink ブロック信号または状態を AUTOSAR 変数にマッピングします。

    • Simulink のデータ転送ラインを AUTOSAR のインターランナブル変数 (IRV) にマッピングします。

    • Simulink の関数呼び出しを AUTOSAR のクライアント ポートとクライアント/サーバー オペレーションにマッピングします。

    [コンテンツのフィルター] フィールド (使用可能な場合) を使用して、現在のビューに一部の要素のみを表示し、その他の要素を省略します。

  4. モデル要素をマッピングしたら、[検証] ボタン をクリックして AUTOSAR コンポーネントの構成を検証します。エラーが報告された場合は、対処した上で検証を再試行します。

エントリポイント関数の AUTOSAR ランナブルへのマッピング

コード マッピング エディターの [Functions] タブでは、AUTOSAR ランナブル エンティティ (ランナブル) の Simulink でのモデル化をサポートしています。AUTOSAR コンポーネントの内部動作を実装する AUTOSAR ランナブルと AUTOSAR イベントを AUTOSAR ディクショナリを使用して作成した後、コード マッピング エディターを開きます。[Functions] タブを使用して、Simulink エントリポイント関数を AUTOSAR ランナブルにマッピングします。

詳細については、AUTOSAR ランナブルとイベントの設定を参照してください。

コード マッピング エディターの [Functions] タブでは、それぞれの Simulink エントリポイント関数が AUTOSAR ランナブルにマッピングされます。モデルで Simulink エントリポイント関数の読み込みや更新を行うには、[更新] ボタン をクリックします。

[Functions] タブでは、次のことを実行できます。

  • エントリポイント関数を選択してから AUTOSAR コンポーネントに表示されるリストから AUTOSAR ランナブルのメニュー値を選択して、Simulink エントリポイント関数をマッピングできます。

  • ランナブル関数コードと内部データのソフトウェア アドレス メソッド (SwAddrMethod) を指定します。SwAddrMethod 名を指定する場合、コード生成で名前を使用してランナブル関数とデータ定義をメモリ セクションでグループ化します。詳細については、SwAddrMethod の設定を参照してください。

    ランナブルの SwAddrMethod を指定するには、対応するエントリポイント関数を選択します。プロパティ インスペクターには、選択した関数のコード属性 [SwAddrMethod][Internal Data SwAddrMethod] が表示されます。プロパティ インスペクターで、各プロパティでリストされている有効な値から SwAddrMethod 名を選択します。

    コンポーネントで追加の SwAddrMethod 名を作成するには、AUTOSAR ディクショナリの [SwAddrMethods] ビューを使用します。詳細については、AUTOSAR SwAddrMethod の設定を参照してください。

メモ

ランナブル内部データ SwAddrMethod のコード生成では、モデル コンフィギュレーション オプション [コード生成][インターフェイス][エントリポイント関数ごとに個別の内部データを生成] (GroupInternalDataByFunction) を on に設定します。

入力端子と出力端子の AUTOSAR 送信側/受信側ポートへのマッピング

コード マッピング エディターの [Inports] タブと [Outports] タブでは、AUTOSAR 送信側/受信側 (S-R) 通信の Simulink でのモデル化をサポートしています。モデルに含まれる AUTOSAR の S-R ポート、S-R インターフェイス、S-R データ要素を AUTOSAR ディクショナリを使用して作成した後、コード マッピング エディターを開きます。[Inports] タブと [Outports] タブを使用して、Simulink のルートの入力端子と出力端子を AUTOSAR の受信ポートと送信ポートおよび AUTOSAR S-R データ要素にマッピングします。

詳細については、AUTOSAR 送信側/受信側通信の設定およびAUTOSAR のキューに登録されている送信側/受信側通信の設定を参照してください。

コード マッピング エディターの [Inports] タブでは、それぞれの Simulink ルート入力端子が AUTOSAR 受信ポートおよび S-R インターフェイス データ要素にマッピングされます。[Inports] タブでは次のことが可能です。

  • 入力端子を選択してから AUTOSAR コンポーネントに表示されるリストから AUTOSAR ポートと AUTOSAR 要素のメニュー値を選択して、Simulink 入力端子をマッピングします。

  • ポートの AUTOSAR データ アクセス モードを選択します。[ImplicitReceive][ExplicitReceive][ExplicitReceiveByVal][QueuedExplicitReceive][ErrorStatus][IsUpdated][EndToEndRead]、または [ModeReceive]

入力端子を選択した場合、プロパティ インスペクターに追加のポート通信仕様 (ComSpec) 属性が表示されます。

  • AUTOSAR のキューに登録されていない受信ポートについて変更可能な ComSpec 属性は AliveTimeoutHandleNeverReceivedInitValue です。

  • キューに登録されている受信ポートについて変更可能な ComSpec 属性は QueueLength です。

詳細については、AUTOSAR 送信側/受信側ポートの ComSpec の設定を参照してください。

コード マッピング エディターの [Outports] タブでは、それぞれの Simulink ルート出力端子が AUTOSAR 送信ポートおよび S-R インターフェイス データ要素にマッピングされます。[Outports] タブでは次のことが可能です。

  • 出力端子を選択してから AUTOSAR 端子と AUTOSAR 要素のメニュー値を選択して、Simulink 出力端子をマッピングします。

  • ポートの AUTOSAR データ アクセス モードを選択します。[ImplicitSend][ImplicitSendByRef][ExplicitSend][QueuedExplicitSend][EndToEndWrite] または [ModeSend]

AUTOSAR のキューに登録されていない送信ポートにマッピングされた出力端子を選択した場合、プロパティ インスペクターに追加のポート通信仕様 (ComSpec) 属性が表示されます。変更可能な ComSpec 属性は InitValue です。詳細については、AUTOSAR 送信側/受信側ポートの ComSpec の設定を参照してください。

モデル ワークスペース パラメーターの AUTOSAR コンポーネント パラメーターへのマッピング

コード マッピング エディターの [Parameters] タブでは、Simulink モデル ワークスペース パラメーターを AUTOSAR 実行時キャリブレーションの AUTOSAR パラメーターにマッピングできます。マッピングできるモデル ワークスペース パラメーターの例には、次が含まれます。

  • Simulink パラメーター オブジェクト

  • Simulink ルックアップ テーブル オブジェクト

  • Simulink ブレークポイント オブジェクト

ルックアップ テーブル オブジェクトとブレークポイント オブジェクトを AUTOSAR キャリブレーション パラメーターにマッピングすることで、AUTOSAR パラメーターを統合ルックアップおよび分散ルックアップ用にモデル化できます。詳細については、AUTOSAR 測定およびキャリブレーション用のルックアップ テーブルの設定を参照してください。

たとえば、モデル ワークスペース パラメーターを作成した後、モデル エクスプローラーを使用して、コード マッピング エディターを開き、[Parameters] タブを選択します。Simulink モデル ワークスペース パラメーターを選択し、それらを以下にマッピングします。

  • 定数メモリや共有パラメーター、インスタンスごとのパラメーターなどの AUTOSAR コンポーネント内部パラメーター。

  • パラメーター データに対するポートベースのアクセス用パラメーター受信コンポーネントで使用される AUTOSAR ポートベースのパラメーター。

詳細については、AUTOSAR 定数メモリの設定AUTOSAR 共有パラメーターまたはインスタンスごとのパラメーターの設定およびパラメーター コンポーネントと通信するための AUTOSAR ポート パラメーターの設定を参照してください。

[Parameters] タブに、AUTOSAR パラメーターにマッピングできる各 Simulink モデル ワークスペース パラメーターがリストされます。[Parameters] タブで、次を実行します。

  • Simulink モデル ワークスペース パラメーターがモデル引数として設定されない (つまり、マルチインスタンス モデルの各インスタンスに一意でない) 場合、パラメーターを選択してから、AUTOSAR パラメーター タイプのメニュー値を選択して、パラメーターをマッピングできます。このワークフローでは、有効なパラメーター タイプは [ConstantMemory][SharedParameter] または [Auto] です。ソフトウェア マッピングの既定値を受け入れる場合は、[Auto] を指定します。

    たとえば、モデル例 autosar_swc_counter[パラメーター] タブを次に示します。

  • Simulink モデル ワークスペース パラメーターがモデル引数として設定される (つまり、マルチインスタンス モデルの各インスタンスに一意である) 場合、パラメーターを選択してから、AUTOSAR パラメーター タイプのメニュー値を選択して、パラメーターをマッピングできます。このワークフローでは、有効なパラメーター タイプは [PerInstanceParameter][PortParameter] または [Auto] です。ソフトウェア マッピングの既定値を受け入れる場合は、[Auto] を指定します。

    たとえば、モデル例 autosar_swc_throttle_sensor[パラメーター] タブを次に示します。モデル例 autosar_composition には autosar_swc_throttle_sensor の 2 つのインスタンスが含まれます。

  • [Auto] 以外のパラメーター値を選択する場合、プロパティ インスペクターを使用して、パラメーターの他のコードとキャリブレーション属性を表示または変更します。

    属性目的
    Const ([ConstantMemory] のみ)AUTOSAR パラメーターの生成コードに C 型修飾子 const を含めるかどうかを指定します。詳細については、AUTOSAR 静的メモリと定数メモリの C 型修飾子の指定を参照してください。
    Volatile ([ConstantMemory] のみ)AUTOSAR パラメーターの生成コードに C 型修飾子 volatile を含めるかどうかを指定します。詳細については、AUTOSAR 静的メモリと定数メモリの C 型修飾子の指定を参照してください。
    AdditionalNativeTypeQualifier ([ConstantMemory] のみ)AUTOSAR パラメーターの生成コードに含める AUTOSAR の追加のネイティブ型の修飾子を指定します。詳細については、AUTOSAR 静的メモリと定数メモリの C 型修飾子の指定を参照してください。
    SwAddrMethodAUTOSAR パラメーターで有効としてリストされている中から SwAddrMethod 名を選択します。コード生成では、SwAddrMethod 名を使用して、メモリセクションで AUTOSAR パラメーターをグループ化し、測定ツールおよびキャリブレーション ツールからアクセスできるようにします。詳細については、SwAddrMethod の設定を参照してください。
    SwCalibrationAccess測定ツールとキャリブレーション ツールで AUTOSAR パラメーターにアクセスする方法を指定します。有効なアクセス値には、[ReadOnly][ReadWrite]、および [NotAccessible] があります。詳細については、SwCalibrationAccess の設定を参照してください。
    DisplayFormatAUTOSAR パラメーターの表示形式を指定します。AUTOSAR の表示形式仕様は、測定およびキャリブレーション データを表示する幅と精度を制御します。詳細については、DisplayFormat の設定を参照してください。
    Port ([PortParameter] のみ)AUTOSAR ディクショナリで構成されたパラメーター受信ポートの名前を指定します。
    DataElement ([PortParameter] のみ)AUTOSAR ディクショナリで構成されたパラメーター インターフェイス データ要素の名前を指定します。

データ ストアの AUTOSAR 変数へのマッピング

コード マッピング エディターの [Data Stores] タブで、Simulink Data Store Memory ブロックを AUTOSAR 実行時キャリブレーションの AUTOSAR 変数にマッピングできます。Data Store Memory ブロックをモデルで作成したら、コード マッピング エディターを開いて [Data Stores] タブを選択します。データ ストアを選択して、それらを AUTOSAR 型のインスタンスごとのメモリや AUTOSAR の静的メモリなどの AUTOSAR 変数にマッピングします。

詳細については、AUTOSAR のインスタンスごとのメモリの設定およびAUTOSAR の静的メモリの設定を参照してください。

[Data Stores] タブには AUTOSAR 変数にマッピングできる各データ ストアがリストされます。次のことが可能です。

  • データ ストアを選択してから、AUTOSAR 変数型のメニュー値を選択して、Simulink データ ストアをマッピングします。[ArTypedPerInstanceMemory][StaticMemory]、または [Auto] を選択します。ソフトウェア マッピングの既定値を受け入れる場合は、[Auto] を指定します。

    たとえば、モデル例 autosar_bsw_sensor1[Local Data Stores] タブを次に示します。

  • [Auto] 以外の変数型を選択する場合、プロパティ インスペクターを使用して、変数の他のコードとキャリブレーション属性を表示または変更します。

    属性目的
    ShortName

    AUTOSAR 変数の省略名を指定します。指定しない場合、ARXML エクスポートで省略名が生成されます。

    Volatile ([StaticMemory] のみ)C 型修飾子 volatile を AUTOSAR 変数の生成コードに含めるかどうかを指定します。詳細については、AUTOSAR 静的メモリと定数メモリの C 型修飾子の指定を参照してください。
    AdditionalNativeTypeQualifier ([StaticMemory] のみ)AUTOSAR 変数の生成コードに含める AUTOSAR の追加のネイティブ型修飾子を指定します。詳細については、AUTOSAR 静的メモリと定数メモリの C 型修飾子の指定を参照してください。
    NeedsNVRAMAccess (ArTypedPerInstanceMemory のみ)AUTOSAR 変数がプロセッサの不揮発性 RAM へのアクセスを必要とするかどうかを指定します。[true] を選択し、このインスタンスごとのメモリを特定の NVRAM ブロックのミラー ブロックとして設定します。
    SwAddrMethodAUTOSAR 変数で有効としてリストされている中から SwAddrMethod 名を選択します。コード生成では、SwAddrMethod 名を使用して、メモリセクションで AUTOSAR 変数をグループ化し、測定ツールおよびキャリブレーション ツールからアクセスできるようにします。詳細については、SwAddrMethod の設定を参照してください。
    SwCalibrationAccess測定ツールとキャリブレーション ツールで AUTOSAR 変数にアクセスする方法を指定します。有効なアクセス値には、[ReadOnly][ReadWrite]、および [NotAccessible] があります。詳細については、SwCalibrationAccess の設定を参照してください。
    DisplayFormatAUTOSAR 変数の表示形式を指定します。AUTOSAR の表示形式仕様は、測定およびキャリブレーション データを表示する幅と精度を制御します。詳細については、DisplayFormat の設定を参照してください。

AUTOSAR 変数へのブロック信号とブロック状態のマッピング

コード マッピング エディターの [信号/状態] タブで、以下を実行できます。

  • Simulink ブロック信号と状態を AUTOSAR 実行時キャリブレーションの AUTOSAR 変数にマッピングする。

  • AUTOSAR コンポーネントの信号マッピングからブロック信号を選択して追加し、削除する。

コード マッピング エディターで、状態オーナー ブロックに対応する Simulink ブロック状態をマッピングに使用できます。

Simulink ブロックの信号をマッピング用に使用できるようにするには、コード マッピング エディターのボタンまたはモデル キューを使用します。

  • モデル キャンバスで、1 つ以上の信号を選択します。コード マッピング エディターを開き、[信号/状態] タブで、[追加] ボタン をクリックします。

  • モデルのキャンバスで、信号を選択します。表示された省略記号にカーソルを置き、モデル キュー [選択した信号をコード マッピングに追加] を選択します。

または、MATLAB® 関数 addSignal を呼び出します。

ブロック信号を選択して AUTOSAR コンポーネントの信号マッピングに追加した後、コード マッピング エディターを開いて、[信号/状態] タブを選択します。ブロック信号と状態を選択して、それらを AUTOSAR 型のインスタンスごとのメモリや AUTOSAR の静的メモリなどの AUTOSAR 変数にマッピングします。

詳細については、AUTOSAR のインスタンスごとのメモリの設定およびAUTOSAR の静的メモリの設定を参照してください。

[信号/状態] タブ、[信号] ノードには、それぞれの名前付き、またはテスト ポイント AUTOSAR 変数にマッピングできる Simulink ブロック信号がリストされます。Simulink ブロック信号をマッピングするには、信号を選択してから、AUTOSAR 変数型のメニュー値 [ArTypedPerInstanceMemory][StaticMemory]、または [Auto] を選択します。ソフトウェア マッピングの既定値を受け入れる場合は、[Auto] を指定します。

たとえば、モデル例 autosar_swc_counter[信号/状態] タブを示します。

[Signals/States] タブ、[States] ノードには、それぞれに構成可能な、AUTOSAR 変数にマッピングできる Simulink ブロック状態がリストされます。Simulink ブロック状態をマッピングするには、状態を選択してから、AUTOSAR 変数型のメニュー値 [ArTypedPerInstanceMemory][StaticMemory]、または [Auto] を選択します。ソフトウェア マッピングの既定値を受け入れる場合は、[Auto] を指定します。

信号または状態を [Auto] 以外の変数型にマッピングする場合は、プロパティ インスペクターを使用して、変数の他のコードおよびキャリブレーション属性を表示または変更できます。

属性目的
ShortName

AUTOSAR 変数の省略名を指定します。指定しない場合、ARXML エクスポートで省略名が生成されます。

  • 信号の場合、自動生成される省略名が信号名と異なる場合があります。

  • 状態の場合、自動生成される省略名は状態名 (存在する場合) に基づきます。状態に名前がない場合、生成される名前はブロック名と異なる場合があります。

Volatile ([StaticMemory] のみ)C 型修飾子 volatile を AUTOSAR 変数の生成コードに含めるかどうかを指定します。詳細については、AUTOSAR 静的メモリと定数メモリの C 型修飾子の指定を参照してください。
AdditionalNativeTypeQualifier ([StaticMemory] のみ)AUTOSAR 変数の生成コードに含める AUTOSAR の追加のネイティブ型修飾子を指定します。詳細については、AUTOSAR 静的メモリと定数メモリの C 型修飾子の指定を参照してください。
SwAddrMethodAUTOSAR 変数で有効としてリストされている中から SwAddrMethod 名を選択します。コード生成では、SwAddrMethod 名を使用して、メモリセクションで AUTOSAR 変数をグループ化し、測定ツールおよびキャリブレーション ツールからアクセスできるようにします。詳細については、SwAddrMethod の設定を参照してください。
SwCalibrationAccess測定ツールとキャリブレーション ツールで AUTOSAR 変数にアクセスする方法を指定します。有効なアクセス値には、[ReadOnly][ReadWrite]、および [NotAccessible] があります。詳細については、SwCalibrationAccess の設定を参照してください。
DisplayFormatAUTOSAR 変数の表示形式を指定します。AUTOSAR の表示形式仕様は、測定およびキャリブレーション データを表示する幅と精度を制御します。詳細については、DisplayFormat の設定を参照してください。

AUTOSAR コンポーネントの信号マッピングから Simulink ブロック信号を削除するには、コード マッピング エディター ボタンまたはモデル キューを使用します。

  • モデル キャンバスまたは [信号/状態] タブで、1 つ以上の信号を選択します。[信号/状態] タブで、[削除] ボタン をクリックします。

  • モデルのキャンバスで、信号を選択します。表示された省略記号にカーソルを置いて、モデル キュー [選択した信号をコード マッピングから削除] を選択します。

または、MATLAB 関数 removeSignal を呼び出します。

データ転送の AUTOSAR インターランナブル変数へのマッピング

コード マッピング エディターの [Data Transfers] タブでは、AUTOSAR インターランナブル変数 (IRV) の Simulink でのモデル化をサポートしています。ランナブルを接続して AUTOSAR コンポーネントの内部動作を実装する AUTOSAR IRV を AUTOSAR ディクショナリを使用して作成した後、コード マッピング エディターを開きます。[Data Transfers] タブを使用して、Simulink データ転送ラインを AUTOSAR IRV にマッピングします。

詳細については、AUTOSAR コンポーネントの動作のモデル化を参照してください。レートベースおよび関数呼び出しベースのランナブルでの IRV の使用例については、AUTOSAR ソフトウェア コンポーネントのモデル化のモデル例を参照してください。

コード マッピング エディターの [Data Transfers] タブでは、それぞれの Simulink データ転送ラインが AUTOSAR IRV にマッピングされます。モデルで Simulink データ転送の読み込みや更新を行うには、[更新] ボタン をクリックします。

[Data Transfers] タブでは、信号名を選択してから AUTOSAR コンポーネントに表示されるリストから IRV アクセス モードのメニュー値 ([Implicit] または [Explicit]) と AUTOSAR IRV 名を選択して、Simulink データ転送ラインをマッピングできます。

たとえば、モデル例 autosar_swc_slfcns[データ転送] タブを次に示します。

関数呼び出しの AUTOSAR クライアント/サーバー ポートおよびオペレーションへのマッピング

コード マッピング エディターの [Function Callers] タブでは、AUTOSAR クライアント/サーバー (C-S) 通信のクライアント側の Simulink でのモデル化をサポートしています。モデルに含まれる AUTOSAR のクライアント ポート、C-S インターフェイス、C-S オペレーションを AUTOSAR ディクショナリを使用して作成した後、コード マッピング エディターを開きます。[Function Callers] タブを使用して、Simulink 関数呼び出しを AUTOSAR クライアント ポートおよび AUTOSAR C-S オペレーションにマッピングします。

詳細については、AUTOSAR クライアント/サーバー通信の構成を参照してください。

コード マッピング エディターの [Function Callers] タブでは、それぞれの Simulink 関数呼び出しが AUTOSAR クライアント ポートおよび AUTOSAR C-S インターフェイス オペレーションにマッピングされます。モデルで Simulink 関数呼び出しの読み込みや更新を行うには、[更新] ボタン をクリックします。

[Function Callers] タブでは、関数呼び出しの名前を選択してから AUTOSAR コンポーネントに表示されるリストから AUTOSAR クライアント ポートと AUTOSAR オペレーションのメニュー値を選択して、Simulink 関数呼び出しをマッピングできます。

AUTOSAR 静的メモリと定数メモリの C 型修飾子の指定

AUTOSAR コンポーネントの場合、C 型修飾子を構成して、AUTOSAR 静的メモリと定数メモリ用に生成された AUTOSAR 準拠の C コードをカスタマイズできます。たとえば、constvolatile などの C 型修飾子を適用して、コンパイラの最適化を制御できます。

AUTOSAR モデルで、コード マッピング エディターを使用して、AUTOSAR StaticMemory または AUTOSAR ConstantMemory にマッピングされるモデルの信号、状態、データ ストア、およびパラメーター用に C 型修飾子を構成します。モデルを作成すると、型修飾子が ARXML ファイルにエクスポートされて、型修飾子を使用する AUTOSAR 準拠の C コードが生成されます。

たとえば、コード マッピング エディターの [Signals/States] タブで、信号を [StaticMemory] にマッピングするとします。プロパティ インスペクターでコード属性を表示する信号を選択します。

Volatile 属性を true に設定し、AdditionalNativeTypeQualifiermy_qualifier になるように指定する場合は、次のようになります。

  • エクスポートされた ARXML ファイルは AdditionalNativeTypeQualifier を定義します。

    <ADDITIONAL-NATIVE-TYPE-QUALIFIER>volatile my_qualifier</ADDITIONAL-NATIVE-TYPE-QUALIFIER>
  • 生成された C コードで次のような C 型修飾子が使用される。

    /* Static Memory for Internal Data */
    volatile my_qualifier boolean SM_equal_to_count;

詳細については、AUTOSAR 変数へのブロック信号とブロック状態のマッピングデータ ストアの AUTOSAR 変数へのマッピングおよびモデル ワークスペース パラメーターの AUTOSAR コンポーネント パラメーターへのマッピングを参照してください。

AUTOSAR 内部変数に対する既定のデータ パッケージ化の指定

AUTOSAR Blockset には、AUTOSAR コンポーネント モデルに生成されたコードで、内部変数に使用される既定のデータ パッケージ化を制御する関数が用意されています。内部データ ストア、信号、および状態データのパッケージ化を次のように指定できます。

  • 構造体にパックするかどうか

  • 可視性をプライベートにするかパブリックにするか

関数 getInternalDataPackaging および setInternalDataPackaging は、AUTOSAR コンポーネント モデルに生成されたコードで、内部データ ストア、信号、および状態に使用されるデータ パッケージ化の既定の設定を返し、設定します。有効な設定値は次のとおりです。

  • Default — ソフトウェアによって提供されている既定の内部データ パッケージ化の受け入れ。AUTOSAR コンポーネント モデルから参照されるマルチインスタンス モデルおよびサブモデルに Default を使用します。

  • PrivateGlobalstruct を使用しない内部変数データのパッケージ化およびプライベート化 (model.c からのみ参照可能)。

  • PrivateStructurestruct への内部変数データのパッケージ化およびプライベート化 (model.c からのみ参照可能)。

  • PublicGlobalstruct を使用しない内部変数データのパッケージ化および公開 (model.hextern 宣言)。

  • PublicStructurestruct への内部変数データのパッケージ化および公開 (model.hextern 宣言)。

次の例では、AUTOSAR コンポーネント モデルに生成されたコードで、内部変数に使用されるデータ パッケージ化の既定の設定を変更します。まず、モデルに対する内部データ パッケージ化の現在の設定を返します。次に、コード ジェネレーターが内部変数データを struct にパッケージ化し、プライベート化するように、内部データ パッケージ化を設定します。

hModel = 'autosar_swc';
addpath(fullfile(matlabroot,'/examples/autosarblockset/main'));
open_system(hModel);
slMap = autosar.api.getSimulinkMapping(hModel);
pkgSetting1 = getInternalDataPackaging(slMap)
setInternalDataPackaging(slMap,'PrivateStructure')
pkgSetting2 = getInternalDataPackaging(slMap)
pkgSetting1 =
    'Default'

pkgSetting2 =
    'PrivateStructure'

データ パッケージ化が PrivateGlobal または PrivateStructure に設定されている場合、モデル コンフィギュレーション パラメーター [ファイル パッケージ化形式] (Embedded Coder)[コンパクト] に設定されていても、モデルをビルドするとヘッダー ファイル model_private.h が生成されます。

モデル コンフィギュレーション オプション [エントリポイント関数ごとに個別の内部データを生成] (Embedded Coder) が AUTOSAR モデルに対して設定されている場合、タスクベースの内部データ グループ化が AUTOSAR の内部データ パッケージ化の設定を上書きします。ただし、AUTOSAR の設定が、生成された内部データ グループの可視性 (パブリックまたはプライベート) を決定します。

詳細については、getInternalDataPackagingsetInternalDataPackaging のリファレンス ページを参照してください。

関連する例

詳細