AUTOSAR CP入門(その3)SW-C内部のふるまいを実装する:AUTOSARを使いこなす(26)(2/4 ページ)
車載ソフトウェアを扱う上で既に必要不可欠なものとなっているAUTOSAR。このAUTOSARを「使いこなす」にはどうすればいいのだろうか。連載第26回は、「AUTOSAR CP入門」のその3として「AUTOSAR SW-C内インタフェース」と「SW-C内部で利用できるその他のメカニズム」について取り上げる。
2.1.2 AUTOSAR SW-C内インタフェースおよびSW-C内部で利用できるその他のメカニズム
AUTOSAR CPでの各SW-C※1)の内部のふるまい(Internal Behavior、SwcInternalBehavior)の実装の際に利用できる主要メカニズムは以下の通りです。
- RE間のデータ授受用インタフェース:Inter-Runnable Variable(IRV)
- 不揮発メモリからの読み出し/不揮発メモリへの退避対象データ:Per-Instance Memory(Pim)
- Calibration対象の固定値データ:Calibration Parameter
- RE間の排他制御:Exclusive Area(EA)
- RE間のTrigger:Internal Trigger
※1)実はこれまで、SW-Cに関する厳密な定義や分類については説明してきませんでした(意図的にです)。今回の「2.2 SW-Cのモデリング:typeとprototype」でご説明いたします。
2.1.2.1 RE間のデータ授受用インタフェース:Inter-Runnable Variable(IRV)
SW-C間(より正確には、異なるSW-C Prototypeに属するRE間)のI/Fが「Port Interface」であることは既に説明しました。
同一SW-C内のRE間(より正確には、同一SW-C Prototypeに属するRE間)のI/Fは、Inter-Runnable Variable(InterRunnableVariable、IRV)を使用します。
なお、data semanticsのS/R I/Fと同様に、RE処理が開始してから完了するまでの間に使用する入力データが変わらないようにしたい場合(RE処理開始前に値をラッチしておきたい)や処理が完全に完了してからその出力を送信したい場合に使用するimplicit accessと(Simulinkなどのデジタル信号処理理論ベースのMBD自動コード生成を行う場合には通常こちらを利用)、ラッチする必要がなくRTE内RAM消費量を抑制したい場合や出力に変化を反映したい場合に使用するexplicit accessの2つのアクセス方法があります。前者のAPIはRte_IIrvRead()/Rte_IIrvWrite() API、後者はRte_IrvRead()/Rte_IrvWrite() APIです。
2.1.2.2 不揮発メモリからの読み出し/不揮発メモリへの退避対象データ:Per-Instance Memory(Pim)
REが何らかのデータを静的に保持したい場合には、Per-Instance Memory(PerInstanceMemory、Pim)を利用することができます。特に不揮発メモリであるNVRAMに退避し、低消費電力状態やshutdown&restart後に読み出したいような場合が対象です。不揮発メモリへのデータの退避とそこからの復帰は、Rte_Pim() APIを介し、RTEおよびNVRAMスタックのBSW群(NvMおよびその下位のMemIf、Ea、Eep、Fee、FlsおよびR21-11で新たに追加されEep/Flsを置き換え予定のMemAcc、Mem)の機能を利用しながら行われます。
なお、IRVとPimの使い分けに迷った場合、一般的には、不揮発メモリへの退避の必要がなければ、データ一貫性(data consistency)に関して考慮されないPimではなく、IRVを優先的に使用するのが基本です※2)。
※2)AUTOSAR R21-11 CP SWS RTE sec. 4.2.6 Data Consistencyの、sec. 4.2.6.3 Conceptsでも示唆されています。
2.1.2.3 Calibration対象の固定値データ:Calibration Parameter(CData)
ASAM XCP Protocol※3)などを用いたCalibrationの対象となる、量産段階では固定値となるデータに単一のSW-C内だけからアクセスする場合には、当該データをSW-Cの要素として定義し、それにRte_CData() APIを介してアクセスします。
なお、複数のSW-Cからアクセスされるデータに対しては、先にご紹介したParameter Interface(ParameterInterface、Prm)を使用します(占有なのか共有なのかで使い分け)。
※3)ASAM XCP:https://www.asam.net/standards/detail/mcd-1-xcp/を参照。
Copyright © ITmedia, Inc. All Rights Reserved.