本人學(xué)生黨一枚,跟著韋東山老師的視頻學(xué)習(xí)嵌入式已經(jīng)有一年了,算剛剛?cè)腴T吧,下面總結(jié)一下個(gè)人的一些學(xué)習(xí)心得。
學(xué)習(xí)驅(qū)動(dòng),需要學(xué)習(xí)驅(qū)動(dòng)編程和應(yīng)用編程,其中驅(qū)動(dòng)是底層,應(yīng)用作為上層。
一、linux系統(tǒng)編程學(xué)習(xí)建議
在看韋東山的第二期視頻之前,一定要先學(xué)習(xí)一下linux應(yīng)用編程,應(yīng)用編程也叫做系統(tǒng)編程,我們?cè)趌inux終端上輸入: man open;man read ;man write....可以看到很多C庫實(shí)現(xiàn)的函數(shù)接口,學(xué)習(xí)應(yīng)用編程就是學(xué)習(xí)這種API的使用,了解進(jìn)程、線程、等概念。
二、linux驅(qū)動(dòng)編程學(xué)習(xí)建議
學(xué)完linux系統(tǒng)編程之后,就可以開始學(xué)習(xí)驅(qū)動(dòng)了。至于為什么要先學(xué)習(xí)linux系統(tǒng)編程再來學(xué)習(xí)驅(qū)動(dòng),因?yàn)樵诘诙诘尿?qū)動(dòng)視頻里,韋東山老師講解涉及到的應(yīng)用程序比較少,而我們測(cè)試驅(qū)動(dòng)時(shí),每個(gè)應(yīng)用程序的API都要百度的話,你可以想象一下自己的效率以及知識(shí)體系的完整性咯,所以建議學(xué)好linux系統(tǒng)編程后,可以一邊學(xué)習(xí)韋老師的第二期驅(qū)動(dòng),然后自己寫測(cè)試程序。
那么驅(qū)動(dòng)學(xué)習(xí),我們?cè)搶W(xué)什么?有兩點(diǎn):
(1)驅(qū)動(dòng)框架:
百度一下:字符設(shè)備驅(qū)動(dòng)框架,你就明白,其他驅(qū)動(dòng)的也是類似!
對(duì)于驅(qū)動(dòng)框架,無需你們?nèi)?chuàng)新,能讓你創(chuàng)新的就不是什么“框架”了,所以不要糾結(jié)自己什么時(shí)候能夠?qū)懗龈玫目蚣,你能做的只有遵從?nèi)核做好的框架,在這個(gè)框架之內(nèi)對(duì)自己寫的代碼進(jìn)行有限的“創(chuàng)新”。又如,網(wǎng)卡驅(qū)動(dòng),SD卡驅(qū)動(dòng)等等,這些都是標(biāo)準(zhǔn)化的接口或者協(xié)議,同樣的,不要我們?nèi)?chuàng)新,也不需要去完全了解這些協(xié)議的含義或者實(shí)現(xiàn)方法,應(yīng)該捉住重點(diǎn),分析芯片的特性,對(duì)它們進(jìn)行移植,最后測(cè)試成功就行~當(dāng)然,你應(yīng)該在這個(gè)過程中積累相關(guān)的知識(shí)!
(2)內(nèi)核API
需要知道,內(nèi)核API和"linux系統(tǒng)編程學(xué)習(xí)建議"里談到應(yīng)用API是不一樣的,它們的關(guān)系就像是:
應(yīng)用API是一個(gè)"空殼"的指令,而內(nèi)核API更像是實(shí)現(xiàn)這個(gè)指令的一系列工作細(xì)節(jié),當(dāng)這個(gè)"指令"下達(dá)之后,內(nèi)核API就根據(jù)指令的內(nèi)容去執(zhí)行要做的任務(wù),所以內(nèi)核API是真正實(shí)現(xiàn)一個(gè)功能的具體執(zhí)行方法。當(dāng)然,我這樣說是為了把應(yīng)用程序API和內(nèi)核API作一個(gè)形象的類比,你也可以有自己的理解,不需要死記硬背,寫驅(qū)動(dòng)寫得多了、也測(cè)試過了,你就會(huì)深刻體會(huì)到這種類比模型。
2015年5月12日 |