如何搭建可靠的嵌入式arm+linux開發環境?
我在做嵌入式arm+linux開發的時候總是會遇到很多問題,即使跟著手冊一步一步做都會出現很多手冊上沒有的錯誤,而且常常為了解決一個問題而引發新的錯誤,以致過多地將時間花費在安裝工具、各種配置上。請問是否能通過搭建可靠的嵌入式開發環境來避免這種情況?可以的話該怎麼做?
謝邀。
開始的時候的這些彎路都是不可避免的,軟體硬體晶元都是born with bug。無論是自己做還是在企業做,解決問題都是一樣的步驟,先去找有沒有別人也發現過一樣的問題(通過官方文檔,搜索,與詢問他人),如果你不是第一個使用的人,那麼肯定也有前人遇到過類似的問題,100個遇到的人里只要有一個人分享了,那麼你就不用自己死磕了。嵌入式開發並不只是開發啊,安裝配置調試都是特別重要的存在。掉坑裡也有可能是因為你不夠了解坑背後的原理,如果能激發你去學習更多「背後的故事」,那麼這就是個好坑。所以掉的坑多了,慢慢的就有很快爬出來的能力了,這應該就是傳說中的經驗吧(笑)
我給幾個(冠冕堂皇卻是實用的)小建議吧--保持更新官方發布的軟體和文檔,善於用搜索,善於求助,保持耐心。嵌入式開發的功能工程師,如果做底層,不可避免要踩這些坑,並且也是必須踩,其中踩坑的過程一些問題對於嵌入式開發問題是非常有用的;
如果純粹是想急用一個開發環境來進行幹活,建議不要將時間花費在自己折騰上。
對個人技術成長,若有時間,不要想著彎道超車。有效的方式是有意的提問+回答。慢慢的你會發現,Java在什麼平台上都能跑是多麼的牛逼!
買個乖。
gentoo可一條內置的crossdev命令構建交叉編譯工具鏈。
只要有內核源代碼,就能在嵌入式開發板上搭建能運行的gentoo系統,因為gentoo提供根文件系統,也就是stage3。
從baremetal到Linux,有些坑是必須要去踩的。因為大部分都是CLFS(Cross Linux from Scratch)。尤其是IC原廠或核心板開發商FAE,這就是他們的工作範圍。
現在即便是ARM-Linux也要分LFS/CLFS,畢竟現在Debian/Ubuntu等都有ARM分支了。native Compiler比Cross-Compiler問題少些。可以要求Linux開發商提供一個VBox/VMware的虛擬機,這樣也可以節省自己的構建環境。
即使是CLFS,自己搭建CLFS工具鏈最容易出錯,也可以採用OpenWRT之類的預先編譯的交叉編譯的ARM-Linux組件減少工作量。還可以可以考慮OpenMoko/OpenEmbedded的工具鏈來構建自己的環境。採用完整版Linux/ARM分支,可以從Debian/Ubuntu的ARM分支中構建自己的Disto。
最後,建議高層應用開發者盡量使用Java/Python/Lua/Javascript開發。這幾種語言Lua移植性最高,Java在嵌入式中最普及,Python則可以運行於JVM和Python Bytecode之上,而Javascript也是最近很熱門的嵌入式語言。可以迴避相當部分的C/C++代碼。不過如果需要優化代碼,那麼GCC依然是不可少的。目前學習嵌入式,這些坑我一直在踩。可以讓別人幫你裝你在旁邊學習,然後用裝好的搞開發,另用一台電腦自己練習踩坑。
看你用的平台.如果已經是a8,a5這類強的晶元你可以直接做開發平台用了.比如裝個LUBUNTU什麼的.做成伺服器遠端共享(samb),登陸(SSH)編譯(ARM-LINK.....)測試...........
嵌入式開發,不僅僅是開發這麼很單一的事情,包括設備安裝調試,往往這個過程比較繁瑣,究其根本還是對開發環境不了解,以及各種內核晶元的生疏,這個過程如果有過來人指點一二可以少走很多彎路
推薦閱讀:
※FPGA與GPU在將來嵌入式應用中誰能更勝一籌?
※一個人,竭盡全力的去做一件事情,結果失敗了,改怎麼辦?
※依照目前的形勢,嵌入式開發與 web 開發哪個更順應未來的趨勢?
※嵌入式學習指南??
※馬上奔三了,感覺壓力好大,是繼續做技術呢還是轉行?(本人嵌入式開發)