如何看待AUTOSAR 宣布成立新的汽車軟件Rust編程語言工作組?

如何看待AUTOSAR 宣布成立新的汽車軟件Rust編程語言工作組?的圖1

背景:

3月14日,AUTOSAR 宣布成立新的汽車軟件Rust編程語言工作組,該小組將于2022 年 4 月正式啟動,并計劃制作兩份文件,其中一份文件將提供有關如何在 AUTOSAR AP 平臺中使用 Rust 的指導。另一份文件將提出關于 Rust 的編碼指南。

對這個問題感興趣的人有兩類,一類是汽車軟件從業者,一類是 Rust 社區的開發者,至少在當前,這兩類人重疊度很低。我盡量寫得讓兩類人都能理解。

AP 默認基于 C++14 實現

AUTOSAR 分為 Classic Platform 和 Adaptive Platform, 簡稱 CP 和 AP。在汽車軟件中,CP 和 AP 是一套API級別的標準,由 AUTOSAR 組織維護,你知道的歐美汽車大廠和主要 Tie1基本都是其會員,國內很多公司也加入了,如華為等。加入組織很簡單,每年給很少的錢,再給半個到兩個人幫它干活就行,不是什么了不起的事情,但是能否有影響力就難說了。(有些公司把加入 AUTOSAR 作為宣傳點的,呵呵一下就行)。

CP和AP跟我們常見的協議不一樣,它并不是一個文本標準,是 API 級別的標準。也就是說,它的絕大多數協議是有代碼的,至少是接口代碼規范。加入AUTOSAR 組織后,就可以獲取它的參考代碼實現,否則只能從其官網下載文檔說明,好幾百份。

API級別的文檔,就意味著其標準必須用具體的代碼來描述,CP 用于以MCU單片機作為主要計算器件的汽車控制器中, 使用的是 C 語言,AP 是基于嵌入式 POSIX 標準,是使用C++語言來實現,而且要求C++14標準。

AP 的文檔中專門有一份 “Guidelines for the use of the C++14 language in critical and safety-related systems”,500多頁。主要內容就是一系列的編碼規范,用于規避 C++各種可能導致不安全的坑。

既然明知道這么多坑,為啥還是要用C++?因為沒有其它可選項,至少在 AUTOSAR標準啟動的時候,沒有其它可選項。其實 AUTOSAR 組織還是很積極采用新技術的,要不然也不會一上來就應用 C++14標準。

AP 應用以車聯網終端程序和智能駕駛程序為主

與 CP主要用于硬實時的MCU軟件不同,AP 主要運行在 Linux或 QNX 等系統上。當然如果一些RTOS也能很好的支持 POSIX 標準,AP 也可以運行在 RTOS 上。

在理解 AP時,我們要區分一下 AP Platform 和 AP Application。AP Platform 一般由專門的公司按照AP規范進行開發,然后賣給某個汽車軟件企業。該企業再基于于這個 Platform 開發自己的 AP Application。

這些 AP Application 典型的以車聯網車端程序和自動駕駛程序為主,一般還要求符合 SOA架構。

這些應用,尤其是自動駕駛相關的應用,要求實時性很高。必須是 Native 程序,這基本上就排除了解釋性動態語言(如Python)和有垃圾收集的語言(如Java)。如果還要求很好的抽象表達能力,那么在幾年前,可選的確實只有 C++。

Rust 與汽車軟件是絕佳搭檔

仔細讀一下那500頁的 AUTOSAR CPP Guidline ,你會發現其要求的大部分規則都已經被 Rust 原生支持好了。Rust 用編譯器保證的安全性,在 C++中只能靠編碼規則去維護,為了彌補這個不足,又有廠商開發代碼掃描工具去發現潛在缺陷,明顯的缺陷很容易被掃描出來,但是更深層次的缺陷,尤其涉及到多線程的并發場景,這些掃描工具實際也無能為力。

C++ 程序的內存錯誤問題是根深蒂固的,微軟谷歌等大廠不缺牛人,做出來的產品很大一部分缺陷都是內存錯誤引起的。如果是服務器端程序,宕機了無非立馬重啟動一下。但是在汽車軟件中,這可能會導致嚴重的安全(Safety)問題。

Rust 既有 C++一樣的性能,又保證了極高的安全性,又有豐富的抽象表達能力,是最適合汽車軟件的語言。

前景很好,成熟需要時間

AUTOSAR 組織開始考慮應用 Rust 的可能性,這是一個很好的開始。目前也沒有提出具體的目標,可能還需要一段時間。AP支持 Rust 有幾種可能的方式:

為現有的 AP C++ API 標準提供對等的 Rust API標準。這樣現有的 AP Platform廠商可以繼續使用基于 C++ 的AP Platform 實現。但是其客戶可以使用Rust API 開發應用。這可以讓Rust API 盡快可用。不過也有一些技術問題需要解決,主要是 C++ 和 Rust 的互操作要有簡便高效的方法。

更徹底的方式是 AP Platform 本身就使用 Rust 實現,這樣提供的 API更符合 Rust 的語言特性,而不會像前面的方案一樣要遷就原有的 C++ API。

無論哪種途徑,我想都不會很快實現,AUTOSAR 組織干活是出了奇的慢,而且很謹慎。但是這一次,我相信他們走在了正確的道路上。

另外,Rust 的人才培養也需要加快,希望更多的程序員,了解 Rust ,學習 Rust , 應用 Rust。

我想,10年后,掌握 Rust 語言,將是入行汽車軟件的必要條件。


推薦閱讀

一文搞懂CAN總線的AUTOSAR網絡管理
談談在V模型流程中引入敏捷開發
深度解讀汽車域控制器
談談在V模型流程中引入敏捷開發
自動駕駛域控制器信息梳理
自動駕駛中的路徑規劃
汽車軟件開發的下一個階段是什么樣的?
深度分析整車控制域現狀與發展
談談對汽車OTA的理解
小鵬P7內部ECU技術信息梳理
保時捷Taycan的電子電氣架構詳解
歐陽明高院士:滑板底盤將給汽車帶來一場革命
如何寫一份牛X的汽車軟件需求
關于對汽車ECU軟件測試的理解
特斯拉最新中央計算模塊(CCM)解析
2021款特斯拉Model Y ECU接口梳理
詳解CANoe之CAPL編程
基于UDS的Bootloder詳解
關于整車上下電流程的理解
DoIP協議介紹,資料分享!
詳解車載網絡 OTA系統的開發|文末附下載
一文了解汽車嵌入式AUTOSAR架構|附下載

分享不易,懇請點個【??和【在】唄~

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP