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