Linux驅動開發要點

Linux驅動開發要點

做LINUX驅動開發,應該具備以下幾樣知識:  
  1.首先讀懂<<LINUX內核完全註釋>>一書  
  2.再讀<<LINUX設備驅動程序>>一書  
  3.再讀<<LINUX操作系統設計與實現>>一書  
  4.英語水平要過關,至少能看懂芯片資料  
  5.在網上下載LINUX設備驅動程序一書的源代碼,試着編譯,若想要編譯通過,首先得下載LINUX內核源代碼,因爲寫驅動的時候需要引用內核源碼時的變量,函數  
   
  以上都假設你目前已經能夠在LINUX上做應用開發的前提下,而且在公司有人能夠偶爾指點你的情況

 

步驟:

1. 學會寫簡單的makefile

2. 編一應用程序,可以用makefile跑起來

3. 學會寫驅動的makefile

4. 寫一簡單char驅動,makefile編譯通過,可以insmod, lsmod, rmmod. 在驅動的init函數裏打印hello world, insmod後應該能夠通過dmesg看到輸出。

5. 寫一完整驅動, 加上read, write, ioctl, polling等各種函數的驅動實現。 在ioctl裏完成從用戶空間向內核空間傳遞結構體的實現。

6. 寫一block驅動, 加上read,write,ioctl,poll等各種函數實現。

7. 簡單學習下內存管理, 這個是最難的,明白各種memory alloc的函數實現細節。這是linux開發的基本功。

8. 學習鎖機制的應用,這個不是最難的但是最容易犯錯的,涉及到很多同步和併發的問題。

9. 看內核中實際應用的驅動代碼。 你會發現最基本的你已經知道了, 大的框架都是一樣的, 無非是read, write, ioctl等函數的實現, 但裏面包含了很多很多細小的實現細節是之前不知道的。 這時候就要考慮到很多別的問題而不僅僅是基本功能的實現。

推薦您看2.6.20中integrated的一個驅動 kvm, 記得是在driver/lguest下,很好玩的, 就是linux下的虛擬機驅動, 代碼不長,但功能強大。有能力的可以自己寫一操作系統按照要求做成磁盤鏡像加載到虛擬機中, 然後客戶機可以有自己的4G虛擬地址空間。

10. 看完驅動歡迎您進入Linux kernel學習中來。

最簡單的方法,跟着ldd(linux devive driver)做一遍。

發佈了51 篇原創文章 · 獲贊 5 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章