LED驅動程式的makefile檔案

2021-07-09 04:09:52 字數 1568 閱讀 9580



#make   //

編譯驅動模組

由於make沒有指定選項和目標,將預設使用makefile檔案,並且先去執行all下的檔案

makefile

的內容:

kern_dir =/opt/workspace/linux-3.2.0-psp04.06.00.10/

//kern_dir

表示核心原始碼目錄,這種方式適用於嵌入式開發的交叉編譯,kern_dir目錄中包含了核心驅動模組所需要的各種標頭檔案及依賴。

all:

make-c $(kern_dir) m=`pwd` modules

clean:

make-c $(kern_dir) m=`pwd` modules clean

rm -rf modules.order

obj-m+=myleds.o

-c表示 指定進入指定的目錄,即kern_dir,是核心源**目錄,呼叫該目錄頂層下的makefile,目標為moudules。

m=`pwd`

選項讓該makefile在構造moudules目標之前返回到模組源**目錄並在當前目錄生成obj-m指定的mvleds.o目標模組。

clean

這個目標表示將模組清理掉

obj-m +=mvleds.o

即指定當前目錄要生成的目標模組,然後moudules目標指向obj-m變數中設定的模組。

拓展:編譯核心很簡單,只需要配置完畢後執行make命令,將指定的檔案編譯進核心

bzimage

或者編譯成模組。

make = makebzimage + make modules

因此如果值編譯核心,即只編譯配置檔案中-y選項,可以直接用命令

make bzimage

如果值編譯模組,即只編譯配置檔案中的-m選項,可以之直接使用命令

make modules

模組可以編譯當然也可以清除,使用命令

make modulesclean

如果只想單獨編譯乙個模組,可以使用命令

makem=drivers/test/ modules //

只單獨編譯drivers/test中的.ko

makem=drivers/test/ modules clean //

清除上面的是在核心目錄下的操作,但當我寫驅動時,我並不可能在核心目錄下編寫,但我編譯時卻要依賴核心中的規則和makefile,所以就有了以下的方法,同時這也是一般的編寫驅動時makefile的格式。

指定核心makefile並單獨編譯

make -c/root/linux-2.6.29 m=`pwd` module

make -c/root/linux-2.6.29 m=`pwd` module clean

//-c 

指定核心makefile的路徑,可以使用相對路徑。

//-m 

指定要編譯的檔案的路徑,同樣使用相對路徑。

編譯生成的模組可以指定存放的目錄

make -c /root/linux-2.6.29 m=`pwd` modules_installinstall_mod_path=/nfsroot

led驅動程式

led drv.c檔案如下 include include include include include include include include include include include include include include include include led opr....

led 驅動程式測試

1.首先驅動程式檔案通過tftp傳輸到開發板上,然後執行insmod s3c led.ko 裝載led驅動模組 2.cat proc devices grep led,顯示led 250 3.建立裝置節點 mknod dev led0 c 250 0 mknod dev led1 c 250 1 m...

字元裝置驅動 LED驅動程式

int main open sys.open led.open write sys.write led.write 第一步 驅動功能實現 static int first drv open struct inode inode,struct file file static ssize t firs...