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)做一遍。
學習linux驅動開發的方法
有一些基礎了,比如c,接著呢?希望有經驗的人談談自己的學習歷程。好吧,這是我在知乎發的第乙個回答!四年前我第一次接觸android,開始做底層linux的驅動的開發。首先,接觸linux作業系統,在你的電腦上裝乙個linxu作業系統 建議ubuntu,比較友好 熟悉經常要用的命令,熟悉環境 建議看 ...
Linux驅動開發學習筆記
一 linux裝置驅動基礎 基於linux2.6核心 參考 linux device drivers 3rd edition linux kernel有乙個很好的特性,可以支援在執行是進行擴充套件。這意味著系統啟動執行是,我們仍然可以向kernel新增功能。這種執行時可以被新增到kernel的 稱為...
Linux驅動開發學習(一)
1.軟體驅動 驅動硬體,使硬體處於某種工作模式,提供控制硬體方法 2.驅動的地位 驅動是連線核心與裝置的橋梁 1.字元裝置 字元裝置驅動 字元裝置檔案 2.網路裝置 網路裝置驅動 3.塊裝置 塊裝置驅動 塊裝置檔案 1.驅動編寫 2.驅動編譯 3.驅動使用 三要素 1.入口 載入 module in...