[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", &timesync_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 メーリングリストの案内