Linuxデバイスドライバ開発 はじめの一歩

何もしないデバイスドライバを書いてみる。
ソースファイル名は skel_drv.c

  1. #include <linux/init.h>  
  2. #include <linux/module.h>  
  3.   
  4. MODULE_LICENSE("GPL v2");  
  5.   
  6. static int skel_init(void)  
  7. {  
  8.     pr_info("%s\n", __FUNCTION__);  
  9.     return 0;  
  10. }  
  11.   
  12. static void skel_exit(void)  
  13. {  
  14.     pr_info("%s\n", __FUNCTION__);  
  15. }  
  16.   
  17. module_init(skel_init);  
  18. module_exit(skel_exit);  

Makefileはシンプルに1行だけ

obj-m := skel_drv.o

Makeの仕方は

$ make -C /lib/modules/`uname -r`/build M=`pwd` modules

クリーンする方法は

$ make -C /lib/modules/`uname -r`/build M=`pwd` modules clean

デバイス出来上がったデバイスドライバのロードは

$ sudo insmod skel_drv.ko

アンロードは

$ sudo rmmod skel_drv

実行確認

$ dmesg | tail
 :
[472924.981255] skel_drv: loading out-of-tree module taints kernel.
[472924.984092] skel_drv: module verification failed: signature and/or required key missing - tainting kernel
[472925.004224] skel_init
[472936.566017] skel_exit

これだけで、デバイスドライバを作った気になれる。

ソースコード ダウンロード

 

Linuxデバイスドライバ開発

 

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS