開發linux driver編譯linux核心不可缺少src 且編譯的driver版本與kernel版本必須相近甚至相同
Makefile編譯程式的批次檔,方便開發使用,該檔案內容如下:
obj-m += main.o
all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
2.主程式
#include
#includeMODULE_AUTHOR("K.H");//模組巨集宣告作者MODULE_DESCRIPTION("Linux Device Driver");//模組巨集宣告描述extern void sub();//引用到其他模組的函式MODULE_LICENSE("GPL");//模組巨集宣告憑證
MODULE_VERSION("V0.1");//宣告driver版本
staticint__init main_init(void)//__init(代表初始化後就可以丟棄的程式碼){printk("Steward's driver tutorial, Hello, world!");//模組專屬的printf函式
sub();//引用到其他模組的函式return0;}staticvoid__exit main_exit(void)//__exit =額外的副程式參數{}module_init(main_init);/lib/modules/2.6.35.xxxmodule_exit(main_exit);
======================make結果===========================
產生出main.ko main.mod.c main.mod.o main.o modules.order Module.symvers
檔案用途:
========================================================
Linux下掛載driver的相關命令如下:1. 掛載:insmod <檔名>2. 狀態:lsmod3. 卸載:rmmod <名稱>========================================================
Kconfig 編輯後可以新增並啟動組態選項得選單
存放位子說明:
編譯出來後可以將Makefile與helloworld.c搬到目的資料夾(build image target)
make並產生images
產生出來後,燒至target device
並用debug board切換至以下目錄找到helloworld.ko/kernel/drivers/helloworld/helloworld.ko 
並輸入insmod helloworld.ko
就可以看到hello,world了 大功告成!!!
 
沒有留言:
張貼留言