[Armadillo:00734] Re: atmark-dist-20051017 のpcmcia-csについて
Masahiro Hanada
email@hidden
2005年 12月 14日 (水) 20:56:47 JST
花田です。
<email@hidden> wrote:
> Armadillo-9でpcmciaカードのドライバーを作成していますが、
> atmark-dist-20051017.tar.gz(カーネルlinux-2.6.12.3-a9-1.tar.gz 、
> またはlinux-2.6.12.3-a9-2-beta.tar.gz)ではなぜか、ドライバーの
> 割付けが正しく出来ません。
えーと、これ自体を直接解説するのは難しそうですので…
下記の内容に絡む2.6系のPCMCIAの構造について説明します。
> また、atmark-dist-20051017.tar.gz(カーネルlinux-2.6.12.3-a9-1.tar.gz)の場合、
>
> /user/pcmcia-cs/下のconfig.mkとMakefileを調べた限り、cardmgr、flash、debug-tools、
>
> man、etcサブDIRはビルドされますが、modules、clients、wirelessはビルドされません。
これで正常です。
2.6では、pcmcia-cs側で使用するのはcardmgrとその他ツールのみです。
その他すべてはカーネル側のものを使用します。
割込みを取り扱う部分としては、drivers/pcmcia/ep93xx_armadillo9.cですね。
この中でsoc_pcmcia_request_irqsでまとめて登録し、
実際はsoc_common.cから扱われています。
まずはデフォルトで作ったPCMCIA版のカーネル+ユーザランド
(バイナリ配布のものでも構いません)でCompactFlash等の動作を見てみてください。
/etc/rc.d/rc.pcmcia start
すると、cardmgr、hda&ide、ide_csの順にログが表示されると思います。
[email@hidden (ttyAM0) ~]# /etc/rc.d/rc.pcmcia start
Starting PCMCIA services: cardmgr[968]: watching 1 socket
cardmgr[968]: could not adjust resource: IO ports 0xc00-0xcff: Function not implemented
cardmgr[968]: could not adjust resource: IO ports 0x800-0x8ff: Function not implemented
cardmgr[968]: could not adjust resource: IO ports 0x100-0x4ff: Function not implemented
cardmgr[968]: could not adjust resource: memory 0xc0000-0xfffff: Function not implemented
cardmgr[968]: could not adjust resource: memory 0x60000000-0x60ffffff: Function not implemented
cardmgr[968]: could not adjust resource: memory 0xa0000000-0xa0ffffff: Function not implemented
cardmgr[968]: could not adjust resource: IO ports 0xa00-0xaff: Function not implemented
hda: Flash Card, CFA DISK drive
ide0 at 0xc7020000-0xc7020007,0xc702000e on irq 49
hda: max request size: 128KiB
hda: 254464 sectors (130 MB) w/0KiB Cache, CHS=994/8/32
hda: cache flushes not supported
/dev/ide/host0/bus0/target0/lun0: p1
ide-cs: hda: Vcc = 3.3, Vpp = 0.0
done.
lsmodするとide_csのみモジュールロードされていることがわかります。
[email@hidden (ttyAM0) ~]# lsmod
Module Size Used by Not tainted
ide_cs 5096 - - Live 0xbf000000
このide_csのソースは、カーネル側のdrivers/ide/legacy/ide-cs.cです。
一応pcmcia_request_irqしているところを抜書きすると、325行目の
CS_CHECK(RequestIRQ, pcmcia_request_irq(handle, &link->irq));
CS_CHECK(RequestConfiguration, pcmcia_request_configuration(handle, &link->conf));
あたりのところですね。
カードサービスとして事前にregisterしてやっているので、これで動作するようです。
少なくともideについてはこれで動作していますし、
或いは有線LAN(カーネル/drivers/net/pcmcia下の各ソース)や
無線LAN(これだけはdist側、user/wlan-ng/srcの下)についても同様の書き方をしており、
完全に動作確認がとれております。
少なくとも上記のものについては
このソースの書き方で普通に割り込みを扱えているので…
前後のロジックが2.6では記述不足となっているのか…ちょっとわかりません。
____________________________________________________
花田 政弘 (はなだ まさひろ)
(株)アットマークテクノ IT開発部
TEL: 011-207-6550 FAX: 011-207-6570
URL: http://www.atmark-techno.com/
E-mail: email@hidden
____________________________________________________
armadillo メーリングリストの案内