Android系統是植基於Linux之上,賦予X視窗的功能。自從Google購併Android後,Android平板、手機、手錶、電子書、無人機、機器人…..等各式各樣的電子產品紛紛上市,並不斷衍生和推陳換新。無庸置疑的,目前Android幾乎已經成為iOS最大的競爭對手。不過,Android的功能雖然強大,但它需要較大的儲存空間之缺點,確實讓一般開發商卻步。再者,在Android中,想安裝Google map、Gmail…等應用軟體,還必須通過Google的GMS認證。因此,在中國大陸Android的山寨機雖然很多,但都沒有Google map、Gmail…等這些好用的軟體。
2012年2月,大概Android開始流行時,第一代的樹莓機(Raspberry Pi 1)就已經上市了,4年後,也就是2016年2月,Raspberry Pi 3也正式上市。
在沒有Android和Raspberry的年代裡,開發商最頭痛的問題就是找不到一套既好用又能和Linux kernel無縫結合的視窗系統。雖然在那個年代,網際網路上有一些開源程式碼可以支援X視窗的功能,例如: MIcrowindows、MiniGUI、Qt….等,可是還是需要自行下載完成建置與Linux整合,步驟很複雜,一遇到問題也沒人可支援。而且它們缺少中介軟體(middleware),例如:多媒體播放器。於是業界尋找「X聖杯」的計畫就悄悄開始了。最後終於誕生了Android和Raspberry。前者被大企業採用,後者則是被中小企業擁護。
Raspberry Pi 3使用Broadcom的BCM2837,這顆系統級單晶片(SoC)內部有四核心ARM CPU和雙核心的圖形處理器(GPU),Raspberry官網建議安裝的作業系統是Raspbian Jessie,源自Debian 8.5。Raspberry之所以受人歡迎,除了價格便宜以外,另一個主要原因就是對初學者而言,Raspbian的入門門檻比Android低。它的原始程式碼和開發工具都可以從網際網路下載到Raspberry的電路板上,而且Raspbian的建置與安裝幾乎是「一鍵完成」。由於Linux kernel和X視窗是一體成形地整合在Raspbian中,不像Android還得按照傳統的跨平台建置(cross-compile)方法,所以使用Raspbian非常省時省事。也因為Raspberry Raspbian目前只支援Broadcom的BCM2837,想移植到其它SoC就必須靠自己了。不過,對大多數的中小企業而言,Raspberry Pi 3是一個有支援面板,可以上網,能播放影片、音樂,開發與製造成本都很節省的嵌入式平台,可以滿足大多數的應用需求。若無特殊需求,並不需要更換BCM2837或Raspbian。
Raspberry Pi 3有一個令人驚豔的應用就是Amazon公司的Alexa Voice Services(AVS),如附圖一。也就是說,可以從Amazon官網下載AVS軟體並安裝到Raspberry Pi 3中,這過程幾乎也是「一鍵完成」,最後透過外接的USB麥克風就可以詢問Alexa任何問題,或者點播串流音樂。Alexa就是Amazon cloud的人工智慧,將來語音辨識很可能會取代部份鍵盤與滑鼠的功能,想像一下用自己的聲音詢問Alexa任何在wiki百科全書上面的問題吧!
雲端服務與互聯網
不過,上述的AVS應用主要是創客玩家的動手做(DIY)工作。而開發商的重點工作不是Raspberry,而是要建構自己的服務網,並透過一台伺服器與Amazon cloud連接。這台伺服器在網際網路上,必須要能辨識用戶的Custom Skill裝置、AVS裝置。簡單地說,Custom Skill是被動式裝置,例如:喇叭;而AVS裝置就是主動與被動式都具備的裝置,例如:樹莓機,麥克風和喇叭都具備。AVS經營商利用這台伺服器去服務下游用戶的Custom Skill裝置、AVS裝置。其實,這也是一種互聯網(IoT)的應用。因為這台伺服器不只可以播放語音,也可以將聲音轉換成控制指令,從遠端去控制房屋內的冷氣、電燈….等。使用Raspberry Pi 3就可以實作Custom Skill裝置、AVS裝置。當然,Amazon公司最看重的不是Custom Skill裝置、AVS裝置所能創造的營收,而是希望能持續蒐集到全世界消費者的大數據,分析這些數據,得到廣大消費者的使用習性。
目前使用Raspberry來實現互聯網的節點裝置已經沒有技術問題了。但是,對網路資訊安全的擔心仍然是互聯網無法普及的主因。這有待使用了「區塊鏈(blockchain)」或類似的新技術能夠有效防堵網路惡意攻擊的新版網際網路的建立。
跨平台的理想
除了等待新版網際網路的建立之外,互聯網的開發商現在能做的當然不是等待。縮短產品開發的時程是必須持續追求的目標。國內有一家公司,三年多以前就試圖將Android移植到自已設計的i.MX6板子上面,至今仍在除錯中。可見得當SoC功能越來越強大,作業系統也會變得越來越複雜難解,所花費的時間成本也越來越高。因此,催生了Yocto這樣的組織。
Yocto是Intel、Broadcom、TI、Freescale、AMD….這些國際大廠一起集資成立的計畫性組織。其宗旨就是要完成一套軟體工具,可以支援所有的嵌入式軟硬體平台。這似乎是遙不可及的夢想,不過,目前在Yocto官網上可以下載Intel、TI、Freescale….等這些大廠的SoC的「開發板支援套件(Board Support Package;BSP)」。不過,與傳統的做法一樣,開發者還是要使用cross-compile方式先在PC上面建置Yocto的映像檔(image file),再下載到目標板(target board)的開機裝置中。對於Yocto有支援的Linux作業系統而言,按照這樣的方法去實作並不難。例如:可以使用Yocto輕易地將Ubuntu移植到Freescale i.MX6上面。因為這部份,Yocto已經被驗證過的。可是還有很多部份Yocto還沒有完成。例如:國內有一家公司想使用Yocto將Arch Linux移植到Freescale i.MX6上面,但遇到許多技術問題,至今仍然無解。雖然,國外已經有公司成功地將這些問題解決了。
使用Yocto產生的Linux系統大小不會像Android那麼龐大,而且經過組態設定可以客製化,讓Linux系統具備所必需的特定功能,移除掉不需要的功能。因此,可以大幅縮短開發的時程。不過,若又要包含X視窗,問題又回到前面所提到的尋找「X聖杯」的問題上頭。因為不同的Linux系統對各家的圖形處理器、視訊處理器都有各自不一樣的繪圖、視訊演算法程式庫。這些程式庫可以提供給上層應用程式或軟體使用。如果不瞭解這些程式庫的原理和用途,而且Yocto也尚未將它們成功移植,就自行將它們移植安裝的話,想必是困難重重的。
不可輕忽晶片與韌體技術
目前手機App、電玩Pokemon Go很流行,新創的雲端應用軟體公司如雨後春筍般紛紛出現,市場上瀰漫著一股氛圍,似乎認為開發應用軟體才有獲利可言,甚至進而輕視晶片、硬體、系統韌體的價值。殊不知上述的所有應用之基礎都是植基於晶片、硬體、系統韌體。過去有許多流行的應用軟體、遊戲軟體,有許多現在都不見了,可是晶片、硬體、系統韌體的技術現在還存在著,甚至衍生出更新版本。
國內有一家開發Android機上盒的公司,使用中國大陸設計的工板,但他們沒有系統韌體工程師,雖然他們的軟體工程師設計的UI/UX很漂亮、很好操作,可是系統常常會當機。由於中國的原設計公司不願意派人來支援。於是這問題就擱著待解。
雖然這幾年來,因為中國大陸經濟崛起和外銷市場的低迷不振,造成電子業營收普遍的下滑,但展望未來,為了迎接新的商機,我們不應該讓晶片、硬體、系統韌體技術在這一代產生斷層,應該持續培育新的晶片、硬體、系統韌體的工程人才。