Main Content

AUTOSAR コンポジション XML 記述およびコンポーネント コードの生成とパッケージ化

Simulink® Coder™ および Embedded Coder® ソフトウェアを使用している場合、AUTOSAR アーキテクチャ モデルから次を実行できます。

  • コンポジションとコンポーネントの AUTOSAR XML (ARXML) 記述をエクスポートし、コンポーネント コードを生成する。

  • オプションで、再置換や統合などのために、モデルの階層構造からビルド アーティファクトをパッケージ化した ZIP ファイルを作成する。

  • オプションで、AUTOSAR ECU 構成の場合、コンポジションのソフトウェア コンポーネントを AUTOSAR ECU にマッピングする ECU 抽出をエクスポートする。

エクスポートは、アーキテクチャ モデル全体、入れ子になったコンポジション、単一のコンポーネントに対して可能です。あるコンポジションを含むエクスポートを開始した場合、そのエクスポートには、そのコンポジション、コンポーネント プロトタイプ、コンポジションのポートおよびコネクタの XML 記述が含まれます。

コンポジション XML オプションの設定

ARXML ファイルのエクスポートの準備として、XML オプションを確認し、変更します。エクスポート中、アーキテクチャ モデル レベルで指定された XML オプションが、モデル内の各コンポーネントに継承されます。

アーキテクチャ モデルを開きます。たとえば、モデル例 autosar_tpc_composition などです。(ローカルの作業フォルダー内にあるモデルを開くには、openExample('autosar_tpc_composition') を使用します)。

アーキテクチャ モデル レベルの XML オプションを確認するには、[Modeling] タブで [Export][Configure XML Options] を選択します。XML オプションのビューに AUTOSAR ディクショナリが開かれます。

行った変更は、階層内のすべてのコンポーネントに継承されます。詳細については、AUTOSAR XML オプションの設定を参照してください。

[System Package] オプションはコンポジション レベルにのみ適用されます。アーキテクチャ モデルのコンポジションの ECU 抽出をエクスポートする場合、[System Package] はコンポジション ARXML で生成するシステム パッケージ パスを指定します。詳細については、コンポジションの ECU 抽出のエクスポートを参照してください。

コンポジション XML およびコンポーネント コードのエクスポート

アーキテクチャ モデルについて ARXML ファイルをエクスポートし、コードを生成するには、次のようにします。

  1. アーキテクチャ モデルを開きます。たとえば、モデル例 autosar_tpc_composition などです。(ローカルの作業フォルダー内にあるモデルを開くには、openExample('autosar_tpc_composition') を使用します)。

  2. アーキテクチャ モデルをエクスポートするには、[Modeling] タブから [Export][Generate Code and ARXML] を選択します。[Export Composition] ダイアログ ボックスで次を行います。

    • 生成されたファイルをパッケージ化する ZIP ファイルの名前を指定します。

    • オプションで、エクスポートされた ARXML ファイルを配置するフォルダーへのパスを指定します。

    • コンポジションから ECU 抽出をエクスポートする場合、[Export ECU extract] を選択します。詳細については、コンポジションの ECU 抽出のエクスポートを参照してください。

    エクスポートを開始するには、[OK] をクリックします。

  3. アーキテクチャ モデルのビルド中、診断ビューアーでビルド ログを閲覧することができます。まず、コンポーネント モデルのそれぞれがスタンドアロンの最上位モデル ビルドとしてビルドされます。最後に、コンポジション ARXML がエクスポートされます。ビルドが完了すると、現在のフォルダーに、アーキテクチャ モデルのビルド フォルダー、階層構造の各コンポーネント モデル、および指定された ZIP ファイルが格納されます。

  4. ZIP ファイルを展開します。内容は arxml フォルダーと src フォルダーに整理されています。

  5. arxml フォルダーを確認します。各 AUTOSAR コンポーネントには、コンポーネントおよび実装の記述ファイルが存在し、アーキテクチャ モデルにはコンポジション、データ型、インターフェイス、およびタイミングの記述ファイルが存在しています。コンポジション ファイルには、コンポジション、コンポーネント プロトタイプ、コンポジションのポートおよびコネクタの XML 記述が含まれます。データ型ファイル、インターフェイス ファイル、およびタイミング ファイルには、アーキテクチャ モデルの全階層の要素が集約されています。

  6. src フォルダーを確認します。各コンポーネント モデルについて build フォルダーがあり、そこにはスタンドアロンのモデル ビルドからのアーティファクトが格納されています。

アーキテクチャ モデルに含まれる入れ子にされたコンポジションまたは単一のコンポーネントをエクスポートするには、コンポジションまたはコンポーネント ブロック キューを使用するか、右クリック オプションを使用します。たとえば、コンポーネント ブロックを右クリックして [Export Component] を選択します。アーキテクチャ モデルからエクスポートされたコンポーネントは、アーキテクチャ モデル レベルで指定された XML オプションを継承します。

エクスポートを行うには、1 つのアーキテクチャ モデルにおいて、アーキテクチャ モデルと階層内のコンポーネント モデル間で AUTOSAR スキーマ バージョンが一致していなければなりません。エクスポートでバージョン相違のフラグが出された場合、コンポーネント モデルかアーキテクチャ モデルのいずれかで不一致を修正します。アーキテクチャ モデルのスキーマ バージョンを表示するには、[コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。[Modeling] タブで [モデル設定] を選択します。ダイアログ ボックスで AUTOSAR コード生成オプションのペインを表示します。

アーキテクチャ モデルの階層構造をプログラム的にエクスポートするには、アーキテクチャ関数 export を使用します。たとえば、モデル例 autosar_tpc_composition の ARXML ファイルとコードを生成し、パッケージ化するには、次のようにします。

% Load AUTOSAR architecture model
archModel = autosar.arch.loadModel('autosar_tpc_composition');
% Export ARXML descriptions and code into ZIP file
export(archModel,'PackageCodeAndARXML','myArchModel.zip');

コンポジションの ECU 抽出のエクスポート

AUTOSAR アーキテクチャ モデルで、コンポジションから ECU 抽出をエクスポートできます。ECU 抽出は AUTOSAR ECU 構成に対する重要な入力です。AUTOSAR アーキテクチャで、最上位のコンポジションは 1 つの AUTOSAR ECU にマッピングされたソフトウェア コンポーネントをモデル化できます。ECU スコープのシステムのソフトウェア記述を作成するには、コンポジションから ECU 抽出をエクスポートします。

開いているアーキテクチャ モデルで、Simulink ツールストリップ、ソフトウェア アーキテクチャ キャンバス、または関数 export を使用して ARXML をエクスポートできます。たとえば、[Modeling] タブから [Export][Generate Code and ARXML] を選択します。[Export Composition] ダイアログ ボックスで、オプション [Export ECU extract] を選択します。エクスポートを開始するには、[OK] をクリックします。

ECU 抽出を生成するために、ソフトウェアはコンポジション内のソフトウェア コンポーネントを ECU に自動的にマッピングします。コンポジションに入れ子にされたコンポジションが含まれている場合、ソフトウェアはコンポーネントのみが含まれているフラットなバージョンのコンポジション階層構造を使用します。たとえば、これらの関数呼び出しは、入れ子にされたコンポジションを含む AUTOSAR アーキテクチャ モデル例 autosar_tpc_composition の ECU 抽出をエクスポートします。

% Load and export AUTOSAR architecture model, generating ECU extract
addpath(fullfile(matlabroot,'/examples/autosarblockset/main'));
archModel = autosar.arch.loadModel('autosar_tpc_composition');
open(archModel);  % Open loaded model in the editor (optional)
export(archModel,'ExportECUExtract',true);

export 関数呼び出しは、コンポジション フォルダー内にあるファイル System.arxml への ECU 抽出を生成します。autosar_tpc_composition の ECU 抽出は、最上位のコンポジションおよび入れ子にされた Sensors コンポジション両方のコンポーネントを 1 つの ECU にマッピングします。

<SYSTEM UUID="...">
    <SHORT-NAME>EcuExtract</SHORT-NAME>
    <CATEGORY>ECU_EXTRACT</CATEGORY>
    <MAPPINGS>
        <SYSTEM-MAPPING UUID="...">
            <SHORT-NAME>SystemMapping</SHORT-NAME>
            <SW-MAPPINGS>
                <SWC-TO-ECU-MAPPING UUID="...">
                    <SHORT-NAME>SwcToEcuMapping</SHORT-NAME>
                    <COMPONENT-IREFS>
                        <COMPONENT-IREF>
                            <TARGET-COMPONENT-REF DEST="SW-COMPONENT-PROTOTYPE">
                              /Components/TPC_Composition/Ctrl
                            </TARGET-COMPONENT-REF>
                        </COMPONENT-IREF>
                        ...
                        <COMPONENT-IREF>
                            <TARGET-COMPONENT-REF DEST="SW-COMPONENT-PROTOTYPE">
                              /Components/TPC_Composition/PedalSensor
                            </TARGET-COMPONENT-REF>
                        </COMPONENT-IREF>
                    </COMPONENT-IREFS>
                    <ECU-INSTANCE-REF DEST="ECU-INSTANCE">
                      /System/EcuInstance
                    </ECU-INSTANCE-REF>
                </SWC-TO-ECU-MAPPING>
            </SW-MAPPINGS>
        </SYSTEM-MAPPING>
    </MAPPINGS>
    <ROOT-SOFTWARE-COMPOSITIONS>
        <ROOT-SW-COMPOSITION-PROTOTYPE UUID="...">
            <SHORT-NAME>RootSwCompositionPrototype</SHORT-NAME>
            <SOFTWARE-COMPOSITION-TREF DEST="COMPOSITION-SW-COMPONENT-TYPE">
              /Components/TPC_Composition
            </SOFTWARE-COMPOSITION-TREF>
        </ROOT-SW-COMPOSITION-PROTOTYPE>
    </ROOT-SOFTWARE-COMPOSITIONS>
</SYSTEM>

<ECU-INSTANCE UUID="...">
    <SHORT-NAME>EcuInstance</SHORT-NAME>
</ECU-INSTANCE>

ECU 抽出が含まれるシステム パッケージの AUTOSAR パッケージ パスを指定するには、コンポジション XML オプション [System Package] を使用します。[System Package] パスの値を表示するには、[Modeling] タブから [Export][Configure XML Options] を選択します。

あるいは、AUTOSAR プロパティ関数 getset を使用して、AUTOSAR システム パッケージ パスを設定します。

% Set the AUTOSAR system package path
addpath(fullfile(matlabroot,'/examples/autosarblockset/main'));
archModel = autosar.arch.loadModel('autosar_tpc_composition');
arProps = autosar.api.getAUTOSARProperties('autosar_tpc_composition');
set(arProps,'XmlOptions','SystemPackage','/System');
systemPackage = get(arProps,'XmlOptions','SystemPackage');

AUTOSAR パッケージの階層構造の詳細については、AUTOSAR パッケージの構成を参照してください。

参考

| |

関連するトピック