【GoRK3288】1.Rockchip RK3288, GO!GO!!GO!!!,gork3288rk3288
前言:
最近看了看Google的Go語言,發現有點意思,這個開源的項目準備用golang來實現。
其實開發板本身的驅動程式已經實現了各個功能,但是有的時候在使用中有些麻煩,有可能需要修改dts檔案重新編譯核心才能夠使用某個功能,所以打算開發這個UIO驅動的開源項目,方便程式的編寫。當然,UIO也不是萬能的,比如中斷,目前我還沒有找到好的方法,可以完全拋開核心版本的差異導致需要重新編譯驅動來提供中斷訊息。 按照慣例首先還是先從Go語言的介紹、開發環境的安裝開始,然後稍微講解下本項目所涉及到的Go的文法,後面再來看看整個工程的檔案組成及各個庫的使用方法。
由於瑞芯微的開發參考手冊一般不對個人開放,但是經過天啟科技公司(後文簡稱Firefly)的努力,公布了全部原始碼 及 部分的文檔,使開發能夠順利進行,所以這個開源項目基於Firefly-RK3288開發板的Lubuntu環境下開發。
Go語言是Google2009發布的第二款開源程式設計語言, 專門針對多處理器系統應用程式的編程進行了最佳化,使用Go編譯的程式可以媲美C或C++代碼的速度,而且更加安全、支援並行進程,而且可以在不損失應用程式效能的情況下降低代碼的複雜性。
雖然Go尚未成熟,但Google旗下App Engine和其他部分產品已經開始使用go語言來編寫,Go的網站就是用Go所建立。該軟體是專為構建伺服器軟體所設計(如Google的Gmail)。Google認為Go還可應用到其他領域,包括在瀏覽器內執行軟體,它將成為互連網時代的C語言。
Go可以編譯為本地原生程式,編譯後的程式已經包括了執行階段程式庫,單單一個檔案在部署時直接扔到其他板子同種平台上即可直接運行,非常方便。同時使用Go建立的工程,只要不牽扯到作業系統特有的功能或介面,可以不做改動直接在Windows、Linux、ARM上編譯,並且現在已經支援Android的開發(1.4版),預計下一版將支援IOS的開發。這些特點和Free Pascal是一樣的。
Go目前欠缺的地方:暫時沒有圖形介面(官方未發布),暫時沒有專用的開發工具(ARM Linux上則更少)
隨著物聯網技術的興起,使用Go的高並發特性來實現控制伺服器將會大大提高啟動並執行效能簡化開發的難度,而且可以作為一個節點控制著各種外設。這個節點裝置甚至可以是ARM系統,並且核心越多效能越高,所以本次開發採用了高效能的Firefly-RK3288開發板進行開發。
提到Firefly-RK3288開發板,我不得不再次贊一下,這個開發板的設計非常用心,各種元件的安排不擁擠、不鬆散,賞心悅目。至於RK3288的效能就不用說了,同種方案的平板效能測試已經非常詳細了。如果希望瞭解該開發板的更多特性,可以參考這篇評測文章http://www.eeboard.com/evaluation/firefly-rk3288-review/。
OK,板子說完了,再說說Go語言編譯環境吧。在Lubuntu下安裝Go非常簡單,可以直接從新立德裡搜尋安裝。不過呢,這裡的版本有點低,1.2x。現在1.4.2已經發布了,自己編譯一下也不麻煩,而且這個板子的效能很高,包括所有的測試在內也就10分鐘左右。
下載,到https://github.com/golang/go下載zip檔案或者直接git,不習慣的話去http://golangtc.com/download直接下載tar.gz包也可以。
安裝,最省事的方法是解壓到/home/go裡,然後進入到src目錄,運行all.bash就開始自動編譯了。大約10分鐘左右,編譯完成,開啟/home裡的.profile檔案,在最後添加:
儲存重啟,Go的環境已經搭建好了。
接下來,安裝一個比較方便一點的編輯環境吧。Go語言目前還沒有專用的IDE開發環境,一般在Windows上或Linux使用LiteIDE、Ecplise、 SublimeText等,不過到了ARM環境下由於源裡的版本比較低,用起來麻煩,所以在試了幾個工具後發現gedit和Geany還可以。
這裡就以Geany為例進行安裝。還是到 新立德 搜尋Geany,版本是1.23,預設已經支援Go的高亮和代碼自動完成功能了。安裝的東西很少很快
標記之後包括依賴只有兩項,geany主檔案和geany-common,點擊應用開始安裝。
安裝之後可以開啟或建立Go檔案了,文法高亮看著比較舒服。
編譯和運行也比較方便。雖然沒有Debug調試功能和斷點設定,不過暫時夠用了。
GoRK3288庫請在https://github.com/tjCFeng/GoRK3288下載。