利用Yocto創(chuàng)建獨(dú)有的嵌入式 Linux 應(yīng)用
作為靈活多變且經(jīng)濟(jì)高效的解決方案,嵌入式 Linux展現(xiàn)了巨大的價(jià)值,并廣泛應(yīng)用于消費(fèi)電子設(shè)備、網(wǎng)絡(luò)設(shè)備、零售點(diǎn)和行業(yè)應(yīng)用程序。然而,廣泛的應(yīng)用也意味著多樣化的業(yè)務(wù)需求,嵌入式解決方案開(kāi)發(fā)人員必須構(gòu)建定制Linux 版本來(lái)滿足其特定需求。
這導(dǎo)致了嵌入式Linux 市場(chǎng)的亂象,一直以來(lái),開(kāi)發(fā)人員不得不向各家芯片制造廠商尋求主板支持包(BSP)和工具。而且這些部件往往是基于不同制式開(kāi)發(fā)的,這無(wú)異于雪上加霜。雖然市面上有數(shù)百種可用的嵌入式Linux 發(fā)行版,但每個(gè)版本都是高度定制的,這導(dǎo)致了大量的重復(fù)工作,很多開(kāi)發(fā)人員創(chuàng)建了大同小異的Linux 版本,再基于其開(kāi)發(fā)自己的增值特性和功能。
自由修改Linux 來(lái)創(chuàng)建定制版本是一把雙刃劍,一方面證明了開(kāi)源軟件的巨大價(jià)值,另一方面也是導(dǎo)致復(fù)雜性的根源。創(chuàng)建定制版本在開(kāi)發(fā)、集成、測(cè)試和驗(yàn)證方面要承擔(dān)巨大的開(kāi)銷。由于大多數(shù)解決方案開(kāi)發(fā)人員所創(chuàng)造的增值效應(yīng)并不會(huì)很快顯現(xiàn),因而這些工作的“性價(jià)比”往往并不高。BSP 集成通常也比較復(fù)雜和困難,這也顯著增加了項(xiàng)目的成本和風(fēng)險(xiǎn)。
鑒于此,開(kāi)放源代碼運(yùn)動(dòng)的精英們意識(shí)到了統(tǒng)一化、一致化對(duì)于Linux性命攸關(guān),他們聚集起來(lái),啟動(dòng)了Yocto Project計(jì)劃,開(kāi)始為開(kāi)源社區(qū)培植變革的火種。
Yocto Project通過(guò)一個(gè)開(kāi)源協(xié)作項(xiàng)目解決了這些難題,它提供了一整套模板、工具和方法以簡(jiǎn)化定制Linux 開(kāi)發(fā)。這個(gè)開(kāi)源項(xiàng)目得到了來(lái)自商業(yè)和開(kāi)源生態(tài)系統(tǒng)的廣泛參與和支持,包括各大芯片廠商、主流操作系統(tǒng)供應(yīng)商和獨(dú)立顧問(wèn)。
Yocto項(xiàng)目鼓勵(lì)跨各種應(yīng)用程序和設(shè)備類型的創(chuàng)新,支持多種硬件架構(gòu),包括x86(32 位和 64 位)、arm、PPC 和MIPS。隨著硬件BSP 支持的增加和BSP 格式的標(biāo)準(zhǔn)化,這個(gè)項(xiàng)目創(chuàng)造了巨大的價(jià)值。
作為 Yocto Project 的創(chuàng)始成員之一,英特爾在 Linux Foundation 的協(xié)調(diào)下,與各個(gè)社區(qū)共同致力于為嵌入式開(kāi)發(fā)人員創(chuàng)建一個(gè)共享的開(kāi)發(fā)環(huán)境,并提供了模板、工具和最佳實(shí)踐,以簡(jiǎn)化定制的嵌入式 L i n ux 應(yīng)用程序的開(kāi)發(fā)。通過(guò)提供的關(guān)鍵技術(shù),Yocto Project 與英特爾架構(gòu)之間實(shí)現(xiàn)完美的協(xié)同增效。
Yocto Project提供全面的開(kāi)發(fā)解決方案
Yocto Project 為嵌入式開(kāi)發(fā)人員提供資源, 項(xiàng)目采用了OpenEmbedded-Core 作為其上游發(fā)布版本。項(xiàng)目擁有一個(gè)積極的社區(qū),不斷完善、測(cè)試和更新 Yocto Project 內(nèi)核和其他組件。
項(xiàng)目站點(diǎn)提供了全面的文檔, 構(gòu)建系統(tǒng)( 基于OpenEmbedded 架構(gòu))、交叉構(gòu)建工具、通用的打包系統(tǒng)和一個(gè)應(yīng)用程序開(kāi)發(fā)人員 SDK。Yocto Project 提供的核心組件包括:
x-Architecture。Yocto Project 擴(kuò)展了構(gòu)建系統(tǒng)的功能,為 Yocto Project 內(nèi)核和三個(gè)構(gòu)建配置文件(最小構(gòu)建、sato 構(gòu)建和 LSB 構(gòu)建)提供了最新的經(jīng)過(guò)全面測(cè)試的元數(shù)據(jù)。
BSP。項(xiàng)目包含大量經(jīng)過(guò)測(cè)試的 BSP,大大提高了在硬件和架構(gòu)之間的可移植性,此外還提供了源代碼方案以及生成的 Yocto Project 參考運(yùn)行時(shí)映像。
SDK。Yocto Project 工具可以利用 Eclipse和 Anjuta 插件自動(dòng)創(chuàng)建一個(gè) SDK 或應(yīng)用程序開(kāi)發(fā)人員工具包,SDK 可用于開(kāi)發(fā)應(yīng)用程序, 適用于和特定的定制運(yùn)行時(shí)映像一起使用。
使用Yocto Project帶來(lái)的優(yōu)勢(shì)
Yocto Project 為解決嵌入式Linux 開(kāi)發(fā)亂象邁出了一大步。芯片、操作系統(tǒng)和設(shè)備廠商之間的協(xié)作和戰(zhàn)略規(guī)劃有助于實(shí)現(xiàn)廣泛而一致的行業(yè)支持。因此,操作系統(tǒng)廠商可以基于 Yocto Project 內(nèi)核來(lái)開(kāi)發(fā)商業(yè)操作系統(tǒng)和其他產(chǎn)品,而且芯片廠商也可以提供硬件 BSP。
總之,該項(xiàng)目為整個(gè)生態(tài)系統(tǒng)提供了以下獲益:
健壯的構(gòu)建系統(tǒng)。Yocto Project 支持從其他常用構(gòu)建系統(tǒng)輕松遷移到 Yocto Project 的經(jīng)過(guò)事實(shí)驗(yàn)證的環(huán)境,而且新的軟件版本更新也十分容易。
靈活的定制能力。開(kāi)發(fā)人員可以自由選擇資源的使用,或者完善特定的組件(包括這些組件的特定版本)。
可簡(jiǎn)單地向商業(yè)操作系統(tǒng)遷移。Yocto Project 的設(shè)計(jì)允許用戶使用自主開(kāi)發(fā)的操作系統(tǒng)或商業(yè)操作系統(tǒng),在遷移時(shí)不會(huì)丟失優(yōu)化或功能。此外,商業(yè)操作系統(tǒng)也可以使用 Yocto Project 作為上游資源,從而確保最大化代碼重用。
綜上所述,Yocto Project賦予開(kāi)發(fā)人員一個(gè)極高的起點(diǎn),幫助他們避免重復(fù)工作以及不必要的維護(hù)。事實(shí)上,Yocto Project是全球最大的開(kāi)源項(xiàng)目之一,以此為基礎(chǔ)而開(kāi)發(fā)的通用創(chuàng)建系統(tǒng),可幫助開(kāi)發(fā)人員避免從零開(kāi)始,轉(zhuǎn)而把時(shí)間和資源集中于開(kāi)發(fā)差異化Linux設(shè)備,從而實(shí)現(xiàn)投資回報(bào)最大化。