linux驅動入門實驗

2021-04-27 14:28:45 字數 1933 閱讀 2618

*帥得不敢出門  

*c++愛好者灌水天堂   3503799

由於沒有開發板,只好做pc機下linux的模組載入了.原理與開發板的是一樣的.

編寫dri_arh.c源**

然後編譯,我就不寫makefile了 直接命令編譯它

[root@localhost 0430]# gcc -d__kernel__ -dmodule -wall -c -o2 -o dri_arch.o

dri_arch.c

in file included from dri_arch.c:1:

/usr/include/linux/string.h:8:2: warning: #warning using kernel header in

userland!

dri_arch.c: in function `dri_arch_init_module':

dri_arch.c:9: warning: implicit declaration of function `printk'

出現錯誤了,標頭檔案把它包含進去就行了

[root@localhost 0430]# gcc -d__kernel__ -dmodule -wall

-i/usr/src/linux-2.4.20-8/include  -c -o2 -o dri_arch.o

dri_arch.c

生成了.o檔案了.  載入到核心中去(原先我載入過了,先rmmod把它解除安裝掉)

[root@localhost 0430]# insmod dri_arch.o

dri_arch.o: kernel-module version mismatch

dri_arch.o was compiled for kernel version 2.4.20-8custom

while this kernel is version 2.4.20-8.

發現出現系統模組版本不匹配

於是make menuconfig

make

編譯核心,再重新編譯模組,並載入,還是不行,只好修改/usr/src/linux-2.4.20-8/include/linux/versions.h

其原先內容如下:

#define uts_release "2.4.20-8custom"

#define linux_version_code 132116

#define kernel_version(a,b,c) (((a) << 16) + ((b) << 8) + (c))

把其中的custom去掉儲存.

再編譯載入

載入成功了.

$lsmod  (檢視當前已掛載模組,會看到dri_arch)

$dmesg (檢視模組輸出資訊:this is a ****** driver-module!)

$rmmod dri_arch (解除安裝dri_arch)

$lsmod (檢視當前已掛載模組,不再看到dri_arch)

$dmesg (檢視模組輸出資訊:goodbye driver-module!)

實驗結束! 謝謝

Linux驅動入門

核心版本 2.4.22 閱讀此文的目的 學會編寫linux裝置驅動。閱讀此文的方法 閱讀以下2個檔案 hello.c,asdf.c。此文假設讀者 已經能用c語言編寫linux應用程式,理解 字元裝置檔案,塊裝置檔案,主裝置號,次裝置號 會寫簡單的shell指令碼和makefile。1.hello.c...

linux驅動編寫(usb host驅動入門)

usb協議是乙個複雜的協議,目前涉及到的版本就有usb1.0,usb2.0,usb3.0。大家如果開啟kernel usb host目錄,就會發現下面包含了ohci,uhci,ehci,xhci,whci等多種形式的控制器驅動。那麼,對於我們這些不是很了解usb的開發人員,如何了解usb的 結構呢?...

Linux驅動學習筆記 驅動匯流排實驗

在linux系統中,除了硬體匯流排,還有一種軟體虛擬出來的匯流排 驅動匯流排bus 這種驅動匯流排的作用 軟體與硬體 分離,提高程式的復用性 驅動匯流排分三個部分 三者都是在 include linux device.h中定義 struct devicestruct device driverstr...