3桁機用 SDHC ドライバ!

3桁機でも4GB限定ですがSDHCを認識できるようになりました! →ダウンロードページ

4GB SDHC対応だけでなく、オリジナルでは認識できない2GB以上のSDにも対応させています。

3桁機といっても、SL-C750/760/860用です。SL-C760で確認してますが、たぶん、750/860でも動作すると思います。

3桁機でもSDHC認識!
3桁機でもSDHC認識!

オリジナルのSDドライバに対してバイナリパッチを当てる形でインストールしますので、他のSDドライバに置き換えられているとインストールに失敗します。SD-Link11b用や、2GB以上を認識させるSDドライバ(現在はサイトが閉鎖されているようです)などのSDドライバは、必ずアンインストールしてから、本パッケージをインストールしてください。インストール後再起動すると本ドライバが使用可能になります。

SD-Link11bを使用されている方には申し訳ないですが、併用はできないです。

まだ不安定な可能性もありますが、是非試してみたい!という冒険家の方はお試しください。
試してみた方はコメントに結果を書いていただけるとありがたいです。


SDHCドライバ v1.2 リリース

えーと、v1.1 をリリースしてすぐなのですが、問題があったのでまたまたリリースします。→ダウンロードページ

以前のバージョンをアンインストールしてからインストールしてください。

今回の修正は以下の2点です。

  • SDHCメディアの 2GB 以降へのアクセスができない (mond さんからのご報告)
  • ipk ファイルに不要なファイルが入っていた (ブースカさんからのご報告)

2GB以降へのアクセスができない(というかフリーズする)のは、お恥ずかしながら、また同じ原因でした照れる

SDHC はブロック単位でのアクセスなので、32bit アドレスを単純に 512 で割ってブロックアドレスに変換したんですが、int 型で計算てしまったので 2GB 以上のアドレスになると結果がおかしくなってました。

4GB の SDHC カードに前半 3GB と後半 1GB (確実に2GB以降のアドレスになる)の2つパーテーションを作って、後半1GBのパーテーションに対して問題なく読み書きできることを確認しました。

ipk ファイルの方はバージョン管理のための svn 関連の隠しファイルがそのまま入ってしまっていたようです。

どちらも修正しましたので、何度もお手数ですが、再度確認していただけると幸いです。


SDHCドライバ修正

SDHCドライバを修正しました! →ダウンロードページ
新しいドライバを試すときは一度前のドライバをアンインストールして再起動してからインストールし直してください。

先日リリースした SDHC ドライバですが、多くの方に動作確認していただきました。ありがとうございました。

動作確認の結果、一部のSDカードが認識できない事が分かり、慌てて私が持っているSDカードを片っ端から試してみると、確かに認識しないカードがありました。

ブースカさんがブログで詳細に状況をまとめてくださっていて、私のカードも認識しない時の状況はまったく同じでした。

幸い手持ちのSDカードで再現することができたので原因を探してみると、ブースカさんが指摘されていたとおり、block_count が異常な値として認識されてしまうのが根本の原因でした。

で、どうして block_count が異常だったかというと。。。お恥ずかしいですが、初歩的なミスでした照れる

ビット操作する元の値に signed int を使っていたので、右シフト時に最上位ビット(符号)が引きずられてしまってました。

  • ((unsigned int)0x80000000) >> 16 = 0x8000
    (2147483648 / 65536 = 32768)
  • ((signed int)0x80000000) >> 16 = 0xffff8000
    (-2147483648 / 65536 = -32768)

これが影響してブロック数が異常な値になっていました。

以上の対処を行った今回リリースのドライバでは、手持ちのSDカードが認識するようになりました。

確認したカードは以下の通りです。

  • KINGMAX MSD-128M (miniSD 128MB)
  • Sandisk SDSDM-512 (miniSD 512MB)
  • pqi QMSD-512 (miniSD 512MB)
  • ハギワラシスコム SD-M512 (SD 512MB)
  • GREEN HOUSE GH-SDCM1GC (miniSD 1GB)
  • A-DATA MCSD2GB (microSD 2GB)
  • アイオーデータ SDMC-2G (microSD 2GB)
  • Transcend TS4GSDC (SD 4GB)
  • Transcend TS4GSD133 (SD 4GB)
  • Sandisk SDSDQ-4096 (microSDHC 4GB)

他のカードで問題が解決しているかも知りたいので、認識し無かったカードをお持ちの方は、ドライバをアップデートしてもう一度試してみていただけるとありがたいです。