合理的嵌入式开发学习路线
? ? ? 最近網(wǎng)上好多新手問我,怎么樣學(xué)習(xí)嵌入式開發(fā)?其實這個問題很復(fù)雜,因為嵌入式開發(fā)是個非常復(fù)雜的領(lǐng)域,既有深度,也有廣度,是個軟硬結(jié)合的領(lǐng)域。。。我研究的時間也不長,不過以后可能會研究RTOS這一塊(最近一直在關(guān)注國產(chǎn)開源RTOS rt-thread,自己業(yè)余時間也想?yún)⑴c進去)。。。。嵌入式工程師一般分兩種:一類是學(xué)電子工程、通信工程等偏硬件專業(yè)出身的人,他們主要是搞硬件設(shè)計,有時要開發(fā)一些與硬件關(guān)系最密切的最底層軟件,如BootLoader、Board Support Package(像PC的BIOS一樣,往下驅(qū)動硬件,往上支持操作系統(tǒng)),最初級的硬件驅(qū)動程序等。他們的優(yōu)勢是對硬件原理非常清楚,不足是他們更擅長定義各種硬件接口,但對復(fù)雜軟件系統(tǒng)往往力不從心(例如嵌入式操作系統(tǒng)原理和復(fù)雜應(yīng)用軟件等)。另一類是學(xué)軟件、計算機專業(yè)出身的人,主要從事嵌入式操作系統(tǒng)和應(yīng)用軟件的開發(fā)。學(xué)軟件的人對硬件原理和接口通常難以有較好的掌握,最多也只能寫部分BSP和硬件驅(qū)動程序。嵌入式硬件設(shè)計完后,各種功能就全靠軟件來實現(xiàn)了,嵌入式設(shè)備的增值很大程度上取決于嵌入式軟件,這占了嵌入式系統(tǒng)的最主要工作(目前有很多公司將硬件設(shè)計包給了專門的硬件公司,稍復(fù)雜的硬件都交給臺灣或國外公司設(shè)計,國內(nèi)的硬件設(shè)計力量很弱,很多嵌入式公司自己只負責(zé)開發(fā)軟件,因為公司都知道,嵌入式產(chǎn)品的差異很大程度在軟件上,在軟件方面是最有“花頭”可做的),所以搞軟件的人完全不用擔(dān)心自己在嵌入式市場上的用武之地,越是智能設(shè)備越是復(fù)雜系統(tǒng),軟件越起關(guān)鍵作用,而且這是目前的趨勢。
而隨著發(fā)展到現(xiàn)在大部分人都能包容第一類和第二類。 并且第一類和第二類其實是屬于一塊的。大部分時間是連接在一起的。這類開發(fā)人員具有很強的專業(yè)綜合知識,能很好的將軟硬件結(jié)合,一般測控類專業(yè)居多。。。。。
????計算機專業(yè)出身的人,如果要從事嵌入式軟件的開發(fā)也需要非常復(fù)雜的學(xué)習(xí)路線。。。。我給出了比較科學(xué)的學(xué)習(xí)路線。。。當然我也不是所有都看過,因為實在太多了
1、基礎(chǔ)知識:?
目的:能看懂硬件工作原理,但重點在嵌入式軟件,特別是操作系統(tǒng)級軟件,那將是我的優(yōu)勢。?
科目:數(shù)字電路、計算機組成原理、嵌入式微處理器結(jié)構(gòu)。?
匯編語言、C/C++、編譯原理、離散數(shù)學(xué)。?
數(shù)據(jù)結(jié)構(gòu)和算法、操作系統(tǒng)、軟件工程、網(wǎng)絡(luò)、數(shù)據(jù)庫。?
方法:雖科目眾多,但都是較簡單的基礎(chǔ),且大部分已掌握。不一定全學(xué),可根據(jù)需要選修。?
主攻書籍:the?c++?programming?language(一直沒時間讀)、數(shù)據(jù)結(jié)構(gòu)-C2。?
2、學(xué)習(xí)linux:?
目的:深入掌握linux系統(tǒng)。?
方法:使用linux—〉linxu系統(tǒng)編程開發(fā)—〉驅(qū)動開發(fā)和分析linux內(nèi)核。先看深,那主講原理。看幾遍后,看情景分析,對照深看,兩本交叉,深是綱,情是目。剖析則是0.11版,適合學(xué)習(xí)。最后深入代碼。?
主攻書籍:linux內(nèi)核完全剖析、unix環(huán)境高級編程、深入理解linux內(nèi)核、情景分析和源代。?
3、學(xué)習(xí)嵌入式linux:?
目的:掌握嵌入式處理器其及系統(tǒng)。?
方法:(1)嵌入式微處理器結(jié)構(gòu)與應(yīng)用:直接arm原理及匯編即可,不要重復(fù)x86。?
(2)嵌入式操作系統(tǒng)類:ucOS/II簡單,開源,可供入門。而后深入研究uClinux。?
(3)必須有塊開發(fā)板(arm9以上),有條件可參加培訓(xùn)(進步快,能認識些朋友)。?
主攻書籍:毛德操的《嵌入式系統(tǒng)》及其他arm9手冊與arm匯編指令等。?
4、深入學(xué)習(xí):?
A、數(shù)字圖像壓縮技術(shù):主要是應(yīng)掌握MPEG、mp3等編解碼算法和技術(shù)。?
B、通信協(xié)議及編程技術(shù):TCP/IP協(xié)議、802.11,Bluetooth,GPRS、GSM、CDMA等。?
C、網(wǎng)絡(luò)與信息安全技術(shù):如加密技術(shù),數(shù)字證書CA等。?
D、DSP技術(shù):Digital?Signal?Process,DSP處理器通過硬件實現(xiàn)數(shù)字信號處理算法。?
說明:太多細節(jié)未說明,可根據(jù)實際情況調(diào)整。重點在于1、3,不必完全按照順序作。對于學(xué)習(xí)c++,理由是c++不只是一種語言,一種工具,她還是一種藝術(shù),一種文化,一種哲學(xué)理念、但不是拿來炫耀得東西。對于linux內(nèi)核,學(xué)習(xí)編程,讀一些優(yōu)秀代碼也是有必要的。?
注意: 要學(xué)會舉一反多,有強大的基礎(chǔ),很多東西簡單看看就能會。想成為合格的程序員,前提是必須熟練至少一種編程語言,并具有良好的邏輯思維。一定要理論結(jié)合實踐。?
不要一味鉆研技術(shù),雖然擠出時間是很難做到的,但還是要留點余地去完善其他的愛好,比如宇宙,素描、機械、管理,心理學(xué)、游戲、科幻電影。還有一些不愿意做但必須要做的!?
技術(shù)是通過編程編程在編程編出來的。永遠不要夢想一步登天,不要做浮躁的人,不要覺得路途漫上。而是要編程編程在編程,完了在編程,在編程!
嵌入式書籍推薦?
Linux基礎(chǔ)?
1、《Linux與Unix?Shell?編程指南》?
C語言基礎(chǔ)?
1、《C?Primer?Plus,5th?Edition》【美】Stephen?Prata著?
2、《The?C?Programming?Language,?2nd?Edition》【美】Brian?W.?Kernighan?David?M.?Rithie(K?&?R)著?
3、《Advanced?Programming?in?the?UNIX?Environment,2nd?Edition》(APUE)?
4、《嵌入式Linux應(yīng)用程序開發(fā)詳解》?
Linux內(nèi)核?
1、《深入理解Linux內(nèi)核》(第三版)?
2、《Linux內(nèi)核源代碼情景分析》毛德操?胡希明著?
研發(fā)方向?
1、《UNIX?Network?Programming》(UNP)?
2、《TCP/IP詳解》?
3、《Linux內(nèi)核編程》?
4、《Linux設(shè)備驅(qū)動開發(fā)》(LDD) ?
5、《Linux高級程序設(shè)計》?楊宗德著
硬件基礎(chǔ)?
1、《ARM體系結(jié)構(gòu)與編程》杜春雷著?
2、S3C2410?Datasheet?
英語基礎(chǔ)?
1、《計算機與通信專業(yè)英語》?
系統(tǒng)教程?
1、《嵌入式系統(tǒng)――體系結(jié)構(gòu)、編程與設(shè)計》?
2、《嵌入式系統(tǒng)――采用公開源代碼和StrongARM/Xscale處理器》毛德操?胡希明著?
3、《Building?Embedded?Linux?Systems》
4、《嵌入式ARM系統(tǒng)原理與實例開發(fā)》?楊宗德著
理論基礎(chǔ)?
1、《算法導(dǎo)論》?
2、《數(shù)據(jù)結(jié)構(gòu)(C語言版)》?
3、《計算機組織與體系結(jié)構(gòu)性能分析》?
4、《深入理解計算機系統(tǒng)》【美】Randal?E.?Bryant?David?O''Hallaron著?
5、《操作系統(tǒng):精髓與設(shè)計原理》?
6、《編譯原理》?
7、《數(shù)據(jù)通信與計算機網(wǎng)絡(luò)》?
8、《數(shù)據(jù)壓縮原理與應(yīng)用》?
C語言書籍推薦?
1.?The?C?programming?language?《C程序設(shè)計語言》?
2.?Pointers?on?C?《C和指針》?
3.?C?traps?and?pitfalls?《C陷阱與缺陷》?
4.?Expert?C?Lanuage?《專家C編程》?
5.?Writing?Clean?Code?-----Microsoft?Techiniques?for?Developing?Bug-free?C?Programs?
《編程精粹--Microsoft?編寫優(yōu)質(zhì)無錯C程序秘訣》?
6.?Programming?Embedded?Systems?in?C?and?C++?《嵌入式系統(tǒng)編程》?
7.《C語言嵌入式系統(tǒng)編程修煉》?
8.《高質(zhì)量C++/C編程指南》林銳?
盡可能多的編碼,要學(xué)好C,不能只注重C本身。算法,架構(gòu)方式等都很重要。?
?
http://www.cnblogs.com/pd520/archive/2012/10/28/2743208.html轉(zhuǎn)載于:https://www.cnblogs.com/zhangze/archive/2013/03/20/2971026.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的合理的嵌入式开发学习路线的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【初印象】Android手机屏幕适配AP
- 下一篇: 小乔大学生活日记