我們正在進(jìn)入一個(gè)世界,在這個(gè)世界中,不同類型的開發(fā)者,包括云開發(fā)者和嵌入式開發(fā)者,在各自的領(lǐng)域中工作,最終將朝著一個(gè)目標(biāo)合并。因此,公司不再將開發(fā)人員及其生產(chǎn)的技術(shù)視為輔助性外部服務(wù),而是其DNA的組成部分。
當(dāng)然,在嵌入式世界中,開發(fā)人員始終是公司的中堅(jiān)力量。但隨著我們距離實(shí)現(xiàn)物聯(lián)網(wǎng)越來越近,云和嵌入式開發(fā)人員必須為未來物聯(lián)網(wǎng)世界融合他們的技術(shù)和最佳實(shí)踐。
Linux發(fā)行版的發(fā)展方向
嵌入式和云開發(fā)者世界的融合讓我們看到了物聯(lián)網(wǎng)設(shè)備Linux發(fā)行版的發(fā)展方向。使用和構(gòu)建嵌入式Linux發(fā)行版的未來將朝著今天云基礎(chǔ)設(shè)施的方向發(fā)展。例如,嵌入式發(fā)行版的實(shí)現(xiàn)需要與云開發(fā)人員一樣簡(jiǎn)單和可移植,因?yàn)樵崎_發(fā)人員可以啟動(dòng)Kubernetes實(shí)例,而無需考慮他們正在運(yùn)行的特定Linux操作系統(tǒng)。
一個(gè)不可變的嵌入式Linux發(fā)行版?
同樣,基礎(chǔ)設(shè)施是不變的,但云開發(fā)者有豐富的選擇,嵌入式Linux發(fā)行版也應(yīng)該如此。嵌入式Linux發(fā)行版必須是不可變的、可移植的、易于定制的,并且可以像云中的容器一樣運(yùn)行任何應(yīng)用程序。
大多數(shù)嵌入式開發(fā)人員在提交新項(xiàng)目時(shí)都會(huì)選擇流行的發(fā)行版,如Ubuntu、Red
Hat的Fedora。因此,您可能要做的第一件事是自動(dòng)使用您最熟悉的發(fā)行版。但是,如果您可以完全取消單一供應(yīng)商的發(fā)行版,并使用任何發(fā)行版所需的功能,該怎么辦?更好的情況是,開發(fā)人員可以共享嵌入式功能,以實(shí)現(xiàn)更緊密的協(xié)作和更高的開發(fā)速度。
嵌入式開發(fā)人員如何查看固件
在詳細(xì)介紹創(chuàng)建不可變Linux發(fā)行版之前,我們需要了解嵌入式開發(fā)人員的特定操作系統(tǒng)和固件要求。
大多數(shù)人看不到發(fā)行版方面的項(xiàng)目
大多數(shù)嵌入式開發(fā)人員通常不會(huì)考慮發(fā)行版。相反,他們通常會(huì)創(chuàng)建一個(gè)專門的或精簡(jiǎn)版本的固件構(gòu)建系統(tǒng),或者像OpenWRT這樣的模塊化發(fā)行版,或者他們可能會(huì)花時(shí)間用buildroot專門化一個(gè)版本。
每個(gè)用例都需要定制
一些開發(fā)人員已經(jīng)為嵌入式設(shè)備試驗(yàn)了類似發(fā)行版的構(gòu)建系統(tǒng)。例如,Linaro已經(jīng)完成了幾個(gè)參考發(fā)行版,使開發(fā)人員能夠在大多數(shù)主板上構(gòu)建操作系統(tǒng)。然而,并不是所有的芯片組都支持它。因此,最終,許多開發(fā)人員為特定的電路板和芯片組構(gòu)建了自己的電路板和芯片組,然后針對(duì)其特定的使用情況對(duì)其進(jìn)行了高度定制。
在不同的產(chǎn)品線中使用相同的電路板
過去,為特定設(shè)備構(gòu)建操作系統(tǒng)很好,因?yàn)榇蠖鄶?shù)設(shè)備都沒有連接,但隨著我們進(jìn)入一個(gè)設(shè)備更像通用基礎(chǔ)設(shè)施的世界,根據(jù)用例定制每個(gè)設(shè)備可能是一個(gè)麻煩的過程。例如,一些公司擁有廣泛的產(chǎn)品線,只有少數(shù)幾個(gè)電路板為所有這些設(shè)備供電,但每個(gè)電路板的功能會(huì)有所不同。
因此,在嵌入式開發(fā)中,問題不僅在于發(fā)行版對(duì)每一塊電路板的最佳配置,還在于如何從軟件的角度盡可能地將每一塊電路板模塊化,以便它可以應(yīng)用于產(chǎn)品線的任何地方。