歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> ARM:一個簡單的字符設備驅動

ARM:一個簡單的字符設備驅動

日期:2017/3/1 10:48:05   编辑:Linux編程

工作需要,開始學習驅動開發。從課本上學習到的第一個簡單的驅動開發及調試,記錄如下。

建立源文件chardev.c,文件內容如下:

Makefile如下:

直接make,得到chardev.ko。

然後可以用insmod和rmmod轉載和卸載該驅動。

運行insmod chardev.ko,然後我們cat /proc/devices查看設備信息,可以看到以下信息:

這裡數字250對應代碼中的MAJOR_NUM值,在insmod後如果看不到對應的信息(如250 chardev),原因是已經有這樣的設備存在了,可以修改一個沒有的值。

然後我們可以建立設備節點,mknod /dev/chardev c 250 0,那麼在/dev下就可以找到對應的設備文件,此時我們就可以對這個設備文件進行操作。

以下是對設備文件/dev/chardev操作的測試代碼chardevtest.c,這個測試工具打開設備文件,往設備文件中寫入一個整數,然後再讀取這個整數並顯示:

直接gcc -o chardevtest chatdevtest.c編譯成chardevtest,然後運行,運行時輸入1,然後再讀取設備值並顯示在屏幕上。

注:

1.上面chardev_init()函數返回必須為0,否則會報-1 Device or resource busy的錯誤。

2.代碼裡有prink驅動打印的函數,內核打印函數只有在原屏幕上能打印出來,一般的終端登錄工具上insmod和rmmod時將無法打印,此時會將

打印寫到/var/log/message文件中。

3.在用測試程序打開文件時,驅動會調用read函數,從chardev_var中讀取數值並顯示。我們輸入一個整數,然後驅動會調用write將數值寫入chardev_var中。

這個過程可以(只能)在原屏幕上打印出來。

至此,測試結束。

Copyright © Linux教程網 All Rights Reserved