linux驅動開發環境配置(核心原始碼樹構造)
初次接觸linux驅動程式開發,買了一本《linux裝置驅動程式》,第一件事當然就是構建開發環境了!!!
它上面有乙個hello world的列子:
#include #include module_license("dual bsd/gpl");
static int hello_init(void)
static void hello_exit(void)
module_init(hello_init);
module_exit(hello_exit);
下面我們來看怎麼讓它跑起來:
驅動程式和使用者程式可不一樣,它是作為乙個模組連線到核心模組來執行的,執行在核心空間裡面。
所以要執行我們自己構造的模組,需要自己的系統已經配置好核心樹,然後把目標模組和核心樹連線起來執行!但是我們安裝的linux沒有原始碼(至少我的是這樣),更不要說已經編譯好的核心樹了~
root@jiq-desktop:~#apt-cache search linux-source
root@jiq-desktop:~#apt-get install linux-source-2.6.22
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驅動開發的第一步~
**:
Linux驅動開發環境配置 核心原始碼樹構造
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 u...
Linux驅動開發環境配置 核心原始碼樹構造
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 u...
Linux驅動開發環境配置 核心原始碼樹構造
root jiq desktop apt cache search linux source root jiq desktop apt get install linux source 2.6.22 命令解壓即可獲得linux核心的源 root jiq desktop usr src tar jxv...