P905iで SDカードを変えたかったのだが


 P905iで今まで、2GBの microSDカードを使っていた。
 いろいろ考えて、4GBの microSDHCカードに変更しようと思って、携帯を microSDモードで USBに接続して、2GBの中身を全コピーして、4GBに入れ替えてまた全コピーし直したのだが、SDカードに保存した iアプリが読めない。
 
 とりあえず、その時に移動した SDカードでなければ読めないのかと思って、2GBの方で一旦本体に移動した後、4GBの方に入れ替えて、なんて感じでいろいろやってみたのだが駄目。

 何らかの保護が効いているのかと思ったが、SDカードの中身を調べてみることにした。

 SD_BINDというところに、いろいろコンテンツが保存されている。
 SD_BIND.INFはちらっと見た感じ、説明の様だ。
 SD_BIND.TKMがファイルリストの様だった。

 バイナリエディタでざっと見てみたところ、双方向リスト構造の様で、最初の8バイトは最後の番号(もしくは個数?)とか最初の番号とか、多分そういう感じ。
 で、1ファイル情報が128バイトあって、SD_BIND.TKMのファイル長はファイルの個数に応じて可変の様だ。
 1ファイル情報には、自番号、次の番号、前の番号、らしい物があったので、多分双方向リストだと思われる。
 最初に 0x00、0x10 0x01、0x00という不明なコードがあり、その次から2バイトずつ、自番号、次の番号、前の番号になっていると思われる。
 次に 0x00が2バイトあって、先頭 0x11の連番があり、ディレクトリ名、ファイル名と続いている。
 残りの部分は 0x00で埋まっている様だ。

 で、読めないファイルを調べてみたところ、どうもリスト構造が壊れている。ファイル名との整合性がとれていない。リスト構造なら当たり前で、ファイルを削除して強引に読み書きしたりしたもんだから、壊れてしまったのだろう。

 修正しようと思ったのだが、双方向リストのため、手動ではかなり面倒だ。
 ファイル情報自体は連番で格納されているのだが、欠番の位置は 0x00でクリアされていて、リストの結合で欠番は飛ばされている。
 飛ばされているだけなら良いのだが、リスト構造のため、前や次があっちへ行ったりこっちへ行ったり、手動で修正するのはあきらめたよ。

 ちゃんとしようと思ったら、そのリスト構造を再現するプログラムを組めばいいのだろう。読み込みは簡単だし、最後の書き込みは、内部番号でソートして欠番は 0x00で埋めるという処理をしたらいい。しかし、欠番が 0x00で埋まるということは、多分リスト構造だけど配列かなんかで持っていて、それをそのまま書き込んでいるのだろうと思われる。面倒な処理だが、メモリ節約のために、そのような処理にしているのだと思われる。組み込みだからね。

 どうやれば、簡易的になんとかなるものを作れるのかはわかったが、面倒。(^_^;
 ちゅうか、メインマシンを Vistaにしてから、VisualStudio2005と2008しか入れてないから、それで作るのが面倒という話も。(^_^;
 いやね、このぐらいだったら、VB6でチョロチョロッととりあえず動く物を書いて、使って、それで終わりって感じなんだけどね。C++/C#なんかで書くと、結構大がかりになってしまうのよ。僕は。ついつい、ちゃんと書こうと思ってしまって。コードを書く量が半端じゃなくなったり。ちょいバカプログラムは VB6がサイコー!なんてね。

 誰か作らんかな。(^_^;

 ちゅうか、保護で移動した機械でしか動かんで良いから、簡単にコピーだけで動く様にしてよ。SDカードの変更方法を考えてくれ。NTTドコモよ。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 1

なるほど(納得、参考になった、ヘー)

この記事へのコメント

この記事へのトラックバック

  • P905iのカードを変更

    Excerpt: 「P905iで SDカードを変えたかったのだが」から Weblog: SDJ Weblog in ウェブリブログ racked: 2008-03-27 16:25