最近の NotePC には SD スロットが付いている。しかし、FreeBSD ではドライバが無くて、none なデバイスである・・。pciconf -lv すると以下のような感じ。
|
しかし、世の中にはすごい人がいるものですねぇ。FreeBSD 用のドライバを書いてくれた人がいます。
http://lists.freebsd.org/pipermail/freebsd-drivers/2006-September/000243.html
http://www.sashi.de/en/freebsd/sdhci/index.html
早速ダウンロードして試してみました。make して kldload sdhci.ko しておしまい。再度、pciconf -lv してみると以下のような感じ。おーーー。
|
しかし、messages にはログがガンガン吐かれている。あぁ。と、言うことで常時 kldload しているわけには行かないみたい。必要な時に kldload するようにするか・・。あ、ちなみにデバイスと認識させただけで、実際にデータ転送とかしたことないですよ。僕;-)。ヒトバシラーな方、頑張ってください。
僕が思うに、devd もしくは hald と連携して、SD カードが挿入された時点で kldload するようにしたらええんかな? あ、けど、SD カード挿入前には /dev/sdhci0 が生えてなければならないので、ちょっち無理かなぁ・・。
これ↓ためして。
http://www.agt.ne.jp/~a-gota/programs/driver/FBSD6.2R/memcard/sdmmc-20070422a.tar.gz
こんにちわー。試してみました。
pciconf -lv するとこんな感じです。
—
sdshc0@pci2:1:2: class=0x080501 card=0x01a31028 chip=0x08221180 rev=0x17 hdr=0x00
vendor = ‘Ricoh Co Ltd’
device = ‘SD Bus Host Adapter’
class = base peripheral
—
dmesg 見るとこんな感じです。タイムアウトしているのはカードが入っていないからかな?
—
sdshc0: <Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter> mem 0xdfcfe700-0xdfcfe7ff irq 7 at device 1.2 on pci2
sdshcbus0: <SD Standard Host Controller slot bus> on sdshc0
sdshcbus0: capability: 3.3V Suspend/Resume DMA High-Speed
sdshcbus0: card inserted in slot #0
sdshcbus0: Timeout occured for CMD1; old card?
sdshcbus0: Timeout occured for CMD1; giving up
—
や、なんか device の認識がうまくできてないような気がするです。Device ID からは X60s と同じ chip みたいなんだけど、おかしいな。Machine は Latitude X1 ですか?
(Probe の結果の desc が表示されてないのがおかしげ。もしかして、最近の -stable では I/F が変わったのかしらん? あと、card がないと timeout になるのはその通りなんですが、そもそも card を挿してないのに刺されたつもりになってるのもおかしいです。)
# ていうか、Ricoh の chip で DMA とか high-speed mode を support してるものもあったのか‥‥‥。ちょっといじらせてほしいなぁとか思ってみたり (^^;
こんばんわー。
一応、SD カード突っ込んでみたら特に問題も無く認識しましたよ。
—
sdshcbus0: card inserted in slot #0
sd0: <Panasonic PA S008B rev 4.1> on sdshcbus0
sd0: Ver 1.x SD memory card
sd0: 6640kB (13280 x 512-byte blocks)
sd0: access time: read 500.0us, write 16.0ms
sd0: speed class 0
sd0: max clock 25MHz, drive at 16.500MHz
sd0: 8.250MB/s transfers with 4-bit bus width
—
でもって mount_msdosfs もできて書き込みもOKでした。それなりに速い速度で書き込みができました。
NotePC は Latitude X1 ですが、以下の一行が実はすごいんですかねぇ? DMA 転送していたら ATA-66 並みなんでしょうか?
apability: 3.3V Suspend/Resume DMA High-Speed
あー。SD カードを入れてから kldload すると dmesg の表示が変わりますねぇ。
(五)さんはこっち表示のほうが嬉しいのではないでしょうか;-)
—
sdshc0: <Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter> mem 0xdfcfe700-0xdfcfe7ff irq 7 at device 1.2 on pci2
sdshcbus0: <SD Standard Host Controller slot bus> on sdshc0
sdshcbus0: capability: 3.3V Suspend/Resume DMA High-Speed
sdshcbus0: card inserted in slot #0
sd0: <Panasonic PA S008B rev 4.1> on sdshcbus0
sd0: Ver 1.x SD memory card
sd0: 6640kB (13280 x 512-byte blocks)
sd0: access time: read 500.0us, write 16.0ms
sd0: speed class 0
sd0: max clock 25MHz, drive at 16.500MHz
sd0: 8.250MB/s transfers with 4-bit bus width
—
それらしい表示ですねぇ;-)。と、言うことでカードを入れてから kldload することにします。
けど、 hald が 動作して user mount してくれないのはちょっと心残りですけど;-)。
あ゛。
“<” と ″>″ が html TAG として認識されるんだ・・X-(。
大変失礼しました・・。
や、どうも。ちょっとバタバタしてました m(__)m。
> “<” と ″>″ が html TAG として認識されるんだ・・X-(。
ああ、なるほど。dmesg の結果がおかしかったのはそのためでしたか (^^;。
でも、card を入れていないのに card に access に行くのは、やっぱりおかしいですねぇ。もしかして、一旦 kldunload したあとに kldload しなおすと動作が変わったりしますか?
> NotePC は Latitude X1 ですが、以下の一行が実はすごいんですかねぇ? DMA 転送していたら ATA-66 並みなんでしょうか?
> capability: 3.3V Suspend/Resume DMA High-Speed
DMA 転送すると割込みを handling する回数が激減するので(ADMA mode では事実上割込みがなくなる)、performance は向上すると思います。どのくらい変わるかは判らないんですが。でも、仮に DMA を使わなくても、「High-speed mode」を持っているというのがもっと効いてくると思います。card が対応していれば、最大で 50MHz 駆動が可能になるし、そうでなくても 25MHz で動くようになります。Data 転送はそれにつれて高速になる。調べてみたら、Ricoh の chip でもごく最近の一部の製品は PLL を積むようになったらしく、Latitude X1 に積まれているのもそのうちの一つです。Clock が上がるとその分割込みの overhead も顕在化してくるので、DMA も support するようになったんでしょう。
で、High-speed mode も DMA も、有効にするには専用の手順があるんですが、手元に実機がないので実は困ってたりするんです。もう 1 台 note PC を買う余裕は当分ない‥‥‥ (__;。
えーと、High speed mode を有効にする設定を組み込んでみました。試してないので、ちゃんと動くかどうか判らないんですが。
http://www.agt.ne.jp/~a-gota/programs/driver/FBSD6.2R/memcard/sdmmc-20070620.tar.gz
Card が認識されたときの表示(最大 clock や転送速度など)が変わるかどうかや、実際に data を読み書きしたときの速度が変わるかどうかを試してもらえると助かります。
(五)さんの日記をトラバに付けておきますねー。