1,介紹最簡單的hello world 驅動程式。。。。之前已經看過了,這部分過
2,模組程式與應用程式的區別
@應用程式從頭到尾按順序執行單個任務。模組程式要先註冊到核心,為的是給調用做準備
@退出時,應用程式的資源系統會回收,模組程式要手動
@模組程式不能像應用程式那樣串連庫函數,它調用的只能是核心中的標頭檔 include/linux ,linux/asm
@模組運行在核心空間,應用程式運行在使用者空間
3,核心中的並發----驅動也應該考慮的問題
驅動程式也是核心程式的一部分,所以這部分介紹了核心編程的注意事項
核心程式不同於應用程式在一段時間內按順序執行就行了,要記住核心是並發的,同一時刻有很多事情發生
4,當前進程指標:current。printk(KERN_INFO " current pid is %d",current->pid);
5,驅動程式標準makefile
obj-m := hello.o 說明有個模組要從hello.o中構造,構造出hello.ko
hello-objs := hello1.o hello2.o 說明由兩個檔案1、2構成
make -C ~/kernel-2.6 M=‘PWD’ modules -C後是核心的代碼目錄 M後為構造模組前返回的目錄
標準makefile模板:
ifneq ($(KERNELRELEASE),)
obj-m :=hello.o
else
KERNELDIR ?= /lib/... 你電腦核心所在位置
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
rm -rf *.o
endif
6,幾個常用的宏
EXPORT_SYMBOL(name); 將name參數導到模組外
MODULE_LICNESE("GPL"); 獲得GPL許可
MODULE_AUTHOR("ZL"); 作者
6,驅動程式參數傳遞
module_param(name,int ,0); name 為參數名字,int為類型