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