Linux下驅動模組化編譯與裝載 解除安裝

2021-09-05 03:38:16 字數 1151 閱讀 9694

linux下驅動模組化編譯與裝載、解除安裝

我們在修改完驅動後,如果每次都需要重新編譯核心燒錄的話,太過麻煩了,我們可以通過nfs來掛載根檔案系統、然後驅動程式單獨編譯,再將.ko檔案copy到根檔案系統,動態裝載上去的方式,來減少這種麻煩。具體方法我們看下面。

我們將驅動源程式檔案單獨放到乙個資料夾,然後新建乙個makefile檔案,編輯輸入類似於如下的內容,這是mini2440 lcd背光驅動的makefile。

ifeq ($(kernelrelease),)

# kerneldir ?= /your/target/source/directory/

kerneldir ?=/home/eurphan/learn/arm9learn/kernel/linux-3.18.108

pwd := $(shell pwd)

modules:

$(make) -c $(kerneldir) m=$(pwd) modules

modules_install:

$(make) -c $(kerneldir) m=$(pwd) modules_install

clean:

rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions

.phony: modules modules_install clean

else

obj-m := mini2440_backlight.o

endif

在上面的原始碼中,kerneldir是你的核心原始碼目錄,因為驅動需要使用核心的標頭檔案和鏈結庫,因此是需要指定驅動裝載核心相應的原始碼目錄的。obj-m後面的就是驅動原始碼所生成的.o檔案了,生成多個檔案的需要在這裡全部新增上去。

驅動有了,我們需要裝載到核心上去,我們需要將驅動編輯生成的.ko檔案cp到nfs檔案系統中,然後在開發板控制台中通過insmod命令裝載驅動,解除安裝驅動用rmmod。如果驅動裝載後在/dev目錄中沒有自動生成裝置節點檔案的,我們需要通過mknod命令在/dev中手動建立裝置檔案,示例如下:

cd /dev

mknod backlight c 250 0

在上面的命令中,backlight是裝置檔名,c代表是字元裝置,250是主裝置號,0是次裝置號。

linux下驅動模組化編譯,動態載入以及解除安裝

linux驅動模組化編譯 載入 解除安裝 2010 8 27 硬體平台 omapl 138 軟體平台 linux2.6.32 ubuntu 步驟 1 編寫first driver hello.c檔案,將其放在 linux2.6.32 drivers char路徑下 2 在 linux2.6.32 d...

linux下驅動模組化編譯,動態載入以及解除安裝

linux 驅動模組化編譯 載入 解除安裝 2010 8 27 硬體平台 omapl 138 軟體平台 linux2.6.32 ubuntu 步驟 1 編寫 first driver hello.c 檔案,將其放在 linux2.6.32 drivers char 路徑下 在 linux2.6.32...

linux驅動之模組化程式設計

區別於直接編譯原始碼,可以快速編譯功能 以模組的形式新增到linux系統中,便於測試,而不是反覆修復原始碼進行編譯。包含標頭檔案,並通過module license gpl 告訴核心模組遵從gpl協議,這個事情必須要做。module author cyg 指定模組的作者,可不寫。編輯模組的入口函式,...