Changes between Version 9 and Version 10 of tips/abrex
- Timestamp:
- Jan 31, 2019, 10:27:52 PM (5 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
tips/abrex
v9 v10 9 9 10 10 = はじめに = 11 * AUTOSARでは 、コンポーネント間のデータのやりとりにXMLを用いる(拡張子はarxml)11 * AUTOSARでは,コンポーネント間のデータのやりとりにXMLを用いる(拡張子はarxml) 12 12 * 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)を使用している 17 17 18 18 ---- 19 19 20 20 = 入手方法 = 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形式で公開されているので,解凍ソフト等を使用して,解凍する 25 25 * 解答したフォルダの{{{utils\abrex\abrex.rb}}}がABREXの実行スクリプトである 26 26 … … 29 29 = 使い方 = 30 30 == 実行環境 == 31 * ABREXはRubyスクリプトで開発されているので 、Rubyの実行環境が必要となる31 * ABREXはRubyスクリプトで開発されているので,Rubyの実行環境が必要となる 32 32 * [https://www.cygwin.com/ Cygwin]に含まれる以下のバージョンのRubyで動作確認されている 33 33 * {{{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の実行環境が構築できる 35 35 36 36 == YAMLファイルの書き方 == 37 * 最上位のレイヤがパッケージ名 、その次がECUモジュール名となる38 * ECUモジュール名の下に該当モジュールに含まれるパラメータ名をキーとして 、パラメータコンテナと値をハッシュ形式で記述する39 * 複数の同一パラメータを定義する場合は 、キーをショートネームとして、パラメータの1つとして{{{DefinitionRef}}}でパラメータ名を記述する40 * サブコンテナは 、ハッシュをネストすることで表現する41 * コンテナへの参照は 、YAMLファイルに定義したパッケージ名に従ってパスを記述する37 * 最上位のレイヤがパッケージ名,その次がECUモジュール名となる 38 * ECUモジュール名の下に該当モジュールに含まれるパラメータ名をキーとして,パラメータコンテナと値をハッシュ形式で記述する 39 * 複数の同一パラメータを定義する場合は,キーをショートネームとして,パラメータの1つとして{{{DefinitionRef}}}でパラメータ名を記述する 40 * サブコンテナは,ハッシュをネストすることで表現する 41 * コンテナへの参照は,YAMLファイルに定義したパッケージ名に従ってパスを記述する 42 42 * YAMLファイルに記載しないarxmlファイル内の情報は固定値でABREXが生成する 43 43 === OSの例 === … … 177 177 178 178 == 実行コマンド == 179 * 作成したYAMLファイルを引数として 、abrex.rbを実行する179 * 作成したYAMLファイルを引数として,abrex.rbを実行する 180 180 {{{ 181 181 $ ruby abrex.rb ./sample.yaml 182 182 }}} 183 * 入力したYAMLファイルの情報に対応するarxmlファイルが 、入力ファイル名の拡張子をarxmlに変更したファイルに出力される184 * 上記実行例の場合 、sample.arxmlが出力される183 * 入力したYAMLファイルの情報に対応するarxmlファイルが,入力ファイル名の拡張子をarxmlに変更したファイルに出力される 184 * 上記実行例の場合,sample.arxmlが出力される 185 185 186 186 ---- 187 187 188 188 = コンテナ情報に関して = 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で作成することができる 192 192 == param_info.yaml作成方法 == 193 193 * ECUコンフィギュレーションパラメータコンテナ情報ファイル(AUTOSAR_MOD_ECUConfigurationParameters.arxml)を入手する 194 194 * [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}}}であり,これ以外のバージョンでは動作未確認である 196 196 * パラメータ情報を作成したいBSWモジュール名をABREXソースコードに設定する 197 197 * {{{MakeParamInfo}}}メソッド内の配列{{{aTargetModule}}}に定義する … … 204 204 $ ruby abrex.rb -p AUTOSAR_MOD_ECUConfigurationParameters.arxml 205 205 }}} 206 * 各パラメータコンテナのデータ型 、外部参照型の参照先情報などが、param_info.yamlに出力される206 * 各パラメータコンテナのデータ型,外部参照型の参照先情報などが,param_info.yamlに出力される 207 207 == 注意事項 == 208 * ABREXによるYAML→arxml変換実行時 、param_info.yamlに含まれないキー名が登場した場合、エラー終了する209 * サブコンテナ名はparam_info.yamlに含まれず 、YAMLファイルに記述した名称が正しいものとして、サブコンテナを生成する208 * ABREXによるYAML→arxml変換実行時,param_info.yamlに含まれないキー名が登場した場合,エラー終了する 209 * サブコンテナ名はparam_info.yamlに含まれず,YAMLファイルに記述した名称が正しいものとして,サブコンテナを生成する 210 210 * 設定値の妥当性等のチェックは一切行わない 211 211 … … 214 214 = 応用編 = 215 215 == 複数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 * 同じパスのパラメータが複数のファイルに含まれる場合は,多重度が*と判断して,複数のコンテナを生成する(パラメータ毎の多重度情報は保持しない) 220 220 <a.yaml> 221 221 {{{ … … 240 240 241 241 == arxmlファイルからYAMLファイルを作成する(逆変換) == 242 * ABREXでは 、作成済みのarxmlファイルから、YAMLファイルを作成することが出来る243 * -iオプションに 、arxmlファイルを引数として与え、実行する242 * ABREXでは,作成済みのarxmlファイルから,YAMLファイルを作成することが出来る 243 * -iオプションに,arxmlファイルを引数として与え,実行する 244 244 {{{ 245 245 $ ruby abrex.rb -i sample.arxml 246 246 }}} 247 * 入力したXMLファイルの情報に対応するYAMLファイルが 、入力ファイル名の拡張子をyamlに変更したファイルに出力される248 * 上記例の場合 、sample.yaml249 * 逆変換において 、複数の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に近い小数は指数表記で出力される 254 254 <入力するYAMLファイル> 255 255 {{{ … … 272 272 </ECUC-NUMERICAL-PARAM-VALUE> 273 273 }}} 274 * この現象を回避し 、YAMLにファイルに書いた通りに出力したい場合は、以下のように文字列として記述する274 * この現象を回避し,YAMLにファイルに書いた通りに出力したい場合は,以下のように文字列として記述する 275 275 <入力するYAMLファイル> 276 276 {{{