www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]了解 Yocto、Buildroot、 OpenWRT,和改造過的桌面發(fā)行版以確定哪種方式最適合你的項目。

Linux 被部署到比 Linus Torvalds 在他的宿舍里開發(fā)時所預(yù)期的更廣泛的設(shè)備。令人震驚的支持了各種芯片,使得Linux 可以應(yīng)用于大大小小的設(shè)備上:從 IBM 的巨型機(jī)到不如其連接的端口大的微型設(shè)備,以及各種大小的設(shè)備。它被用于大型企業(yè)數(shù)據(jù)中心、互聯(lián)網(wǎng)基礎(chǔ)設(shè)施設(shè)備和個人的開發(fā)系統(tǒng)。它還為消費(fèi)類電子產(chǎn)品、移動電話和許多物聯(lián)網(wǎng)設(shè)備提供了動力。

在為桌面和企業(yè)級設(shè)備構(gòu)建 Linux 軟件時,開發(fā)者通常在他們的構(gòu)建機(jī)器上使用桌面發(fā)行版,如 Ubuntu 以便盡可能與被部署的機(jī)器相似。如 VirtualBox 和 Docker 這樣的工具使得開發(fā)、測試和生產(chǎn)環(huán)境更好的保持了一致。

什么是嵌入式系統(tǒng)?

維基百科將嵌入式系統(tǒng)定義為:“在更大的機(jī)械或電氣系統(tǒng)中具有專用功能的計算機(jī)系統(tǒng),往往伴隨著實時計算限制。”

我覺得可以很簡單地說,嵌入式系統(tǒng)是大多數(shù)人不認(rèn)為是計算機(jī)的計算機(jī)。它的主要作用是作為某種設(shè)備,而不被視為通用計算平臺。

嵌入式系統(tǒng)編程的開發(fā)環(huán)境通常與測試和生產(chǎn)環(huán)境大不相同。它們可能會使用不同的芯片架構(gòu)、軟件堆棧甚至操作系統(tǒng)。開發(fā)工作流程對于嵌入式開發(fā)人員與桌面和 Web 開發(fā)人員來說是非常不同的。通常,其構(gòu)建后的輸出將包含目標(biāo)設(shè)備的整個軟件映像,包括內(nèi)核、設(shè)備驅(qū)動程序、庫和應(yīng)用程序軟件(有時也包括引導(dǎo)加載程序)。

在本文中,我將對構(gòu)建嵌入式 Linux 系統(tǒng)的四種常用方式進(jìn)行縱覽。我將介紹一下每種產(chǎn)品的工作原理,并提供足夠的信息來幫助讀者確定使用哪種工具進(jìn)行設(shè)計。我不會教你如何使用它們中的任何一個;一旦縮小了選擇范圍,就有大量深入的在線學(xué)習(xí)資源。沒有任何選擇適用于所有情況,我希望提供足夠的細(xì)節(jié)來指導(dǎo)您的決定。

Yocto

Yocto 項目 定義為“一個開源協(xié)作項目,提供模板、工具和方法,幫助您為嵌入式產(chǎn)品創(chuàng)建定制的基于 Linux 的系統(tǒng),而不管硬件架構(gòu)如何。”它是用于創(chuàng)建定制的 Linux 運(yùn)行時映像的配方、配置值和依賴關(guān)系的集合,可根據(jù)您的特定需求進(jìn)行定制。

完全公開:我在嵌入式 Linux 中的大部分工作都集中在 Yocto 項目上,而且我對這個系統(tǒng)的認(rèn)識和偏見可能很明顯。

Yocto 使用 Openembedded 作為其構(gòu)建系統(tǒng)。從技術(shù)上講,這兩個是獨(dú)立的項目;然而,在實踐中,用戶不需要了解區(qū)別,項目名稱經(jīng)??梢曰Q使用。

Yocto 項目的輸出大致由三部分組成:

目標(biāo)運(yùn)行時二進(jìn)制文件:這些包括引導(dǎo)加載程序、內(nèi)核、內(nèi)核模塊、根文件系統(tǒng)映像。以及將 Linux 部署到目標(biāo)平臺所需的任何其他輔助文件。

包流:這是可以安裝在目標(biāo)上的軟件包集合。您可以根據(jù)需要選擇軟件包格式(例如,deb、rpm、ipk)。其中一些可能預(yù)先安裝在目標(biāo)運(yùn)行時二進(jìn)制文件中,但可以構(gòu)建用于安裝到已部署系統(tǒng)的軟件包。

目標(biāo) SDK:這些是安裝在目標(biāo)平臺上的軟件的庫和頭文件的集合。應(yīng)用程序開發(fā)人員在構(gòu)建代碼時使用它們,以確保它們與適當(dāng)?shù)膸戽溄?/p>

優(yōu)點(diǎn)

Yocto 項目在行業(yè)中得到廣泛應(yīng)用,并得到許多有影響力的公司的支持。此外,它還擁有一個龐大且充滿活力的開發(fā)人員社區(qū)和生態(tài)系統(tǒng)。開源愛好者和企業(yè)贊助商的結(jié)合的方式有助于推動 Yocto 項目。

獲得 Yocto 的支持有很多選擇。如果您想自己動手,有書籍和其他培訓(xùn)材料。如果您想獲得專業(yè)知識,有許多有 Yocto 經(jīng)驗的工程師。而且許多商業(yè)組織可以為您的設(shè)計提供基于 Yocto 的 Turnkey 產(chǎn)品或基于服務(wù)的實施和定制。

Yocto 項目很容易通過 層 進(jìn)行擴(kuò)展,層可以獨(dú)立發(fā)布以添加額外的功能,或針對項目發(fā)布時尚不可用的平臺,或用于保存系統(tǒng)特有定制功能。層可以添加到你的配置中,以添加未特別包含在市面上版本中的獨(dú)特功能;例如,“meta-browser” 層包含 Web 瀏覽器的清單,可以輕松為您的系統(tǒng)進(jìn)行構(gòu)建。因為它們是獨(dú)立維護(hù)的,所以層可以按不同的時間發(fā)布(根據(jù)層的開發(fā)速度),而不是跟著標(biāo)準(zhǔn)的 Yocto 版本發(fā)布。

Yocto 可以說是本文討論的任何方式中最廣泛的設(shè)備支持。由于許多半導(dǎo)體和電路板制造商的支持,Yocto 很可能能夠支持您選擇的任何目標(biāo)平臺。主版本 Yocto 分支僅支持少數(shù)幾塊主板(以便達(dá)成合理的測試和發(fā)布周期),但是,標(biāo)準(zhǔn)工作模式是使用外部主板支持層。

最后,Yocto 非常靈活和可定制。您的特定應(yīng)用程序的自定義可以存儲在一個層進(jìn)行封裝和隔離,通常將要素層特有的自定義項存儲為層本身的一部分,這可以將相同的設(shè)置同時應(yīng)用于多個系統(tǒng)配置。Yocto 還提供了一個定義良好的層優(yōu)先和覆蓋功能。這使您可以定義層應(yīng)用和搜索元數(shù)據(jù)的順序。它還使您可以覆蓋具有更高優(yōu)先級的層的設(shè)置;例如,現(xiàn)有清單的許多自定義功能都將保留。

缺點(diǎn)

Yocto 項目最大的缺點(diǎn)是學(xué)習(xí)曲線陡峭。學(xué)習(xí)該系統(tǒng)并真正理解系統(tǒng)需要花費(fèi)大量的時間和精力。 根據(jù)您的需求,這可能對您的應(yīng)用程序不重要的技術(shù)和能力投入太大。 在這種情況下,與一家商業(yè)供應(yīng)商合作可能是一個不錯的選擇。

Yocto 項目的開發(fā)時間和資源相當(dāng)高。 需要構(gòu)建的包(包括工具鏈,內(nèi)核和所有目標(biāo)運(yùn)行時組件)的數(shù)量相當(dāng)不少。 Yocto 開發(fā)人員的開發(fā)工作站往往是大型系統(tǒng)。 不建議使用小型筆記本電腦。 這可以通過使用許多提供商提供的基于云的構(gòu)建服務(wù)器來緩解。 另外,Yocto 有一個內(nèi)置的緩存機(jī)制,當(dāng)它確定用于構(gòu)建特定包的參數(shù)沒有改變時,它允許它重新使用先前構(gòu)建的組件。

建議

為您的下一個嵌入式 Linux 設(shè)計使用 Yocto 項目是一個強(qiáng)有力的選擇。 在這里介紹的選項中,無論您的目標(biāo)用例如何,它都是最廣泛適用的。 廣泛的行業(yè)支持,積極的社區(qū)和廣泛的平臺支持使其成為必須設(shè)計師的不錯選擇。

Buildroot

Buildroot 項目定義為“通過交叉編譯生成嵌入式 Linux 系統(tǒng)的簡單、高效且易于使用的工具。”它與 Yocto 項目具有許多相同的目標(biāo),但它注重簡單性和簡約性。一般來說,Buildroot 會禁用所有軟件包的所有可選編譯時設(shè)置(有一些值得注意的例外),從而生成盡可能小的系統(tǒng)。系統(tǒng)設(shè)計人員需要啟用適用于給定設(shè)備的設(shè)置。

Buildroot 從源代碼構(gòu)建所有組件,但不支持按目標(biāo)包管理。因此,它有時稱為固件生成器,因為鏡像在構(gòu)建時大部分是固定的。應(yīng)用程序可以更新目標(biāo)文件系統(tǒng),但是沒有機(jī)制將新軟件包安裝到正在運(yùn)行的系統(tǒng)中。

Buildroot 輸出主要由三部分組成:

將 Linux 部署到目標(biāo)平臺所需的根文件系統(tǒng)映像和任何其他輔助文件

適用于目標(biāo)硬件的內(nèi)核,引導(dǎo)加載程序和內(nèi)核模塊

用于構(gòu)建所有目標(biāo)二進(jìn)制文件的工具鏈。

優(yōu)點(diǎn)

Buildroot 對簡單性的關(guān)注意味著,一般來說,它比 Yocto 更容易學(xué)習(xí)。核心構(gòu)建系統(tǒng)用 Make 編寫,并且足夠短以便開發(fā)人員了解整個系統(tǒng),同時可擴(kuò)展到足以滿足嵌入式 Linux 開發(fā)人員的需求。 Buildroot 核心通常只處理常見用例,但它可以通過腳本進(jìn)行擴(kuò)展。

Buildroot 系統(tǒng)使用普通的 Makefile 和 Kconfig 語言來進(jìn)行配置。 Kconfig 由 Linux 內(nèi)核社區(qū)開發(fā),廣泛用于開源項目,使得許多開發(fā)人員都熟悉它。

由于禁用所有可選的構(gòu)建時設(shè)置的設(shè)計目標(biāo),Buildroot 通常會使用開箱即用的配置生成盡可能最小的鏡像。一般來說,構(gòu)建時間和構(gòu)建主機(jī)資源的規(guī)模將比 Yocto 項目的規(guī)模更小。

缺點(diǎn)

關(guān)注簡單性和最小化啟用的構(gòu)建方式意味著您可能需要執(zhí)行大量的自定義來為應(yīng)用程序配置 Buildroot 構(gòu)建。此外,所有配置選項都存儲在單個文件中,這意味著如果您有多個硬件平臺,則需要為每個平臺進(jìn)行每個定制更改。

對系統(tǒng)配置文件的任何更改都需要全部重新構(gòu)建所有軟件包。與 Yocto 相比,這個問題通過最小的鏡像大小和構(gòu)建時間得到了一定的解決,但在你調(diào)整配置時可能會導(dǎo)致構(gòu)建時間過長。

中間軟件包狀態(tài)緩存默認(rèn)情況下未啟用,并且不像 Yocto 實施那么徹底。這意味著,雖然第一次構(gòu)建可能比等效的 Yocto 構(gòu)建短,但后續(xù)構(gòu)建可能需要重建許多組件。

建議

對于大多數(shù)應(yīng)用程序,使用 Buildroot 進(jìn)行下一個嵌入式 Linux 設(shè)計是一個不錯的選擇。如果您的設(shè)計需要多種硬件類型或其他差異,但由于同步多個配置的復(fù)雜性,您可能需要重新考慮,但對于由單一設(shè)置組成的系統(tǒng),Buildroot 可能適合您。

OpenWRT/LEDE

OpenWRT 項目開始為消費(fèi)類路由器開發(fā)定制固件。您當(dāng)?shù)亓闶凵烫峁┑脑S多低成本路由器都可以運(yùn)行 Linux 系統(tǒng),但可能無法開箱即用。這些路由器的制造商可能無法提供頻繁的更新來解決新的威脅,即使他們這樣做,安裝更新鏡像的機(jī)制也很困難且容易出錯。 OpenWRT 項目為許多已被其制造商放棄的設(shè)備生成更新的固件鏡像,讓這些設(shè)備煥發(fā)新生。

OpenWRT 項目的主要交付物是可用于大量商業(yè)設(shè)備的二進(jìn)制鏡像。它有網(wǎng)絡(luò)可訪問的軟件包存儲庫,允許設(shè)備最終用戶將新軟件添加到他們的系統(tǒng)中。 OpenWRT 構(gòu)建系統(tǒng)是一個通用構(gòu)建系統(tǒng),它允許開發(fā)人員創(chuàng)建自定義版本以滿足他們自己的需求并添加新軟件包,但其主要重點(diǎn)是目標(biāo)二進(jìn)制文件。

優(yōu)點(diǎn)

如果您正在為商業(yè)設(shè)備尋找替代固件,則 OpenWRT 應(yīng)位于您的選項列表中。它的維護(hù)良好,可以保護(hù)您免受制造商固件無法解決的問題。您也可以添加額外的功能,使您的設(shè)備更有用。

如果您的嵌入式設(shè)計專注于網(wǎng)絡(luò),則 OpenWRT 是一個不錯的選擇。網(wǎng)絡(luò)應(yīng)用程序是 OpenWRT 的主要用例,您可能會發(fā)現(xiàn)許多可用的軟件包。

缺點(diǎn)

OpenWRT 對您的設(shè)計限制很多(與 Yocto 和 Buildroot 相比)。如果這些決定不符合您的設(shè)計目標(biāo),則可能需要進(jìn)行大量的修改。

在部署的設(shè)備中允許基于軟件包的更新是很難管理的。按照其定義,這會導(dǎo)致與您的 QA 團(tuán)隊測試的軟件負(fù)載不同。此外,很難保證大多數(shù)軟件包管理器的原子安裝,以及錯誤的電源循環(huán)可能會使您的設(shè)備處于不可預(yù)知的狀態(tài)。

建議

OpenWRT 是愛好者項目或商用硬件再利用的不錯選擇。它也是網(wǎng)絡(luò)應(yīng)用程序的不錯選擇。如果您需要從默認(rèn)設(shè)置進(jìn)行大量定制,您可能更喜歡 Buildroot 或 Yocto。

桌面發(fā)行版

設(shè)計嵌入式 Linux 系統(tǒng)的一種常見方法是從桌面發(fā)行版開始,例如 Debian 或 Red Hat,并刪除不需要的組件,直到安裝的鏡像符合目標(biāo)設(shè)備的占用空間。這是 Raspberry Pi 平臺流行的 Raspbian發(fā)行版的方法。

優(yōu)點(diǎn)

這種方法的主要優(yōu)點(diǎn)是熟悉。通常,嵌入式 Linux 開發(fā)人員也是桌面 Linux 用戶,并且精通他們的選擇發(fā)行版。在目標(biāo)上使用類似的環(huán)境可能會讓開發(fā)人員更快地入門。根據(jù)所選的分布,可以使用 apt 和 yum 等標(biāo)準(zhǔn)封裝工具安裝許多其他工具。

可以將顯示器和鍵盤連接到目標(biāo)設(shè)備,并直接在那里進(jìn)行所有的開發(fā)。對于不熟悉嵌入式空間的開發(fā)人員來說,這可能是一個更為熟悉的環(huán)境,無需配置和使用棘手的跨開發(fā)平臺設(shè)置。

大多數(shù)桌面發(fā)行版可用的軟件包數(shù)量通常大于前面討論的嵌入式特定的構(gòu)建器可用軟件包數(shù)量。由于較大的用戶群和更廣泛的用例,您可能能夠找到您的應(yīng)用程序所需的所有運(yùn)行時包,這些包已經(jīng)構(gòu)建并可供使用。

缺點(diǎn)

將目標(biāo)平臺作為您的主要開發(fā)環(huán)境可能會很慢。運(yùn)行編譯器工具是一項資源密集型操作,根據(jù)您構(gòu)建的代碼的多少,這可能會嚴(yán)重妨礙您的性能。

除了一些例外情況,桌面發(fā)行版的設(shè)計并不適合低資源系統(tǒng),并且可能難以充分裁剪目標(biāo)映像。同樣,桌面環(huán)境中的預(yù)設(shè)工作流程對于大多數(shù)嵌入式設(shè)計來說都不理想。以這種方式獲得可再現(xiàn)的環(huán)境很困難。手動添加和刪除軟件包很容易出錯。這可以使用特定于發(fā)行版的工具進(jìn)行腳本化,例如基于 Debian 系統(tǒng)的 debootstrap。為了進(jìn)一步提高可再現(xiàn)性,您可以使用配置管理工具,如 CFEngine(我的雇主 Mender.io 完整披露了 這一工具)。但是,您仍然受發(fā)行版提供商的支配,他們將更新軟件包以滿足他們的需求,而不是您的需求。

建議

對于您打算推向市場的產(chǎn)品,請謹(jǐn)慎使用此方法。這對于愛好者應(yīng)用程序來說是一個很好的模型;但是,對于需要支持的產(chǎn)品,這種方法很可能會遇到麻煩。雖然您可能能夠獲得更快的起步,但從長遠(yuǎn)來看,您可能會花費(fèi)您的時間和精力。

其他考慮

這個討論集中在構(gòu)建系統(tǒng)的功能上,但通常有非功能性需求可能會影響您的決定。如果您已經(jīng)選擇了片上系統(tǒng)(SoC)或電路板,則您的選擇很可能由供應(yīng)商決定。如果您的供應(yīng)商為特定系統(tǒng)提供板級支持包(BSP),使用它通常會節(jié)省相當(dāng)多的時間,但請研究 BSP 的質(zhì)量以避免在開發(fā)周期后期發(fā)生問題。

如果您的預(yù)算允許,您可能需要考慮為目標(biāo)操作系統(tǒng)使用商業(yè)供應(yīng)商。有些公司會為這里討論的許多選項提供經(jīng)過驗證和支持的配置,除非您擁有嵌入式 Linux 構(gòu)建系統(tǒng)方面的專業(yè)知識,否則這是一個不錯的選擇,可以讓您專注于核心能力。

作為替代,您可以考慮為您的開發(fā)人員進(jìn)行商業(yè)培訓(xùn)。這可能比商業(yè)操作系統(tǒng)供應(yīng)商便宜,并且可以讓你更加自給自足。這是快速找到您選擇的構(gòu)建系統(tǒng)基礎(chǔ)知識的學(xué)習(xí)曲線。

最后,您可能已經(jīng)有一些開發(fā)人員擁有一個或多個系統(tǒng)的經(jīng)驗。如果你的工程師有傾向性,當(dāng)你做出決定時,肯定值得考慮。

總結(jié)

構(gòu)建嵌入式 Linux 系統(tǒng)有多種選擇,每種都有優(yōu)點(diǎn)和缺點(diǎn)。將這部分設(shè)計放在優(yōu)先位置至關(guān)重要,因為在以后的過程中切換系統(tǒng)的成本非常高。除了這些選擇之外,還有新的系統(tǒng)在開發(fā)中。希望這次討論能夠為評估新的系統(tǒng)(以及這里提到的系統(tǒng))提供一些背景,并幫助您為下一個項目做出堅實的決定。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉