不少初學embedded linux的兄弟姐妹對如今網上的各類各樣的教程都弄糊塗了,特別是在ARM9一片火熱的時候,出了一大批2410/2440的核心板,功能功板,所帶的號稱最全、特全的說明,實際上是對你們的一種誤導。 java
我用debian已經有至關長一段時間了,之前主要是編寫linux下的上位機程序,用embedded linux不久,但有一點體會但願與你們分享。 linux
1、什麼板子好? c++
一句話,適合本身的就是好的,不在於硬件的高低,而在於你想作什麼,之前我用linux都是用的X86體系PC104,由於個人工做須要用它,如今我用BBB,由於個人另外一項任務如今須要用它。 編程
不是廣告,如今以爲BBB是個不錯的東西,硬件不是最好,軟件不是最豐富,但適合我目前的任務,至少生態圈在慢慢造成。 windows
說這些是但願表達個人一個核心意思:一是,用一個東西,要用它產生價值;二是,技術是通的,硬件載體是由需求決定的。 編程語言
2、embedded linux 與linux 工具
最直白的解釋就是embedded linux就是linux,沒有什麼不同,只是承載的載體不同,面向的羣體不同,linux上的知識在embedded linux上通用的。 學習
3、學習embedded linux學習什麼? 開發工具
仍是需求牽引。 編碼
你若是是僅作embedded linux上的應用程序開,不涉及firmware,對你來講什麼linux都是同樣的。由於你的重點是在於編程語言的學習和開發工具的應用、產品功能的實現(或者說編碼),固然要作到很優秀另外說(技巧或能力是須要天份+積累+付出),c/c++/java都是通的,甚至對於你來講linux/windows/unix都無所謂。
若是你是作firmware或者通俗的說,偏底層和硬件多一點,我反而認爲你須要的更可能是電子學知識和OS的知識。
4、embedded linux怎麼學?
若是你是作應用程序開發,你的學習應該是linux操做、開發環境使用、SDK或驅動程序的使用。固然,你須要瞭解一點你的開發平臺的基本知識。
若是你是作固件開發,你的學習歷程應該是linux操做、開發環境的使用、linux OS(內核是重要的),uboot(固然還有其它相似功能的東西vivi等)等,最最重要的,你要啃datasheet。
5、爲何說之前ARM9的所謂的說明、教程是誤導
第一,那些教程實際上是他產品功能的介紹,沒有一點技術層次的東西。
第二,若是你是初學者,他們所謂的內核編譯、vivi的編譯之流,對你來講就是扯淡,沒有任何用。由於,除非是你作固件的!
第三,所謂的開發教程實際是基於他們移植的過程描述,沒有一點實際的意義,對你的應用學習沒有幫助。
第四,他們的教程是基於特定硬件的,而嵌入式是一個領域,是一門普適的知識,他們教程僅是用於填鴨的!
固然,這些教程有好處,就是開發環境如何創建描述的很清楚,這是惟一的好處。
6、個人一點建議(歡迎拍磚)
1、搞清楚你要學什麼。
2、搞清楚幾個基本概念。
3、熟悉linux操做再作別的。