wiki:tips/configuration_class

Version 4 (modified by fujisft-shigihara, 5 years ago) ( diff )

--

コンフィギュレーションクラス


はじめに

  • BSWモジュールの各コンフィギュレーションパラメータには,コンフィギュレーションクラスが規定されている
  • コンフィギュレーションクラスは大きく3つ存在する
    • プレコンパイルタイム
    • リンクタイム
    • ポストビルドタイム(ポストビルドはさらに以下2つに分類される)
      • ローダブル(loadable)
      • セレクタブル(selectable)

プレコンパイルタイム

  • 概要図:AUTOSAR_TPS_ECUConfiguration.pdf(Figure 2.2)
  • 対象パラメータのコンフィギュレーションが変わると,BSWモジュールの再コンパイルが必要となる
  • BSWモジュールのコンパイル時にジェネレータで生成したヘッダファイルが必要になる
  • プレコンパイルタイムのコンフィギュレーション情報は,<Module name>_Cfg.h(必要なら<Module name>_Cfg.c)に出力される
    • AUTOSAR_SRS_BSWGeneral.pdf(BSW00346)参照
    • Osの例
      • OsScalabilityClassOsStackMonitoringなど
      • Os_Cfg.hに出力する
    • Comの例
      • ComConfigurationUseDetComVersionInfoApiなど
      • Com_Cfg.hに出力する

リンクタイム

  • 概要図:AUTOSAR_TPS_ECUConfiguration.pdf(Figure 2.3)
  • ジェネレータが生成したコードを別途コンパイルして生成したオブジェクトファイルをリンクすることで,コンフィギュレーションを変更する
  • 対象パラメータのコンフィギュレーションが変わっても,BSWモジュールの静的コードの再コンパイルは必要ない
    • コンフィギュレーション情報を含むファイルの再コンパイルが必要
  • コンフィギュレーション情報は,<Module name>_Lcfg.h<Module name>_Lcfg.cに出力される
  • Osの例
    • OsTaskActivationOsTaskPriorityなど
    • Os_Lcfg.hOs_Lcfg.cに出力する
      • TOPPERS/ATK2では,プレコンパイルタイムと規定されているパラメータであっても,静的コードのライブラリ提供を可能とするために一部リンクタイムとしている
  • Comの例
    • ComIPduHandleIdComPduIdRefなど
    • Com_Lcfg.hCom_Lcfg.cに出力する

ポストビルドタイム

ローダブル(1)

  • 概要図:AUTOSAR_TPS_ECUConfiguration.pdf(Figure 2.4)
  • ジェネレータが生成したコードを別途コンパイルして生成した.hexファイルをECUに配置し,別途ECUに配置したBSWモジュールからアクセスする
  • 複数の.hexファイルを用意し,配置する.hexを変更することで,動的にコンフィギュレーションを変更できる
  • コンフィギュレーション情報は,<Module name>_PBcfg.h<Module name>_PBcfg.cに出力される
  • Osは該当パラメータが無い
  • Comの例
    • ComIPduDirectionComBitPositionなど
    • Com_PBcfg.hCom_PBcfg.cに出力する
      • TOPPERS/A-COMでは,リンクタイムと規定されているパラメータであっても,実装容易性のためにポストビルドタイムとしている

ローダブル(2)

セレクタブル

  • 概要図:AUTOSAR_TPS_ECUConfiguration.pdf(Figure 2.6)
  • ジェネレータによって複数のコンフィギュレーション情報を含むファイルを生成し,BSWモジュールの初期化時に使用するコンフィギュレーションを選択する
  • コンフィギュレーション情報をどういった命名規則で複数のファイルに出力するかは未規定

コンフィギュレーションクラスの指定

  • ECUコンフィギュレーションではモジュール毎に,<IMPLEMENTATION-CONFIG-VARIANT>タグでコンフィギュレーションクラスを指定する
    • VARIANT-PRE-COMPILEVARIANT-LINK-TIMEVARIANT-POST-BUILDの3種類
  • このどれを指定されたかによって,パラメータをどのように使用するかがパラメータ毎に規定されている
    • 例えばプレコンパイルタイムのパラメータは以下のように,どれを選ばれてもプレコンパイルタイムとする,とされている
    • Pre-compile time:X | All Variants
  • 以下のパラメータの場合,VARIANT-PRE-COMPILEならプレコンパイルタイムでいいが,VARIANT-LINK-TIMEVARIANT-POST-BUILDを指定されたらリンクタイムとする,という意味となる
Note: See TracWiki for help on using the wiki.