Pocket の手 for Windows Mobile 5.0

SD カードを安定化させる

Windows Mobile 機には、miniSD や microSD などが搭載されていて、ソフト本体やデータなどを保存しておく場所として活用することができます。

しかし実際には SD カードにデータなどを保存するように設定した場合、ソフトの動作中に Windows Mobile 機がフリーズ ( 何も動かなくなりリセットしなければならない状態 ) してしまう場合があります。
特に無線LAN や Bluetooth などの内蔵デバイスを動作させながら、SD カードにデータを書き込む・読み出すなどをした場合に、顕著なようです。

こういう現象に直面した場合、システムのSD カード設定を変更することで SD カードの安定性が向上することがあります。
今回はPocket の手を使って、SD カードを安定化させる方法を解説します。

なおここで紹介する方法で、すべてのデバイスで安定性が向上するわけではなく、お使いのデバイスと SD カードの相性によってはどのようにしても不安定なままということがあることをご了承願いたい。

Pocket の手をインストールする

まず Pocket の手をインストールする必要があります。こちらからダウンロードして、インストールを行ってください。

Pocket の手をインストールするには、
PocketHand2-2.?.?.CAB ( プログラム本体 ) と
PocketHand2-2.?.?.Lang-Ja.CAB ( 言語パッケージ ) の両方をダウンロードしてインストールを行ってください。また日本語化した英語端末は、PocketHand2-2.?.?.en-Lang-Ja.CAB の言語パッケージをダウンロードしてください。

インストールが終了したら Pocket の手を起動しましょう。
プログラムメニューから「PocketHand2」アイコンを探してタップします。

Pocket の手で設定を行う

これから Pocket の手 を使って安定化を試みますが、今回の要点は、
  • シングルブロック転送
  • SD カードドライバの優先度向上
の2点である。

  1. Pocket の手が起動したらアイコンの中から「デバイス設定」をタップする。
    そして右下のメニューから「ストレージ」→「SD カード全般」を選択する


  2. 「シングルブロック転送」をチェックする。

    チェックをすると SD カードの転送方法が「マルチブロック転送」から「シングルブロック転送」に切り替わります。
    SD カードのマルチブロック転送と無線LAN などのドライバとの相性が悪いのではないか?と言われていますので、これをシングルブロック転送にすることで、転送レートは犠牲になるが安定性を向上させようという試みです。
    実際にシングルブロック転送にすることで安定したという報告があります。


  3. 次に右下のメニューから「優先度」を選択して、内蔵デバイスの優先度から「SDBusDriver」を選択し優先度を 1 にする。
    これにより無線LAN や Bluetooth から渡ってくるデータをすばやく受取り、データの流れをスムーズになると思われる。



これらのパラメータを設定することで SD カードが安定すると思うが、上に書いたように安定性は、「デバイス・OS・ドライバ・SD カード・ソフトウェア」のバランスによるものなので ( 基本的に OS と思うが ) すべてのデバイスで安定するわけではない。
もしいろいろと試したら結果をフィードバックしてください。

シングルブロック転送のデメリット

SD カードの転送方式をシングルブロック転送に変更することで、安定化する場合がありますが、シングルブロック転送はマルチブロック転送に比べ転送レートが格段に落ちてしまいます。

以下、Willcom Advanced W-ZERO3[es] と microSD Toshiba SD-C02G を使った、転送方式によるスピードの差です。
( 計測には Spb Benchmark を使用しました。)

テスト項目 かかった時間 転送レート かかった時間 転送レート

マルチブロック転送
シングルブロック転送
Writing 1 MB file 1059 ms 967 KB/sec 4971 ms 206 KB/sec
Reading 1 MB file 802 ms 1.25 MB/sec 802 ms 1.25 MB/sec
Copying 1 MB file to storage card 689 ms 1485 KB/sec 4971 ms 206 KB/sec
Copying 1 MB file from storage card 662 ms 1548 KB/sec 660 ms 1553 KB/sec
Writing 100 of 10 KB files 4845 ms 211 KB/sec 8485 ms 121 KB/sec
Reading 100 of 10 KB files 1138 ms 0.879 MB/sec 1206 ms 0.829 MB/sec
Copying 100 of 10 KB files to storage card 3805 ms 269 KB/sec 7914 ms 129 KB/sec
Copying 100 of 10 KB files from storage card 2506 ms 409 KB/sec 2512 ms 408 KB/sec
Directory listing: 2000 files 219 ms 9.12 thousands of files/sec 218 ms 9.18 thousands of files/sec


この結果を見て分かるように、シングルブロック転送にすると書き込みスピードが 1/2~1/4 程度のスピードまで低下してしまう。
これらのスピードを向上させるには、ディスクキャッシュを多めにとることが必要であると思う。( ディスクキャッシュについてはまた後日 )

お礼

今回の SD カード安定化は「ままさる」さんの研究の成果です。お礼を申し上げます。
http://d.hatena.ne.jp/mikiofuku/20070211#c

Tag: レジストリ ハードウェア Pocketの手