車載ソフトウェアを扱う上で既に必要不可欠なものとなっているAUTOSAR。このAUTOSARを「使いこなす」にはどうすればいいのだろうか。連載第28回は、「AUTOSAR CP入門」のその5として、前回に続き「BSWが提供するサービスの利用」について取り上げる。
第24回から、「スケジューラは分かるが、リアルタイムOS(RTOS)はいまひとつ」という皆さんに向けてのAUTOSAR CP(Classic Platform)入門を、おおよそ以下の構成でスタートしています※1)。
前回の第27回は「2.3 BSWが提供するサービスの利用」の第1弾として、通信スタックとWatchdogスタックをご紹介しました。
今回は残る他のスタックをご紹介していきます。
おさらいになりますが、搭載される自動車の車種やそのメーカー、ECUの種別、そのサプライヤーによらず共通に使われるような基本機能は、AUTOSAR CPでは約100個のBasic Software(BSW)モジュールとして、またAdaptive Platform(AP)ではFunctional Cluster(FC)としてプラットフォームベンダー各社から提供されています。その概要を、おおよその機能グループごとに分けて表1に示します※2)。
※1)なお、本連載をきっかけにして、自動車技術会(JSAE)の会誌「自動車技術」の2022年11月号でも、「AUTOSAR:自動車分野での標準ソフトウェアプラットフォーム」と題しての執筆の機会をいただきました。よろしければご覧いただけますと幸いです。
※2)これらの機能グループは、市場では「スタック(stack)」や「クラスタ(cluster)」と表現されることもあります(いずれもAUTOSARでの公式の用語ではありません)。なお、CPの全BSWを網羅的に一覧にしたものではありません。また、複数の機能グループに関連するBSWモジュールもありますのでご了承ください。
Memoryスタックは、図1のように、多数のBSWモジュールから構成されます。
不揮発メモリをアクセスする際には、以下の2つの方式があります※3)。
さて、前回、「通信以外のクラスタが提供するサービスをSW-Cから利用する際には、BSW群の中の最上位部分であるServices Layer BSWモジュール(クラスタ全体として提供するサービスの窓口役)が提供するサービスを、RTEを経由して利用する」と述べました。AUTOSAR文書のCP TR List of Basic Software Modules(BSW Module List)には、各BSWがどのレイヤーに属するかが記載されています。
R22-11のこの文書の中で、Memory Stackの中でServices Layer BSWとされているのは、NvMおよびBndMです※5)。
SW-Cからよく使われるサービスは、NvMのOperation“ReadBlock”(NVRAMからのデータ読み出し)や“WriteBlock”(NVRAMへのデータ書き込み)、“InvalidateNvBlock”(NVRAM Blockに対応するNV Blockを読み出せない状態(invalid状態)に設定)あたりでしょうか。
もちろん、インテグレーターであればInit/MainFunctionなどのAPIや、ReadAllやWriteAllなどのサービスについても理解する必要がありますが、今回のミニシリーズ冒頭(第24回)で申し上げた「RTE上のSW-C開発」を行うための必須知識ではありません。まずは置いておいてよいでしょう。
※3)PimとNVRAM Blockとの対応付けや、Service Portの利用のための設定のような部分については、SW-C開発者ではなくインテグレーターの作業範囲になります。
また、ワークフローや、使用するツールチェーンごとにそれらの手順も大きく異なります。特に、ツールチェーンのUIや自動化の設計思想次第で、ARXMLによるモデリングに対する理解(例:PortInterfaceの属性「isService」をtrueに設定することで、そのPortInterfaceをService Portとして設定)の必要性は大きく変わってきます。それらの部分についてはここでは割愛し、一般論としての説明にとどめます。
※4)NVRAM blockは、実際の不揮発メモリデバイス上の記録ブロック(NV block)、それに対応するRAM上のコピー(RAM block)などから構成されます(筆者が所属するイーソルのトレーニングなどでは詳細も解説していますが、ここでは割愛します)。
※5)余談ですが、R21-11のCP TR BSW Module ListではMemIfもMemory Serviceに属すると書かれていました。これは明らかに誤記です(CP SWS MemIf Figure 1やCP EXP Layered Software ArchitectureではMemory Hardware Abstractionに属するとされています)。驚いたことに、この文書の初版(AUTOSAR CP R2.0)からの誤記です。Bug報告しておきました。
なお、R2.0の文書にはMOST通信モジュール(例:MOST Application Socketなど)が記載されていました。15年以上前に「これ、本気でAUTOSARに取り込むの?」と疑問を抱いたのを、かすかな記憶として思い出しました。R21-11のAPにてREST通信対応の打ち切り(obsolete設定)が決定したことは本連載の第21回でもお伝えしましたが、「実際のユースケースが育たなければ、種があっても芽吹かずまた成長しない」ということをつくづく実感します。
Copyright © ITmedia, Inc. All Rights Reserved.