首先要編寫驅動文件悠垛,在編寫Makefile文件 蕾额,通過make生成 .ko文件,最后加載到系統(tǒng)中去罗岖,加載命令為insmod hello.ko ?涧至,查看命令 lsmode ,卸載命令 rmmod hello
編寫驅動文件時注意:
1. 必須遵循gpl協(xié)議呀闻,否則內核會不識別化借,MODULE_LICENSE("Dual BSD/GPL");具體可以去百度,這個是必須要有的捡多,一般寫在末尾蓖康。MODULE_AUTHOR("iTOPEET_dz");聲明作者,可寫可不寫垒手。當然還有其他蒜焊,按你自己需要去加
2. module_init(hello_init);
module_exit(hello_exit);聲明開始和結束函數。
編寫Makefile文件時需要注意:
第一個紅框科贬,必須和你的驅動模塊名字相同泳梆。
第二個紅框表明你要用的內核和路徑。
3.簡單示例
#!/bin/bash
#通知編譯器我們要編譯模塊的哪些源碼
#這里是編譯itop4412_hello.c這個文件編譯成中間文件mini_linux_module.o
obj-m += mini_linux_module.o
#源碼目錄變量榜掌,這里用戶需要根據實際情況選擇路徑
#作者是將Linux的源碼拷貝到目錄/home/topeet/android4.0下并解壓的
KDIR := /home/topeet/android/iTop4412_Kernel_3.0
#當前目錄變量
PWD ?= $(shell pwd)
#make命名默認尋找第一個目標
#make -C就是指調用執(zhí)行的路徑
#$(KDIR)Linux源碼目錄优妙,作者這里指的是/home/topeet/android4.0/iTop4412_Kernel_3.0
#$(PWD)當前目錄變量
#modules要執(zhí)行的操作
all:
? ? ? ? make -C $(KDIR) M=$(PWD) modules
#make clean執(zhí)行的操作是刪除后綴為o的文件
clean:
? ? ? ? rm -rf *.o