1. gzyueqian
      13352868059

      嵌入式Rust:學(xué)習(xí)工具鏈

      更新時(shí)間: 2024-08-06 10:43:08來源: 粵嵌教育瀏覽量:1685


      了解Rust工具鏈以及作為嵌入式軟件開發(fā)人員在嵌入式目標(biāo)上使用Rust需要什么是很重要的。在本中,我們將探索Rust的工具鏈和生態(tài)系統(tǒng),以幫助了解它如何提高生產(chǎn)力、確保安全和簡(jiǎn)化開發(fā)過程。

       

      Rust工具鏈簡(jiǎn)介

      Rust工具鏈包含各種各樣的工具,可用于構(gòu)建、測(cè)試、格式化等等。然而,在工具鏈的根部只有幾個(gè)工具,可以在下圖中進(jìn)行總結(jié):



      1Rust工具鏈概述

       

      Rustup

      rustup.rs工具是一個(gè)用于管理Rust工具鏈和相關(guān)組件的命令行工具。它提供了一種簡(jiǎn)單的方法來安裝、更新和管理Rust編程語言及其工具的多個(gè)版本。如果你想安裝Rust,你可以從訪問Rust-lang.org網(wǎng)站開始,并按照操作系統(tǒng)的說明進(jìn)行操作。

       

      Rustc

      作為標(biāo)準(zhǔn)安裝的一部分安裝的另一個(gè)工具是rustcrustcRust編程語言的官方編譯器。它把你的Rust源代碼編譯成可執(zhí)行的二進(jìn)制文件。例如,可以使用以下命令編譯一個(gè)main.rs文件:

      rustc main.rs

      或者,由于我們對(duì)嵌入式軟件感興趣,可以使用如下命令:

      rustc–target = thumb v7m-none-eabi main . RS

      結(jié)果是代碼被編譯并生成一個(gè)二進(jìn)制文件,該文件可以直接在PC上執(zhí)行,也可以閃存到的嵌入式目標(biāo)上。

       

      Cargo

      但是在很多情況下,我們并不直接使用rustc。相反,我們使用Rust工具CargoCargoRust構(gòu)建工具和包管理器。它內(nèi)置了多種構(gòu)建類型,例如:

      構(gòu)建編譯的項(xiàng)目

      運(yùn)行——執(zhí)行項(xiàng)目(并在需要時(shí)構(gòu)建)

      測(cè)試運(yùn)行的單元測(cè)試

      文檔生成的文檔

      publish——的板條箱發(fā)布到crate.io,它托管所有可用于Rust的庫。

      CargoCargo.toml配置文件中查找關(guān)于項(xiàng)目依賴項(xiàng)的信息。例如,如果正在為Arm Cortex-M處理器編寫一個(gè)應(yīng)用程序,可能會(huì)有如下所示的依賴關(guān)系:



      這些依賴項(xiàng)中的每一個(gè)都是一個(gè)庫箱。一般來說,一個(gè)crate是一個(gè)編譯單元,充當(dāng)Rust代碼的基本構(gòu)建塊。它可以是一個(gè)庫或二進(jìn)制箱。庫箱通常有一個(gè)lib.rs文件,而二進(jìn)制箱有一個(gè)main.rs文件。這有時(shí)會(huì)令人困惑,因?yàn)閱蝹€(gè)文件(*.rs)被認(rèn)為是板條箱,即使發(fā)布的多個(gè)文件可以組成一個(gè)板條箱。

      如果創(chuàng)建了一個(gè)有用的crate可以將它們發(fā)布到crate.io,供其他開發(fā)人員使用。他們使用Cargo.toml文件來指定他們希望在應(yīng)用程序中使用的板條箱名稱和版本。

       

      嵌入Rust的附加工具

      Rust附加的基本工具非常適合開發(fā)應(yīng)用程序,但如果想編寫嵌入式Rust應(yīng)用程序,它們并不是需要的全部。還需要包括一些額外的內(nèi)容,如下所示:

      l Cargo-Binutils

      l LLVM工具

      l Cargo-generate

      l GNU Arm交叉編譯工具

      交叉編譯的Rust目標(biāo)

       

      Cargo BinutilsCargo子命令的集合,它使Rust工具鏈附帶的LLVM工具易于使用。這些工具包括objdumpnmsizeLLVM版本,用于檢查二進(jìn)制文件。這些工具對(duì)于理解嵌入式應(yīng)用程序的大小和檢查交叉編譯器生成的指令非常有用。

       

      LLVM工具是模塊化和可重用的編譯器和工具鏈技術(shù)的集合。

       

      Cargo-Generate是一個(gè)開發(fā)工具,通過利用預(yù)先存在的git存儲(chǔ)庫作為模板,幫助快速啟動(dòng)并運(yùn)行一個(gè)新的Rust項(xiàng)目。有一個(gè)針對(duì)Cortex-M處理器的快速入門示例,通常用于啟動(dòng)和運(yùn)行嵌入式項(xiàng)目。

       

      GNU Arm工具鏈?zhǔn)且粋€(gè)用于ARM Cortex-M處理器的交叉編譯工具鏈。它包括GCC編譯器和其他必要的工具,為基于ARM的微控制器編譯代碼。如果是嵌入式開發(fā)人員,可能已經(jīng)對(duì)這些很熟悉了。

       

      用于交叉編譯的Rust目標(biāo)指的是特定的編譯配置,其允許Rust代碼被編譯用于不同的架構(gòu)和平臺(tái),而不是代碼被編譯的平臺(tái)。例如,如果我想針對(duì)Cortex-M33處理器進(jìn)行編譯,我可以使用以下命令將目標(biāo)添加到工具鏈中:

       

      rustup target add thumbv8m.main-none-eabihf

       

      有了這些工具,你就能像使用CC++一樣開發(fā)嵌入式Rust代碼。

       

      結(jié)論

      Rust工具鏈和生態(tài)系統(tǒng)是獨(dú)一無二的,因?yàn)樗鼈儗㈤_發(fā)Rust應(yīng)用程序所需的一切打包在一起。社區(qū)開發(fā)包和工具,而在C/C++中,你依賴供應(yīng)商或公司為你提供工具。例如,如果想要測(cè)試的代碼,必須找到一個(gè)測(cè)試工具。每個(gè)嵌入式團(tuán)隊(duì)都有自己的偏好,使用不同的。對(duì)于Rust可以使用Rust內(nèi)置的貨物測(cè)試工具。


      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 色鬼国产激情久久 | 亚洲精品国产综合久久一线 | 热久久美女精品天天吊色 | 亚洲国产韩国欧美在线 | 日本午夜天堂在线视频 | 亚洲综合久久一区二区 |