Linux On ARM開發紀要

    ARM的開發與X86仍是有很多區別的,這裏作了一些簡單的介紹,以方便X86下的開發者能更快地切換到Linux on ARM的體系下面來。   
node

    ARM近年來的發展可謂如日中天,蘋果和Android的使用是最爲快速的推進力,而今Windows也支持ARM了,而更小型的樹莓派和一些超低功耗模塊也都有使用ARM的內核了。
shell

    儘管微軟已經耐不住寂寞,大部分使用ARM的設備仍是Linux或是類Linux的系統內核,由於Linux的可裁剪性很是好,並且可用的資源很是很是多了。在「軟件定義世界」的思路引領下,Linux on ARM必將是將來的大潮流。
小程序

    Linux on ARM與X86體系下的不一樣點是採用「設備」的概念,「X86下的BIOS」是能夠本身燒進去的(就是那個啓示時按個燒寫鍵,就把引導區少到Flash的指定區域了,這個地址在給定板子上是不能變的),這個叫boot-loader,通常用的u-boot。固然,由於u-boot是開源的,所以出現了不少變體,但基本上都是大同小異。ssh

    boot-loader啓動後,就會跳轉到下一個地址,開始載入Linux內核,這裏頭最重要的是文件系統。有了文件系統,就不用再去讀寫Flash的裸扇區了,而是經過文件系統進行數據文件的操做。而後將會進入命令行界面,有一個叫Busy-box的小程序把經常使用的一些命令都打包到了一塊兒,使用起來更方便、體積更小、運行更快。這時候,幾乎能幹shell下能幹的全部事情了。經過ssh就能夠實現遠程管理了。工具

    若是要進入圖形界面,就須要運行一個X11的Server程序,還能夠安裝xrdp服務,而後經過「遠程桌面」進行登陸、管理,就跟運行一個普通的Linux桌面設備如出一轍了。由於ARM的功耗和發熱量都比較小,甚至大部分都不須要風扇散熱、徹底靜音,很是適合各類設備的開發。之後的各類智能設備可能都會成爲這個樣子,其實就是一臺運行Linux的電腦。性能

    既然是一臺Linux電腦,那麼開發軟件也就很簡單了。可是,且慢! 由於ARM的設備性能仍是低一些,通常不適合拿來運行IDE,進行代碼編輯、編譯、打包等工做,因此通常就在PC機上建一個「交叉編譯環境」,編譯完程序,打成二進制包,再燒寫進去。好比Android的ADK就是一套這樣的工具集,能夠完成編輯、調試、編譯、打包等等工做。而OpenWRT是採用的另一套思路,直接能夠在X86上面編譯生成多個版本的ipk文件,而後經過包管理程序下載安裝便可(Android如今也有X86的版本了)。spa

    固然,這個步驟仍是有點麻煩的。不少牛人直接運行Python或者LUA、JavaScript的腳本,能夠直接在全部的平臺上運行,如今基於ARM Cortex M0的腳本引擎都已經出來了(徹底開源的,但還在發展中,有的功能還沒法徹底調用),好比NodeMCU、MicroPython等等。
命令行

    但要在嵌入式設備上獲得徹底相同的結果,命令行沒有什麼問題,圖形界面就要費點勁了。能夠經過支持HTML5的引擎來完成(這個已經蔚然成風了,如nodejs/PhoneGap/Kendo/React等等)。調試

    Ubuntu Touch經過QML完成相似的功能,使用的是QT來封裝的,能夠混合HTML和本地API調用,不管顯示效果和一致性都是很是好的。ip

    若是以本地顯示爲主,還能夠直接使用QT或者Pyqt進行開發,可使用同一套代碼,支持從時鐘到工做站、集羣級別的應用開發和運行(不一樣CPU和Linux內核版本須要從新編譯,若是CPU和內核相同能夠二進制兼容)。

相關文章
相關標籤/搜索