[[SiioLaboratory]]

*パラレルポートを読み書きするLinuxのデバイスドライバを作る(未完です) [#m5be3e9a]

Linux kernel 2.6に対応した、パラレルポート(プリンタポート)を読み書きする
簡単なデバイスドライバを作ってみる。

参考ホームページ
- http://lwn.net/Articles/driver-porting/
-- kernel 2.5からの変更点の解説
- http://web.yl.is.s.u-tokyo.ac.jp/~sumii/linux/writing-linux-driver 
-- kernel 2.2(?)用で古いけどわかりやすい
- http://www.mech.tohoku-gakuin.ac.jp/rde/contents/linux/drivers/index_jp.html
-- これも2.2用かな

** とりあえず何もしない超簡単なKernelのローダブルモジュールを作ってみる [#pca98cd5]

適当なディレクトリに以下のようなhello.cを作る。

 #include <linux/init.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 
 MODULE_LICENSE("Dual BSD/GPL");
 
 static int hello_init(void)
 {
     printk(KERN_ALERT "Hello, world?n");
     return 0;
 }
 
 static void hello_exit(void)
 {
     printk(KERN_ALERT "Goodbye, cruel world?n");
 }
 
 module_init(hello_init);
 module_exit(hello_exit);

同じ場所に以下のようなMakefileをつくる。(default:の次の行の行頭はタブであること)

 ifneq ($(KERNELRELEASE),) 
 obj-m := hello.o 
 else 
 KDIR := /lib/modules/$(shell uname -r)/build 
 PWD := $(shell pwd) 
 default: 
         $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules 
 endif 

そこでmakeすると、hello.koが出来る。

suになって、
 /sbin/insmod hello.ko
とするとモジュールがロードされる。
 /sbin/rmmod hello.ko
とするとモジュールがアンロードされる。

 cat /var/log/message
を見ると、最後の方に、
printkで指定したメッセージが残っているはずである。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS