[Suzaku:01557] デバイスドライバに関する質問
Ken-ichiro Ishikawa
email@hidden
2009年 7月 28日 (火) 18:21:40 JST
SUZAKUメーリングリストの皆様。
石川と申します。
度々質問申し訳ありません。
デバイスドライバに関する質問です。
FPGAの出力を受け取るためのキャラクタ型デバイスドライバを開発したつもりになって、
SUZAKUに書き込んでinsmodしてみました。
insmodそのものはエラーもなく実行できたのですが、lsmodとしてみると
Module Size Used by Not tainted
timesync_driver 2928 0 - Live 0xc3007000
と253と表示されるべきところが2928と表示され、
実際にアプリケーションからオープンしようとするとオープンできません。
SUZAKU上で
ls /dev
としても開発したデバイスドライバであるtimesync_driverは表示されません。
timesync_driverの初期化部分は
static int __init timesync_init(void)
{
int error;
error = register_chrdev(253, "timesync", ×ync_fops);
if(error < 0){
printk("Timesync driver can't get major number 253\n");
return error;
}
timesync_major = error;
printk("Timesync driver initizalized !\n");
return 0;
}
となっています。
insmodしてもTimesync driver can't get major number 253は表示されません。
module_init(timesync_init);
は宣言しています。
Makefileの主要部分は次のとおりです。
MODULES = timesync_driver.o
MODULE = timesync_driver.ko
ifneq ($(KERNELRELEASE), )
obj-m := $(MODULES)
else
ROOTDIR = /home/ishikawa/atmark-dist-20090318
ROMFSDIR = $(ROOTDIR)/romfs
include $(ROOTDIR)/.config
include $(ROOTDIR)/config.arch
MAKEARCH = $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE)
ROMFSINST = romfs-inst.sh
PATH := $(PATH):$(ROOTDIR):$(ROOTDIR)/tools:$(GCCDIR):$(GCCDIR)/bin
LINUXDIR = $(CONFIG_LINUXDIR)
KERNELRELEASE = ${shell make -sC $(ROOTDIR)/$(LINUXDIR) kernelrelease}
modules:
$(MAKEARCH) -C $(ROOTDIR)/$(LINUXDIR) M=${shell pwd} modules
デバイスドライバ開発時には特別なことをしなければならないのでしょうか?
それとも根本的に間違っているのでしょうか?
分かる方教えてください。
suzaku メーリングリストの案内