Ubuntu 14.04上驅動開發環境配置,及最簡單一個驅動編寫。
開發ubuntu 14.04 本機使用的驅動程式。
安裝開發工具:
* apt-get install build-essential
建2個檔案:
最簡單的驅動程式碼 Hello.c
/*0 * hello.c * * Created on: May 14, 2015 * Author: neo */ #include "linux/init.h" #include "linux/module.h" static int hello_init(void) { printk(KERN_ALERT "Hello World linux_driver_module\n"); return 0; } static void hello_exit(void) { printk(KERN_ALERT "Goodbey linux_driver_module\n"); } module_init(hello_init); module_exit(hello_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("lpj");
建個Makefile
#sample driver module
obj-m := hello.o
KDIR = <span style="color:#ff0000;">/lib/modules/3.13.0-32-generic/build/</span>
all:
$(MAKE) -C $(KDIR) M=$(PWD)
.PHONY:clean
clean:
rm -f *.mod.c *.mod.o *.ko *.o *.tmp_versions
編譯: make
編譯成功之後會生成相應有ko檔案,也就是我們想要的驅動了.
檢視ko模組的資訊 modinfo hello.ko
插入模組 insmod hello.ko
如果出現: Invalid module format 錯誤,可能是 Makefile 的KDIR 是否指向了錯誤的版本,最好用 uname -r 命令檢視版本,比較下是否相同。
驅動就安裝完成了。
解除安裝模組: rmmod hello
如果先在另一終端中執行: sudo cat /proc/kmsg 就可以看到有 hello world 列印。
---------------------
如果驅動不是為本機用的,則需要下載目標版本的原始碼並編譯。比如:
1. 檢視源內的核心原始碼類表
* apt-cache search linux-source
2. 下載安裝核心原始碼:
* sudo apt-get install linux-source-xxxx
* 將原始碼解壓到/usr/src/目錄後,進入linux-source-(版本號)目錄中執行下面幾個命令:
* sudo make oldconfig 或 menuconfig
* sudo make prepare
* sudo make scripts
* sudo make modules
* sudo make modules_install 會安裝到/lib/modules$ 中
3. makefile 指向/lib/modules/中指定的路徑。就可以編譯了。
參考:
http://blog.csdn.net/acanoe/article/details/7404595
http://www.cnblogs.com/hoys/archive/2010/10/29/1864536.html