1. 程式人生 > >Linux_Ubuntu下驅動開發環境搭建(14.04, 15親測可行)

Linux_Ubuntu下驅動開發環境搭建(14.04, 15親測可行)

Linux_Ubuntu下驅動開發環境搭建

linux下驅動需要編譯核心

1.首先是基本的開發工具,如gcc,gdb,make等

apt-get install build-essential

2.其次是找到你所用的ubuntu的版本號:uname -r 

然後檢視你要下載的原始碼包:apt-cache  search  linux-source 這個命令會得到可以下載的原始碼包

3.下載源:sudo apt-get   install  linux-source-3.2.0

會預設下載到/usr/src中,進入該資料夾並解壓縮sudo  tar jxvf  linux-source-3.2.0.tar.bz2

得到源 /usr/src/linux-source-xxx

4.配置核心:有make oldconfig(命令列),make menuconfig(圖形介面)

在此選用 :oldconfig來配置,進入/usr/src/linux-source-xxx並輸入sudo make oldconfig  在配置的過程中如果需要選y,n,m直接點回車即可

(其中y指的是編譯進核心,n是不編譯,m指的是編譯成模組)

5.然後開始編譯核心:在/usr/src/linux-source-xxx下執行sudo make(需要等幾個小時),然後sudo bzImage,結束後,可以看到在當前目錄
下生成了一個新的檔案:vmlinux,其屬性為-rwxr-xr-x。

6.編譯模組:還在在當前目錄,make modules

安裝模組:make modules_install

結束後在/lib/modules下生成xxx(版本號)和xxx-generic這兩個目錄

7.檢測是否成功:

編寫一個hello.c測試程式:可以放在/home下自己使用者的目錄下,如/home/danpi/drive

//hello.c
#include<linux/init.h>
#include<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello,world\n");


return0;
}
static void hello_exit(void)
{
printk(KERN_ALERT"Goodbye,cruel world\n");

}
module_init(hello_init);
module_exit(hello_exit);

然後編寫Makefile,在當前目錄下新建Makefile檔案

#Makefile

obj-m:=hello.o
KERNELDIR:=/lib/modules/$(shell uname -r)/build
PWD:=$(shell pwd)
modules:
(這裡Tab鍵
)$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

注意Makefile中的Tab鍵

然後在/home/danpi/drive目錄下分別執行:

make

insmod hello.c

rmmod hello

但是終端並沒有出現hello world等,因為虛擬機器的緣故,

這些資訊已經寫入了:/var/log/syslog 中

cat/var/log/syslog即可檢視

over~