開源硬件概況
相對于源代碼開放的開源軟件,開源硬件似乎今人費(fèi)解。因?yàn)閭鹘y(tǒng)的硬件體系中沒有數(shù)字化代碼,何來開源?因此,開源硬件的開源內(nèi)涵主要體現(xiàn)在開源文化中的開放、低成本、可二次開發(fā)與可任意裁剪上。開源硬件的開放不僅是電路系統(tǒng)的開放,還在于對軟件工程師的開放,因此,開源硬件誕生后,吸引了眾多軟件工程師進(jìn)入嵌入式應(yīng)用領(lǐng)域。
可二次開發(fā)的開源硬件,是一個(gè)基于軟件開發(fā)的軟硬件綜合開發(fā)平臺;基于軟件的開發(fā)模式有利于軟件工程師介入嵌入式產(chǎn)品開發(fā);開源硬件可任意裁剪、任意選擇的特點(diǎn),為開發(fā)眾多個(gè)性化嵌入式產(chǎn)品提供了低成本、低門檻、靈活、便捷的手段。
“開源硬件”:描述如今基于嵌入式產(chǎn)品平臺、基于硬件描述語言、以軟件技術(shù)為主的智能硬件的開發(fā)模式。
當(dāng)今的開源硬件有以下幾類:
一類是由用戶板進(jìn)化出的可二次開發(fā)的板級開源硬件(早期以樹莓派為代表);
另一類是開源硬件描述語言(以Chisel為代表源代碼開放的開源硬件);
還有一類是開源操作系統(tǒng)中的開源硬件數(shù)據(jù)結(jié)構(gòu)(如ARM Device Tree)。
開源硬件描述語言:
硬件描述語言HDL是一種用形式化方法描述數(shù)字電路和系統(tǒng)的語言。
硬件描述語言發(fā)展至今已有20多年的歷史,它將硬件設(shè)計(jì)軟件化,通過EDA工具(電子設(shè)計(jì)自動(dòng)化)進(jìn)行仿真驗(yàn)證,最終通過微電子的ASIC手段或半定制的FPGA來實(shí)現(xiàn)一個(gè)真實(shí)的硬件系統(tǒng)。這是一種非主流電子工程師的非傳統(tǒng)硬件系統(tǒng)設(shè)計(jì)方法,成功地應(yīng)用于硬件設(shè)計(jì)的各個(gè)階段,如建模、仿真、驗(yàn)證與數(shù)字化模塊的綜合等。
隨著系統(tǒng)級FPGA以及系統(tǒng)芯片的出現(xiàn),軟硬件協(xié)調(diào)設(shè)計(jì)和系統(tǒng)設(shè)計(jì)變得越來越重要。傳統(tǒng)意義上的硬件設(shè)計(jì)越來越傾向于系統(tǒng)設(shè)計(jì)和軟件設(shè)計(jì)結(jié)合。硬件描述語言為適應(yīng)新的情況,迅速發(fā)展,出現(xiàn)了很多新的硬件描述語言。硬件描述語言從一開始就是一種用軟件工具、在軟件方法基礎(chǔ)上實(shí)現(xiàn)的電路系統(tǒng)設(shè)計(jì)方法。
Chisel是加州大學(xué)伯克利分校研究人員設(shè)計(jì)并發(fā)布的一種新的開源硬件設(shè)計(jì)語言。他們認(rèn)為現(xiàn)有的硬件描述語言VHDL、Verilog HDL等最初設(shè)計(jì)的目的是用來仿真的,所以有很多不可綜合的語法,此外,VHDL、Verilog HDL缺少目前高級語言具備的一些特性,比如:對象、繼承等,于是設(shè)計(jì)了Chisel,并將其開源。
Chisel建立在Scala語言之上,可以支持高級硬件設(shè)計(jì)。用戶使用Chisel時(shí),以編寫Scala程序的方式來設(shè)計(jì)硬件電路。采用Chisel設(shè)計(jì)的電路,經(jīng)過編譯可以得到FPGA、ASIC的Verilog HDL的相關(guān)代碼。目前國內(nèi)外已有人使用Chisel語言成功地實(shí)現(xiàn)了多種開源處理器。有多個(gè)開源項(xiàng)目使用Chisel作為開發(fā)語言,包括:采用RISC-V架構(gòu)的開源標(biāo)量處理器Rocket、開源亂序執(zhí)行處理器BOOM(Berkeley Out-of-Order Machine)等。
此外,Chisel的開源特性,也有助于用戶了解硬件設(shè)計(jì)語言的內(nèi)部實(shí)現(xiàn)機(jī)理,并在此基礎(chǔ)上進(jìn)行特定的優(yōu)化與改進(jìn)。
開源設(shè)備樹
設(shè)備樹是嵌入式操作系統(tǒng)中的一種開源硬件數(shù)據(jù)結(jié)構(gòu),是嵌入式操作系統(tǒng)中板級支持包(Board Support Package,BSP)的華麗轉(zhuǎn)身,其源頭是PowerPC的Device Tree技術(shù)。目前,最著名的是ARM Linux中的扁平設(shè)備樹FDT(Flattened Device Tree)。
早先在嵌入式系統(tǒng)中引入操作系統(tǒng)時(shí)為了滿足操作系統(tǒng)對硬件單元的有效管理,設(shè)置了板級支持包,并添加有大量的驅(qū)動(dòng)程序固件。板級支持包介于主板硬件與操作系統(tǒng)之間,是操作系統(tǒng)的一部分。程序員在使用嵌入式操作系統(tǒng)時(shí),可以根據(jù)硬件結(jié)構(gòu)的變化,在BSP中添加一些和系統(tǒng)相關(guān)的驅(qū)動(dòng)程序。因此,隨著主板的升級與變更,BSP也愈加龐雜。
以ARM Linux為例,早期的ARM Linux中充斥著大量的垃圾代碼,相當(dāng)多的代碼只是在描述板級細(xì)節(jié),而這些板級細(xì)節(jié)對于內(nèi)核來講,只是垃圾。后來引入了PowerPC已成熟應(yīng)用的Device Tree技術(shù),使得ARM Linux內(nèi)核中的BSP華麗轉(zhuǎn)身為扁平設(shè)備樹(FDT)。
Device Tree是一種描述硬件的數(shù)據(jù)結(jié)構(gòu),基本上是一個(gè)描述電路板上CPU、總線、設(shè)備組成的樹形結(jié)構(gòu),由一系列的結(jié)點(diǎn)(node)和屬性(property)組成,結(jié)點(diǎn)本身可包含子結(jié)點(diǎn),可用來描述原先kernel中的大量板級細(xì)節(jié)與硬件細(xì)節(jié),直接透過它傳遞給Linux。Bootloader會(huì)將這棵樹傳遞給內(nèi)核,然后內(nèi)核可以識別這棵樹,并根據(jù)它展開出Linux內(nèi)核中的眾多設(shè)備,而這些設(shè)備用到的內(nèi)存、IRQ等資源,也被傳遞給了內(nèi)核,內(nèi)核會(huì)將這些資源綁定給展開的相應(yīng)設(shè)備。使用FDT后,Linux內(nèi)核可以直接通過FDT獲取硬件的細(xì)節(jié)信息。
由根結(jié)點(diǎn)、子結(jié)點(diǎn)、葉結(jié)點(diǎn)形成了硬件相關(guān)的樹形結(jié)構(gòu),樹結(jié)構(gòu)將在節(jié)點(diǎn)之間創(chuàng)建父子關(guān)系,此父子關(guān)系是體系結(jié)構(gòu)無關(guān)性的關(guān)鍵。當(dāng)葉驅(qū)動(dòng)程序或總線結(jié)點(diǎn)驅(qū)動(dòng)程序本質(zhì)上需要依賴于體系結(jié)構(gòu)的服務(wù)時(shí),該驅(qū)動(dòng)程序會(huì)請求其父級節(jié)點(diǎn)提供該服務(wù)。采用此方法,不管計(jì)算機(jī)或處理器的體系結(jié)構(gòu)是什么,驅(qū)動(dòng)程序都可以正常運(yùn)行。使用FDT后,Linux內(nèi)核可以直接通過FDT獲取硬件的細(xì)節(jié)信息,這使得ARM Linux內(nèi)核中的冗余編碼大大減少,同時(shí)也使得用一個(gè)內(nèi)核鏡像去引導(dǎo)同一類ARM芯片集的硬件平臺成為可能。
2017年《單片機(jī)與嵌入式系統(tǒng)應(yīng)用》第3期羅名駒等人的“扁平設(shè)備樹FDT在ARM Linux中的應(yīng)用研究”詳細(xì)地介紹了ARM Linux中的FDT,以及如何通過FDT獲取板級硬件的細(xì)節(jié)信息。
#e#
全球最流行的幾個(gè)開源硬件平臺
隨著物聯(lián)網(wǎng)的推廣和普及,五年內(nèi)全球會(huì)有200億臺智能設(shè)備的需求,而如今隨著創(chuàng)客概念的興起,開源硬件也越加的火熱,讓我們來看看現(xiàn)在都有哪些主流的開源硬件平臺,這些平臺又是用什么芯片呢,全志、三星、瑞芯微、飛思卡爾?下面讓我們來數(shù)一下吧!
1.樹梅派(Raspberry Pi)-ARM1176JZF-S核心
?
樹莓派
樹莓派由注冊于英國的慈善組織“Raspberry Pi 基金會(huì)”開發(fā),Eben·Upton/?!ざ蚱疹D為項(xiàng)目帶頭人。2012年3月,英國劍橋大學(xué)埃本·阿普頓(Eben Epton)正式發(fā)售世界上最小的臺式機(jī),又稱卡片式電腦,外形只有信用卡大小,卻具有電腦的所有基本功能,這就是Raspberry Pi電腦板,中文譯名“樹莓派”!它是一款基于ARM的微型電腦主板,以SD卡為內(nèi)存硬盤,卡片主板周圍有兩個(gè)USB接口和一個(gè)網(wǎng)口,可連接鍵盤、鼠標(biāo)和網(wǎng)線,同時(shí)擁有視頻模擬信號的電視輸出接口和HDMI高清視頻輸出接口,以上部件全部整合在一張僅比信用卡稍大的主板上,具備所有PC的基本功能只需接通電視機(jī)和鍵盤,就能執(zhí)行如電子表格、文字處理、玩游戲、播放高清視頻等諸多功能。 Raspberry Pi B款只提供電腦板,無內(nèi)存、電源、鍵盤、機(jī)箱或連線。
2.Armcore-全志A20
?
Armcore
Armcore是由視美泰公司為企業(yè)級DIY定制的一款開源硬件,其標(biāo)準(zhǔn)都是按照工業(yè)級制定。為了更方便企業(yè)開發(fā)產(chǎn)品,Armcore將CPU、DDR、FLASH、PMU等核心模塊封裝到一個(gè)核心板之上,而且將安卓系統(tǒng)集成到系統(tǒng)上,基本上市面上的主流標(biāo)準(zhǔn)設(shè)備的驅(qū)動(dòng)都應(yīng)有盡有,以此來節(jié)省企業(yè)開發(fā)項(xiàng)目的時(shí)間周期和成本。更誘人的是這些都是開源的!不過該平臺不足的地方就是對于個(gè)人創(chuàng)客的支持力度很低,主要還是針對企業(yè)用戶。
3.Arduino-Atmega328
?
填寫圖片摘要(選填)
Arduino是一款便捷靈活、方便上手的開源電子原型平臺,包含硬件(各種型號的Arduino板)和軟件(Arduino IDE)。它適用于愛好者、藝術(shù)家、設(shè)計(jì)師和對于“互動(dòng)”有興趣的朋友們。
4.BeagleBone-AM3359
?
填寫圖片摘要(選填)
BeagleBone是一個(gè)開源軟件和嵌入式硬件設(shè)計(jì)非營利公司。BeagleBone為開源愛好者提供了一個(gè)很好的開源硬件和軟件交流的平臺。BeagleBone可以說完全是靠開源愛好者推動(dòng)的一個(gè)硬件平臺。
5.Cubieboard-全志A10
?
填寫圖片摘要(選填)
Cubieboard是由一支中國珠海的技術(shù)團(tuán)隊(duì)Cubieteam開發(fā)的一個(gè)開源MiniPC,有些類似于英國人開發(fā)的樹莓派。適合個(gè)人創(chuàng)客,在這個(gè)平臺開發(fā)產(chǎn)品不需要看英文資料是最大的優(yōu)勢,哈哈!我們一直堅(jiān)信中國品牌總有走出國門的一天,雖然Cubieboard在國內(nèi)名氣不大,但是憑借其過硬的品質(zhì)已經(jīng)在國外贏得了一部分市場。
6.Armpc-全志A20
?
填寫圖片摘要(選填)
Armpc是基于全志A20開發(fā)的一款供個(gè)人DIY玩家使用的開源開發(fā)平臺,其豐富的擴(kuò)展性,是其最大的特點(diǎn),因?yàn)樗鼛缀醢薃rduino和樹莓派的所有接口,所以,它支持的DIY模塊會(huì)比前兩者多出許多。Armpc和Beaglebone一樣是由開源社區(qū)推動(dòng)的一款開源硬件。其不足就是只開放軟件源碼,而沒有開放硬件原理圖,不過這也絲毫不影響創(chuàng)客們對它的寵愛。
7.UDOO-飛思卡爾 i.MX6 ARM
?
UDOO和Raspberry Pi一樣,是一個(gè)ARM架構(gòu)的Linux板,而在電路板上也裝有第二顆ARM處理器用來模擬Arduino Due。
UDOO擁有雙核與四核兩個(gè)版本的ARM cortex-A9 CPU,采用了與Arduino Due一樣的ARM SAM3X處理器。UDOO還內(nèi)置OpenGL加速器、54數(shù)位I/O和模擬輸入(有和Arduino R3兼容的pinout)、Ethernet、內(nèi)建WiFi、HDMI、USB、SATA及類比聲音訊號。
8、SparkCore-單片機(jī)
?
SparkCore是一個(gè)擁有配套云服務(wù)的平臺,可兼容Arduino,并內(nèi)置有WiFi功能。和Yún一樣,SparkCore也可以通過WiFi連接并進(jìn)行程式開發(fā)。而除了無線局域網(wǎng)絡(luò),SparkCore也可以同時(shí)通過云服務(wù)隨處存取更新自己的進(jìn)度。
9.DigiSpark-單片機(jī)
?
DigiSpark也是一個(gè)基于ATTiny85架構(gòu)的開發(fā)板,并且體積也足夠小,支持Arduino IDE 1.0+ (OSX/Win/Linux)。
雖然DigiSpark只有6個(gè) I/O Pins,但可利用各式各樣的擴(kuò)充工具延伸它的可能性。并且DigiSpark的售價(jià)只有12美元,無論是學(xué)習(xí)開發(fā)入門還是功能拓展都是一個(gè)不錯(cuò)的選擇。
10、pcDuino-全志A10
?
pcDuino可以運(yùn)行完整的PC操作系統(tǒng),如Ubuntu和Android的ICS,并且易于使用工具鏈,又兼容Arduino開放的生態(tài)系統(tǒng),包括Arduino shield和開源項(xiàng)目。值得注意的是它能夠兼容使用大部分的Arduino擴(kuò)充板,且所有的Arduino擴(kuò)展引腳都可以通過API訪問,包括UART、ADC、PWM、GPIO、I2C。
#e#
關(guān)于Ardurino開源硬件平臺
在Maker Faire現(xiàn)場展臺上展示的開源硬件平臺可見一斑:基于Ardurino開發(fā)的創(chuàng)意產(chǎn)品占絕大部分,由此可見,由Ardurino構(gòu)建的創(chuàng)客生態(tài)系統(tǒng)已蔚然成風(fēng),各類基于Ardurino的軟硬件開發(fā)平臺、技術(shù)資料、配件等已經(jīng)非常完善。
而對其他開源硬件平臺而言,使用者偏少。無外乎有以下幾大原因:第一,Ardurino是創(chuàng)客的“開山鼻祖”,江湖老大的地位不可動(dòng)搖;第二,Ardurino功能簡單,對初學(xué)者而言上手更快;第三,關(guān)于Ardurino的所有配套資料、使用群體最龐大,志同道合者居多。
事實(shí)上,當(dāng)使用Ardurino基本的控制功能達(dá)不到創(chuàng)客們的更高級、更先進(jìn)的要求(如通訊、互聯(lián)、互動(dòng)等)時(shí),創(chuàng)客們會(huì)另尋出路,會(huì)選擇采用基于ARM架構(gòu)或X86架構(gòu)的開源硬件平臺。舉幾個(gè)簡單的例子,僅供參考。
Ardurino:適用于入門級新手創(chuàng)客。開發(fā)工具有Arduino IDE,具有豐富的Arduino驅(qū)動(dòng)代碼。對于入門級創(chuàng)客來說,大家更多的是看中Arduino龐大的網(wǎng)絡(luò)資源,各種疊加擴(kuò)展板和傳感器板。
AVR單片機(jī):Arduino的核心芯片用的就是Atmel的AVR 8位單片機(jī),可以說Atmel是Arduino的鼻祖。 Atmel Xplained / Xplained Pro 開發(fā)板:作為低成本單片機(jī),Atmel Xplained / Xplained Pro 開發(fā)板有很多型號可供大家選擇,如:8位或32位AVR單片機(jī)、ARM Cortex-M0+ 或 Cortex-M4 或 Cortex-M4F、ARM Cortex-M0
+ 加無線 SoC、ARM Cortex-A5 微處理器等?;贏RM Cortex-M0+ 架構(gòu)的開發(fā)平臺,低外圍資源,但同時(shí)具備低功耗,二次開發(fā)簡易,擁有32位ARM的計(jì)算性能等優(yōu)勢。Xplained Pro開發(fā)板同樣具有可擴(kuò)展性,可以使用標(biāo)準(zhǔn)排針在開發(fā)板側(cè)面連接擴(kuò)展板?! 漭蒖aspberryPi:相比Arduino,樹莓派提供更高性能的處理能力,可以輕松實(shí)現(xiàn)I/O控制、高速數(shù)據(jù)通信、視頻處理、實(shí)時(shí)運(yùn)算等,創(chuàng)客可以在Debian Linux環(huán)境下編程,實(shí)現(xiàn)各種過去需要在PC環(huán)境實(shí)現(xiàn)的功能。樹莓派是初級創(chuàng)客向高階創(chuàng)客演進(jìn)的理想平臺。目前全球用戶超過300萬,每年以200萬的速度遞增。
CooCox開發(fā)工具:用于ARM Cortex-M設(shè)備的開發(fā),CoIDE具有強(qiáng)大的工程管理和調(diào)試功能,集成了一個(gè)開放和分享的組件代碼平臺,支持Arduino編程語言,Arduino驅(qū)動(dòng)代碼可平滑移植到CoIDE,基本不需改動(dòng)代碼,適用于有進(jìn)階需求的創(chuàng)客。
MSP430 LaunchPad:LaunchPad是TI專門推出的一系列開發(fā)平臺,其特點(diǎn)是使用簡單:下載使用一體,無需額外硬件。與此同時(shí),來自美國的工程師還向創(chuàng)客們演示直接在電路板上方加上“Booster Pack”外圍板(相當(dāng)于擴(kuò)展板),去完成不同外設(shè)的二次開發(fā)。有用過Launchpad開發(fā)辦的工程師評價(jià)到:將Arduino的程序移植到Launchpad上幾乎是一件非常簡單的事情,有時(shí)候甚至不需要任何的更改,只要對端口進(jìn)行相應(yīng)的調(diào)整即可。總體來說,Launchpad的性價(jià)比是非常高的,低功耗,低價(jià)格,性能也有保障,可以說是一個(gè)Arduino玩家的理想替代選擇。LaunchPad非常適合學(xué)習(xí)和低資源需求的應(yīng)用。
Galileo(伽利略)開發(fā)板 & Edison平臺:英特爾嵌入式事業(yè)部產(chǎn)品經(jīng)理王景佳指出,伽利略開發(fā)板是基于英特爾架構(gòu)全新兼容Arduino(接口、開發(fā)環(huán)境均可與Arduino兼容)的可開發(fā)電路板系列的首款產(chǎn)品。此次,Intel展位上來自北京高校的大學(xué)生們展示著基于伽利略開發(fā)板開發(fā)的各種硬件創(chuàng)作成果?;赒uark處理器的伽利略開發(fā)板在本次制匯節(jié)上可謂大賺眼球。如果說Arduino是創(chuàng)客運(yùn)動(dòng)的導(dǎo)火索,那么Edison則是創(chuàng)客運(yùn)動(dòng)的新里程。盡管本次沒有展出Edison實(shí)物,但創(chuàng)客們還是很期待Intel為大家?guī)砀囿@喜?! ∨c此同時(shí),適合創(chuàng)客的其他高級平臺還包括: 基于Freescale i.MX6 SOLO (1GHz Cortex A9) RIoT Board, 基于Ti Sittara Cortex A8 BeagleBone Black, 基于Atmel Cortex A5 的SAMA5D3-Xplained等等,他們提供更強(qiáng)大的計(jì)算性能和更靈活的應(yīng)用能力。
無一例外,以上談及的開源硬件均是與Ardurino兼容的智能硬件平臺。事實(shí)上,從這里我們也能看到Ardurino在創(chuàng)客運(yùn)動(dòng)中不可動(dòng)搖的地位。
事實(shí)上,創(chuàng)客們需要的是一個(gè)開放、分享的氛圍。誰能為他們營造這種氛圍,誰才能占據(jù)創(chuàng)客硬件市場的領(lǐng)導(dǎo)地位,Ardurino就做到了這一點(diǎn)。對于其他硬件平臺而言,打造一個(gè)“類Ardurino”經(jīng)營模式的生態(tài)系統(tǒng)是有很多問題亟待解決的,譬如,如何引起創(chuàng)客對新的軟硬件平臺的關(guān)注并選擇使用;如何完善軟硬件支持;創(chuàng)客們在實(shí)現(xiàn)產(chǎn)品創(chuàng)作時(shí)是否能擁有跟Ardurino類似的開放、分享平臺等等。
不過有挑戰(zhàn)才有創(chuàng)新,這是值得贊頌的,因?yàn)檫@才是“創(chuàng)客精神”。對于創(chuàng)客們而言,越多開源硬件平臺,他們的選擇就越多,創(chuàng)客的群體才會(huì)日益壯大。創(chuàng)客文化的精髓——“開放”、“分享”,才會(huì)傳遍大江南北!創(chuàng)客運(yùn)動(dòng)來襲,連接你我他,你準(zhǔn)備好了嗎?
評論