Main Content

AUTOSAR のインスタンスごとのメモリの設定

AUTOSAR のインスタンスごとのメモリ (PIM) を AUTOSAR アプリケーション用にモデル化するには、インスタンスごとのメモリの定義を ARXML ファイルからインポートするか、インスタンスごとのメモリのコンテンツを Simulink® で作成します。上位の PIM ワークフローの詳細については、インスタンスごとのメモリを参照してください。

AUTOSAR 型のインスタンスごとのメモリ (ArTypedPerInstanceMemory) により、AUTOSAR ソフトウェア コンポーネントの各インスタンスで使用できる AUTOSAR 型のメモリ ブロックが定義されます。AUTOSAR ランタイム環境では、キャリブレーション ツールでキャリブレーションおよび測定のための arTypedPerInstanceMemory ブロックにアクセスできます。

AUTOSAR PIM をモデル化するには、モデルで Simulink ブロック信号、離散状態、またはデータ ストアを使用できます。

AUTOSAR 型のインスタンスごとのメモリとしてのブロック信号および状態の設定

AUTOSAR モデルで Simulink ブロック信号と離散状態データ用に arTypedPerInstanceMemory ブロックを生成するには、コード マッピング エディターを開いて [Signals/States] タブを選択します。信号と状態を選択して arTypedPerInstanceMemory にマッピングします。以下に例を示します。

  1. arTypedPerInstanceMemory ブロックの生成対象となる信号または状態が含まれる AUTOSAR モデルを開きます。この例では、モデル autosar_swc_counter を使用します。

  2. AUTOSAR コード パースペクティブで、コード マッピング エディターを開き、[信号/状態] タブを選択します。使用可能な信号のリストで、sum_out を選択します。信号を選択すると、モデル ブロック線図で信号が強調表示されます。[Mapped To] ドロップダウン リストで、[ArTypedPerInstanceMemory] を選択します。インスタンスごとのメモリの AUTOSAR 属性を表示および変更するには、Icon to configure additional code mappings properties アイコンをクリックします。信号コードとキャリブレーション属性の詳細については、AUTOSAR 変数へのブロック信号とブロック状態のマッピングを参照してください。コンポーネントで参照されるサブモデルで信号および状態をマッピングしている場合は、AUTOSAR 変数へのサブモデル信号と状態のマッピングを参照してください。

  3. [Signals/States] タブの使用可能な状態のリストから、状態 X を選択します。[Mapped To] ドロップダウン リストで、[ArTypedPerInstanceMemory] を選択します。インスタンスごとのメモリの AUTOSAR 属性を表示および変更するには、Icon to configure additional code mappings properties アイコンをクリックします。

コードを生成すると、次のようになります。

  • エクスポートされた ARXML ファイルに [ArTypedPerInstanceMemory] として設定した信号と状態の AR-TYPED-PER-INSTANCE-MEMORYS 記述が含まれます。

  • 生成された C コードには信号変数と状態変数の Rte_Pim_* API 呼び出しが含まれます。

AUTOSAR コンポーネント モデル内の参照モデルの場合、Embedded Coder® ではモデルの参照コード生成用に内部信号と状態がマッピングされます。内部信号と状態は、マルチインスタンス モデル参照の場合は AUTOSAR ArTypedPerInstanceMemory に、単一インスタンス モデル参照の場合は、AUTOSAR StaticMemory にマッピングされます。

AUTOSAR 型のインスタンスごとのメモリとしてのデータ ストアの設定

AUTOSAR モデルで Simulink Data Store Memory ブロック用に arTypedPerInstanceMemory ブロックを生成するには、コード マッピング エディターを開いて [Signals/States] タブを選択します。データ ストアを選択して arTypedPerInstanceMemory にマッピングします。以下に例を示します。

  1. arTypedPerInstanceMemory ブロックの生成対象となるデータ ストアが含まれる AUTOSAR モデルを開きます。この例では、モデル autosar_bsw_sensor1 を使用します。

  2. AUTOSAR コード パースペクティブで、コード マッピング エディターを開き、[データ ストア] タブを選択します。使用可能なデータ ストアのリストで、データ ストア LowSetPoint を選択します。データストアを選択すると、モデル ブロック線図で Data Store Memory ブロックが強調表示されます。[Mapped To] ドロップダウン リストで、[ArTypedPerInstanceMemory] を選択します。インスタンスごとのメモリの AUTOSAR 属性を表示および変更するには、Icon to configure additional code mappings properties アイコンをクリックします。データ ストア コードとキャリブレーション属性の詳細については、データ ストアの AUTOSAR 変数へのマッピングを参照してください。コンポーネントで参照されるサブモデルでデータストアをマッピングしている場合は、サブモデルのデータ ストアの AUTOSAR 変数へのマッピングを参照してください。

コードを生成すると、次のようになります。

  • エクスポートされた ARXML ファイルに [ArTypedPerInstanceMemory] として設定したデータストアの AR-TYPED-PER-INSTANCE-MEMORYS 記述が含まれます。

  • 生成された C コードにはデータ ストア変数の Rte_Pim_* API 呼び出しが含まれます。

モデルをビルドするときに、生成される XML ファイルでは、インスタンスごとのメモリを参照する Data Store Memory ブロックごとに排他領域が定義されます。インスタンスごとのメモリにアクセスするすべてのランナブルは、対応する排他領域内で実行されます。複数の AUTOSAR ランナブルが同じデータ ストア メモリ ブロックにアクセスする場合は、エクスポートされた AUTOSAR の指定により、AUTOSAR の排他領域を使用することによってデータの一貫性が保たれます。この仕様は、ランナブルがインスタンスごとのメモリのグローバル データに相互排他的にアクセスできるようにし、データの破損を防止します。

インスタンスごとのメモリの AUTOSAR 属性で、[needsNVRAMAccess] を選択すると、SERVICE-NEEDS エントリが XML ファイルで宣言されます。このエントリは、インスタンスごとのメモリが RAM ミラー ブロックであることを示し、NvM マネージャー モジュールからのサービスを必要とします。AUTOSAR 不揮発性メモリへのソフトウェア コンポーネントのアクセスをモデル化する方法の詳細については、AUTOSAR 不揮発性メモリのモデル化を参照してください。

起動時およびシャットダウン時に状態に関する情報を保持するデータ ストアの設定

ボトムアップ ワークフローおよびラウンドトリップ ワークフローを容易にするために、NVBlockNeeds プロパティ RestoreAtStartStoreAtShutdown を設定して、NVRAM ブロックの状態データが起動時に読み取られてシャットダウン時に書き出されるように設定できます。これらのプロパティを設定するには、モデルのデータ ストアを ArTypedPerInstanceMemory として設定し、プロパティ needsNVRAMAccesstrue として設定する必要があります。

これらのパラメーターを対話的に設定するには、鉛筆アイコン Icon to configure additional code mappings properties を選択するか、プロパティ インスペクターの [NvBlockNeeds] セクションを使用して、コード マッピング エディターを使用できます。

これらのパラメーターをプログラムにより設定するには、関数 getDataStore を使用してマッピング オブジェクトを設定できます。

mappingObj = autosar.api.getSimulinkMapping(modelName);
mappingObj.mapDataStore(dsmBlockPath, 'ArTypedPerInstanceMemory', ...
'NeedsNVRAMAccess', 'true', ...
'RestoreAtStart', 'true', ...
'StoreAtShutdown', 'true');

参考

| | | | | |

関連する例

詳細