車載開発:AUTOSAR CLASSICの全体概要
AUTOSAR Classic Platformの全体構成と、要するにどの辺がポイントなの?ってなるので特によく利用される領域ごとに自分なりに分けて記載してみました。
基本構成
-
Application Layer (APP)
ユーザが開発するアプリケーションコード群 -
RTE (Run-Time Environment)
APPと下位AUTOSAR BSW(Basic Software)との仲介を行うミドルウェア -
AUTOSAR Stack
OS、通信、診断、メモリ、I/O等の共通処理スタック
ふつうAUTOSARスタックって手打ちすることは無いはずです。統合開発環境(IDE)でGUI等でコンフィグして設定してオートコードして使用するのが一般的な認識です。

引用:Vector (なんか古いですが、一応公式)
以下はGPTに聞いてツールの例を出してもらいました笑
主な統合開発ツール(ベンダ例)
| ベンダー | ツール名 | 備考 |
|---|---|---|
| Vector | DaVinci Developer / Configurator | 欧州で広く採用。GUIでBSW構成とコード生成が可能 |
| Elektrobit | EB tresos Studio | OEMやサプライヤ向けに強い。標準AUTOSAR準拠 |
| ETAS | ISOLAR-A / B | Bosch系。分割型の構成で柔軟 |
| 日立Astemo / DENSO等 | 自社ツール(社内用) | 車両制御ECUなどで独自派生も存在 |
よく使うのはCAN系と不揮発系、あとOS関連かと思うので分けて分類します。
CAN通信関連モジュール
一般的なECUだと一番よく触るモジュールではないでしょうか。ARXMLでだいぶ効率化されてる印象はありますが、、、別記事で詳細書こうと思います。
共通系
| モジュール名 | 役割概要 |
|---|---|
| PduR | PDUのルーティングを担当。COMやDCMなどの上位⇔下位層を中継 |
| CanIf | CANドライバ抽象化層。上位に対して物理チャネルを隠蔽 |
| Can Driver | 実際のハードウェア制御(送受信・バス状態制御など) |
診断機通信系
| モジュール名 | 役割概要 |
|---|---|
| CanTp | ISO-TP(フレーム分割/再構築)を提供 |
| DCM | 診断サービスの制御・提供(UDSなど) |
| DEM | 故障イベント管理(DTC記録・SSR等) |
制御通信系
| モジュール名 | 役割概要 |
|---|---|
| COM | アプリ層⇔通信層間のインタフェース(信号単位) |
| COMM | 通信の起動・停止管理(ECU起動・スリープ制御) |
| CanNm | CANネットワーク管理(ネットワーク参加状態管理) |
不揮発メモリ関連モジュール
こちらも次点でよく触る印象があります。特にNvMですね。
こちらも別記事で書きたい。
| モジュール名 | 役割概要 |
|---|---|
| NvM | 永続データの管理。EEPROM/Flashへの抽象化インタフェース |
| Fee / Ea | 物理EEPROMやFlashへの読み書き管理(Fee: Flash EEPROM Emulation, Ea: EEPROM abstraction) |
| MemIf | 物理メモリデバイスへのドライバ抽象化層 |
I/O関連モジュール
これは変更ないとあまり触らないかなと。HW IF仕様に沿ってコンフィグする印象でそこまでトラブルもないかなと思います、たぶん。
| モジュール名 | 役割概要 |
|---|---|
| Dio | デジタルI/O制御(ピン単位) |
| Port | ポート設定管理(方向・初期値など) |
| Adc | アナログ→デジタル変換制御 |
| Pwm | PWM出力制御 |
| Gpt / Icu | 汎用タイマ/入力キャプチャ制御などの時間関連 |
OS関連モジュールと制御
OS系は本記事である程度書いてみます。
| モジュール名 | 役割概要 |
|---|---|
| OS | タスク制御、割り込み、イベント制御などRTOS機能を提供 |
| SchM | モジュール単位の排他制御。AUTOSAR規定の排他セクション管理 |
OS
RTOS全般かと思いますが、ハードウェアタイマを根幹としてソフトウェアタイマに変換した後にスケジューラとして起動するイベントと、ハードウェア割込み起点のイベント、ソフトウェアイベント等があります。これらはOSで管理されます。
- タスク:周期・イベントで起動される処理単位。拡張タスクはイベント待機が可能
- イベント:タスクの再開トリガとして送信されるソフトウェアイベント
- アラーム:ソフトウェアタイマ。一定周期でタスク起動やイベント送信を実行
- ISR(割り込みサービスルーチン):ハードウェア割込みに対応し、OSで管理される
- リソース:タスク間で共有するリソースを保護(優先度逆転防止)
SchM(Schedule Manager)
特にエッジECUではハードウェア割込みを多用することがあるかと思います、それらの割込み干渉としてクリティカルセクション制御を使います。SchMで定義、管理され、APPから呼び出すことで干渉を防止するように設計します。経験上、割込み系は一番トラブルが多いですよね。。。
- 各BSWモジュール内のクリティカルセクションを統一的に制御
- SchM_Enter_xxx / Exit_xxx 形式のマクロで排他制御を明示
- 内部的にはOSのリソースを使って動作するが、BSW層がOS依存にならないよう抽象化されている
まとめ
AUTOSAR Classicを開発経験上から整理して記載してみました。また個々のモジュール群を別記事で書いてみます。

Discussion