如何學(xué)習(xí)嵌入式?相信是困擾所有嵌入式初學(xué)者的難題,下面課程是嵌入式學(xué)習(xí)必學(xué)的: C語言; C++;操作系統(tǒng);計(jì)算機(jī)組成原理; linux編程; 51單片機(jī); arm;硬件編程語言(FPGA);模擬電路&數(shù)字電路。
1、cc++語言,這是計(jì)算機(jī)行業(yè)的必修課,必須找扎實(shí)實(shí)學(xué)好,可以安裝 turbo c編譯器為開發(fā)環(huán)境,聯(lián)系C語言編程; 安裝vc++6.0學(xué)習(xí)C++編程。
2、操作系統(tǒng),先在電腦上安裝一個(gè)vmware work station,然后在vmware work station里安裝一個(gè)linux(redhat 企業(yè)版)虛擬機(jī)。學(xué)習(xí)一下操作系統(tǒng)的基本原理,熟悉linux環(huán)境下的開發(fā)環(huán)境,然后你就可以照著
《自己動(dòng)手寫操作系統(tǒng)》寫個(gè)操作系統(tǒng)試試。
3、計(jì)算機(jī)組成原理,熟悉計(jì)算機(jī)的基本原理,看看一個(gè)計(jì)算機(jī)的基本組成及軟件在里面是如何跑的。
4、《unix/linux編程實(shí)踐教程》可以說是linux編程的必修課,很不錯(cuò)的一本書,初學(xué)嵌入式的朋友可以看看。
5、單片機(jī),其實(shí)就是一臺(tái)電腦,像現(xiàn)在的汽車控制、led控制、屏幕亮光程度控制,它都可以實(shí)現(xiàn),自己買塊開發(fā)板弄一下,你能學(xué)到很多的別人學(xué)不到的。
6、arm,現(xiàn)在流行的微機(jī),說白了就是32位的單片機(jī),還可以跑操作系統(tǒng)哦,自己想辦法移植一個(gè)操作系統(tǒng)上去吧
7、硬件編程語言(FPGA),芯片到底是怎么做成的,學(xué)習(xí)這門課,你就知道了
8、模擬電路&數(shù)字電路,硬件的基礎(chǔ),如果可以的話,學(xué)習(xí)下protel ,自己做個(gè)硬件pcb板試試。
計(jì)算機(jī)這行都是偏向于實(shí)踐的課程,所以要注重動(dòng)手能力,學(xué)習(xí)嵌入式這基本課程的時(shí)候,你可以按照這樣的順序來學(xué)習(xí):
1:C語言、計(jì)算機(jī)組成原理、模擬電路&數(shù)字電路
2:匯編語言、單片機(jī)、操作系統(tǒng)、C++
3:硬件編程語言、arm
嵌入式開發(fā)大抵分四個(gè)方向,硬件、驅(qū)動(dòng)、內(nèi)核、應(yīng)用,如果是希望向嵌入式軟件方向發(fā)展的話,目前常見的是
嵌入式Linux+ARM方向,關(guān)于這個(gè)方向,大概分3個(gè)階段:
1、嵌入式linux上層應(yīng)用,包括QT的GUI開發(fā)
2、嵌入式linux系統(tǒng)開發(fā)
3、嵌入式linux驅(qū)動(dòng)開發(fā) 嵌入式目前主要面向的幾個(gè)操作系統(tǒng)是,LINUX,WINCE、VxWorks等等 Linux是開源免費(fèi)的,而且其源代碼是開放的,更加適合我們學(xué)習(xí)嵌入式。
自學(xué)的話你可以嘗試以下路線:
(1) C語言是所有編程語言中的強(qiáng)者,單片機(jī)、DSP、類似ARM的種種芯片的編程都可以用C語言搞定),因此必須非常熟練的掌握。 推薦書籍:《The C Programming Language》 這本經(jīng)典的教材是老外寫的,也有中譯版本。
(2) 操作系統(tǒng)原理,是必需的,如果你是計(jì)算機(jī)專業(yè)畢業(yè)那也就無所謂了,如果是非計(jì)算機(jī)專業(yè)的就必須找一本比較淺顯的計(jì)算機(jī)原理書籍看一看,把啥叫“進(jìn)程”“線程”“系統(tǒng)調(diào)度”等等基本問題搞清楚。
(3) Linux操作系統(tǒng)就是用C語言編寫的,所以你也應(yīng)該先學(xué)習(xí)下Linux方面的編程,只有你會(huì)應(yīng)用了,才能近一步去了解其內(nèi)核的精髓。 推薦書籍:《UNIX環(huán)境編程》(第2版)
(4) 了解ARM的架構(gòu),原理,以及其匯編指令,我們?cè)谇度胧介_發(fā)中,一般很少去寫匯編,但是起碼的要求是能夠看懂a(chǎn)rm匯編。
(5) 系統(tǒng)移植的時(shí)候,就需要你從下層的bootloader開始,然后內(nèi)核移植,文件系統(tǒng)移植等。而移植這部分對(duì)硬件的依賴是非常大的,其配置步驟也相對(duì)復(fù)雜,也沒有太多詳細(xì)資料。
(6) 驅(qū)動(dòng)開發(fā) linux驅(qū)動(dòng)程序設(shè)計(jì)既是個(gè)極富有挑戰(zhàn)性的領(lǐng)域,又是一個(gè)博大精深的內(nèi)容。 linux驅(qū)動(dòng)程序設(shè)計(jì)本質(zhì)是屬于linux內(nèi)核編程范疇的,因而是對(duì)linux內(nèi)核和內(nèi)核編程是有要求的。在學(xué)習(xí)前你要想了解linux內(nèi)核的組成,因?yàn)槊恳徊糠忠敿?xì)研究的話足夠可以擴(kuò)展成一本厚書。
以上只不過是大概的框架,在實(shí)際的開發(fā)中還會(huì)涉及很多東西,比如:交叉編譯、makefile、shell腳本等等,所以說學(xué)習(xí)嵌入式的周期較長(zhǎng),門檻較高,自學(xué)的話更是需要較強(qiáng)的學(xué)習(xí)能力和專業(yè)功底。循序漸進(jìn),一步步扎實(shí)做好,只要能堅(jiān)持下來一定會(huì)取得成功!