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