🚗

Autosar APでのRustアプリ関係の仕様書を読んでみた(R23-11)

2023/12/07に公開

初めに

本記事はR23-11で出てきたAutosarのドキュメントを説明します。また、できるところは深堀します。
※内容に関しては順次追加する予定です。

https://www.autosar.org/fileadmin/standards/23-11/AP/AUTOSAR_AP_EXP_ARARustApplications.pdf

記事の要旨

Autosar APにおけるRustアプリのお作法について記載してます。

「1 Introduction」ではRustを導入するための動機、
「4 Rust language tutorials」では次の「5 Tour of AUTOSAR with Rust」の前段となる通常のRust環境に関する解説、
「5 Tour of AUTOSAR with Rust」ではAutosar AP上でのRustアプリの使いこなしの詳細、
「6 In depth discussion」はアプリをどういう風にリンクするかなどの込み入ったトピック、
といった構成です。

前提となる項目

AutosarやRustについては本記事では割愛させていただきます。
個人的にはAutosarに関してはVectorかMonoist辺りの記事や動画を漁ると幸せになれると思います。

https://cdn.vector.com/cms/content/know-how/VJ/PDF/For_Beginners_AUTOSAR.pdf

一言で言うならAutosarは車載プラットフォームのようなものです。
車載システムは長らくはアセンブラまたはC言語で開発してきましたが、Autosar APに代表されるようにC++でも開発されてきて、さらにこの記事で紹介するドキュメントのようにRustも取り入れ始めています。

それに呼応してか偶然かFerroceneのRustのコンパイラ含むツールチェーンがISO26262の認証を取得しています。

車載でRustが使われ出すのは20年後くらいかと思ってましたが意外と近い将来かもしれませんね。

https://ferrous-systems.com/blog/officially-qualified-ferrocene/

ドキュメントの中身

1 Introduction

ここでAutosarがRustを導入するモチベーションについて語ってます。
どうやらAP自体は従来通りC++で実装し、その上のAdaptive ApplicationをRustでも実装できるようにしようという試みみたいです。

一応、2022年時点でWG-SAFがRustの導入については検討していたみたいでそれと関係あるかもしれません。

https://www.autosar.org/news-events/detail?tx_news_pi1[action]=detail&tx_news_pi1[controller]=News&tx_news_pi1[news]=139&cHash=b332c8babc7aad27723ab939f9723fc6

Autosar側から見たC++とRustの認識はこんな感じらしい。


「Language design focus」の部分はC++は速度と自由度の高さに全振りなのに対してRustの場合は信頼性にもフォーカスしているという評価だが実測した結果、そこまで大きな差はなさそうに見えます(C++のほうがわずかに早い?)。

https://hinastory.github.io/cats-cats-cats/2020/04/01/refizz-starting-life-in-rust-world/
https://proc-cpuinfo.fixstars.com/2019/09/rust-wins-cpp/

ara::comを例にとるとRust向けにラッパーをかます構成みたいです。

RustのアプリとAutosarのAPIを直接つなげずそれ用の層を用意するらしいです。
RustもC++もC言語と互換性を持たせることが可能なのでそれを利用するとか。

例えばara::comならこういう感じ。

5 Tour of AUTOSAR with Rust

作成中

6 In depth discussion

作成中

Discussion