[Suzaku:01087] Re: デバイスドライバ

森戸 誠[MORITO Makoto] email@hidden
2007年 12月 6日 (木) 17:41:53 JST


大川様
   森戸です。

 ありがとうございます。

> > MAKEARCH = $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE)
> > LINUXDIR =
> > $(CONFIG_LINUXDIR) KERNELRELEASE = ${shell make -sC
> > $(ROOTDIR)/$(LINUXDIR) kernelrelease}
>
> 上記、3行分が、1行で記述されています。
> 修正を戻して、確認していただけますか?

 メイルにペーストする際におかしくなったようです。Makefileを再掲します。
結果は同じです。
===== 修正した Makefile  ======
MODULES = sid.o
ifdef $(KERNELRELEASE)       # 修正
obj-m := $(MODULES)
else
ROOTDIR=/home/morito/atmark-dist-20071018     # 修正
include $(ROOTDIR)/.config
include $(ROOTDIR)/config.arch         # 修正
MAKEARCH = $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE)
LINUXDIR =$(CONFIG_LINUXDIR)
KERNELRELEASE = ${shell make -sC $(ROOTDIR)/$(LINUXDIR) kernelrelease}

all: modules

modules:
	$(MAKEARCH) -C $(ROOTDIR)/$(LINUXDIR) M=${shell pwd} modules
clean:
	rm -f *.[oas] *.ko *.mod.c .*.d .*.tmp .*.cmd *.symvers  # 修正
	rm -rf .tmp_versions             # 修正
endif
===== Makefile 終わり  ======

また、
MAKEARCH = $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE)
の表現は正しいのでしょうか?

よろしく お願いいたします。


> また、デバイスドライバを初めて作成されるのであれば、
> スターターキットガイドに記載されているサンプルドライバから
> 挑戦されるのが宜しいかと思います。
 デバイスドライバーを作るのは初めてではありません。前のuClinux上では
作って動作させていました。atmark-dist環境では初めてですが…

> -----Original Message-----
> From: email@hidden
> [mailto:email@hidden] On Behalf Of
> Tetsuya OHKAWA
> Sent: Thursday, December 06, 2007 2:32 PM
> To: SUZAKU general discussion list
> Subject: [Suzaku:01086] Re: デバイスドライバ
>
> 大川です。
>
> 森戸 誠[MORITO Makoto] さんは書きました:
> > 森戸と申します。
> >
> >  SUZAKU-V SZ410のデバイスドライバをatmark-dist環境で作ろうとしていま
す。
> >  Linuxについては 素人です。
> >
> >  手始めに linux-2.6.x/drivers/char/sid.cにあるドライバを使って
> > ドライバーの作成を実施しました。
> >
> >  クロス開発環境 atmark-dist-20071018です。
> >  スターターズキットガイドLinux開発編v2.0.0の38ページのMakefileを
> > 使ってコンパイルしました。厳密に言うと 38ページのMakefileには いく
> > つかの誤りがあり、こちらで勝手に修正しました。もしかしたら、この修正
> > に 誤りがあるかもしれません。ご指摘いただければありがたいです。
> >
> > ===== 修正した Makefile  ======
> > MODULES = sid.o
> > ifdef $(KERNELRELEASE)       # 修正
> > obj-m := $(MODULES)
> > else
> > ROOTDIR=/home/morito/atmark-dist-20071018     # 修正
> > include $(ROOTDIR)/.config
> > include $(ROOTDIR)/config.arch         # 修正
> > MAKEARCH = $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE)
> > LINUXDIR =
> > $(CONFIG_LINUXDIR) KERNELRELEASE = ${shell make -sC
> > $(ROOTDIR)/$(LINUXDIR) kernelrelease}
>
> 上記、3行分が、1行で記述されています。
> 修正を戻して、確認していただけますか?
>
> また、デバイスドライバを初めて作成されるのであれば、
> スターターキットガイドに記載されているサンプルドライバから
> 挑戦されるのが宜しいかと思います。
>
>
>
> > all: modules
> >
> > modules:
> > 	$(MAKEARCH) -C $(ROOTDIR)/$(LINUXDIR) M=${shell pwd} modules
> > clean:
> > 	-rm -f *.[oas] *.ko *.mod.c .*.d .*.tmp .*.cmd *.symvers
> > 	-rm ?rf .tmp_versions
> > endif
> > ===== Makefile 終わり  ======
> >
> > これを実行したところ とてつもない量のエラーメッセージが出ました。
> > 対処方法がお判りの方 ご教授お願いいたします。
> >
> >
> >
> > sid.c:99:28: error: asm/suzaku_sid.h: そのようなファイルやディレクトリは
あり
> > ません のような
> > メッセージがあり インクルードのディレクトリ名が asm-ppcのような気もす
る
> > が??
> >
> >
> >
> > ===== ログ  ======
> > make ARCH=ppc CROSS_COMPILE=powerpc-linux- -C
> > /home/morito/atmark-dist-20071018/linux-2.6.x
> > M=/mnt/hgfs/suzaku_win/meti2/410 modules
> > make[1]: ディレクトリ `/home/morito/linux-2.6.18-at2' に入ります
> >   Building modules, stage 2.
> >   MODPOST
> > make[1]: ディレクトリ `/home/morito/linux-2.6.18-at2' から出ます
> > powerpc-linux-gcc     -c -o sid.o sid.c
> > In file included from
> /usr/powerpc-linux-gnu/include/asm-generic/local.h:4,
> >                  from /usr/powerpc-linux-gnu/include/asm/local.h:1,
> >                  from
> /usr/powerpc-linux-gnu/include/linux/module.h:20,
> >                  from sid.c:29:
> > /usr/powerpc-linux-gnu/include/linux/percpu.h: In function
> > ‘__alloc_percpu’:
> > /usr/powerpc-linux-gnu/include/linux/percpu.h:44: error:
> ‘GFP_KERNEL’
> > undeclared (first use in this function)
> > /usr/powerpc-linux-gnu/include/linux/percpu.h:44: error: (Each
> > undeclared identifier is reported only once
> > /usr/powerpc-linux-gnu/include/linux/percpu.h:44: error: for each
> > function it appears in.) In file included from
> > /usr/powerpc-linux-gnu/include/asm-generic/local.h:5,
> >                  from /usr/powerpc-linux-gnu/include/asm/local.h:1,
> >                  from
> /usr/powerpc-linux-gnu/include/linux/module.h:20,
> >                  from sid.c:29:
> > /usr/powerpc-linux-gnu/include/linux/hardirq.h:55:2: error: #error
> > PREEMPT_ACTIVE is too low!
> > In file included from /usr/powerpc-linux-gnu/include/asm/local.h:1,
> >                  from
> /usr/powerpc-linux-gnu/include/linux/module.h:20,
> >                  from sid.c:29:
> > /usr/powerpc-linux-gnu/include/asm-generic/local.h: At top level:
> > /usr/powerpc-linux-gnu/include/asm-generic/local.h:24:
> error: expected
> > specifier-qualifier-list before ‘atomic_long_t’
> > In file included from sid.c:29:
> > /usr/powerpc-linux-gnu/include/linux/module.h:49: error:
> field ‘attr’
> > has incomplete type
> > /usr/powerpc-linux-gnu/include/linux/module.h:60: error:
> field ‘kobj’
> > has incomplete type
> > /usr/powerpc-linux-gnu/include/linux/module.h:220: error: requested
> > alignment is not a constant
> > /usr/powerpc-linux-gnu/include/linux/module.h:240: error:
> field ‘grp’
> > has incomplete type
> > /usr/powerpc-linux-gnu/include/linux/module.h:251: error:
> field ‘list’
> > has incomplete type
> > /usr/powerpc-linux-gnu/include/linux/module.h:310: error:


> > ====中略  =====
> > sid.c:872: error: expected ‘)’ before string constant
> > sid.c:880: error: expected ‘)’ before string constant
> > sid.c:885: error: ‘tmp’ undeclared (first use in this function)
> > sid.c:886: error: ‘board_id’ undeclared (first use in this function)
> > sid.c:886: error: invalid operands to binary >>
> > sid.c:886: error: invalid operands to binary &
> > sid.c:887: error: ‘board_version’ undeclared (first use in this
> > function)
> > sid.c:887: error: invalid operands to binary &
> > sid.c:904: error: ‘struct resource’ has no member named ‘start’
> > sid.c:904: warning: assignment makes integer from pointer without a
> > cast
> > sid.c:906: error: expected ‘)’ before string constant
> > sid.c:918: error: expected ‘)’ before string constant
> > sid.c:923: error: ‘SID_MAJOR’ undeclared (first use in this
> function)
> > sid.c:926: error: expected ‘)’ before string constant
> > sid.c:931: error: request for member ‘owner’ in something not a
> > structure or union
> > sid.c:935: error: expected ‘)’ before string constant
> > sid.c:964: error: too many arguments to function ‘__release_region’
> > sid.c: In function ‘sid_remove’:
> > sid.c:993: error: too many arguments to function ‘__release_region’
> > make: *** [sid.o] エラー 1
> >
> > _______________________________________________
> > suzaku mailing list
> > email@hidden
> > http://lists.atmark-techno.com/mailman/listinfo/suzaku
>
> _______________________________________________
> suzaku mailing list
> email@hidden
> http://lists.atmark-techno.com/mailman/listinfo/suzaku




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