1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AUTOSAR学習ノート:Classic Platform全体アーキテクチャ

1
Posted at

AUTOSAR Classic Platform学習ノート:第1章 全体アーキテクチャ

対象プラットフォーム:AUTOSAR Classic Platform
本章ではClassic Platform固有のレイヤードアーキテクチャを扱う。Adaptive Platformのアーキテクチャとは構成が異なる。
キーワード:Application、RTE、BSW、MCAL、Complex Driver

本章の対象範囲

このノートで説明するApplication SWC → RTE → BSW → MCAL → Hardwareは、AUTOSAR Classic Platformの基本構成である。

Adaptive Platformも、アプリケーションの分離、標準インターフェース、サービス指向通信など、AUTOSARとして共通する目的を持つ。ただし、ClassicのRTE、階層型BSW、MCAL、Runnable Entityをそのまま使用する構成ではない。AdaptiveではAdaptive Application、ARA、Functional Cluster、POSIX OS、Processなどを中心とした別のアーキテクチャを採用する。

本章で扱うClassicの要素 Adaptiveでの考え方・代表要素
Application SWC Adaptive Application
Runnable Entity Process、Thread、Function
RTE ARA API/Functional Cluster
Services・ECU Abstraction・MCAL Adaptive Platform Services、OS・Hardware Abstraction
AUTOSAR OS Task POSIX Process/Thread
静的に設計・生成された構成 実行時のサービス探索など、より動的な構成

注意: この表は概念を理解するための対比であり、Classicの要素とAdaptiveの要素が一対一で置き換わることを意味しない。

1. この章のゴール

この章では、AUTOSAR Classic Platformを構成する各レイヤーの役割と、アプリケーションからハードウェアまで処理が伝わる仕組みを理解する。

学習後、次の質問に答えられることを目標とする。

  • AUTOSARがソフトウェアをレイヤーに分ける理由は何か
  • Application、RTE、BSWはそれぞれ何を担当するか
  • Runnable Entity(RE)がいつ、どのように実行されるか
  • ECU Abstraction LayerとMCALは何が違うか
  • SWCからCANフレームが送信されるまでに何が起きるか
  • Complex Driverはどのような場合に使用するか

2. まず全体像をつかむ

一言で整理すると

レイヤー 一言で表す役割 主な関心事
Application 車両機能を実現する 「何を制御するか」
RTE SWCと周辺機能をつなぐ 「誰とどう接続するか」
Services ECU共通機能を提供する OS、通信、診断、状態管理
ECU Abstraction ECU上のデバイス差を隠す 外付けデバイスやI/O
MCAL マイコン固有の差を隠す レジスタ、内蔵周辺回路
Complex Driver 標準構成で扱いにくい処理を担う 特殊、高速、標準外処理

レイヤー化する理由

  • ハードウェアが変わっても、上位ソフトウェアへの影響を抑える
  • SWCやBSWモジュールを別プロジェクトで再利用しやすくする
  • 機能ごとの責任範囲を明確にする
  • 複数のサプライヤーが共通インターフェースで開発できるようにする

覚え方: 上位層ほど車両機能に近く、下位層ほどハードウェアに近い。


3. 各レイヤーの役割

3.1 Application Software Layer

Application Software Layerは、車両として実現したい機能や制御ロジックをSoftware Component(SWC)として実装する層である。

Application Software LayerとSWCの関係

1つのECUのApplication Software Layerには、通常、役割の異なる複数のApplication SWCが配置される。さらに、各SWCの内部には1つ以上のRunnable Entity(RE)が定義される。

階層構造として表すと、次のようになる。

Application Software Layer
├── SWC A
│   ├── Runnable Entity A1
│   └── Runnable Entity A2
├── SWC B
│   ├── Runnable Entity B1
│   └── Runnable Entity B2
└── SWC C
    └── Runnable Entity C1
要素 位置づけ 実行単位か
Application Software Layer 複数のApplication SWCを含むレイヤー いいえ
SWC 機能と通信インターフェースをまとめる設計単位 いいえ
Runnable Entity SWC内部に定義される処理 はい

重要: SWCは機能をまとめる単位であり、それ自体がOS上で実行されるわけではない。実際にOS Taskのコンテキストで実行されるのは、SWC内部のRunnable Entityである。

また、SWC同士は原則として直接関数を呼び合わず、PortとRTEを介して通信する。

主な役割

  • センサ値やほかのSWCからの情報を受け取る
  • 判定、演算、状態管理などの制御ロジックを実行する
  • 制御要求や車両状態をほかのSWCへ出力する
  • RTEを介してBSWサービスを利用する

代表例

  • ADAS制御
  • モータ制御
  • バッテリー管理
  • ドア・エアコン制御
  • 車両状態判定

重要: SWCは、原則としてCANドライバやマイコンレジスタを直接操作しない。

3.2 Runtime Environment(RTE)

RTEはApplication LayerとBSWの間に位置し、SWCの通信と実行を仲介する。

主な役割

  • SWC間通信
  • SWCとBSWサービス間の通信
  • PortとInterfaceの接続
  • Eventに基づくRunnableの起動
  • ECU内通信とECU間通信の違いの隠蔽

RTEが仲介する範囲

通信・連携 RTEの関与 基本的な仕組み
SWC ↔ SWC(同一ECU) あり Port、Interface、RTE API
SWC ↔ SWC(別ECU) あり RTEからCommunication Stackへ接続
SWC ↔ BSW Service あり Service Port、RTE API
BSW ↔ BSW 原則なし 標準BSW API、Callback、PDU転送など

SWCから見れば、相手が同じECUにあるか別のECUにあるかにかかわらず、基本的にはPortを通じてデータを送受信する。別ECUへの通信では、RTEの下でCOM、PduR、CanIfなどのCommunication Stackが実際の転送を担う。

Application SWCがNvMなどのBSWサービスを利用する場合も、原則としてService PortとRTEを介する。一方、BSWモジュール同士の連携はRTEを経由せず、AUTOSARで定義されたBSW API、Callback、PDU転送などを使用する。

注意: 「RTEはECU内のすべての通信を中継する共通バス」ではない。RTEは主にApplication SWC側の通信とサービス利用を抽象化する。

覚え方: RTEはSWC専用の「接続・実行基盤」。

3.3 Runnable Entity(RE)

Runnable Entity(RE)は、Application SWC内部でRTEから起動される最小の実行単位である。一般には、単にRunnableとも呼ばれる。

SWCは機能をまとめる設計上の単位であり、SWCそのものが直接実行されるわけではない。実際にCPU上で動作する処理は、SWC内部に定義されたRunnable Entityとして実装される。

SWC、RE、Eventの関係

要素 意味 例
SWC 車両機能をまとめるソフトウェア単位 車速監視SWC
Runnable Entity SWC内部で実行される処理単位 車速判定処理
RTE Event REを起動する条件 10 ms周期、データ受信
RTE EventとREを結び、REの実行を仲介する 生成されたRTEコード
OS Task REが実際に動作する実行コンテキスト 10 ms Task

代表的なRTE Event

Event 起動タイミング
TimingEvent 指定した周期で起動する
DataReceivedEvent データを受信したときに起動する
DataReceiveErrorEvent データ受信エラーを検出したときに起動する
OperationInvokedEvent ClientからServer Operationが呼ばれたときに起動する
InitEvent ECUまたはSWCの初期化時に起動する
ModeSwitchEvent モードが切り替わったときに起動する

周期Runnableが実行されるまで

重要: ARXMLでは、REとRTE Eventの関係をSWC Internal Behaviorとして記述する。ECU統合時にREをOS Taskへマッピングし、その設定に基づいてRTEコードが生成される。

REとRTEを混同しない: REは「実行される処理」、RTEは「REの起動や通信を仲介する環境」である。

3.4 Basic Software(BSW)

BSWは、ECUの動作に共通して必要となる基盤機能を提供するソフトウェア群である。主にServices Layer、ECU Abstraction Layer、MCAL、Complex Driversから構成される。

BSWの階層構成

上からの順序 レイヤー 役割 ハードウェア依存度
1 Services Layer ECU共通サービスを提供する 低い
2 ECU Abstraction Layer ECU基板上のデバイス差を隠す 中程度
3 MCAL MCU内蔵周辺機能とレジスタ差を隠す 高い
横断的 Complex Drivers 標準階層で扱いにくい処理を実現する 設計によるが高くなりやすい

図の読み方: 上下の配置は抽象度を示す。必ずすべての呼び出しがServices → ECU Abstraction → MCALの全レイヤーを通過するわけではない。利用する機能に応じて、AUTOSARで定義されたインターフェースを介して必要な下位モジュールへ接続する。

Services Layer

OS、通信、診断、メモリ管理、ECU状態管理など、上位層やほかのBSWが利用する共通サービスを提供する。

分野 代表モジュール 主な役割
OS OS Task、Event、Alarm、割り込み管理
通信 COM、PduR、Nm 信号処理、PDU転送、ネットワーク管理
診断 DCM、DEM 診断要求、故障イベント管理
メモリ NvM 不揮発データ管理
ECU管理 EcuM、BswM 起動・終了、モード制御
監視 WdgM ソフトウェア実行監視

ECU Abstraction Layer

ECU上に搭載された外付けデバイスやI/Oデバイスの違いを上位層から隠蔽する。

対象例

  • 外部Flash、EEPROM
  • センサ、アクチュエータ
  • CANトランシーバ
  • Ethernetトランシーバ/PHY
  • 各種I/Oデバイス

覚え方: ECU Abstractionは「ECU基板上の部品の違い」を隠す。

Microcontroller Abstraction Layer(MCAL)

MCALは、マイクロコントローラ内蔵の周辺機能やレジスタ操作を標準インターフェースとして提供する。

代表的なドライバ

  • Port、Dio、Adc、Pwm
  • Spi、Can、Ethernet
  • Flash、GPT

覚え方: MCALは「マイコン内部の違い」を隠す。AUTOSARの中でも特にMCU依存性が高い。

ECU AbstractionとMCALの違い

比較項目 ECU Abstraction MCAL
主な対象 ECU基板上のデバイス マイコン内蔵周辺機能
例 EEPROM、Transceiver、外部センサ CAN Controller、ADC、SPI、PWM
目的 デバイス構成の差を隠す MCU品種・レジスタの差を隠す
ハードウェアとの距離 MCALより上位 ハードウェアに最も近い標準層

Complex Drivers(CDD)

Complex Driverは、標準BSWやMCALだけでは実現しにくい特殊な処理に使用する。

使用例

  • 高速な割り込み処理
  • 独自ASICや特殊デバイスの制御
  • AUTOSAR標準外のハードウェア制御
  • 厳しいリアルタイム制約を持つ処理

CDDは柔軟性が高い一方、移植性や標準化を損なう可能性がある。採用時には、標準モジュールで実現できない理由を明確にする必要がある。


4. 処理の流れで理解する

例:SWCからCAN信号を送信する

この例でSWCが知っているのは、PortとRTE APIである。CAN ID、送信メールボックス、レジスタ操作などは下位層が担当する。

ステップ 担当 処理
1 SWC / RTE アプリケーションデータを渡す
2 COM SignalをI-PDUに格納する
3 PduR PDUを適切な通信経路へ転送する
4 CanIf CAN Driverを抽象化して送信を依頼する
5 Can Driver CAN Controllerを操作する

5. 本章の要点

  1. AUTOSAR Classicは、機能とハードウェア依存部分を分離するためにレイヤー構造を採用する。
  2. Application Layerでは、車両機能をSWCとして実装する。
  3. RTEは、Portを通じたSWC間・SWCとBSW間の通信とRunnable実行を仲介する。
  4. Runnable Entityは、RTE Eventによって起動されるSWC内部の実行単位である。
  5. ECU統合時には、Runnable Entityを実際に実行するOS Taskへマッピングする。
  6. Services Layerは、OS、通信、診断、メモリ、ECU管理などの共通機能を提供する。
  7. ECU Abstraction LayerはECU基板上のデバイス差を隠す。
  8. MCALはマイコン内蔵周辺機能とレジスタの差を隠す。
  9. Complex Driverは標準構成で扱えない特殊処理に限定して使用する。
  10. 上位層ほどハードウェア非依存性が高く、下位層ほどハードウェア依存性が高い。

6. 用語集

用語 意味 この章での役割
SWC Software Component 車両機能・制御ロジックの単位
RTE Runtime Environment SWCの通信と実行を仲介する環境
BSW Basic Software ECU共通の基盤ソフトウェア
RE / Runnable Entity SWC内部の最小実行単位 RTE Eventによって起動される処理
RTE Event REの起動条件 周期、データ受信、Operation呼出しなど
Port SWCの通信窓口 Interfaceに基づいて接続される
Event Runnableの起動条件 周期、データ受信、Operation呼出しなど
Signal アプリケーションデータ COMによってI-PDUへ格納される
PDU 通信データ単位 通信スタック内で受け渡される
MCAL Microcontroller Abstraction Layer MCU固有機能を抽象化する層
CDD Complex Device Driver 特殊・高速・標準外処理を担う

勉強した内容をChatGPTで整理してもらいましたので、メモとして残しました。ありがとうございます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?