2016.11.6
前へ
次へ
ホームページトップへ戻る

マイコン独立大作戦
SDカードインターフェースの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
独立大作戦の作戦その1はCRTインターフェースボードの製作です。
作戦その2はキーボードインターフェースです。
そして作戦その3は、SDカードインターフェースです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第11回]


●セクタbO

前回はテストプログラムsdcdif2q.binを実行して、SDカードのセクタbOを読み出すことに成功しました。
今回は読み出したセクタbOの中身を解析します。

下に前回の実行結果を再掲します。

logfile nd80zlog\11031046.txt open

ND80ZVに接続しました
0001 0000 - z
1000 00C3 - 
*** nd80z3 basic ****
ndwr2h.bin loaded,from E23F to E535
>/ld sdcdif2q.bin,8100
loading SDCDIF2Q.BIN ...00f7(247)bytes loaded,from 8100 to 81F6
>jp 8100
FF01FF01FF00FF00FFFFFE
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000201511256B0000000000000000000002
0E000614D4B48B00000075573A00000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000055AA
A3DB
>/exit
0000 00C3 - 
リモート接続を終了しました
logfile closed at Thu Nov 03 10:46:58 2016

セクタbOの中身はほとんどが00です。
終わりのほうに少しだけデータがあります。
一番最後の2バイトは55AAです。
これはFATファイルの識別情報です。
ここに55AAがないと、このディスクは正しいFATファイルディスクとして認識されません。
その2バイトよりも前の64バイトが16バイトずつ4つのブロックに区切られていて、最大4個のパーティションブロックの情報が入れられます。
上の表示のままでは見にくいので、その部分を16バイトずつに区切ってみました。



最初のブロックのみデータがありますが、そのあとの3ブロックにはデータがありません。
このSDカードはパーティションが1つだけであることがわかります。
この64バイト+2バイトよりも前の446バイトはブートストラップローダーのための領域ということらしいのですが、ここにはプログラムらしきものは書かれていません。
終わりに近いあたりに201511256Bという数値らしきものがありますが、これが何だかわかりません。
なんとなく日付のように見えるのですが…。

さてパーティションブロックの16バイトの解析です。
16バイトの情報は先頭から下のように区切られています。

1バイト 00       ブート情報 80:ブート可 00:ブート不可
3バイト 020E00   開始ヘッド、セクタ、シリンダ情報(古い表示方法です。現在は利用されません)
1バイト 06       FAT種別 06:FAT16
3バイト 14D4B4   終了ヘッド、セクタ、シリンダ情報(古い表示方法です。現在は利用されません)
4バイト 8B000000 パーティションの開始セクタ番号
4バイト 75573A00 パーティションのセクタ数

パーティションの開始セクタ番号が書かれています。
格納されているデータ順はリトルエンディアンなので、通常の表現で示すと 00 00 00 8B になります。
この情報に従って、次回はセクタbWBを読んでみることにします。

SDカードインターフェースの製作[第11回]
2016.11.6upload

前へ
次へ
ホームページトップへ戻る