|
このページはMB760を使い、コンパクトフラッシュソケットを汎用PCMCIAとして使うための手順書です。 前提 †MB760にはコンパクトフラッシュソケットが1つついています。カーネルが起動した後にCFカードをrootファイルシステムとして使う場合を想定して、出荷時はCFメモリーカード(=ideディスク)固定として /dev/hda デバイスとして認識するようになっています。つまりCFメモリーカード専用の設定になっています。このため無線LANや通信カードを認識することはありません。 CFソケットは
2つの方法があり、1のIDEディスク決め打ちのほうが設定が簡単です。またカーネルが起動してすぐにrootファイルシステムとしてマウントするためには1である必要があります。 ただし、無線LANや通信カードなど、IDEディスク以外のカードをさす場合にはcardmgr(カードマネージャ)を起動させてカード種別を認識させ、多様なドライバを動的ロードする必要があります。もちろんこの場合でも後認識のIDEディスクとして使えますが、cardmgr を起動させる必要があるためにrootファイルシステムの置き場として使うことは出来なくなります。 前述したようにMB760の出荷時設定はIDEディスク決めうちとなっていますが、このページではpcmcia管理下に置くようにカーネルの変更箇所について記述します。 ところでEB760ボードにはCFソケットが2つ実装されていて、それぞれ cf0, cf1 と呼称しています。EB760では cf0 は IDE (/dev/hda) 固定、 cf1 は cardmgr の管理下で動かしています。MB760にはCFソケットが1つ実装されていますが、これは EB760 ボードの cf0 に相当します。つまり デフォルトでは /dev/hda 固定で動いているということです。 カーネルの変更 †変更前のカーネルは linux-2.6.15-cat_20080226.tgz (2008年2月26日)あるいはそれ以降の新しいものを使います。
#if 0 // CF0をIDEとして cat760_cfenabler(); cat_register_iomap(0x1f0, 0x1f7, CAT760_CF_SOCKET0_PHYS + 0x1f0, 0); cat_register_iomap(0x3f6, 0x3f6, CAT760_CF_SOCKET0_PHYS + 0x3f6, 0); #endif CF0をIDEディスクとして初期化している部分を #if 0 〜 #endif で無効にする
#if defined(CONFIG_SH_CAT760) #define CATSS_MAX_SOCKETS 1 static struct catss_socket catss_sockets[] = { { .atr_base = CAT760_CF_SOCKET0_ATTR, .mem_base = CAT760_CF_SOCKET0_COMM, .io_base = CAT760_CF_SOCKET0_PHYS, .irq = CAT760_CF_SOCKET0_IRQ, } }; #endif CAT760_CF_SOCKET1_<なんとか> と書かれているところを CAT760_CF_SOCKET0_<ナントカ> に書き直します。これは cardmgr で管理しているcfソケットをcf1からcf0に変更する意図です。
上記3つのファイル
を修正するパッチはこれです linux-2.6.15-cat_20080502_mb760pcmcia.diff $ tar xzvf linux-2.6.15-cat_20080502.tgz $ cd linux-2.6.15-cat $ patch -p1 < linux-2.6.15-cat_20080502_mb760pcmcia.diff としてもOKです コンフィグレーション †$ make mb760_defconfig MB760のデフォルトのコンフィグレーションに戻す $ make menuconfig Bus options ---> PCCARD (PCMCIA/CardBus) support ---> <*> PCCard (PCMCIA/CardBus) support → Y キーを押す <*> 16-bit PCMCIA support → Y キーを押す <*> CAT760/CAT709 pcmcia support → Y キーを押す Device Drivers ---> ATA/ATAPI/MFM/RLL support ---> <M> ATA/ATAPI/MFM/RLL support (1) Max IDE interfaces <M> Include IDE/ATA-2 DISK support <M> PCMCIA IDE support PCMCIA管理下のIDEカードサービス <M> generic/default IDE chipset support Character devices ---> Serial drivers ---> <*> 8250/16550 and compatible serial support <M> 8250/16550 PCMCIA device support UART互換の通信カードなど (5) Maximum number of 8250/16550 serial ports [*] Extended 8250/16550 serial driver options [*] Support for sharing serial interrupts $ make 出来上がった arch/sh/boot/zImage がカーネルですが、カーネルを保存する領域 /dev/mtdblock1 が 0x130000バイト (1,245,184バイト)なので、必ずそれ以下になるようにコンフィグレーションしてください。 カーネルの書き換え方法は、詳しくは CAT760の取扱説明書をご覧ください。 モジュールの取り扱い †カーネルのコンフィグレーションで <M> モジュールにしたドライバはインストールが厄介なのですが、以下のような手順が参考になるかと思います。 カーネルソースTOPの Makefile を編集して INSTALL_MOD_PATH= 変数に適当なパスを入れます。 # INSTALL_MOD_PATH specifies a prefix to MODLIB for module directory # relocations required by build roots. This is not defined in the # makefile but the arguement can be passed to make if needed. # INSTALL_MOD_PATH=/home/ebihara/tmp このようにしてから $ make modules_install とすると、/home/ebihara/tmp 以下にモジュール群がインストールされるので、これを CAT760に移していきます。 /home/ebihara/tmp/ `-- lib `-- modules `-- 2.6.15-sh |-- build -> |-- kernel | |-- crypto | | |-- des.ko | | `-- md5.ko | |-- drivers | | |-- block | | | |-- cryptoloop.ko | | | |-- loop.ko | | | `-- rd.ko | | |-- cdrom | | | `-- cdrom.ko | | |-- ide | | | `-- legacy | | | `-- ide-cs.ko | | |-- media | | | `-- video | | | |-- v4l1-compat.ko | | | |-- v4l2-common.ko | | | `-- videodev.ko | | |-- net | | | |-- mii.ko | | | |-- ppp_generic.ko | | | `-- slhc.ko | | |-- scsi | | | |-- scsi_mod.ko | | | |-- sd_mod.ko | | | |-- sg.ko | | | `-- sr_mod.ko | | |-- serial | | | `-- serial_cs.ko | | `-- usb | | |-- core | | | `-- usbcore.ko | | |-- host | | | `-- ohci-hcd.ko | | |-- input | | | `-- usbhid.ko | | |-- media | | | |-- konicawc.ko | | | |-- ov511.ko | | | |-- pwc | | | | `-- pwc.ko | | | |-- sn9c102.ko | | | |-- stv680.ko | | | `-- usbvideo.ko | | |-- serial | | | |-- cp2101.ko | | | |-- pl2303.ko | | | `-- usbserial.ko | | `-- storage | | `-- usb-storage.ko | |-- fs | | |-- fat | | | `-- fat.ko | | |-- isofs | | | `-- isofs.ko | | |-- lockd | | | `-- lockd.ko | | |-- minix | | | `-- minix.ko | | |-- msdos | | | `-- msdos.ko | | |-- nfs | | | `-- nfs.ko | | |-- ntfs | | | `-- ntfs.ko | | |-- udf | | | `-- udf.ko | | `-- vfat | | `-- vfat.ko | `-- net | |-- ieee80211 | | |-- ieee80211.ko | | |-- ieee80211_crypt.ko | | |-- ieee80211_crypt_ccmp.ko | | |-- ieee80211_crypt_tkip.ko | | `-- ieee80211_crypt_wep.ko | `-- sunrpc | `-- sunrpc.ko |-- modules.alias |-- modules.ccwmap |-- modules.dep |-- modules.ieee1394map |-- modules.inputmap |-- modules.isapnpmap |-- modules.pcimap |-- modules.symbols |-- modules.usbmap `-- source -> INSTALL_MOD_PATH= で指定したパス以下にドライバ (*.ko) が入るので、CAT760の /lib/modules/<カーネルバージョン> 以下のディレクトリにコピーします。 # rommode rw # date -s "2008/2/28 21:22:00" # hwclock --systohc ファイルのタイムスタンプが未来や過去にならないように 時計を合わせておきます。 # mkdir /lib/modules/2.6.15-sh/kernel/drivers/serial/ # cp /NFSマウントなどを利用して/tmp/lib/modules/2.6.15-sh/kernel/drivers/serial/serial_cs.ko \ /lib/modules/2.6.15-sh/kernel/drivers/serial/ # depmod -a モジュールファイルの追加削除を行ったときは depmod -a を一度実行します。 # rommode ro PCMCIAの設定 †基本的には PC の場合と同じです。cardmgr管理下で動かした場合は、簡易的にはhotplug ができます。ただし電気的に活線挿抜(かっせんそうばつ=電源を入れたままカードの抜き差し)に対応した保護回路が入っているわけではないので、活線挿抜は保証しません。とくに消費電流の大きな無線LANカードなどを差し込むと、急な電圧低下でリセットがかかることがあります。また静電気などで故障することもあるかもしれません。実験レベルで考えてください。
手動操作で抜くことを教えてあげます。 # cardctl eject 0 これで抜いても大丈夫です。 新しいカードを挿入したら # cardctl insert 0 として cardmgr に教えてください。 あとは CFカード情報 をご覧ください。 関連 †
|