AUTOSAR CP入門(その4)BSWが提供するサービスの利用AUTOSARを使いこなす(27)(2/3 ページ)

» 2022年10月06日 07時00分 公開
[櫻井剛MONOist]

2.3.1 ECU間の通信(送受信)、通信チャネル制御とネットワークマネジメント(通信スタック)

 ECU間の通信(データ授受での送受信およびSOME/IPプロトコルを用いた処理の実行要求/サービスのトリガーやその結果の取得)に関しては、第25回の「2.1.1.1 SW-C間のデータ授受用インタフェース」でご説明しましたように、インタフェース先の相手側SW-CがどのECUにいても経路を問わず(=経路がECU内の同一のmemory partition内、同一Core内の異なるpartition間、また異なるCore間のいずれであっても)、SW-C内のRE(Runnable Entity)のコード内で使用するこれらのAPIは変わりません。RTE(および、ECU間通信になる場合には通信スタック※3)のBSW)が経路の違いを吸収し、また、適宜必要なBSWモジュールの機能やハードウェアおよび通信路を利用して、任意のSW-C間が通信できるように接続します。

※3)「スタック(stack)」という表現はAUTOSARで定義されている用語ではありませんが、CP関連製品のベンダーがしばしば「同じ機能グループに関するBSW群」の意味で使う表現の一つです。ほかにも「クラスタ(cluster)」や「グループ(group)」などの表現を目にしたことがありますが、APでの「Function Group」や、AP/CPともに使われる「Functional Cluster」との混同には注意が必要です(「スタック」も、コンテキストを退避する「スタック」と表現が重なりますので、注意が必要なことには変わりがありませんが……)。

 データ授受の典型例として、CAN(Controller Area Network)を用いた、シグナルベースの通信の場合の動作をご紹介します。

 送信動作の場合には、SW-CからRTEにRte_Write() APIなどで引き渡されたDE(Data Element)の値がさらにComに引き渡され、DEに対応付けられたCANメッセージ内のシグナルに対して送信値が設定されます。送信タイミングは、周期(PERIODIC)、イベント送信(DIRECT with/without repetition ※1回のイベントに対し複数回送信することも可能)およびその両者の組み合わせ(MIXED)を選択することができ、その管理はCom(AUTOSAR COM、Communication)により行われます。送信タイミングを迎えると、Com→PduR(PDU Router)→CanIf(CAN Interface)→Can(CAN Driver)の順で送信PDU内容(=CANメッセージで授受される内容)が引き渡され、マイコンのCANコントローラー内のメールボックスに格納されたのち、ハードウェアに対する送信要求がセットされます(図2)。送信完了通知を行うことも可能で、その場合にはこれを逆順でたどって行われます。

図2 図2 CANでのシグナル送信動作の概要[クリックで拡大]

 受信動作は、基本的に送信動作の逆順です(一部相違あり)。Can→CanIf→ PduR→Comの順で受信PDU内容が引き渡され、ComからRTEに対して、受信通知が行われます。ハードウェアアクセプタンスフィルターを通り抜けてきた不要メッセージの破棄や受信DLCチェックはCanIfにて行われます。また、SW-Cは、Rte_Read() APIなどにより、任意のタイミングで受信シグナルを読み出すことができます(図3)。

図3 図3 CANでのシグナル受信動作の概要[クリックで拡大]

 送受信を開始する役割を持つECUの場合、一般に、まずSW-CからBswM(BSW Mode Manager)に対して送受信が不要な動作モードから送受信が必要な動作モードへの遷移要求を行います。インテグレーション時にBswMにあらかじめ設定しておいたシーケンスで、ComM(COM Manager)がCanSM(CAN State Manager)経由でCanIfに対しCANトランシーバーやCANコントローラーの動作開始/初期化の指示を行い、CanTrcv(CAN Transceiver Driver)とCanが実際の動作開始・初期化を行います。

 さらに、Nm(Network Management Interface)とCanNm(CAN Network Management)により、他のECUに対して「自分(自ECU)は、通信を必要としているので、他のECUも通信開始を」という意味合いの意思の伝達を行うNM PDU(Network Management PDU)の送信要求が出され、CanIfおよびCan経由で送信が行われることで、ネットワーク全体が送受信を行うようになります。これがNM(ネットワークマネジメント)の基本動作です。なお、他のECUからのNM PDUの受信をきっかけに送受信を開始する場合には、BswMに対する通知をきっかけに、BswMにあらかじめ設定しておいたシーケンスでCANトランシーバーやCANコントローラーの動作開始・初期化が指示されます。

 なお、自ECUが送受信を必要としない状態になった場合は、BswMに対して送受信が必要ではない動作モードへの遷移要求を行いますが、同一ECU上の他のSW-Cや、他のECU上の他のSW-Cが送受信を必要としている場合には、NMのメカニズムを通じて送受信を継続し、ネットワーク全体として送受信が不要になったときにはじめて、CANコントローラーやCANトランシーバーの動作停止の指示が出ることとなります。

 また、通信保護が必要な場合には、CRCとカウンタとデータIDをベースとしたE2E(End-to-End Protection)関連BSWモジュール群※4)や、リプレイアタックへのセキュリティ対抗策としての、CMACとFreshness Valueをベースとした保護を行うためのSecOC(Secure Onboard Communication)BSWモジュールが利用可能です。

※4)E2Eは、授受されるPDUサイズ(ペイロード長)により適切なCRCサイズも変わってきますし、可変長対応の要否によりヘッダレイアウトも変わります。概要は、本連載の第23回をご覧ください。

Copyright © ITmedia, Inc. All Rights Reserved.