C語言是嵌入式最重要的基礎(chǔ)知識,但是掌握了它并不代表你的基礎(chǔ)已經(jīng)很好了,嵌入式學(xué)習(xí)相關(guān)的基礎(chǔ)知識主要是這些:
一是程序設(shè)計(jì)的基礎(chǔ),例如:基本的編程語言基礎(chǔ),至少對數(shù)據(jù)類型、程序的結(jié)構(gòu)及流程控制等最基本的內(nèi)容要相當(dāng)清楚,所以建議惡補(bǔ)一下C語言,推薦譚浩強(qiáng)的C語言程序設(shè)計(jì),好好看一下,呵呵!另外有不少同學(xué)都問到數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ),我一直認(rèn)為數(shù)據(jù)結(jié)構(gòu)和算法的學(xué)習(xí)是幫助形成程序設(shè)計(jì)邏輯思維的很好訓(xùn)練方式,對于程序員的長期專業(yè)素養(yǎng)的提高一定有好處,所以建議即使已經(jīng)在嵌入式行業(yè)中工作之后也應(yīng)該多補(bǔ)充一些相關(guān)的知識。許多在學(xué)校沒有學(xué)過數(shù)據(jù)結(jié)構(gòu)的同學(xué)往往認(rèn)為這部分非常枯燥、難學(xué)。而實(shí)際上如果你能明白研究計(jì)算機(jī)存儲和數(shù)據(jù)組織方式的意義,就一定能夠充分體會到數(shù)據(jù)結(jié)構(gòu)的價(jià)值和魅力。一旦興趣有了,一切就會迎刃而解,呵呵!
二是操作系統(tǒng)工作原理,這部分往往是非計(jì)算機(jī)專業(yè)的同學(xué)在學(xué)校時(shí)沒有接觸過的。而由于嵌入式軟件設(shè)計(jì)相關(guān)的多任務(wù)環(huán)境、模塊間的同步與通信協(xié)同、驅(qū)動(dòng)設(shè)計(jì)等往往都需要有對操作系統(tǒng)工作機(jī)制的了解和掌握作為基礎(chǔ),因此建議沒有系統(tǒng)學(xué)習(xí)過的同學(xué),找一本相關(guān)的操作系統(tǒng)工作原理書籍認(rèn)真看一下(不用特厚、特專業(yè)、特內(nèi)核的,先以普及知識為主,呵呵!)。
三是基本的硬件基礎(chǔ),由于嵌入式Linux開發(fā)往往是ARM+Linux路線,所以為了能夠在后續(xù)學(xué)習(xí)過程中很好地掌握主流嵌入式微處理器的結(jié)構(gòu)與原理(例如:ARM9),就需要對硬件工作原理有初步的了解和掌握,建議看一下諸如計(jì)算機(jī)組成原理、體系結(jié)構(gòu)等相關(guān)的專業(yè)書籍。
要深入學(xué)習(xí)你可以嘗試以下路線:
(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方面的編程,只有你會應(yīng)用了,才能近一步去了解其內(nèi)核的精髓。
推薦書籍:《UNIX環(huán)境高級編程》(第2版)
(4) 了解ARM的架構(gòu),原理,以及其匯編指令,我們在嵌入式開發(fā)中,一般很少去寫匯編,但是最起碼的要求是能夠看懂a(chǎn)rm匯編。
(5) 系統(tǒng)移植的時(shí)候,就需要你從最下層的bootloader開始,然后內(nèi)核移植,文件系統(tǒng)移植等。而移植這部分對硬件的依賴是非常大的,其配置步驟也相對復(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)核編程范疇的,因而是對linux內(nèi)核和內(nèi)核編程是有要求的。在學(xué)習(xí)前你要想了解linux內(nèi)核的組成,因?yàn)槊恳徊糠忠敿?xì)研究的話足夠可以擴(kuò)展成一本厚書。
以上只不過是大概的框架,在實(shí)際的開發(fā)中還會涉及很多東西,比如:交叉編譯、makefile、shell腳本等等,所以說學(xué)習(xí)嵌入式的周期較長,門檻較高,自學(xué)的話更是需要較強(qiáng)的學(xué)習(xí)能力和專業(yè)功底。只要能堅(jiān)持下來一定會取得成功!
華清遠(yuǎn)見的嵌入式專業(yè)教材比較專業(yè),也很出名,高校圖書館以及外面書店都有賣,你可以去網(wǎng)上搜一下,買本看看,華清遠(yuǎn)見的網(wǎng)站和技術(shù)論壇上面也有很多嵌入式學(xué)習(xí)資料和視頻可以下載,而且更新的速度也很快,LZ沒事可以去轉(zhuǎn)轉(zhuǎn),相信對你會有幫助!