時(shí)間:2019-06-18 00:00:00 來(lái)源:信盈達(dá) 作者:信盈達(dá)
從用戶的角度:我們用的鼠標(biāo)、鍵盤、無(wú)線網(wǎng)卡等都需要安裝相對(duì)應(yīng)的驅(qū)動(dòng)程序后才能正常使用這些設(shè)備。
從開發(fā)者的角度:驅(qū)動(dòng)是直接和硬件打交道的軟件,可以使計(jì)算機(jī)和設(shè)備進(jìn)行通信的特殊程序,相當(dāng)于硬件的接口,操作系統(tǒng)或應(yīng)用程序只能通過(guò)這個(gè)接口才能控制硬件設(shè)備進(jìn)行工作。向下,驅(qū)動(dòng)程序需要控制硬件進(jìn)行相應(yīng)的操作;向上,驅(qū)動(dòng)程序需要向應(yīng)用程序提供操作硬件的接口,所以驅(qū)動(dòng)在整個(gè)嵌入式系統(tǒng)中處于一個(gè)中間的位置,具有承上(應(yīng)用程序)啟下(底層硬件)的作用。
一、 有了操作系統(tǒng)后,驅(qū)動(dòng)實(shí)現(xiàn)起來(lái)反而變得更加復(fù)雜,那么還要操作系統(tǒng)干什么?
總是有初學(xué)者會(huì)問,既然驅(qū)動(dòng)能起到承上啟下的作用,能串聯(lián)應(yīng)用程序和硬件組成一個(gè)完整的嵌入式系統(tǒng),為什么還要有操作系統(tǒng)這樣復(fù)雜的東西呢,反而讓我們的驅(qū)動(dòng)學(xué)習(xí)起來(lái)更加復(fù)雜?沒有操作系統(tǒng)只有驅(qū)動(dòng)的確能構(gòu)建一嵌入式系統(tǒng),那這個(gè)系統(tǒng)就是我們通常所說(shuō)的裸機(jī)系統(tǒng)或者單片機(jī)系統(tǒng),只能完成一些簡(jiǎn)單的操作,如果有了操作系統(tǒng)就能具有以下功能:
a. 一個(gè)復(fù)雜的軟件系統(tǒng)需要處理多個(gè)并發(fā)任務(wù),如果沒有操作系統(tǒng),想完成多任務(wù)并發(fā)是很困難的。
b. 操作系統(tǒng)可以給我們提供內(nèi)存管理機(jī)制,一個(gè)典型的例子就是,對(duì)含有MMU32位處理器而言,操作系統(tǒng)可以讓每個(gè)進(jìn)程都可以獨(dú)立的訪問4G的內(nèi)存空間。
那么操作系統(tǒng)的存在給驅(qū)動(dòng)提供了什么樣的好處呢?有些學(xué)習(xí)過(guò)單片機(jī)的同學(xué)老是抱怨說(shuō),我學(xué)習(xí)裸機(jī)驅(qū)動(dòng)感覺很簡(jiǎn)單,當(dāng)學(xué)習(xí)帶有操作系統(tǒng)的驅(qū)動(dòng)的時(shí)候,十分復(fù)雜,感覺太難。事實(shí)確實(shí)是這個(gè)樣子,那為什么要這么做呢?其實(shí)操作系統(tǒng)就是通過(guò)給驅(qū)動(dòng)制造麻煩,從而來(lái)達(dá)到給上層應(yīng)用提供便利的目的:操作系統(tǒng)提供給應(yīng)用程序統(tǒng)一的系統(tǒng)調(diào)用接口來(lái)訪問對(duì)應(yīng)的驅(qū)動(dòng)程序,從而來(lái)操作硬件設(shè)備,起到了分層的作用,寫應(yīng)用程序的人不用關(guān)心底層驅(qū)動(dòng)怎么實(shí)現(xiàn),只需要調(diào)用統(tǒng)一的接口就可以,做驅(qū)動(dòng)的人,只需要按照操作系統(tǒng)提供的框架去完成驅(qū)動(dòng)程序就可以了。
二、如何學(xué)習(xí)Linux驅(qū)動(dòng)開發(fā)?
Linux驅(qū)動(dòng)的學(xué)習(xí)涉及應(yīng)用層(例如訪問字符驅(qū)動(dòng)以文件的形式,所以需要文件IO知識(shí))和硬件(操作硬件需要看原理圖,芯片手冊(cè),讀寫寄存器等)等方面的知識(shí),涉及知識(shí)面廣,架構(gòu)多而復(fù)雜,所以初學(xué)者一定要有一定的Linux應(yīng)用層和單片機(jī)開發(fā)相關(guān)的知識(shí)儲(chǔ)備,這樣上手起來(lái)可能會(huì)更加容易一點(diǎn)。另外,對(duì)于初學(xué)者,在學(xué)習(xí)驅(qū)動(dòng)的時(shí)候,不能太糾結(jié)于細(xì)節(jié)(如為弄清某段代碼,不斷跟源代碼),最好從使用的角度,宏觀上、框架上去進(jìn)行把握,等熟悉了之后,再慢慢深入。另外需要多實(shí)踐,盡量有自己的開發(fā)板及外圍器件,親自動(dòng)手操作,而不是只看視頻或者閱讀書籍。
三、 初步學(xué)習(xí)完后,要具備什么樣的能力?
a. 熟悉Linux驅(qū)動(dòng)開發(fā)流程,能獨(dú)立開發(fā)簡(jiǎn)單的驅(qū)動(dòng)。
b. 熟悉常用的Linux驅(qū)動(dòng)框架(平臺(tái)總線模型,I2C、SPI驅(qū)動(dòng)框架,framebuffer驅(qū)動(dòng)框架)。
免費(fèi)領(lǐng)取試聽卡
申請(qǐng)已經(jīng)提交
老師會(huì)馬上給您安排試聽課程!
申請(qǐng)出錯(cuò)了
您可以加老師QQ:914865590報(bào)名咨詢!