0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

緣起今生:英飛凌車規(guī)MCU全系支持Rust 語言開發(fā)

江師大電信小希 ? 來源:江師大電信小希 ? 作者:江師大電信小希 ? 2024-04-05 13:43 ? 次閱讀

隨著軟件功能的日趨強(qiáng)大,軟件開發(fā)工作量隨之劇增,軟件開發(fā)團(tuán)隊也不斷嘗試改進(jìn)軟件的開發(fā)方法,旨在保證軟件功能,質(zhì)量的情況下,減少成本,加快開發(fā)速度。

要實現(xiàn)上述目標(biāo),關(guān)鍵在于工作量——在軟件開發(fā)中盡可能減少工作量。

軟件開發(fā)相關(guān)的工作量包括功能需求定義,功能需求的實現(xiàn)和測試,非功能需求,以及修復(fù)開發(fā)過程中引入的錯誤的工作量。

站在軟件開發(fā)者的角度,在實現(xiàn)軟件完整功能的情況下,如何減少開發(fā)的總工作量,唯一能夠減少的部分就是用于修正錯誤的工作量。

對軟件開發(fā)而言,一旦發(fā)現(xiàn)錯誤,就必須加以修正,以保證軟件產(chǎn)品質(zhì)量。因此,要在不影響產(chǎn)品質(zhì)量的前提下減少工作量,唯一的解決辦法就是防止開發(fā)過程中引入軟件錯誤。

在已知的軟件錯誤中,內(nèi)存安全是軟件行業(yè)中最常見的錯誤類別[1][2]。然而,嵌入式軟件行業(yè)的標(biāo)準(zhǔn)語言 C 和 C++ 是非內(nèi)存安全編程語言,這意味著嵌入式系統(tǒng)很容易出現(xiàn)這類錯誤。

減少這類錯誤的方法之一是在軟件測試、審查和驗證方面投入人力物力,而另一種思路是用內(nèi)存安全語言取代現(xiàn)有語言[3]。

雖然許多內(nèi)存安全語言(如 Python、Java)已在軟件行業(yè)得到廣泛應(yīng)用,但它們并不適合嵌入式系統(tǒng)。這是因為嵌入式系統(tǒng)對占用空間、堆棧使用和性能有嚴(yán)格的限制(這是C和C++的優(yōu)勢)。

Rust就是在這樣的背景下誕生的,它同時實現(xiàn)了高效性和內(nèi)存安全。

Rust 是什么

Rust語言在2006年作為 Mozilla 員工 Graydon Hoare 的私人項目出現(xiàn),而 Mozilla 于 2009 年開始贊助這個項目。第一個有版本號的 Rust 編譯器于2012 年 1 月發(fā)布。Rust 1.0 是第一個穩(wěn)定版本,于 2015年5月15日發(fā)布 [4] 。

wKgZomYPj26AY-YPAAAdBjmUL6M255.png

Figure 1. Rust Logo

Rust是一種在科技界大受歡迎的語言,Rust已經(jīng)連續(xù)七年(2016,2017,2018,2019,2020, 2021, 2022)在Stack Overflow開發(fā)者調(diào)查的“最受喜愛編程語言”評選項目中折取桂冠[5]。

微軟用Rust重寫它的一些核心windowns庫,在 Android 13 中,21% 的新原生代碼使用了 Rust,此外,除 C 語言外,Rust 是唯一一種支持編寫 Linux 內(nèi)核組件的語言,并被廣泛用于后端軟件、基礎(chǔ)設(shè)施和微服務(wù)。(找元器件現(xiàn)貨上唯樣商城

Figure 2. rust-gentle-intro [6]

Rust是一種系統(tǒng)編程語言,旨在成為無垃圾回收的內(nèi)存安全語言。

Rust使用了包含特定規(guī)則的“所有權(quán)”機(jī)制來管理內(nèi)存,允許編譯器在編譯過程中執(zhí)行檢查工作,而不會產(chǎn)生任何的運(yùn)行時開銷。Rust中的每一個值都有一個對應(yīng)的變量作為它的所有者;在同一時間內(nèi),值有且僅有一個所有者;當(dāng)所有者離開自己的作用域時,它持有的值就會被釋放掉。

Rust使用“借用規(guī)則”實現(xiàn)對值進(jìn)行可變和不可變引用:一個值可以有一個不可變引用或多個可變引用,但不能同時有兩個引用。編譯器中一個名為“借用檢查器”的特定部分會對此進(jìn)行檢查。

Rust中的生命周期規(guī)則:Rust的每個引用都有自己的生命周期,它對應(yīng)著引用保持有效性的作用域。生命周期最主要的目標(biāo)在于避免懸垂引用,進(jìn)而避免程序引用到非預(yù)期的數(shù)據(jù)。[7][8]

Cargo 是 Rust 的軟件包管理器[9],軟件包被稱為板條箱(Crate),cargo 有一個命令:cargo build,它能自動解決項目依賴關(guān)系。另外,使用 cargo test 命令能觸發(fā)單元測試,使用 cargo doc 命令還能生成文檔網(wǎng)頁。cargo 的文檔列出了 30 多條不同的命令,用于支持軟件包處理、構(gòu)建文檔和測試。此外,cargo 還可用于安裝其他 Rust 二進(jìn)制文件,如工具 svd2rust。

嵌入式系統(tǒng)中的 Rust

wKgZomYPj2-Af7-OAABB7EEFnvw850.png

Figure 3. Embedded Rust Architecture

Embedded Rust 的結(jié)構(gòu)可以分為上述5層,如上圖所示,從下往上的順序,最底層是MCU硬件層,有各個資源,外設(shè),由不同的芯片決定;第2層是PAC,可以理解為芯片的頭文件,里面是各個寄存器信息;第3層是在PAC的基礎(chǔ)上對寄存器進(jìn)行操作一些調(diào)度函數(shù),里面對寄存器進(jìn)行直接操作;第4層是硬件抽象層,這一層的意義是從芯片強(qiáng)相關(guān)的驅(qū)動函數(shù)上抽象出來,提供一個通用接口,這個通用接口由最上層的軟件驅(qū)動層、軟件應(yīng)用層去調(diào)用,實現(xiàn)對芯片資源的調(diào)度。

在Embedded Rust中,使用svd2rust工具將芯片資源的描述文件SVD文件轉(zhuǎn)化為PAC,該接口具有良好的可讀性,便于審查和維護(hù)。此外,它還能防止出現(xiàn)錯誤,因為如果設(shè)置的值對該字段無效,代碼將無法編譯。

RUST 與 C 語言的關(guān)系

Rust對硬件的內(nèi)存需求,堆棧使用,運(yùn)行效率可以和C相媲美,具體的細(xì)節(jié)差異會和編譯優(yōu)化等級,應(yīng)用等有些許差異。

此外,Rust有一個令人振奮的點,它可以和C語言共同使用。

Rust和C代碼間的互用性始終取決于兩種語言間的數(shù)據(jù)轉(zhuǎn)換。為了實現(xiàn)互用性,在stdlib中,有兩個專用模塊,叫做std::ffi和std::os::raw 。

std::ffi提供了一些工具去轉(zhuǎn)換更復(fù)雜的類型,比如Strings,將&str和String映射成更容易和安全處理的C類型。

std::os::raw處理底層的基本類型,這些類型可以被編譯器隱式地轉(zhuǎn)換,因為Rust和C之間的內(nèi)存布局足夠相似或相同[10]。

Rust 是一種現(xiàn)代系統(tǒng)編程語言,可用于網(wǎng)絡(luò)應(yīng)用程序和裸機(jī)嵌入式系統(tǒng)。不過Rust的生態(tài)和函數(shù)庫資源等比較有限,而和C之間的互通性可以讓Rust更加便捷的應(yīng)用到現(xiàn)有的軟件中,更快的投入使用。

因此,我們將長期生活在 Rust 和 C 語言的混合環(huán)境中。盡管 Rust 聲稱內(nèi)存安全(這一點已經(jīng)得到證實),但是Rust 和 C 代碼的結(jié)合可能會導(dǎo)致安全的 Rust 生成的程序被不安全的 C 實現(xiàn)所違反的情況。為了確保 Rust 的安全性,有必要在 C 和 Rust 之間找到一個合理的分界點。

盡管如此,事實證明 Rust 是在嵌入式系統(tǒng)中替代 C 和 C++ 的合適候選語言,尤其是在新代碼開發(fā)方面。除內(nèi)存安全外,Rust 語言的其他方面,如強(qiáng)大的類型系統(tǒng)和錯誤處理,也為 Rust 帶來了卓越的可讀性和可維護(hù)性。這提高了防錯能力,從而在不增加開發(fā)階段額外成本的情況下實現(xiàn)更安全的代碼。

英飛凌產(chǎn)品支持Embedded Rust

軟件安全對汽車市場至關(guān)重要,Rust 編程語言內(nèi)置內(nèi)存安全軟件開發(fā)支持,是設(shè)計關(guān)鍵任務(wù)汽車軟件的重要推動力。英飛凌科技公司為在嵌入式領(lǐng)域創(chuàng)建 Rust 生態(tài)系統(tǒng)邁出了第一步。首先推出的是市場領(lǐng)先的 AURIX? TC3xx 和 TRAVEO? T2G 汽車 MCU。TRAVEO? 使用官方 Rust 工具鏈和 Arm Cortex-M 目標(biāo)編譯器,而英飛凌的工具合作伙伴 HighTec EDV-Systeme 則為 AURIX? 開發(fā)了專用 Rust 編譯器。

wKgaomYPj2-AWDVyAAAgOJhWGLE163.png

Figure 4. AURIX? and TRAVEO? T2G

AURIX? TC3xx 和 TRAVEO? T2G 微控制器產(chǎn)品系列為功能安全和網(wǎng)絡(luò)安全提供了廣泛的集成硬件功能。對 Rust 的支持是對這些硬件功能在軟件方面的補(bǔ)充。英飛凌為 AURIX? 和 TRAVEO? 提供了外設(shè)訪問板條 (PAC),以實現(xiàn)對微控制器外設(shè)的本地訪問。

HighTec Rust 編譯器專為 AURIX? TC3xx 和 TC4x 微控制器量身定制,利用先進(jìn)的開源 LLVM 技術(shù),為具有安全、可靠、高性能和快速部署要求的應(yīng)用提供全套 Rust 語言特性,包括內(nèi)存安全、并發(fā)性和互操作性。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 英飛凌
    +關(guān)注

    關(guān)注

    66

    文章

    2134

    瀏覽量

    138258
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16887

    瀏覽量

    349928
  • 嵌入式
    +關(guān)注

    關(guān)注

    5059

    文章

    18974

    瀏覽量

    302063
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    2975

    瀏覽量

    73815
  • Rust
    +關(guān)注

    關(guān)注

    1

    文章

    228

    瀏覽量

    6542
收藏 人收藏

    評論

    相關(guān)推薦

    MCU編程語言開發(fā)環(huán)境介紹

    微控制器單元(Microcontroller Unit,簡稱MCU)是嵌入式系統(tǒng)的核心,廣泛應(yīng)用于各種電子產(chǎn)品中。隨著技術(shù)的發(fā)展,MCU編程語言開發(fā)環(huán)境也在不斷進(jìn)步,以適應(yīng)不同的應(yīng)用
    的頭像 發(fā)表于 11-01 11:51 ?339次閱讀

    佰維存儲規(guī)存儲解決方案亮相2024北京安博會

    近日,第十七屆中國國際社會公共安全產(chǎn)品博覽會在北京舉行,眾多安防領(lǐng)域的知名企業(yè)共聚一堂,共話“智能安防新未來”。為助力智能安防產(chǎn)業(yè)構(gòu)建可靠的數(shù)據(jù)底座,佰維存儲以“存儲覆蓋,安全無盲點”為主題,展示了其在安防監(jiān)控應(yīng)用領(lǐng)域的
    的頭像 發(fā)表于 10-31 14:54 ?228次閱讀

    IAR將推出全面支持矽力杰SA32BXX規(guī)ASIL-B MCU

    IAR嵌入式開發(fā)解決方案已全面支持矽力杰SA32BXX系列車規(guī)ASIL-B MCU以及即將推出的SA32DXX系列ASIL-D MCU,共同
    的頭像 發(fā)表于 06-26 15:08 ?599次閱讀

    Linux 6.10集成RISC-V更新,支持Rust編程語言

    本次補(bǔ)丁升級中,Linux內(nèi)核進(jìn)一步擴(kuò)展了對應(yīng)于RISC-V架構(gòu)的Rust編程語言支持。在此之前,Rust已可應(yīng)用在x86_64、龍芯LoongArch以及ARM64等多種架構(gòu)之上。
    的頭像 發(fā)表于 05-23 17:16 ?878次閱讀

    鴻蒙OpenHarmony開發(fā)板解析:【Rust模塊配置規(guī)則和指導(dǎo)】

    Rust是一門靜態(tài)強(qiáng)類型語言,具有更安全的內(nèi)存管理、更好的運(yùn)行性能、原生支持多線程開發(fā)等優(yōu)勢。Rust官方也使用Cargo工具來專門為
    的頭像 發(fā)表于 05-10 11:32 ?1207次閱讀
    鴻蒙OpenHarmony<b class='flag-5'>開發(fā)</b>板解析:【<b class='flag-5'>Rust</b>模塊配置規(guī)則和指導(dǎo)】

    芯弦半導(dǎo)體高性能規(guī)MCU系列獲AEC-Q100規(guī)級認(rèn)證證書

    近日,芯弦半導(dǎo)體高性能規(guī)MCU系列獲得第三方權(quán)威檢測機(jī)構(gòu)-閎康技術(shù)檢測(上海)有限公司(以下簡稱"閎康科技")頒發(fā)的AEC-Q100規(guī)
    的頭像 發(fā)表于 04-29 09:33 ?726次閱讀
    芯弦半導(dǎo)體高性能<b class='flag-5'>車</b><b class='flag-5'>規(guī)</b><b class='flag-5'>MCU</b>系列獲AEC-Q100<b class='flag-5'>車</b><b class='flag-5'>規(guī)</b>級認(rèn)證證書

    英飛凌擴(kuò)大其在車規(guī)半導(dǎo)體領(lǐng)域的領(lǐng)先市場地位

    來源:Printed Electronics Now 首次成為規(guī) MCU 的全球市場領(lǐng)導(dǎo)者。 Peter Schiefer,英飛凌汽車部門總裁。 (圖源:
    的頭像 發(fā)表于 04-11 18:27 ?714次閱讀
    <b class='flag-5'>英飛凌</b>擴(kuò)大其在車<b class='flag-5'>規(guī)</b>半導(dǎo)體領(lǐng)域的領(lǐng)先市場地位

    IAR全面支持小華芯片,強(qiáng)化工控及汽車MCU生態(tài)圈

    來源:IAR IAR Embedded Workbench for Arm已全面支持小華半導(dǎo)體系列芯片,加速高端工控MCUMCU應(yīng)用的安全開發(fā)
    的頭像 發(fā)表于 03-13 23:02 ?489次閱讀
    IAR全面<b class='flag-5'>支持</b>小華<b class='flag-5'>全</b><b class='flag-5'>系</b>芯片,強(qiáng)化工控及汽車<b class='flag-5'>MCU</b>生態(tài)圈

    [鴻蒙]OpenHarmony4.0的Rust開發(fā)

    背景 Rust 是一門靜態(tài)強(qiáng)類型語言,具有更安全的內(nèi)存管理、更好的運(yùn)行性能、原生支持多線程開發(fā)等優(yōu)勢。Rust 官方也使用 Cargo 工具
    的頭像 發(fā)表于 02-26 17:28 ?782次閱讀
    [鴻蒙]OpenHarmony4.0的<b class='flag-5'>Rust</b><b class='flag-5'>開發(fā)</b>

    鴻蒙OS之Rust開發(fā)

    Rust是一門靜態(tài)強(qiáng)類型語言,具有更安全的內(nèi)存管理、更好的運(yùn)行性能、原生支持多線程開發(fā)等優(yōu)勢。
    的頭像 發(fā)表于 01-29 17:19 ?881次閱讀

    戰(zhàn)略合作 | IAR全面支持云途規(guī)MCU

    與知名國產(chǎn)汽車芯片公司江蘇云途半導(dǎo)體有限公司(以下簡稱“云途半導(dǎo)體”)聯(lián)合宣布,兩家公司達(dá)成戰(zhàn)略合作,最新發(fā)布的IAR Embedded Workbench for Arm 9.50版本已全面支持云途半導(dǎo)體規(guī)級YTM32系列
    發(fā)表于 01-29 17:03 ?451次閱讀
    戰(zhàn)略合作 | IAR全面<b class='flag-5'>支持</b>云途<b class='flag-5'>車</b><b class='flag-5'>規(guī)</b>級<b class='flag-5'>MCU</b>

    Qt聯(lián)手英飛凌,為MCU引入輕量級高性能圖形框架

    英飛凌TRAVEO T2G MCU全面覆蓋上述領(lǐng)域,且其集群系列支持高幀速率和高清的圖形用戶界面。Qt圖形解決方案的直接嵌入則讓英飛凌
    的頭像 發(fā)表于 01-23 14:21 ?734次閱讀

    Git開發(fā)者關(guān)注內(nèi)存安全問題,探討引入Rust語言

    根據(jù)最新披露的郵件討論,Git開發(fā)團(tuán)隊熱議在Git項目中引入Rust的可行性。作為一種開源的分布式代碼版本管理工具,廣泛運(yùn)用于各種開發(fā)項目。盡管現(xiàn)在Git項目主要以C與Python為主要開發(fā)
    的頭像 發(fā)表于 01-15 14:23 ?555次閱讀
    Git<b class='flag-5'>開發(fā)</b>者關(guān)注內(nèi)存安全問題,探討引入<b class='flag-5'>Rust</b><b class='flag-5'>語言</b>

    武漢芯源半導(dǎo)體首款規(guī)MCU,CW32A030C8T7通過AEC-Q100測試考核

    HBM ESD、MM ESD、CDM ESD、Latch up@105℃全面達(dá)到JEDEC最高等級。 全面、高效的開發(fā)配套支持 CW32A030C8T7規(guī)
    發(fā)表于 11-30 15:47

    基于Rust開發(fā)的編程語言

    Move 是一門由 Rust 語言開發(fā)的一門面向資產(chǎn)的編程語言,最早由 Facebook (現(xiàn) Meta )投入大量的人力物力開發(fā),用于 L
    的頭像 發(fā)表于 11-17 12:30 ?640次閱讀