linux驅動開發教程1

2021-05-22 06:23:49 字數 1078 閱讀 2011

從前天開始學習驅動,感覺不到驅動的精髓。不過隨著時間的流逝我將搞定他。

因為我不是特別動如果我寫的不到位的地方希望大家指正,共同進步 。

裝置驅動

驅動框架:

驅動和普通程式的區別在於他是事件驅動 的,也就是說他不是像普通程式那樣從main()執行,從main()結束。因為驅動是以模組的形式「融合」入系統的,系統是不會結束的所以驅動也談不上「結束」,但是它是有返回的。正是由於它是事件驅動所以,他也不用main()。

驅動程式的特色:

1.事件驅動

2.「融合」入核心

3.不會結束

那麼,這些特色會在以後的學習中體現出來。

首先是我解釋一下「事件驅動」:

這個詞語可以用,事件使能去解釋,這是為了避免碰上「驅動」這個詞語,我們寫的是驅動為什麼還在說事件驅動呢?如果你接觸過物件導向程式設計聽這個詞語應該很耳熟,其實事件驅動在c語言就可以實現了,根本不用更高階語言。那麼,事件驅動的本質是「輪詢」,就是常說的「死迴圈」,這個迴圈是核心在做的操作。通過分時響應各各程序讓我們可以同時進行多個應用。這樣你看電腦的時候才感覺它不是「死」的。

再說「融入」:

這個詞語是我自己發明的,之所以這樣描述是因為我們將自己寫好的「模組」(驅動),插入核心後,不會對核心效率造成影響。其實這一點,可以用「事件驅動」去理解,為什麼呢?「驅動程式」是事件使能的,沒事兒不會執行,不會被加到載入的流程中。所以,它對效率的破壞很低。

不會結束:

這個概念比較複雜,在這裡,有三層含義,一是,驅動本身是不執行的所以說談不上結束,二是,它是[被呼叫,返回]的過程,而不是一定要執行的過程。三是,不會結束也就是不會被重新生成**。

第三層含義是這樣的:

這個程式**段(驅動)是不會死亡的,所以也不用再生。

例如:我們有乙個程式a.out在我們的主目錄中,現有兩個終端一起執行她,那麼系統會分別複製2份這個程式的**段到記憶體中,交給兩個終端執行,無論是程式中的區域性變數,還是,全域性變數,都互相不一致。

而在驅動中,無論有多少使用者呼叫某一裝置時,都將產生,多個程序,但是每個程序的全域性資料區保持一致性。

這些是我現在從學習驅動開始的感悟,希望對大家有所幫助。我會繼續將具體的操作一點一點的寫出來。

Linux驅動基礎開發1

目前,linux軟體工程師大致可分為兩個層次 主要利用c庫函式和linux api進行應用軟體的編寫 從事這方面的開發工作,主要需要學習 符合linux posix標準的api函式及系統呼叫,linux的多工程式設計技巧 多程序 多執行緒 程序間通訊 多工之間的同步互斥等,嵌入式資料庫的學習,ui程...

linux2 6驅動開發系列教程

這段時間一直在做android下的驅動,android驅動底層跟linux如出一轍,所以這裡準備做乙個專題,把linux驅動做乙個總結,為android接下來的驅動開發打好基礎,大致的思想如下 一 linux驅動基礎開發 0 linux驅動基礎開發0 linux 裝置驅動概述 1 linux驅動基礎...

linux驅動開發

這兩天在公司由於一直沒有太過於繁重的任務,於是便給分配了驅動開發的任務,之前一直不明白驅動開發和普通的嵌入式開發到底有什麼區別,然後有沒有經過系統的學習,於是就一直愣在那裡。不過慢慢的還是經過查資料,雖然 沒有編寫出來,但是對於系統的一些東西學習的終於有了一定的了解,感覺這個十分的重要,也為了給自己...