標籤:

學習linux驅動開發的方法?

有一些基礎了,比如c,接著呢?希望有經驗的人談談自己的學習歷程。


好吧,這是我在知乎發的第一個回答!

四年前我第一次接觸android,開始做底層linux的驅動的開發。

首先,接觸linux操作系統,在你的電腦上裝一個linxu操作系統(建議ubuntu,比較友好),熟悉經常要用的命令,熟悉環境(建議看「鳥哥的linux私房菜」)。

其次,閱讀經典書籍是不可少的,建議先看ldd前四章,大概了解linux驅動的框架,驅動是做什麼的,該如何寫驅動,那本書上有一些例子,可以在你的電腦上編譯,執行看看。後面的章節在結合自己的情況而定。

第三,建議閱讀ulk(understanding the linux kernel)所有的內容,了解linux內核的一些基本知識,在心中建立一個框架,不必完全懂,深入了解就好,以後經常翻翻,受益無窮!然後還有其他的一些經典書籍,網上都有的,都看看吧!

第四,還別著急,這才是你真的進入linux驅動的第一步,花點錢買個開發板吧,然後了解代碼的編譯,下載,看看板子的datasheet,針對自己感興趣的深入研究。建議學習流程,led燈控制---tp---i2c匯流排-----lcd-----camera----flash----wifi/bt等。因為這個裡面牽涉了甚多內核的子系統(input,v4l2,fb等

),所以可能要多話時間看代碼,了解代碼的框架,設計的思想等,只要一步一個腳印,一定會有所成。

第五,因為現在的移動設備大多數都是android的了,所以你就要看看linux kernel在android的作用,然後往上看看,看看hal層的代碼,這些在調試中都是需要的,如果有興趣,更加可以看看framework的代碼了,學習android一些工作機制,類似於surfaceflinger,audioflinger等等。。

這個基本上就是我學習的一個大概過程,read the fucking source code。

祝你成功!


Essential Linux Device Drivers

The Linux Programming Interface: A Linux and UNIX System Programming Handbook


看書,然後結合書看代碼,然後改代碼,調試。

需要指出的是,不同模塊驅動內容不一樣,需要逐一掌握。


佔個坑先


推薦閱讀:

Linux下mysql讀寫速度為什麼很慢?
有哪些適合舊電腦且對新手友好的Linux發行版?
Linux 學習歷程 ?
在Linux下工作的程序員們,你們犯過什麼可怕的錯誤或誤操作?本人刪除過/usr目錄?

TAG:Linux |