Linux驅動開發環境配置(核心源碼樹構造)

來源:互聯網
上載者:User

來源:季義欽BLOG 作者:季義欽

 

初次接觸Linux驅動程式開發,買了一本《Linux裝置驅動程式》,第一件事當然就是構建開發環境了!!!

它上面有一個Hello World的列子:

//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");
return 0;
}

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

module_init(hello_init);
module_exit(hello_exit);

下面我們來看怎麼讓它跑起來:

驅動程式和使用者程式可不一樣,它是作為一個模組串連到核心模組來啟動並執行,運行在核心空間裡面。

所以要運行我們自己構造的模組,需要自己的系統已經配置好核心樹,然後把目標模組和核心樹串連起來運行!但是我們安裝的Linux沒有源碼(至少我的是這樣),更不要說已經編譯好的核心樹了~

(1)下載Linux源碼:

首先查看可以下載的Linux核心源碼包

root@jiq-desktop:~#apt-cache search linux-source

然後選定要下載的源碼包:

root@jiq-desktop:~#apt-get install linux-source-2.6.22

 下載完成後,在/usr/src下,檔案名稱為:linux-source-2.6.32.tar.bz2,是一個壓縮包,然後用

命令解壓即可獲得Linux核心的原始碼:

root@jiq-desktop:/usr/src#tar jxvf linux-source-2.6.32.tar.bz2

 

 

(2)然後在Linux核心源碼目錄/usr/src/linux-source-2.6.32目錄下面用老的方法配置好Linux核心:

root@jiq-desktop:/usr/src/linux-source-2.6.32#make oldconfig

(3)然後執行:

root@jiq-desktop:/usr/src/linux-source-2.6.32#make bzImage

這個過程大概需要一個小時左右。。。執行完成後會在目前的目錄下面產生一個檔案vmlinux.o

(4)然後編譯模組:

root@jiq-desktop:/usr/src/linux-source-2.6.32#make modules

這個過程又是大概一個小時。。。
 

 

(5)然後便可以安裝模組了:

root@jiq-desktop:/usr/src/linux-source-2.6.32#make modules_install

這個過程大概兩分鐘:

 

 

 以上步驟完成以後,會在/lib/modules目錄下面產生一個檔案夾linux-2.6.32-24-generic,至此你差不多已經成了,因為你已經構造好了核心樹!!!

 

下面開始在自己的工程檔案夾下面建立兩個檔案:

hello.c(不用說了)

Makefile(它需要能夠找到核心樹,然後將目標模組連結上去):

 

 注意裡面各種變數的顏色額~有興趣的讀者可以自己去研究一下這個檔案,裡面唯一和hello.c相關的部分就是

obj-m := hello.o 那一行了!第5行表明了核心樹build目錄的位置。

下面在目前的目錄下面執行
root@jiq-desktop:/usr/jiq/DriverProject#make

產生以下檔案

 

 

然後利用insmod命令將模組插入到核心樹 中:

root@jiq-desktop:/usr/jiq/DriverProject#insmod ./hello.ko

模組裝載觸發hello.c的init()方法,輸出hello world,如果沒有的話,是因為其將輸出放到/var/log/syslog中去了。開啟便可以看見你的結果!

卸載目標模組命令是:

root@jiq-desktop:/usr/jiq/DriverProject#rmmod ./hello.ko

至此你已經成功邁出了Linux驅動開發的第一步~

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.