FPGAでSDカードと通信してみる。(3)
すこし日にちが経ってしまったが読み込んだデータの解析を再開した。
SDカードから512バイト読み出してその内容を何かしらの方法で確認しなければいけないのでとりあえずUARTで吐き出すことにした。データの保持は最初SRAMにしようと思ったが512バイトなので4096bitのレジスタに保持しておいた方が楽という結論になりSDから読んだデータをレジスタに保持し、読み終わったらUARTでPCに送るという方法にした。
とりあえずセクタ0を読んでみたデータがこれである。
セクタ0にはパーテーショニングの情報がかかれているらしく446byte目から16byte分がエントリ1の区画テーブルらしい。順番に見てみる
- 00 ------------------------ブート不可
- 02 06 00
- 06 ------------------------FAT16
- 04 C4 C4
- 83 00 00 00 -----------パーティションの開始物理セクタ番号
- 7D 4F 3B 00 ----------パーティションのサイズ
これでちゃんとFAT16でフォーマットされていることが分かった。
次に開始セクタの番号だがデータはリトルエンディアンなので開始セクタは83になる。
83を読んでみた。
これを文字表示にしてみると
NO NAME FAT16という文字が読めた。
このセクタはBPB(BIOS Parameter Block)と言うらしくFATボリュームのパラメータが記録されているらしい。
とりあえず疲れたのでここまで切り上げる。
おそらく次の記事ではSDに保存されたファイルが読めていることだろう(希望的観測)