文章類型
開發平台
解決方案
關注主題
文章類型
開發平台
解決方案
關注主題

Arduino相容性關鍵:Wiring專案

許多人學習過Arduino,通常是買一本書,然後買一片Arduino系統電路板,就開始照書本操作,或者也不用買電路板,直接用推演軟體(Simulator)來學習,只要不是用到很特別的電路,推演軟體多半可以支援。

若學習Arduino的人是第一次接觸程式語言(很多是如此,因為Arduino最初是設計給美術、藝術創作者使用),可能不知道他照書本操作的程式語言,其實正式名稱叫Processing,而用來撰寫、編譯Processing程式語言的開發工具軟體,其實也叫Processing,有時為了區別,後者會叫Processing IDE(IDE=Integrated Device Environment,整合開發環境)。

Processing開發環境降低了Arduino實作的門檻

對已有一些程式語言基礎的人來說,或許會以為Arduino的程式語言是C語言,因為語法很像,而有的Arduino學習書裡頭多會說Processing程式語言是以Java程式語言為基礎所發展成,但其實Processing程式語言也很像C++語言。開發者撰寫的Arduino程式,副檔名會叫做 .ino(更早之前則為 .pde),根據他人的研究,若把副檔名改成 .cpp(C++程式語言的副檔名),會發現兩者高度相通。

不只有AVR MCU可用,關鍵在Wiring

另一個大家可能不知道的是,Arduino雖然多是用Atmel公司的AVR系列微控制器晶片,但其實也有許多相容Arduino的系統電路板,是使用其他公司或其他系列、架構的微控制器,或微處理器。例如可以用TI的MSP430系列,Microchip的PIC24/32系列,ARM的Cortex-M3核心(尚未完全支援)等,從8位元、16位元、32位元均可。

為何可以用不同位元、不同廠牌、不同架構的微處理器、微控制器,都可以相容執行Processing程式語言呢?其實這是Arduino另一個專案的功勞,叫Wiring。

不同架構MCU都可相容於Arduino的關鍵在於Wiring這個專案。(圖為Wiring Installation)

不同架構MCU都可相容於Arduino的關鍵在於Wiring這個專案。(圖為Wiring Installation)

由於Arduino是透過一個翻譯軟體來翻譯Processing程式語言,只要改寫這個翻譯軟體,就可以讓原有的Processing程式語言完全不用修改,改在其他Arduino系統電路板上執行,且動作全然相同。

而Wiring專案,就是撰寫出各種不同的翻譯軟體,有供TI MSP430使用的,有供Microchip PIC23/32使用的,不同CPU/MCU的Arduino系統電路板,用不同的Wiring專案完成的翻譯軟體,就可以相容執行。

不用Wiring也行,自己練功

有趣的是,Intel的Quark(夸克)處理器是IA-32/x86架構,也可以相容執行Processing程式語言。這其實是Intel自己撰寫出翻譯軟體的,而不是由Wiring專案所撰寫的,並用在Intel推出的Arduino相容的系統電路板Galileo(伽利略)上,使其能直接相容執行Arduino程式。

不過,Intel的伽利略有經過Arduino的認證,另一個也是IA-32/x86架構的處理器公司瞻營全,則自行提出86Duino專案,也是自行開發撰寫翻譯軟體,以相容執行Processing程式,但86Duino尚未通過認證。

另外,MediaTek提出的LinkIt One平台,也宣稱相容Arduino,但使用的處理器核心則為ARM7EJ-S,一樣不在Wiring專案現有支援的範疇內,因此估是MediaTek自行改寫,或可能由商業合作夥伴改寫,如Seeed Studio等。

與Processing、Wiring相關的專案還有Fritzing,此即是前述的Arduino推演軟體,不過Arduino推演軟體相當多種,Fritzing只是其一,也有完全線上網頁版的,如123d Circuits。

總之,Arduino有許多更深、更廣的層面值得探索,或許可以到GitHub網站,直接閱讀Arduino相關的原始程式碼唷,不需要帳號密碼登入也可以閱讀。

陸向陽

陸向陽

從電子科系畢業後,即以媒體人的角色繼續這段與「電子科技」的不解之緣。歷任電子技術專書作者、電子媒體記者、分析師等角色,並持續寫作不殆。近來投入Arduino、Raspberry Pi等開放硬體的研究與教程介紹。
陸向陽

上一篇: | 下一篇:

468 ad

我想回應

你的電子郵件位址並不會被公開。 必要欄位標記為 *

成城共創股份有限公司版權所有、轉載必究.Copyright(c) 2017 MakerPRO