linux字元裝置驅動程式學習實驗記錄

2021-04-20 20:50:26 字數 1460 閱讀 8787

編譯上述檔案:命令如下: 

gcc -d__kernel__ -dmodule -dlinux -i /usr/local/src/linux2.4/include -c -o hello.o hello.c

測試:a> 測試環境為虛擬機器下面的redhat9.0,內河2.4.20-8,

b> 終端執行命令如下: telinit 3 登陸字元模式,這裡因為想看一下驅動程式的輸出,應當使用登陸終端,在x桌面下的終端一般是看不到這些輸出的。

c> 測試步驟:# cd /root/hello

# insmod hellodriver.o

# rmmod hellodriver.o

ok,這樣,就可以輕鬆測試驅動程式了。記錄一下,以示鼓勵。

源**hellod.c,編譯後驅動為hellod.o

編譯方法同上:

gcc -d__kernel__ -dmodule -dlinux -i /usr/local/src/linux2.4/include -c -o hello.o hello.c  虛擬字元裝置/dev/hello,驅動就利用上面的驅動程式。稍作修改。這部分主要參考周立功 magicarm實驗指導書

程式如下:

#include

#include

#include

module_license("gpl");

static int hello_open(struct inode* inode,struct file *filp)

static struct file_operations hello_fops=

;static int __init hello_init ()

static void __exit hello_exit ()

module_init(hello_init);

module_exit(hello_exit);

這部分多加了乙個fops結構體,主要是因為我們想通過open 開啟我們的虛擬裝置而準備的,好歹要加個open操作,要不然說不過去,而且我們的這個結構體和成員函式都很簡單。只是作為測試而已。

好了,下面開始測試:

測試程式:test.c  編譯方法: gcc test.c –o test

#include

#include

void main()

我們的測試程式也很簡單,編譯就是平常的編譯應用程式的命令就可以了。接下來就可以執行了。還有幾個工作要做:

首先:

:# mknod /dev/hello c 236 0        //這裡建立裝置節點hello

:  #insmod hello.o                //安裝裝置驅動

:   # ./test            //測試,可以看到開啟裝置成功。你還可以進行比較,建立另乙個沒有驅動的裝置號節點進行測試,例如237 0 ,然後修改測試程式並執行,發現開啟失敗,從而可以驗證我們的驅動是可以應用的。

linux裝置驅動程式 字元裝置驅動程式

先留個 有一起學習驅動程式的加qq295699450 字元裝置驅動 這篇比較惱火。載入成功,但是讀不出來資料,有知道怎麼回事的,留個言,一起討論下 資料結構 struct scull mem struct scull dev dev 整個驅動程式 如下 include include include...

Linux裝置驅動程式 字元裝置驅動程式

1.檢視主裝置號,次裝置號 進入 dev目錄執行ls l,第四,五列分別為主次裝置號,10,180,1,5,這些是主裝置號,而60,63這些就是次裝置號 130 shell android dev ls l crw rw r system radio 10,60 1969 12 31 21 00 a...

Linux裝置驅動程式 字元裝置驅動程式設計

linux對裝置的操作與對檔案的操作是一樣的,可以看到乙個裝置所對應的檔案。我們平時用的read write等函式也可以用於裝置檔案。字元裝置 以字元為單位 按照順利操作 沒有快取區,故不支援隨機讀寫 例外 幀快取裝置,如顯示卡,是可以隨機訪問的 裝置號由主裝置號與次裝置號組成。主裝置號標識裝置對應...