[Suzaku:01558] Re: デバイスドライバに関する質問

mizo email@hidden
2009年 7月 28日 (火) 18:37:32 JST


溝渕です。

Ken-ichiro Ishikawa wrote:
>  FPGAの出力を受け取るためのキャラクタ型デバイスドライバを開発したつもりになって、
> SUZAKUに書き込んでinsmodしてみました。
> insmodそのものはエラーもなく実行できたのですが、lsmodとしてみると
> 
> Module                  Size  Used by    Not tainted
> timesync_driver 2928 0 - Live 0xc3007000
> 
> と253と表示されるべきところが2928と表示され、
1行目のヘッダ部分に2番目の項目はSizeであると書いてあります。ATDEなどで
[ATDE ~]$ lsmod
とすると2番目の項目がメジャー番号で無いことがわかると思います。

> 実際にアプリケーションからオープンしようとするとオープンできません。
何をオープンしようとしたのでしょうか?

>  SUZAKU上で
> ls /dev
> としても開発したデバイスドライバであるtimesync_driverは表示されません。
mknodで作成してみてください。

# mknod timesync_driver c 253 0

>  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 mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/suzaku
> 




suzaku メーリングリストの案内