一般的應用開發,例如桌面應用的開發,移動應用的開發,通常都是在乙個ide整合開發環境中完成。
開發者,熟悉了ide的使用,熟悉了相關應用程式設計介面api,就能開發應用了。不需要關心系統本身的太多東西。
(當然,這並不是說,一般的應用開發,不需要了解很多的系統知識。如果開發者具有深厚的系統知識,那當然對於應用開發大有幫助)。
而嵌入式開發卻有所不同,他相當於是做系統整合。
開發者可能需要自己確定使用什麼cpu,什麼記憶體,什麼flash,使用什麼外圍裝置。
同時,整個系統的軟體,包括boot、核心、檔案系統、應用程式,可能有部分或全部需要自己去拼湊或開發。
這樣的話,光靠一點點程式語言的知識,就難以搞定了。
那怎麼辦呢,當然要學習一些額外的東西了。
好了,話歸正轉。下面給出相關的學習資料。資料出現的順序,也就是我們學習的順序。
1. c程式語言
c語言作者寫的書,超級精簡。因為精簡,所以,這本書要很認真的讀。不要求快,要細嚼慢嚥,要多思考,要從頭到尾(包括附錄)的讀。
2. unix環境高階程式設計 第2版
知名的unix程式設計書籍。學完這本書,對一般的linux應用開發,基本上可以達到得心應手的地步。
3. unix網路程式設計 第3版 第1卷
知名的unix程式設計書籍。學完這本書,對一般的linux網路應用開發,基本上可以達到得心應手的地步。
(說句題外話,如果自我要求不高的話,學完這3本書,出去混口飯吃已經不是大問題了。)
(另外,如果想深入一點理解網路,tcp/ip詳解 卷2 是一本非常好的書)
4. 深入理解計算機系統
注意,到這裡,要進入關鍵的一步了。這本書,共分為3部分,我們只要看前2部分即可。
這本書,要相當認真的學習。不僅要看,要思考,還要做完所有的練習題(做題非常重要,一定要堅持先做,再看答案)。
同時,書中的內容不可能解答你全部的程式設計疑問。因此,在學習過程中,對自己以前不理解的概念(如c語法的含義,c++多型究竟是如何實現的等問題),要多寫小函式或者小**片段,多分析他們對應的彙編**(objdump這個最精確;當然,通過使用-s編譯選項也行,它的可讀性要好一點,但是可能會帶有巨集指令)。另外,我的經驗是,寫小函式時,參與運算的變數,最好將它定義為入參(編譯器不敢優化)而不是區域性變數或全域性變數(容易被編譯器優化,導致未能生成你要想看的機器碼)。
這本書學完,你將真正成為c語言(甚至c++)的專家。因為你將從機器碼的層次,理解c(及c++)的語義究竟是怎麼實現的。你還會理解,從c語言**生成可執行程式的整個過程(預處理,編譯,鏈結,靜態庫,動態庫等)。你還將理解程序的概念,包括程序如何執行,程序如何與os互動(中斷、異常、系統呼叫)。
5. linux核心設計與實現
到這裡,算是開始踏入linux核心的大門了。這本書,從比較高的層次介紹linux核心。是非常好的核心入門書籍。
6. linux核心源**情景分析
華人寫的書,超級通俗易懂。從幫助讀者理解核心的角度來看,本書幾乎可以算是最好的一本書了。
7. linux裝置驅動程式
這本書非常注重實用。我們最終的開發,基本上,要麼是開發驅動,要麼是在核心中做些應用(並與使用者態做一定互動)。而這本書恰恰教給我們最老練的開發方法。
8 u-boot學習
這裡推薦的不是書籍了,而是一篇網路資料。
上面這篇文章,是一篇非常不錯的介紹u-boot工作機制的好文。
另外,學習u-boot,最好還是買塊開發板,以便於實驗。
開發板不用買高檔的,買個基本的arm9的就行了。因為我們是學習嵌入式系統原理,有個基本的arm9 cpu就足夠了。
當然,如果是做產品,那還是需要根據產品本身的需求來做選型的。
有了開發板,就可以修改、編譯、燒寫u-boot、核心、根檔案系統了。
有了開發板,就可以理解從cpu一通電開始,到linux跑起來,到最後應用跑起來,在這整個過程中,機器裡所發生的一切事情了。
好了,在下能介紹的內容就這麼多了。後面搞什麼,怎麼搞,就看大家自己的啦。
嵌入式學習路線
1 學習 linux系統安裝 常用命令 應用程式安裝。2 學習 linux 下的 c 程式設計 這本書必學 unix 環境高階程式設計 網路程式設計 rechard stevens 寫的,c 高手大都學習過 c 和指標 c 缺陷與陷阱 高質量c c 程式設計指南 c 專家程式設計 the c pro...
嵌入式學習路線
5.總結 嵌入式技術是各種電子產品的核心技術,也是工業4.0 遠端醫療 3d列印等新興產業的核心技術,具有廣闊的發展前景。很多計算機 電子資訊類專業的學生都想把嵌入式開發作為自己的職業目標,但是因為嵌入式涉及的知識太多,太雜,太廣,很多嵌入式初學者陷入嵌入式知識的海洋中,東學一點,西學一點,找不到學...
嵌入式學習路線 目標
底層驅動的話 linux裝置驅動開發詳解 宋寶華 arm體系結構與程式設計 要是應用的話 unix高階環境程式設計 寒假看了 linux shell程式設計 linux作業系統 對linux有了進一步的理解 最近在看 李雲 的 專業嵌入式軟體開發 李雲的csdn blog 嵌入式linux上的c語言...