1. 程式人生 > >Ubuntu 14.04上驅動開發環境配置,及最簡單一個驅動編寫。

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