Changes between Version 9 and Version 10 of tips/abrex


Ignore:
Timestamp:
Jan 31, 2019, 10:27:52 PM (5 years ago)
Author:
fujisft-shigihara
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • tips/abrex

    v9 v10  
    99
    1010= はじめに =
    11 * AUTOSARではコンポーネント間のデータのやりとりにXMLを用いる(拡張子はarxml)
     11* AUTOSARではコンポーネント間のデータのやりとりにXMLを用いる(拡張子はarxml)
    1212* BSWのコンフィギュレーション情報もXMLで定義する
    13   * 基本的に人が読み書きすることは想定されておらずツールで生成するのが一般的である
    14 * BSW単体でコンフィギュレーションを行いたい場合や、BSWを開発する際にはパラメータを直接指定して、arxmlファイルを作成したいニーズがある
    15 * arxmlファイルを直接編集するのは効率的ではないので簡略化したテキストデータからarxmlファイルを生成できるツールがあれば有用である
    16 * TOPPERSでは、AUTOSARのRTE、BSWの開発に際し、[https://ja.wikipedia.org/wiki/YAML YAML]フォーマットで記述したデータを、arxmlファイルに変換するツールであるABREX(AUTOSAR BSW and RTE XML Generator)を使用している
     13  * 基本的に人が読み書きすることは想定されておらずツールで生成するのが一般的である
     14* BSW単体でコンフィギュレーションを行いたい場合や,BSWを開発する際にはパラメータを直接指定して,arxmlファイルを作成したいニーズがある
     15* arxmlファイルを直接編集するのは効率的ではないので簡略化したテキストデータからarxmlファイルを生成できるツールがあれば有用である
     16* TOPPERSでは,AUTOSARのRTE,BSWの開発に際し,[https://ja.wikipedia.org/wiki/YAML YAML]フォーマットで記述したデータを,arxmlファイルに変換するツールであるABREX(AUTOSAR BSW and RTE XML Generator)を使用している
    1717
    1818----
    1919
    2020= 入手方法 =
    21 * ABREXは[https://www.toppers.jp/atk2-download.html TOPPERS/ATK2]に同梱されている
    22   * どのパッケージにも同梱されているので、ABREXを使用したいだけの場合は、どれか1つのATK2をダウンロードすればよい
    23   * ABREXもバージョンアップしているので最新版を使用するのが望ましい
    24 * ATK2は、tar.gz形式で公開されているので、解凍ソフト等を使用して、解凍する
     21* ABREXは[https://www.toppers.jp/atk2-download.html TOPPERS/ATK2]に同梱されている
     22  * どのパッケージにも同梱されているので,ABREXを使用したいだけの場合は,どれか1つのATK2をダウンロードすればよい
     23  * ABREXもバージョンアップしているので最新版を使用するのが望ましい
     24* ATK2は,tar.gz形式で公開されているので,解凍ソフト等を使用して,解凍する
    2525* 解答したフォルダの{{{utils\abrex\abrex.rb}}}がABREXの実行スクリプトである
    2626
     
    2929= 使い方 =
    3030== 実行環境 ==
    31 * ABREXはRubyスクリプトで開発されているのでRubyの実行環境が必要となる
     31* ABREXはRubyスクリプトで開発されているのでRubyの実行環境が必要となる
    3232* [https://www.cygwin.com/ Cygwin]に含まれる以下のバージョンのRubyで動作確認されている
    3333  * {{{ruby 1.9.3p327 (2012-11-10 revision 37606) [i386-cygwin]}}}
    34 * Windows環境であれば[https://rubyinstaller.org/ Ruby Installer for Windows]を使うと簡単にRubyの実行環境が構築できる
     34* Windows環境であれば[https://rubyinstaller.org/ Ruby Installer for Windows]を使うと簡単にRubyの実行環境が構築できる
    3535
    3636== YAMLファイルの書き方 ==
    37 * 最上位のレイヤがパッケージ名その次がECUモジュール名となる
    38 * ECUモジュール名の下に該当モジュールに含まれるパラメータ名をキーとしてパラメータコンテナと値をハッシュ形式で記述する
    39   * 複数の同一パラメータを定義する場合は、キーをショートネームとして、パラメータの1つとして{{{DefinitionRef}}}でパラメータ名を記述する
    40 * サブコンテナはハッシュをネストすることで表現する
    41 * コンテナへの参照はYAMLファイルに定義したパッケージ名に従ってパスを記述する
     37* 最上位のレイヤがパッケージ名その次がECUモジュール名となる
     38* ECUモジュール名の下に該当モジュールに含まれるパラメータ名をキーとしてパラメータコンテナと値をハッシュ形式で記述する
     39  * 複数の同一パラメータを定義する場合は,キーをショートネームとして,パラメータの1つとして{{{DefinitionRef}}}でパラメータ名を記述する
     40* サブコンテナはハッシュをネストすることで表現する
     41* コンテナへの参照はYAMLファイルに定義したパッケージ名に従ってパスを記述する
    4242* YAMLファイルに記載しないarxmlファイル内の情報は固定値でABREXが生成する
    4343=== OSの例 ===
     
    177177
    178178== 実行コマンド ==
    179 * 作成したYAMLファイルを引数としてabrex.rbを実行する
     179* 作成したYAMLファイルを引数としてabrex.rbを実行する
    180180{{{
    181181$ ruby abrex.rb ./sample.yaml
    182182}}}
    183 * 入力したYAMLファイルの情報に対応するarxmlファイルが入力ファイル名の拡張子をarxmlに変更したファイルに出力される
    184   * 上記実行例の場合sample.arxmlが出力される
     183* 入力したYAMLファイルの情報に対応するarxmlファイルが入力ファイル名の拡張子をarxmlに変更したファイルに出力される
     184  * 上記実行例の場合sample.arxmlが出力される
    185185
    186186----
    187187
    188188= コンテナ情報に関して =
    189 * YAMLファイルに記載したパラメータが整数型かどうか等はABREXに同梱されているparam_info.yamlに定義されている
    190 * ABREXに同梱されているparam_info.yamlではTOPPERSプロジェクトから公開されているモジュールで使用するパラメータのみ定義されている
    191 * param_info.yamlに別のBSWのパラメータを定義したい場合、AUTOSARから公開されているECUコンフィギュレーションパラメータコンテナ情報ファイルを入力として、ABREXで作成することができる
     189* YAMLファイルに記載したパラメータが整数型かどうか等はABREXに同梱されているparam_info.yamlに定義されている
     190* ABREXに同梱されているparam_info.yamlではTOPPERSプロジェクトから公開されているモジュールで使用するパラメータのみ定義されている
     191* param_info.yamlに別のBSWのパラメータを定義したい場合,AUTOSARから公開されているECUコンフィギュレーションパラメータコンテナ情報ファイルを入力として,ABREXで作成することができる
    192192== param_info.yaml作成方法 ==
    193193* ECUコンフィギュレーションパラメータコンテナ情報ファイル(AUTOSAR_MOD_ECUConfigurationParameters.arxml)を入手する
    194194  * [https://www.autosar.org/fileadmin/user_upload/standards/classic/4-0/AUTOSAR_MOD_ECUConfigurationParameters.zip AUTOSAR_MOD_ECUConfigurationParameters.zip]に入っている
    195   * ABREX開発時に使用したのは、{{{Release 4.0}}}であり、これ以外のバージョンでは動作未確認である
     195  * ABREX開発時に使用したのは,{{{Release 4.0}}}であり,これ以外のバージョンでは動作未確認である
    196196* パラメータ情報を作成したいBSWモジュール名をABREXソースコードに設定する
    197197  * {{{MakeParamInfo}}}メソッド内の配列{{{aTargetModule}}}に定義する
     
    204204$ ruby abrex.rb -p AUTOSAR_MOD_ECUConfigurationParameters.arxml
    205205}}}
    206   * 各パラメータコンテナのデータ型、外部参照型の参照先情報などが、param_info.yamlに出力される
     206  * 各パラメータコンテナのデータ型,外部参照型の参照先情報などが,param_info.yamlに出力される
    207207== 注意事項 ==
    208 * ABREXによるYAML→arxml変換実行時、param_info.yamlに含まれないキー名が登場した場合、エラー終了する
    209 * サブコンテナ名はparam_info.yamlに含まれず、YAMLファイルに記述した名称が正しいものとして、サブコンテナを生成する
     208* ABREXによるYAML→arxml変換実行時,param_info.yamlに含まれないキー名が登場した場合,エラー終了する
     209* サブコンテナ名はparam_info.yamlに含まれず,YAMLファイルに記述した名称が正しいものとして,サブコンテナを生成する
    210210* 設定値の妥当性等のチェックは一切行わない
    211211
     
    214214= 応用編 =
    215215== 複数YAMLファイルの入力 ==
    216 * 引数のYAMLファイルは複数指定することができすべてのYAMLファイルの情報をマージしたXMLファイルを生成する
    217 * 同じパスのコンテナが異なるファイルに存在する場合1つのコンテナにマージする
    218 * 例えば、以下のa.yamlとb.yamlを入力した場合、MAIN_HW_COUNTERには両方のファイルに指定されたすべてのパラメータが設定されたarxmlファイルとなる
    219   * 同じパスのパラメータが複数のファイルに含まれる場合は、多重度が*と判断して、複数のコンテナを生成する(パラメータ毎の多重度情報は保持しない)
     216* 引数のYAMLファイルは複数指定することができすべてのYAMLファイルの情報をマージしたXMLファイルを生成する
     217* 同じパスのコンテナが異なるファイルに存在する場合1つのコンテナにマージする
     218* 例えば,以下のa.yamlとb.yamlを入力した場合,MAIN_HW_COUNTERには両方のファイルに指定されたすべてのパラメータが設定されたarxmlファイルとなる
     219  * 同じパスのパラメータが複数のファイルに含まれる場合は,多重度が*と判断して,複数のコンテナを生成する(パラメータ毎の多重度情報は保持しない)
    220220<a.yaml>
    221221{{{
     
    240240
    241241== arxmlファイルからYAMLファイルを作成する(逆変換) ==
    242 * ABREXでは、作成済みのarxmlファイルから、YAMLファイルを作成することが出来る
    243 * -iオプションに、arxmlファイルを引数として与え、実行する
     242* ABREXでは,作成済みのarxmlファイルから,YAMLファイルを作成することが出来る
     243* -iオプションに,arxmlファイルを引数として与え,実行する
    244244{{{
    245245$ ruby abrex.rb -i sample.arxml
    246246}}}
    247 * 入力したXMLファイルの情報に対応するYAMLファイルが入力ファイル名の拡張子をyamlに変更したファイルに出力される
    248   * 上記例の場合sample.yaml
    249 * 逆変換において、複数のarxmlファイルを指定した場合は、入力されたarxmlファイル毎に、YAMLファイルを個別に出力する
    250 
    251 == 出力するarxmlファイルでの整数小数の表記 ==
    252 * ABREXでは、Ruby標準のYAMLライブラリを使用して、YAMLファイルを読み込むが、整数、少数はそれぞれInteger、Floatクラスとして解釈される
    253 * この結果、以下のように、16進数表記で記述した整数は10進数表記で出力され、0に近い小数は指数表記で出力される
     247* 入力したXMLファイルの情報に対応するYAMLファイルが入力ファイル名の拡張子をyamlに変更したファイルに出力される
     248  * 上記例の場合sample.yaml
     249* 逆変換において,複数のarxmlファイルを指定した場合は,入力されたarxmlファイル毎に,YAMLファイルを個別に出力する
     250
     251== 出力するarxmlファイルでの整数小数の表記 ==
     252* ABREXでは,Ruby標準のYAMLライブラリを使用して,YAMLファイルを読み込むが,整数,少数はそれぞれInteger,Floatクラスとして解釈される
     253* この結果,以下のように,16進数表記で記述した整数は10進数表記で出力され,0に近い小数は指数表記で出力される
    254254<入力するYAMLファイル>
    255255{{{
     
    272272</ECUC-NUMERICAL-PARAM-VALUE>
    273273}}}
    274 * この現象を回避し、YAMLにファイルに書いた通りに出力したい場合は、以下のように文字列として記述する
     274* この現象を回避し,YAMLにファイルに書いた通りに出力したい場合は,以下のように文字列として記述する
    275275<入力するYAMLファイル>
    276276{{{