マイコン工作実験日記

Microcontroller を用いての工作、実験記録

ディスクは見えてきたけれど

2009-02-26 07:47:08 | USB
ひき続き、USB Mass Storageをやっています。Read Capacity, Mode Sense(6), Read(10), Request Sense, Test Unit ReadyとSCSIコマンドを追加実装してやることで、めでたくWindows XPがMBR, FATそしてルートディレクトリを読みにくるようになりました。

XP上のマイコンピュータからもディスクを見ることができます。ディスクを開けば、ファイルのアイコンも表示できます。ところが、プロパティの表示がおかしい。こんなにディスク使っていないはず。



確認のために、Let's NoteにSDカードを挿してみると、やはり使用領域サイズが間違っています。ディスクの容量は一致していますから、Read Format CapacitiesやRead Capacityコマンドは正しく機能していると判断していいでしょう。使用領域サイズが正しくないということはFATが正しく読みこめていないということでしょうね、きっと。ディレクトリは一応読めているからこそ、ディスク内容アイコンも表示されているハズなのですが。。



READ(10)コマンドの処理自体は、SDカードから読みだしたブロックデータをUSBのBULKエンドポイントを使って送信しているだけで比較的簡単な処理です。そうすると、SDのデータがちゃんと読めていないのか、それともUSBにちゃんと送信できていないのかのどちらか(あるいは両方?)ということになりそうです。

最新の画像もっと見る

5 コメント

コメント日が  古い順  |   新しい順
Unknown (Tsuneo)
2009-02-26 16:21:39
>使用領域サイズが正しくないということはFATが正しく読みこめていないということでしょうね、きっと。
>確認のために、Let's NoteにSDカードを挿してみると、やはり使用領域サイズが間違っています。

Let's NoteはSDカードを直に挿せるカードリーダを内蔵している、ということですね。では、SD カード上のFATフォーマット自体に問題があるんじゃないでしょうか。一度そのSDカードをPCからフォーマットしてみては。

通常、MSCが例の6つSCSIコマンドをサポートしていればPCからフォーマットできますが、MBRとかboot sectorがread-onlyになっていると、フォーマットは失敗します。

Tsuneo
返信する
Re: Unknown (sirius506)
2009-02-26 23:50:40
そうです。Let's Noteはパナの製品だけあってSDカードスロットをもっています。

しかし、カードの問題では無いようです。USBカードリーダを使っても、ちゃんと正しい容量を表示できますので。
返信する
Unknown (Tsuneo)
2009-02-27 17:04:00
>確認のために、Let's NoteにSDカードを挿してみると、やはり使用領域サイズが間違っています。

ああ、やっと理解しました。字面だけを追って、「Let's Noteでも使用領域サイズが間違って表示される」と誤解していました。ちゃんと画面キャプチャを見れば、一目瞭然だったのに。すいません。
MBRのパーティションテーブルは、どうですか?

Tsuneo
返信する
Re: Unknown (sirius506)
2009-02-27 20:31:16
ちょっと言葉足らずでしたね。Let's NoteやUSBカードリーダでは正しく残り容量が表示されるのに、自分のMSCでは正しくないという意味でした。

MBRやFATがちゃんと読めているかどうかは、週末に調べるつもりでいます。MBRの最後に 0x55, 0xAAが入っているのは確認しているので、FATが正しく読めていない(あるいは送れていない)と考えています。
返信する
Unknown (Tsuneo)
2009-02-27 22:54:13
PCでSDカードのセクターを直に読出すユーティリティは、例えば

Disk Investigator
http://www.theabsolute.net/sware/dskinv.html

このユーティリティは、
- Disk information が一覧で表示される
- View メニューからFAT、Root directoryなどにすぐにとべる
など、なかなかMSCのデバッグに都合の良い作りとなっています。

ただセクターダンプをファイルにセーブするのは、ちょっと面倒で、
View cluster ボタン > Add this cluster ボタン > Save to disk

開発中のボードと市販のカードリーダでセクターダンプに差があるか、比較してみてください。WinMergeや、DOS窓で FC あるいは COMP でファイルの比較ができます。

MBR はDisk Investigatorでは読めないので、Windows付属のdskprobe.exeなどを使います。

Disk Probeの使い方
http://itaya.corso-b.net/TIPS/DiskProbe/index.html

Tsuneo
返信する

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。