Main Content

AUTOSAR NVRAM Manager サービスの呼び出しの構成

AUTOSAR Classic Platform の場合、AUTOSAR 規格では、重要なサービスを AUTOSAR ランタイム環境 (RTE) で実行される基本ソフトウェア (BSW) の一部として定義しています。例としては、Diagnostic Event Manager (Dem)、Function Inhibition Manager (FiM) および NVRAM Manager (NvM) によって提供されるサービスがあります。AUTOSAR RTE では、AUTOSAR ソフトウェア コンポーネントは通常、クライアント/サーバー通信または送信側/受信側通信を使用して BSW サービスにアクセスします。

AUTOSAR コンポーネントおよびサービスのシステムレベルでのモデル化をサポートするために、AUTOSAR Blockset には AUTOSAR Basic Software ブロック ライブラリが備わっています。このライブラリには、AUTOSAR BSW サービスに対するコンポーネント呼び出しと BSW サービスの参照実装をモデル化するために、事前設定されたブロックが含まれています。このブロックを使用して AUTOSAR BSW サービス インターフェイスに対するクライアント呼び出しをモデル化する方法の詳細については、AUTOSAR 基本ソフトウェア サービス呼び出しのモデル化を参照してください。

AUTOSAR BSW サービスのシミュレーションを実行するライブスクリプトの例については、AUTOSAR 基本ソフトウェア サービスとランタイム環境のシミュレーションの例を参照してください。

AUTOSAR 不揮発性メモリへのソフトウェア コンポーネントのアクセスをモデル化する方法の詳細については、Model AUTOSAR Nonvolatile Memoryを参照してください。

AUTOSAR ソフトウェア コンポーネントの中で NvM サービス インターフェイスに対するクライアント呼び出しを構成する例を次に示します。

  1. AUTOSAR コード生成向けに構成されたモデルを開きます。ライブラリ ブラウザーを使用するか、モデル ウィンドウにブロック名を入力して、モデルに NvM ブロックを追加します。この例では、NvMAdminCaller ブロックと NvMServiceCaller ブロックをモデル例 autosar_swc の書き込み可能なコピーに追加します。

  2. 各ブロックを開いて、パラメーター (特に [Operation]) を調べます。別のオペレーションを選択して [適用] をクリックすると、選択したオペレーションの引数と一致するようにブロックの入力と出力がソフトウェアで更新されます。

    この例では、NvMServiceCaller ブロックの [Operation][GetDataIndex] から [ReadBlock] に変更します。([readBlock] をスロットル位置のセンサーの実装で使用する例については、AUTOSAR 基本ソフトウェア サービスとランタイム環境のシミュレーションの例を参照してください)。

    [ReadBlock][WriteBlock] などの一部の NvM オペレーションについては、ブロック パラメーターのダイアログ ボックスに引数仕様パラメーターが表示されます。これはオペレーションで読み取りまたは書き込みを行うデータのデータ型と次元を指定するパラメーターで、既定では uint8(1) に設定されます。

    • 多次元データ型を指定するには、int8([1 1; 1 1]) のような配列構文を使用できます。

    • 構造化データ型を指定するには、Simulink.Parameter データ オブジェクトを作成して Simulink.Bus オブジェクトで型を指定し、パラメーター名を参照します。

  3. コード マッピング エディターを開きます。モデルの Simulink® から AUTOSAR へのマッピングを Simulink 関数呼び出しの変更で更新するために、[更新] ボタン をクリックします。ソフトウェアで AUTOSAR クライアント サービス インターフェイス、オペレーションおよびポートが作成され、各 Simulink 関数呼び出しが AUTOSAR クライアント ポートとオペレーションにマッピングされます。

    たとえばこの例の NvMServiceCaller ブロック ([ReadBlock] オペレーションが選択されている) では次のようになります。

    • C-S インターフェイス NvMService が作成され、NvMService の下にサポートされるオペレーションが作成されます。各オペレーションについて、読み取り専用プロパティを使用して引数が提供されます。AUTOSAR ディクショナリに表示される NvMService オペレーション [ReadBlock] の引数を次に示します。

    • 既定の名前 NvMService をもつクライアント ポートが作成されます。C-S インターフェイス、オペレーションおよび引数の名前とは異なり、クライアント ポート名はカスタマイズできます。クライアント ポートが NvMService インターフェイスにマッピングされます。

    • コード マッピング エディターの [Function Caller] タブによって NvMService Function Caller ブロックが AUTOSAR クライアント ポート NvMService および AUTOSAR オペレーション [ReadBlock] にマッピングされます。

  4. 必要に応じてモデルをビルドし、生成された C コードと ARXML コードを確認します。

    ブロック ダイアログの手順で、NvMServiceCaller ブロックにオペレーション [ReadBlock] を選択した場合は、コード生成で Data Store ブロックをモデルに追加しなければなりません。ブロックの最初の出力端子を Data Store Write ブロックに接続し、Data Store Memory ブロックを追加します。両方のブロックでデータ ストア名に A を指定します。たとえば、以下のようにします。

    C コードには、たとえば次のような BSW サービスに対するクライアント呼び出しが含まれます。

    /* FunctionCaller: '<Root>/NvMServiceCaller' */
    Rte_Call_NvMService_ReadBlock(&rtDW.A);
    ...
    /* FunctionCaller: '<Root>/NvMAdminCaller' */
    Rte_Call_NvMAdmin_SetBlockProtection(false);

    生成された RTE インクルード ファイルは、サーバー オペレーションの呼び出しポイントを定義します (Rte_Call_NvMService_ReadBlock など)。

    ARXML コードでは、サーバー呼び出しポイントとしてコンポーネントによって呼び出される BSW サービス オペレーションを次のように定義します。

    <SERVER-CALL-POINTS>
    ...
        <ASYNCHRONOUS-SERVER-CALL-POINT UUID="...">
            <SHORT-NAME>SC_NvMService_ReadBlock</SHORT-NAME>
            <OPERATION-IREF>
                <CONTEXT-R-PORT-REF DEST="R-PORT-PROTOTYPE">
                  /Company/Powertrain/Components/ASWC/NvMService
                </CONTEXT-R-PORT-REF>
                <TARGET-REQUIRED-OPERATION-REF DEST="CLIENT-SERVER-OPERATION">
                  /AUTOSAR/Services/NvM/NvMService/ReadBlock
                </TARGET-REQUIRED-OPERATION-REF>
            </OPERATION-IREF>
            <TIMEOUT>1</TIMEOUT>
        </ASYNCHRONOUS-SERVER-CALL-POINT>
    </SERVER-CALL-POINTS>
  5. コンポーネント モデルのシミュレーションを実行するには、含まれるコンポジション、システム、またはテスト ハーネス モデルを作成します。その含まれるモデルで、NvM の [ReadBlock] サービス オペレーションおよび [SetBlockProtection] サービス オペレーションの参照実装を挿入します。

    AUTOSAR Basic Software ブロック ライブラリには NVRAM Service Component ブロックが用意されています。これにより、NvM サービス オペレーションの参照実装が提供されます。含まれるコンポジション、システム、またはハーネス モデルに手動でブロックを挿入することも、Simulink Test™ ハーネス モデルを作成することによって自動的にブロックを挿入することもできます。

    詳細については、シミュレーション用の AUTOSAR 基本ソフトウェア サービス実装の構成およびAUTOSAR 基本ソフトウェア サービスとランタイム環境のシミュレーションを参照してください。

参考

| |

関連する例

詳細