「書きかけの歳時記」
2007/03版 その3

(since '05.04.25)

この日記は不定期に更新されます。なんにせよ、大したことは書かれないはずですが。

取扱上の注意

間違って検索サイトから来られた方へ(よくある検索 pattern)

アンテナ管理者の方へ


[前日へ続く]

2007/03/21 (水) 晴風味 <sample 入手>

ひるさがり [日常]

14 時頃起きる。

そのまま仕事。大量の log を取りながらなので、simulation に膨大な時間が。


よる [日常]

腹が減ったので、simulation を走らせておきつつ、19 時過ぎに買い物がてら外出。

まずはアキバへ。あきばお〜で ESM 帯を使った video transmitter/receiver set(¥7,999-.)を購入。

その足でパソコンハウス東映へ行き、test 用に PQI の SDHC 4GB card(SDH6B-4G)を買う。

さらに駄目な本屋でフルメタ最新刊(MMD)ほか数冊を買い、そのまま靖国通り〜京葉道路を走って加真呂で中落ち 300g。

帰宅してから、debug の続き。

23 時過ぎ、障害箇所を特定。Code をいじり、log 出力を off にして走らせる。‥‥‥どうやら治った風味。


SDA その後 [X60s / FreeBSD]

SDA に問い合わせを出していた件のその後。とりあえず mail が 2 往復した結果を端的に言えば、話が噛み合わない。

「Simplified Spec. のみを参照して書いた既製品(ThinkPad X60s)向けの device driver を community に公開する場合、何らかの手続きが必要か」という最初の問い合わせに対して返ってきた答えは、「HALA を結べ」というもの。結構長い mail だったのだが、つまるところ HALA を締結して SDA に加入する手続きをだらだらと書いてあるだけ。「US $1,000 を支払って SDA に加入すれば「SD 規格準拠」という謳い文句と SD logo が使用可能になり、さらに full spec document が入手可能になるという benefit が得られます」ということを主張するのみ。

なので、再度「それらの benefit が不要である場合はどうなのか」という mail を送ったのだが‥‥‥「あなたの法務担当者に相談して助言を受けることをお奨めします」という答えが返ってきた。一言で言えば「きっちり勉強して出直して来いやボケ」つうことだが、そのあとに駄目押しのように「私の理解では、あなたが参照したそれらの document(= Simplified Spec.)は SDA に権利があり、また full/complete な document は license holder のみが参照可能です」とよく解らないことが書いてある。この文の後半が「だから SDA に入れ」という圧力であることはそれまでの文面から自明だが、問題は前半だ。それまでの先方の文面から考えると、「Simplified Spec. は無償で公開したが、これを使う場合は HALA を締結して SDA に入る必要がある」というように読める。そう考えれば、文章の繋がりがよく解らない前半と後半はつまり「アメとムチ」の関係にあると理解することができる。もしそうなら、「Simplified Spec. のみを利用する」ということは事実上不可能であることになり(SDA に加入すると同時に Full Spec. が参照可能になるからだ)、これってつまり「SDA による Simplified Spec. の公開は『釣り』以外の何物でもない」ということにはならないか?

ややひねくれた考え方であることは重々承知なわけだが、そう考えるのは先方からの mail に気になる 1 文があったからだ。最初の返事の冒頭に、こんな文章があったのだ。

「SD 規格準拠の SD memory card を取り扱い、また SD 規格の part 1, 2 および 3 に適合し SD host products や SD memory cards を操作するような products を作成・使用・販売しようとする場合、一般に HALA License が必要です」

‥‥‥すごいよな。使うだけでも HALA を要求されるらしいですよ。ちなみに、「HALA」というのは「Host/Ancillary Product License Agreement」の略で、license 中の定義によれば「SD host およびその関連製品」全体に及ぶ包括的な license だ(「関連製品」は「SD host と協調する software や SD card、SD I/O card など、SD host を除くおよそ全ての物」と定義されている)。

時間がなくて HALA はまだざっと眺めただけなのだが、HALA には「License を結んだ上で SDA には加盟しない」という選択肢はなさそうだ(間違っていたら指摘を下さい)。HALA には NDA が含まれているが、「一切の情報を漏らしてはならない」というものではないようなので、「SDA に加盟した上で Simplified Spec. の範囲内に収まるような product を公開する」という選択肢はありそうだが(「Simplified Spec. に confidential な内容が含まれていない」ことは download page に明言されている)、個人で US $1,000-. を出す気にはならないし、もしそうやってもその code を受け取って利用した人が全て HALA の締結を要求される可能性は否定できない。

いいじまパパが「ワーナーさんが 5 月に BSDCan で SD/MMC driver について喋るらしいですよ?」と教えてくれた。でもって、ググってみたらワーナーの昨秋の blog に Simplified Spec. の公開に言及するものがあった(Simplified Spec. の license についての言及はない)。また、Linux 方面でも Simplified Spec. の公開を契機に「これを参照して driver を書き直そう」と動き始めたらしいし、Motorola は「SDA が Simplified Spec. を公開してくれたので、その範囲内で source code を公開できるようになった」とし、Linux 方面からの問い合わせにも「そう判断している」と答えたらしい。

いったい、どちらの判断が妥当なのだろうか。ワーナーはこの件についてどう判断したのか、その辺りが気になっている。

SDA にはさらに突っ込んだ問い合わせをしたいのだが、確定申告が重なって忙しくなってしまったのと、英語力の限界 (__; で細かいことが訊けずにいる(今までの問い合わせは 翻訳こんにゃく 翻訳 site の力を借りて書いていたのだが、これ以上込み入ったことはちょっと無理)。誰かへるぷみー T_T


いろいろと突っ込んでみた [X60s / FreeBSD]

先日、馴染みの店の店員さんの協力の元、件の謎 driver でいろんな card を認識させてみた。結果:

  • ふつーに使えてるもの
    • A-DATA 1GB SD card (150x) (Ver 1.XX compliant)
    • PQI 2GB SD card (150x) QSD15-2G (Ver 2.XX compliant)
    • KINGMAX 2GB SD card (150x) SDC150-2GB
    • Transcend 1GB microSD card TS1GUSD
    • KINGMAX 1GB microSD card
    • KINGMAX 512MB RS-MMC (DV)
    • Canon 16MB MMC (HITACHI HB28H016MM2) (Ver 3.1 to 3.31 compliant)
  • File system の mount まで確認したもの
    • TOSHIBA 2GB SD card SD-M02G (aka SD-M02GR3W) (class 4)
    • TECIC 512MB miniSD card (80x)
    • IMpress 1GB SD card MSD150-1GB (Ver 2.XX compliant)
    • Kingston 1GB microSD card SDC/1GBFE
  • Slice の device file は生えるが mount に失敗するもの
    • TOSHIBA 4GB SDHC card SD-M04G (aka SD-M04GR3W) (class 4)

いまのところ、「slice の device file が生えない」という card はない。ちなみに、現状では 4-bit mode を support している card は 4-bit bus width で動作させるようになっている。

問題は SDHC。Mount しようとするとなぜか error が発生する。店頭で試しただけなのであまり時間が取れず、じっくりと追えなかった。やっぱり 1 枚は買わないと‥‥‥というわけで今日買ってきたわけだったり。


SDHC の振舞い [X60s / FreeBSD]

ただ、SDHC に関しては店頭で試している間に解決した問題もあった。

SD card の power on initialize を開始させ*1、またその終了を検出するため*2に card に対して ACMD41 を発行する必要があるが、SDHC ではこの際 parameter の bit 30 を立てておかなければならない(「SDHC に bit 30 が立っていない ACMD41 を投げている間は決して initialize が完了することはない」とされている)。一方、「parameter を 0 とした ACMD41 を投げるとその card が受け入れ可能な parameter が返される」ということになっていて、SDHC の card かどうかを見分けるために最初は「parameter を 0 とした ACMD41 を投げ、その返却値の bit 30 が立っていたら SDHC」と判断していた*3

ところが、実際に TOSHIBA の SDHC card を挿してみると、最初の状態からしばらくは bit 30 が立たないことが判った(何度か ACMD41 を投げているうちに bit 30 が立つようになる)。そこで「ACMD41 の返り値の bit 30 が立っていたら SDHC と判断して ACMD41 の parameter の bit 30 も立てる」ように変えてみたのだが、いつまで経っても bit 31 が立ってこない。

そこで、SDHC かどうかを判断せずに最初から bit 30 を立てるようにしてみたところ、ちゃんと initialize が終了するようになった。最初から bit 30 を立てるようにしていなかったのは、SDHC でない card に bit 30 が立った ACMD41 を投げたときに不具合が起こる可能性を恐れたからだが、そうしておかないと SDHC card が動作しないということであれば、そうするしかない。

とりあえずその状態で使い続けているが、いまのところ SDHC でない card に bit 30 が立った ACMD41 を投げたことで不具合は発生していない。SDHC かどうかを事前に確認することはできないが、SDHC は Ver 2.XX 対応の card にしか存在しないことになっている。SDHC card がこのような振舞いをするということは、Ver 2.XX 対応の card に bit 30 を立てた ACMD41 を投げても問題は出ないということなのだろう。

*1: Host が card に対して供給可能である電圧を示した bit pattern を parameter に取る ACMD41 を最初に投げたときに initialize が始まるとされている。

*2: Initialize が完了すると、ACMD41 が返却する値(= OCR register)の bit 31 が立つ。

*3: OCR を正しく取得するには SDHC を受け入れ可能かどうかを予め card に対して示しておく必要があるが、実際に SDHC の card かどうかは OCR を取得して初めて判明することになっていて、取得する前にそれを知る手段はない。


ところで [X60s / FreeBSD]

まあそんなこんなでまた転がしておいてみたり

前回との違いは:

  • 4-bit mode を support

‥‥‥あと、なんだっけかな(爆)。ちなみに、MMC については MMCplus(Ver 4.x)対応の card はあまねく HS-mmc であると見做して決め打ちで 4-bit mode に切り替えてしまっている。‥‥‥いや、BUSTEST_W/R で判別しようとしたんだけど、BUSTEST_W は投げられるが、そのあと BUSTEST_R を投げると error になっちゃうんだよね‥‥‥ (__;。どうせ controller が 8-bit mode に対応していないので、だったら 4-bit mode にしてしまえという。ちなみに、SD は register の値を読んで capability を check している。

現時点で未対応なのは:

  • Suspend/resume(個人的に需要がないもんで‥‥‥)
  • DMA transfer(X60s の controller が非対応なので検証不能)
  • High-speed mode(X60s の controller が以下略。)
  • SDHC の R/W(実物を買ってきたので追々‥‥‥)

てな感じ。SDHC 以外の card の読み書きでは今のところ不都合は感じていない。

しかし、これで SDHC が動いてしまうと、本当にネタ切れだな‥‥‥。


しんや [日常]

Simulation を走らせている間やることがないので、とりあえず今日の分の日記を書いてみたり。

日記を一通り書き終わってもまだ simulation は続いている。まだ完了していないが、元々の障害が「途中で止まる」というものだったし、問題箇所を越えてこれだけ動いていればまあ大丈夫だろうと判断して source を commit して tag を打つ。

そうこうしているうちにまほろさんの再放送が終わった。いよいよ来週が最終回か。「年末スペシャル」がなかったのは残念ではあるがある意味当然でもある。ともあれ、再放送のおかげで Blu-ray に焼いておけるのは重畳。


SDHC その後 [X60s / FreeBSD]

Simulation を走らせている間は暇なので、SDHC card がなぜ動かないのか test。

‥‥‥結論から言えば、media の容量を計算し間違えていた、というオチ。SDHC の場合「mediasize = (C_SIZE + 1) x 512KB」と定義されているが、これを従来通り「(C_SIZE + 1) x block size」で計算してしまっていた*4。SDHC では block size は 512B(固定)なので、本来の値の 1/1024 になってしまう。

とりあえずこれを修正。でもって、「media size を 32-bit で管理していたため値が溢れる」というお約束(これは SDHC で addressing method が変更された理由そのものでもある)を演じたあと、media size を 64-bit で管理するようにして、解決。てなわけで、30 分くらいであっさり動いてしまった。

今回は media size を愚直に byte 単位で保持するようにしたため 64-bit で持つことにしたが、SDHC では上記の理由で必ず 512KB の倍数になるし、SDHC でない場合も必ず 512B の倍数しか取れない*5ので、「512B block 数」で管理してしまえば 32-bit で収まる*6。ただ、MMC では規格上「1 の倍数」で与えられる可能性があるので(実際の製品は 512B 単位のようだが)、これとの兼ね合いをどうするかという問題はある。‥‥‥もっとも、FAT で取り扱う以上 512B より小さな単位での管理というのは考えにくいので、「一旦正しい容量を計算したあと 512B の倍数に切り下げて保存する」というのも現実的ではある。GEOM で扱う以上、block 単位でしか access しないわけだし。実害は「block size が 512B 未満だった場合に『真の』media size が表示されない」ということくらいで、「端数はどうでもいい」と言ってしまえばそれまでの話。

*4: SDHC でない場合は、さらにこの値に別の field で与えられる「倍率」をかけて容量を求める。

*5: SDHC 以外はいずれの規格でも block size の倍数として与えられるが、SD の場合は block size の最小値が 512B とされている。

*6: これは SDHC card の R/W access の際の addressing と同じ方式なので、少なくとも SDHC では必要十分な方法だ。ちなみに、この方法だと (2^41 - 1) byte(= 約 2TB)まで管理できることになるが、現行の SD/SDHC では規格上 media size の上限を 32GB としている。


Speed Class の謎というか PQI の謎というか [X60s / FreeBSD]

で、これだけではなんなので(なんか損した気分だ)、せっかく SDHC card を買ったのだからと Speed Class も取得するようにしてみた。が‥‥‥買ってきた card は class 6 のはずなのに、register の値を読むと class 2 になってますよ? Bit 位置を間違えたのかと思って何度か確認してみるが、間違ってはいないようだ。むむむ。

気になって型番をググってみたが、SDH6B-4G という型番ではなかなかこれはという結果が得られない(ちなみに、PQI の site はほとんど役に立たない)。一方、「PQI SDHC」でググってみると‥‥‥「3 月末から PQI JAPAN として初めての SDHC card を出荷」? しかも型番が違いますよ? さらに、以前に台湾の展示会で「PQI が同社初の SDHC card(class 2)を発表。出荷時期・価格は未定」という report が引っ掛かった。‥‥‥まさか、「ガワだけ class 6 で中身は class 2」なんてことはないよねぇ? (-.-;

当該 field は「current の状態が見える」とされているので、もしかすると High-Speed mode に切り替えたりすると(転送速度の変化を反映して)値が変わるのかもしれない(実際「最大 clock 周波数」の値は切り替わるようだ)。しかし、PQI の card は同じ「QSD15-2G」でも lot によって Ver 1.XX 対応だったり Ver 2.00 対応だったりすることが手持ちを test した結果判っているので、一抹の不安が拭いきれない。折りがあれば、ほかの maker の card も試してみるか‥‥‥。

あと、折角だから register 内の read/write access time の値が表示されるようにもしてみた(debug log を有効にしておくとこれまでも表示されていたが、常に表示するようにした)。これを出しちゃうと、PQI の card がものすんごく遅いことが丸判りなわけだが(特に write 時)。


というわけで [X60s / FreeBSD]

また転がしておいてみる

さて、本格的にネタに困ってしまった。あとの積み残しは、Suspend/Resume を除くと

  • High-Speed mode
  • DMA
  • HD MMC
  • SDIO

と、実機がないものばかり。HD MMC は一応対応 code っぽいものを書いてはあるが、なにぶん test 目的にしか使わないことが明らかな上に需要があまりないせいか card があまりお安くない。SDIO はそのうち GPS card でも買ってみようかと思ってる。

問題は High-Speed mode と DMA だ。とりあえずX60s に積まれている RICOH の controller はいずれも非 support。先日某 shop の店頭展示機で Windows のデバイスマネージャを見てみてところ、VAIO の物(TI 製)は support してるっぽい。Let's note 系は最新機種でも「最高 8MB/s」となっているので、おそらく NG だろう(RICOH 製か?)。NEC は未確認。

中古で安く手に入るなら買ってみてもいいかなと思ったんだが、catalogue を見てもそのあたりがどうなのかはっきりしないのが痛い。どうせ中古は在庫品しかタマがないので、実機を店頭で見せてもらえばいいのかもしれないけど。ううむ。


あさ [日常]

ようやく simulation が終わった。いや、長かった。無事に終わったのがなにより。‥‥‥これは DSP の高速化を本気で検討しなきゃかもしれん。

そうこうしているうちに、34 時を廻った。一昨日お願いするときに乗車券の経路を書き間違えたような気がしていたので、早いうちにと JTB TL 浅草橋に行ってみる。‥‥‥「金曜くらいまでにできれば」とお願いしてあったのだが、もうできていた。しかも、正しい経路で m(__)m。慌てて銀行に行って代金を用意し、引き取り。お世話様でした。

返りに「かつ万」で煮カツ弁当を買って帰り、モグモグ。ここの弁当のカツはとにかく値段の割にボリュームがある。そして、結構うまい。これで 550 円というのは嬉しい限り。しかも、なんだかんだしているうちに 35 時頃になっていたので、ちょうど作り立て。素晴らしい。

風呂に入ったりしたあと、36 時過ぎに寝る。



2007/03/22 (木)


2007/03/23 (金)


2007/03/24 (土)


2007/03/25 (日)


2007/03/26 (月)


2007/03/27 (火)


2007/03/28 (水)


2007/03/29 (木)


2007/03/30 (金)


2007/03/31 (土)


[後日へ続く]

[最新版へ] [2004 年までの一覧へ] [今年の目次へ] [今年のカテゴリ一覧へ]

メールはこちらへ...[五反田 秋彦 as (五) / a-gota @(at) agt .(dot) ne .(dot) jp]

この日記は、GNSを使用して作成されています。作製者の GORRY さんに感謝 m(__)m