PICで気圧、温度、湿度計 by 24FJ64GA004 SDカードに記録する その3
FAT16ファイルシステムを狙い撃ちする実験
PIC24FJ64GA004で、Microchip社提供の強力で巨大なAPI「Memory Disk Drive File System Library」を使って、SDメモリーカード上のFAT16ファイルシステムにアクセスしようと試みましたが、いくらやってもうまくいきません。どうしてもMMCモードからSPIモードへの移行が出来ないのです。私のPICやC言語に対する未熟さが露呈してしまった感じです。 |
今回実験で使用しているのは、Transcend社製の 2GB SDメモリーカードですが、SDHCを除く2GB以下の容量の物ならば何でも良いはずです。問題は相性(誠に曖昧な言葉で、具体性を欠いていて大嫌いな言葉ですが・・)だけです。 8MB、128MB、miniSD8MB等を試してみましたが、残念ながら今の所、今回のハードとソフトの構成で、アクセスに成功したのは、幸か不幸か前述の3種類だけです・・・ 次に、FAT12や、FAT16でフォーマットの済んだSDメモリーカードへ、データ狙い撃ちで書込みする為のダミーデータを、「メモ帳」等でテキストファイルを1つだけ作って用意し、SDメモリーカード上へコピーして下さい。 そのファイルの中身は何でも構いませんが、ファイルの先頭アドレスを探るのに解りやすい英文字(例えばAir3とか)を4文字程先頭に使っておいて下さい。ファイルのそのものの大きさは何でも良いですが、1ファイルの大きさが数メガバイトを超える様な大きなテキストファイルや、改行(LF,CR)を途中に含まない数キロバイト以上のテキストファイル等は、そのファイルをエディター自身が処理できなくなったり、OS自身がファイルの大きさを正しく把握できなくなってしまう事がありますのでご注意下さい。ファイル名は何でも良いですが英数字で短めの物にしておいて下さい。 いよいよ、ディスクダンプエディタを起動して、Generic USB SD Reder を選択してSDメモリーカードを表示させてみましょう。 アドレス0が表示されます。殆ど00ばかりで、一部に何か書かれています。ここのアドレス0x01C6、0x01C7、0x01C8、0xC9の内容は重要な意味が有りますが、まだ、FATファイルシステムの事を何も知らないのですから、とりあえずどうでも良いです。 オプションのアドレス表示をデバイス単位にしておいて下さい。 そして、編集>検索で「次のセクタも検索する」をチェックを入れておいて、ファイルの先頭アドレスを調べる為に、先ほどSDメモリーカードに書き込んでおいたファイルの内容の先頭の何文字か(例えばAir3)を検索して下さい。 チョロチョロチョロっと検索が進んで、ファイルの先頭が現れるはずです。文字データーがASCIIコードで表現されて格納されていますね。この時の左端に表示されている値が、このSDカードメモリーに書かれたファイルの先頭アドレスです。この値は、同じカードであっても、フォーマットする機器の都合によって様々な値に成ります。カードの容量が異なれば、全く違う値に成ります。 Transcend 2GB SDメモリーカードをWindowsXP Pro. SP3 でFAT(FAT16)でフォーマットした場合でも、それ以前に別の機器でフォーマットされていれば異なる値に成ります。 例えば、この例ではSDメモリーカードを買ったままで何もフォーマットを行わないでファイルを1つコピーした場合ですが、1つ目のフィルの先頭アドレスは0x50000でした。ところが、他のパソコンでFAT32でフォーマットして使った後で、再びWindows XP Pro. SP3 でフォーマットした物では0x48E000とか、0x47E000とかの値になりました。いずれにしても、この値こそが、知りたかったSDメモリーカード上のファイルの先頭アドレスなのです。 この先頭アドレスが解ってしまえば、他の事は殆どどうでも良いのです。この値をPICのソフトウエア上で使用して、SDメモリーカードへデーターを狙い撃ちで順番に書き込んで行けば良いのです。ただし、同一の会社の同一のSDカードであっても、フォーマットの経過によっては1つ目のファイルの先頭アドレスは異なる場合がありますので、事前に調べておかなくてはいけません。 PIC自身でファイルの先頭アドレスを探させれば、こんな事はしなくても良いのですが、その分プログラムが複雑になり、プログラム容量が増してしまいます。SDメモリーカードの再フォーマットさえ行わなければ、ファイルの先頭アドレスは変わりませんから、1回だけ人力で調べておけば良いのです。何処まで人任せで、どこからPICにやらせるか?ただそれだけの事です・・・ そうは言っても、実際にパソコンはどうやって、ファイルを探しているのか気になります。 今回はファイルの先頭の4文字をあらかじめ知っていたので、検索を利用して探しましたが、パソコンはFATファイルシステムから得られる情報を元にしてファイルを操作しています。 このFATファイルシステムの概要を知っておいた方が、今後の為にも良いと思います。 次回は、そのFATファイルシステムの仕組みを私なりに解析(?)した結果を元に説明(?)してみようと思います。 (Jan. tha 19th 2011) |
なお、当ホームページで公開しているデーター(写真、音声)等を個人の枠を超えて複製・転用する事はご遠慮下さいませ。 |
ご意見/苦情/ご感想はこちらまで |