我的Debian2.6.26 入門驅動

    在linux寫驅動要比windows下簡單的多,不過剛開始驅動環境的搭建耗了我不少時間,下面主要說下我的第一個驅動的完整過程。
    一、下載內核源碼.
    很簡單,apt-get install linux-source-2.6.26,下載之後解壓tar jxvf linux-source-2.6.26.tar.bz2。
    二、配置並編譯內核
    配置使用默認的就可以,make oldconfig。然後是編譯,make。編譯的時間比較長。編譯之後會在當前文件夾生成一個文件vmlinux。
    三、編譯和安裝模塊
    make modules, make modules_install
    執行結束之後,會在/lib/modules下生成新的目錄/lib/modules/2.6.26/。 在隨後的編譯模塊文件時,要用到這個路徑下的build目錄。至此,內核編譯完成。可以重啓一下系統。
   
    這時候編譯的時候就不會找不到delay.h之類的頭文件了。下面寫一個驅動的框架。
這是我寫的CAN總線的驅動,摘了個框架出來,在2.6內核下,模塊計數的加減要用try_module_get和module_put,然後就是makefile的編寫

然後make就可以了,寫驅動程序的時候,如果定義一個沒有形參的函數,括號裏一定要寫上void,否則會有一個警告,雖然沒什麼大礙,不過有警告很不爽,看來養成良好的變成習慣也很重要,make之後會生成一個can_bus.ko,下面的就簡單了

1、安裝模塊insmod can_bus.ko

    如果要想看到輸出信息,可以用cat /var/log/messages或者切換到文本界面,直接就能在控制檯看到輸出:can_bus major num = 249,這是我這裏顯示的,就是說生成的主設備號是249,用lsmod可以查看模塊是否加載了


2、創建設備文件
    mknod /dev/can_bus c 249 0,上面提到的249就用到了,我一直在想,當我使用open打開can_bus設備的時候,怎麼跟我的驅動關聯起來,這個249就是關鍵了,剛開始的時候,我就隨便寫了個主設備號,結果怎麼也打不開設備。

3、測試

如果成功打開就能看到控制檯open can bus的輸出,這時,一個完整的驅動就差不多了。要卸載模塊,使用rmmod can_bus即可。

4、開機自動加載
    差不多就是還差一點,驅動不可能每次都要手動去加載,我想讓驅動開機的時候自動加載,這就要修改rc.local文件,輸入vim /etc/init.d/rc.local,在文件的最後兩行添上
insmod /can/can_bus.ko
mknod /dev/can_bus c 249 0
我的can_bus.ko是放在/can目錄下的,讀者可自行修改,這下就完整了,重啓電腦,在做下上面的測試,OK了,不用手動去加載了,大功告成。

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