Linux驅(qū)動程序開發(fā)學習步驟
1. 學會寫簡單的makefile
2. 編一應用程序,可以用makefile跑起來
3. 學會寫驅(qū)動的makefile
4. 寫一簡單char驅(qū)動,makefile編譯通過,可以insmod, lsmod, rmmod. 在驅(qū)動的init函數(shù)里打印hello world, insmod后應該能夠通過dmesg看到輸出。
5. 寫一完整驅(qū)a動, 加上read, write, ioctl, polling等各種函數(shù)的驅(qū)動實現(xiàn)。 在ioctl里完成從用戶空間向內(nèi)核空間傳遞結(jié)構(gòu)體的實現(xiàn)。
6. 寫一block驅(qū)動, 加上read,write,ioctl,poll等各種函數(shù)實現(xiàn)。
7. 簡單學習下內(nèi)存管理, 這個是最難的,明白各種memory alloc的函數(shù)實現(xiàn)細節(jié)。這是linux開發(fā)的基本功。
8. 學習鎖機制的應用,這個不是最難的但是最容易犯錯的,涉及到很多同步和并發(fā)的問題。
9. 看內(nèi)核中實際應用的驅(qū)動代碼。 你會發(fā)現(xiàn)最基本的你已經(jīng)知道了, 大的框架都是一樣的, 無非是read, write, ioctl等函數(shù)的實現(xiàn), 但里面包含了很多很多細小的實現(xiàn)細節(jié)是之前不知道的。 這時候就要考慮到很多別的問題而不僅僅是基本功能的實現(xiàn)。
推薦您看2.6.20中integrated的一個驅(qū)動 kvm, 記得是在driver/lguest下,很好玩的, 就是linux下的虛擬機驅(qū)動, 代碼不長,但功能強大。有能力的可以自己寫一操作系統(tǒng)按照要求做成磁盤鏡像加載到虛擬機中, 然后客戶機可以有自己的4G虛擬地址空間。
10. 看完驅(qū)動歡迎您進入Linux kernel學習中來。
最簡單的方法,跟著ldd(linux devive driver)做一遍。