日本无码免费高清在线|成人日本在线观看高清|A级片免费视频操逼欧美|全裸美女搞黄色大片网站|免费成人a片视频|久久无码福利成人激情久久|国产视频一二国产在线v|av女主播在线观看|五月激情影音先锋|亚洲一区天堂av

  • 手機站
  • 小程序

    汽車測試網(wǎng)

  • 公眾號
    • 汽車測試網(wǎng)

    • 在線課堂

    • 電車測試

首頁 > 汽車技術 > 正文

技術分享 | 國汽智控軟件研發(fā)總監(jiān)肖猛《Rust作為汽車軟件主語言的探索》

2021-03-08 15:25:48·  來源:國汽智控  
 
2020年12月26日到27日,Rust開發(fā)者大會在深圳舉行。國汽智控軟件研發(fā)總監(jiān)肖猛應邀在大會發(fā)表題為《Rust作為汽車軟件主語言的探索》的演講。 肖猛認為,汽車軟件需要更好的效率、更高的安全性,和其他軟件有很多不同。 傳統(tǒng)汽車軟件有硬實時的要求,MCU 軟件是
2020年12月26日到27日,Rust開發(fā)者大會在深圳舉行。國汽智控軟件研發(fā)總監(jiān)肖猛應邀在大會發(fā)表題為《Rust作為汽車軟件主語言的探索》的演講。
肖猛認為,汽車軟件需要更好的效率、更高的安全性,和其他軟件有很多不同。

傳統(tǒng)汽車軟件有硬實時的要求,MCU 軟件是主要的解決方案;和底層硬件進行交互,跟硬件關聯(lián)性大;與汽車電子電氣架構密切相關;有功能安全方面的要求;數(shù)據(jù)傳輸量少但信號復雜;一次發(fā)布、很少升級;軟件開發(fā)流程復雜而嚴格,還要考慮開發(fā)、工廠刷寫、4S店維護的全生命周期管理;Classic AutoSar 逐漸成為 ECU開發(fā)的規(guī)范,但成本非常高。

由于自動駕駛的興起,汽車軟件正在經(jīng)歷分水嶺?,F(xiàn)代汽車軟件帶來了新要求,如硬件平臺的異構分布式要求;感知算法帶來極高的算力要求;自動駕駛、娛樂系統(tǒng)帶來海量數(shù)據(jù)傳輸需求;自動駕駛應用帶來更高的功能復雜度;汽車實時在線的要求;更復雜的信息安全和功能安全要求。

尤其是在自動駕駛、智能座艙逐漸成為汽車標配,“軟件定義汽車”已經(jīng)成為行業(yè)共識的大環(huán)境下,汽車技術中軟件所占的比重將會越來越大,軟件的復雜度越來越高,越來越多的軟件開發(fā)者將進入汽車軟件領域。那么,選用更合適的開發(fā)語言,將會成倍地提高開發(fā)效率和軟件質(zhì)量。

目前汽車軟件還是主要基于 C/C++。 但是C++的復雜性使得人員培養(yǎng)難度大,人員技術水平參差不齊,即便使用了20年的程序員也不敢說精通。 C++還面臨 C++98 標準和 C++11以上標準的鴻溝。 C++98標準過于古老,C++11標準吸收了最近20年語言研究的大部分成果,已經(jīng)幾乎是一個全新的語言,但為了兼容C++98,之前標準的弊端也一樣被繼承下來了,內(nèi)存錯誤的噩夢如影隨行。

肖猛,國汽智控軟件研發(fā)總監(jiān),20年從桌面到云端到嵌入式的軟件架構經(jīng)驗,跨通訊、游戲、金融、智能網(wǎng)聯(lián)汽車多個行業(yè)領域系統(tǒng)分析專家、全棧軟件架構專家。
 
Rust的安全性和執(zhí)行效率使得它非常適合用于汽車軟件的開發(fā)。作為系統(tǒng)級語言,近5年來已經(jīng)逐步開始應用于實時數(shù)據(jù)庫、嵌入式開發(fā)、操作系統(tǒng)開發(fā)、游戲開發(fā)等領域。微軟、Facebook、華為等大廠都已經(jīng)開始接受并推動 Rust的發(fā)展。Rust一方面具有C/C++級別的運行效率,相比 C/C++又有更好的安全性,編譯器幫助解決了絕大部分內(nèi)存安全問題。同時,最近二十年來,程序語言研究的最新成果,都在 Rust中有很好體現(xiàn)。在尤為注重質(zhì)量和運行效率的汽車軟件領域,Rust是 C/C++的最佳替代者。

一方面,Rust 可以用于替換 C/C++ 代碼,實現(xiàn)效率與安全的并重;另一方面,因為它強大的表達能力,可以給復雜的汽車軟件提供新的開發(fā)思路。比如,在其他行業(yè)廣泛使用的 DSL (領域?qū)S谜Z言)技術,一般多基于 JVM 語言實現(xiàn),而JVM 在垃圾回收過程中出現(xiàn)的系統(tǒng)凍結問題,在汽車軟件中是絕對不允許的,因此 DSL 這種大大簡化領域軟件開發(fā)的方式,在汽車軟件開發(fā)中聞所未聞。如果使用 Rust ,我們可以利用Rust 宏直接操作 AST (抽象語法樹)的能力,這樣可以定制化語法,實現(xiàn)內(nèi)部 DSL(使用宿主語言的語法機制實現(xiàn)看起來定制的語法)。直接在語言級增加行業(yè)領域的概念。比如一個自動駕駛應用,其規(guī)劃決策的規(guī)則就可以直接使用 DSL 來表達。這可以大大簡化應用的開發(fā),還沒有執(zhí)行效率的損耗。

同時 Rust一樣可以用于MCU軟件的開發(fā)。這個領域一直是C語言的絕對地盤。原因就是其它語言很難直接操作硬件,對于MCU這樣需要硬實時的領域無能為力。使用 Rust,一樣能達到硬實時要求并提供完美的內(nèi)存安全機制,可以使用諸多的現(xiàn)代語言特性讓代碼有更好的結構和表達能力。

肖猛分享了他在實際項目中基于Rust語言進行的中間件軟件開發(fā)探索。 
上圖是將Rust用于自動駕駛ECU中間件軟件的實例。完成自動駕駛功能的汽車控制器一般會分為 SoC和 MCU 兩部分。MCU 部分使用 RTOS, 執(zhí)行實時性要求最高的控制算法,達到功能安全需要的 ASIL 等級。SoC 部分運行 Linux, 利用Linux 系統(tǒng)完善的軟件生態(tài)。Linux 上使用發(fā)布訂閱服務,將系統(tǒng)中數(shù)據(jù)發(fā)送者和接收者解耦和。
此系統(tǒng)中,發(fā)布訂閱服務完全使用 Rust 實現(xiàn),實現(xiàn)機制完全基于 Actor 模型,使用了Rust社區(qū)知名的 Actor 庫 Actix。中間件的底層 IPC 通訊使用 Apache Thrift 的 Rust 版本,提供了共享內(nèi)存數(shù)據(jù)通道,讓單系統(tǒng)內(nèi)的多進程能得到更高效的數(shù)據(jù)傳遞。 
在這個設計中,Rust 語言本身提供了內(nèi)存安全機制,保證絕大部分內(nèi)存問題在編譯期間被解決,Actor 設計模式一方面能提供高效的并發(fā)模型,另一方面,其監(jiān)督者機制能夠讓出問題的 Actor 隨時被重啟而不影響系統(tǒng)的功能,從軟件架構層級提高了軟件的穩(wěn)定性。Thrift可以跨多種語言使用,讓測試人員可以使用 Python在系統(tǒng)外使用發(fā)布訂閱服務,對各軟件節(jié)點進行數(shù)據(jù)的注入并檢查處理的結果。    
這個設計中另一個亮點就是發(fā)布訂閱服務在RTOS中的實現(xiàn)。他們開發(fā)了一個可以運行在 RTOS 中的輕量級 "Thrift運行時" 的 C 語言實現(xiàn),以及對應的代碼生成工具,可以根據(jù) Thrift IDL 生成 C 代碼。這樣 RTOS 中的各個 Task 之間可以根據(jù) Topic 實現(xiàn)數(shù)據(jù)的發(fā)布和訂閱。    
同時實現(xiàn)了Linux 和 RTOS 之間的數(shù)據(jù)橋接。 對同一個 Topic 的發(fā)布和訂閱,可以跨越系統(tǒng)邊界。 也就是說,在 RTOS 中發(fā)布的數(shù)據(jù),在 Linux 中也可以訂閱到,反之亦然。 這樣可以簡化各層軟件之間的通訊模型。 而且還帶來一個附加的好處,就是可以在 RTOS 外 , 通過對消息的發(fā)布訂閱,來測試 RTOS 下軟件的行為。

肖猛表示,這個項目只是一個輕量級的發(fā)布訂閱服務的實現(xiàn)。Rust 和 Actor 模式為系統(tǒng)提供了高性能和高穩(wěn)定性。開銷也非常小。這只是將 Rust 語言用于汽車軟件的初步嘗試,取得了非常好的效果。他們正計劃將 Rust 用于更多的場景。例如,在系統(tǒng)底層,使用 Rust開發(fā) MCU軟件乃至 RTOS;在應用層,使用 Rust定制自動駕駛應用的 DSL,簡化應用開發(fā)。

隨著Rust的進一步發(fā)展和推廣,生態(tài)的進一步完善,會有越來越多的人了解到它的優(yōu)勢,愿意學習并應用它。在可見的未來,Rust一定會成為汽車軟件開發(fā)的主流語言。

none="shifuMouseDownCard('shifu_c_009')">
關于國汽智控
國汽智控(北京)科技有限公司基于頂層設計、優(yōu)勢人才、科技創(chuàng)新和重磅資源,研發(fā)智能網(wǎng)聯(lián)汽車基礎平臺產(chǎn)品并實現(xiàn)產(chǎn)業(yè)化落地。公司注冊成立于2020年7月,總部位于北京經(jīng)濟技術開發(fā)區(qū),在北京、上海、硅谷均設有研發(fā)中心。核心產(chǎn)品包括智能汽車操作系統(tǒng)及計算基礎平臺、異構分布硬件平臺、車路云協(xié)同基礎軟件等。
分享到:
 
反對 0 舉報 0 收藏 0 評論 0
滬ICP備11026917號-25