*帥得不敢出門
*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...