マイコン独立大作戦
SDカードインターフェースの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
独立大作戦の作戦その1はCRTインターフェースボードの製作です。
作戦その2はキーボードインターフェースです。
そして作戦その3は、SDカードインターフェースです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第5回]
●SDHCカード(FAT32)のアクセスに成功しました!
ホットニュースです。
まだ連載が始まったばかりで、本格的な説明にも入っていないのですけれど、ちょいとビッグなニュースですので、速報いたします。
前にも少し書きましたが、SDカードは2GBまでのものとそれ以上の容量のもの(SDHC/SDXC)とではアクセスの方法が全く違っています。
2GBまでのスタンダードタイプのSDカードのことを、以下SDカードと表現します。
それ以上の容量のカードでSDXCはまださわっていませんので、ここではSDHCのみを取り上げます。
以下SDHCカードと表現します。
SPIモードでアクセスできる点はどちらも同じなのですが、普通にREAD、WRITEできるようにするまでの初期的な手続きが、SDHCカードはSDカードに比べてうんと複雑です。
それに加えて両者ではFATシステムも異なっています。
SDカードはFAT16ですがSDHCカードはFAT32です。
この違いを把握して、FAT32のおおよその構造を解明するのにかなり時間を要しました。
こちらが今回使用したSDHCカード(microSD)本体と変換アダプタの写真です。
容量は8GBです。
いつごろ買ったのか定かではありませんが、かなり古いことは確かです。
数年前に携帯を買い換える前の機種に実装して使っていたものです。
携帯を買い換えてからは使わなくなって、本棚の隅でほこりをかぶっていたのをみつけて試しに使ってみたものです。
Windows7でフォーマットをし直して、適当なファイルをコピーしました。
ND80Z3.5付属の「応用プログラム集」にある「オハヨー」です。
そしてこちらがND80Z3.5でセクタb指定して読み出したセクタの内容です。
毎度書いておりますが、ND80Z3.5は優れものなのです。
logfile nd80zlog\10311704.txt open ND80ZVに接続しました 0001 0000 - z 1000 00C3 - *** nd80z3 basic **** ndwr2h.bin loaded,from E23F to E535 >/ld sdcdif5c.bin,8100 loading SDCDIF5C.BIN ...0230(560)bytes loaded,from 8100 to 832F >jp 8100 [00000000] 8800 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8810 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8820 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8830 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8840 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8850 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8860 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8870 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8880 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8890 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8900 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8910 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8920 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8930 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8940 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8950 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8960 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8970 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8980 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8990 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 82 ................ 89C0 03 00 0B 19 D1 C8 00 20-00 00 00 30 ED 00 00 00 ....ムネ. ...0.... 89D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA ..............Uェ |
ディスクの先頭セクタ(セクタbO)です。
SDカードはFAT16でもFAT32でも1セクタは512バイトです。
セクタbOにはカードの最も基本的な情報が書かれています。
最後の2バイト55AAは識別マークで、これが無いとWindowsでは有効なディスクとして認識されません。
中身の解析については、いずれ説明をするつもりですので、ここでは触れません。
まずは結果を見ていただくだけにとどめます。
下は最初のパーティションブロックのMBR(Master Boot Record)です。
このSDHCカードではセクタbQ000Hにあります。
>cm 8103 8103 00- 8104 00- 8105 00-20 8106 00- >jp 8100 [00002000] 8800 EB 58 90 4D 53 44 4F 53-35 2E 30 00 02 40 2E 11 .X.MSDOS5.0..@.. 8810 02 00 00 00 00 F8 00 00-3F 00 FF 00 00 20 00 00 ........?.... .. 8820 00 30 ED 00 69 07 00 00-00 00 00 00 02 00 00 00 .0..i........... 8830 01 00 06 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8840 80 00 29 C1 50 73 6E 4E-4F 20 4E 41 4D 45 20 20 ..)チPsnNO NAME 8850 20 20 46 41 54 33 32 20-20 20 33 C9 8E D1 BC F4 FAT32 3ノ.ムシ. 8860 7B 8E C1 8E D9 BD 00 7C-88 4E 02 8A 56 40 B4 41 {.チ.ルス.|.N..V@エA 8870 BB AA 55 CD 13 72 10 81-FB 55 AA 75 0A F6 C1 01 サェUヘ.r...Uェu..チ. 8880 74 05 FE 46 02 EB 2D 8A-56 40 B4 08 CD 13 73 05 t..F..-.V@エ.ヘ.s. 8890 B9 FF FF 8A F1 66 0F B6-C6 40 66 0F B6 D1 80 E2 ケ....f.カニ@f.カム.. 88A0 3F F7 E2 86 CD C0 ED 06-41 66 0F B7 C9 66 F7 E1 ?...ヘタ..Af.キノf.. 88B0 66 89 46 F8 83 7E 16 00-75 38 83 7E 2A 00 77 32 f.F..~..u8.~*.w2 88C0 66 8B 46 1C 66 83 C0 0C-BB 00 80 B9 01 00 E8 2B f.F.f.タ.サ..ケ...+ 88D0 00 E9 2C 03 A0 FA 7D B4-7D 8B F0 AC 84 C0 74 17 ..,...}エ}..ャ.タt. 88E0 3C FF 74 09 B4 0E BB 07-00 CD 10 EB EE A0 FB 7D <.t.エ.サ..ヘ.....} 88F0 EB E5 A0 F9 7D EB E0 98-CD 16 CD 19 66 60 80 7E ....}...ヘ.ヘ.f`.~ 8900 02 00 0F 84 20 00 66 6A-00 66 50 06 53 66 68 10 .... .fj.fP.Sfh. 8910 00 01 00 B4 42 8A 56 40-8B F4 CD 13 66 58 66 58 ...エB.V@..ヘ.fXfX 8920 66 58 66 58 EB 33 66 3B-46 F8 72 03 F9 EB 2A 66 fXfX.3f;F.r...*f 8930 33 D2 66 0F B7 4E 18 66-F7 F1 FE C2 8A CA 66 8B 3メf.キN.f...ツ.ハf. 8940 D0 66 C1 EA 10 F7 76 1A-86 D6 8A 56 40 8A E8 C0 ミfチ...v..ヨ.V@..タ 8950 E4 06 0A CC B8 01 02 CD-13 66 61 0F 82 75 FF 81 ...フク..ヘ.fa..u.. 8960 C3 00 02 66 40 49 75 94-C3 42 4F 4F 54 4D 47 52 テ..f@Iu.テBOOTMGR 8970 20 20 20 20 00 00 00 00-00 00 00 00 00 00 00 00 ............ 8980 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8990 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89A0 00 00 00 00 00 00 00 00-00 00 00 00 0D 0A 52 65 ..............Re 89B0 6D 6F 76 65 20 64 69 73-6B 73 20 6F 72 20 6F 74 move disks or ot 89C0 68 65 72 20 6D 65 64 69-61 2E FF 0D 0A 44 69 73 her media....Dis 89D0 6B 20 65 72 72 6F 72 FF-0D 0A 50 72 65 73 73 20 k error...Press 89E0 61 6E 79 20 6B 65 79 20-74 6F 20 72 65 73 74 61 any key to resta 89F0 72 74 0D 0A 00 00 00 00-00 AC CB D8 00 00 55 AA rt.......ャヒリ..Uェ |
ここにはFAT領域のサイズとかデータブロックがどこにあるのかなどの情報が書かれています。
今はその詳細については触れません。
いずれ詳しく説明するつもりです(早く書かないと忘れてしまうかも)。
下は最初のFATの先頭セクタです。
FATはFile Allocation Tableの略です。
セクタbヘ312EHです。
めちゃめちゃ半端なアドレスです。
>cm 8103 8103 00- 8104 00- 8105 20-31 8106 00-2e 8107 3E- >jp 8100 [0000312E] 8800 F8 FF FF 0F FF FF FF FF-FF FF FF 0F FF FF FF 0F ................ 8810 FF FF FF 0F FF FF FF 0F-FF FF FF 0F 00 00 00 00 ................ 8820 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8830 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8840 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8850 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8860 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8870 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8880 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8890 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8900 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8910 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8920 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8930 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8940 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8950 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8960 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8970 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8980 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8990 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ |
FATはふつう同じものが2つあります。
予備ということなのでしょうか。
2番目のFATの先頭セクタは、bR897Hです。
こちらもめちゃめちゃ半端なアドレスです。
>cm 8105 8105 31-38 8106 2E-97 8107 3E- >jp 8100 [00003897] 8800 F8 FF FF 0F FF FF FF 7F-FF FF FF 0F FF FF FF 0F ............... 8810 FF FF FF 0F FF FF FF 0F-FF FF FF 0F 00 00 00 00 ................ 8820 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8830 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8840 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8850 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8860 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8870 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8880 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8890 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8900 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8910 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8920 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8930 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8940 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8950 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8960 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8970 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8980 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8990 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ |
このSDHCカードの場合、FATのサイズは769Hセクタです。
第一のFATの先頭セクタbR12EHに769Hを足すと、第二のFATの先頭セクタ(3897H)になります。
うむ。
計算は合っていますね。
そして第二のFATの先頭セクタbR897Hに769Hを足すと、今度はえらくキリのよい値4000Hになります。
セクタbS000Hの内容です。
>cm 8105 8105 38-40 8106 97-00 8107 3E- >jp 8100 [00004000] 8800 4F 48 41 59 4F 42 20 20-42 54 4B 20 00 B1 79 41 OHAYOB BTK .アyA 8810 5D 49 5D 49 00 00 0D 74-31 3D 03 00 81 00 00 00 ]I]I...t1=...... 8820 4F 48 41 59 4F 42 20 20-4C 53 54 20 00 B7 79 41 OHAYOB LST .キyA 8830 5D 49 5D 49 00 00 0D 74-31 3D 04 00 42 0A 00 00 ]I]I...t1=..B... 8840 41 4F 00 48 00 41 00 59-00 4F 00 0F 00 91 62 00 AO.H.A.Y.O....b. 8850 2E 00 74 00 78 00 74 00-00 00 00 00 FF FF FF FF ..t.x.t......... 8860 4F 48 41 59 4F 42 20 20-54 58 54 20 00 BF 79 41 OHAYOB TXT .ソyA 8870 5D 49 5D 49 00 00 A2 56-F5 3C 05 00 A0 04 00 00 ]I]I..「V.<...... 8880 4F 48 41 59 4F 42 20 20-42 49 4E 20 00 C5 79 41 OHAYOB BIN .ナyA 8890 5D 49 5D 49 00 00 0D 74-31 3D 06 00 7D 00 00 00 ]I]I...t1=..}... 88A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8900 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8910 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8920 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8930 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8940 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8950 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8960 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8970 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8980 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8990 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ |
おお。
ディレクトリが現れました。
ディレクトリにはファイル名やファイルサイズなどの情報とともに、そのデータがどこにあるかなどが示されています。
下は最初のファイルOHAYOB.BTKが格納されているセクタの内容です。
セクタbヘ4040Hです。
ふむ。
キリがいい値になりましたね。
>cm 8105 8105 40- 8106 00-40 8107 3E- >jp 8100 [00004040] 8800 80 00 80 7C CD 4E 80 21-6D 80 11 F8 FF 01 08 00 ...|ヘN.!m....... 8810 CD 59 80 ED A0 EA 0C 80-CD 59 80 CD 4E 80 CD 59 ヘY......ヘY.ヘN.ヘY 8820 80 06 03 21 1C 1C 11 3F-3F 22 FB FF CD 5F 80 ED ...!...??"..ヘ_.. 8830 53 FB FF CD 5C 80 10 F1-CD 4E 80 21 75 80 11 F8 S..ヘ\...ヘN.!u... 8840 FF 01 08 00 CD 5C 80 ED-A0 EA 40 80 CD 59 80 C3 ....ヘ\....@.ヘY.テ 8850 0F 08 21 F8 FF 01 00 08-71 23 10 FC C9 CD 5C 80 ..!.....q#..ノヘ\. 8860 CD 5F 80 D5 1E 32 D5 CD-DD 02 D1 1D C2 62 80 D1 ヘ_.ユ.2ユヘン.ム.ツb.ム 8870 C9 43 4C 43 4C 43 4C 43-4C 3F 76 77 6E 3F 40 40 ノCLCLCLCL?vwn?@@ 8880 40 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 @............... 8890 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8900 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8910 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8920 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8930 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8940 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8950 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8960 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8970 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8980 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8990 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ |
FATファイルシステムではディスクのアクセス効率を上げるために、ファイルをディスクに収めるときに、セクタ単位ではなくてクラスタという単位で行ないます。
FAT16やFAT32では1クラスタは64セクタです。
たとえ数バイトしかない小さなファイルでも、ディスクにSAVEすると1クラスタ(64セクタ)を占有します。
上でディレクトリのセクタbェ4000Hで、最初のデータファイルのセクタbェ4040Hとキリのいい値なのはそのためです(40H=64)。
ということになりますと、その次のデータは4080Hにあることが期待されます。
実はいつもそうなっているとは限らなくて、ファイルの削除や追加を繰り返すと、あちこちに散らばったり虫食い状態になったりします。
このセクタアドレスもさきほどのディレクトリの中に書かれている情報(セクタbナはなくてクラスタajから算出できます。
OHAYOB.LSTが収められている最初のセクタ(4080H)の内容です。
>cm 8105 8105 40- 8106 40-80 8107 3E- >jp 8100 [00004080] 8800 32 30 31 30 2F 39 2F 31-37 20 20 31 34 3A 33 32 2010/9/17 14:32 8810 20 20 6F 68 61 79 6F 62-2E 74 78 74 0D 0A 45 4E ohayob.txt..EN 8820 44 3D 38 30 37 43 0D 0A-20 20 20 20 20 20 20 20 D=807C.. 8830 20 20 20 20 20 20 3B 20-4F 48 41 59 4F 20 66 6F ; OHAYO fo 8840 72 20 4E 44 5A 0D 0A 20-20 20 20 20 20 20 20 20 r NDZ.. 8850 20 20 20 20 20 3B 20 30-33 2F 30 34 2F 32 38 20 ; 03/04/28 8860 35 2F 39 0D 0A 20 20 20-20 20 20 20 20 20 20 20 5/9.. 8870 20 20 20 3B 31 30 2F 36-2F 31 20 66 6F 72 20 4E ;10/6/1 for N 8880 44 38 30 5A 33 0D 0A 20-20 20 20 20 20 20 20 20 D80Z3.. 8890 20 20 20 20 20 3B 0D 0A-20 20 20 20 20 20 20 20 ;.. 88A0 20 20 20 20 20 20 20 20-20 20 20 4F 52 47 20 24 ORG $ 88B0 38 30 30 30 0D 0A 20 20-20 20 20 20 20 20 20 20 8000.. 88C0 20 20 20 20 20 20 20 20-20 4C 45 44 31 3D 24 46 LED1=$F 88D0 46 46 38 0D 0A 20 20 20-20 20 20 20 20 20 20 20 FF8.. 88E0 20 20 20 20 20 20 20 20-4C 45 44 34 3D 24 46 46 LED4=$FF 88F0 46 42 0D 0A 20 20 20 20-20 20 20 20 20 20 20 20 FB.. 8900 20 20 20 20 20 20 20 53-54 41 52 54 31 3D 24 30 START1=$0 8910 38 30 46 0D 0A 20 20 20-20 20 20 20 20 20 20 20 80F.. 8920 20 20 20 20 20 20 20 20-54 4D 35 4D 3D 24 30 32 TM5M=$02 8930 44 44 0D 0A 20 20 20 20-20 20 20 20 20 20 20 20 DD.. 8940 20 20 3B 0D 0A 38 30 30-30 20 43 44 34 45 38 30 ;..8000 CD4E80 8950 20 20 20 20 20 20 20 20-43 41 4C 4C 20 43 4C 52 CALL CLR 8960 0D 0A 20 20 20 20 20 20-20 20 20 20 20 20 20 20 .. 8970 3B 41 53 49 41 54 4F 20-64 69 73 70 0D 0A 38 30 ;ASIATO disp..80 8980 30 33 20 32 31 36 44 38-30 20 20 20 20 20 20 20 03 216D80 8990 20 4C 44 20 48 4C 2C 41-53 49 44 54 0D 0A 38 30 LD HL,ASIDT..80 89A0 30 36 20 31 31 46 38 46-46 20 20 20 20 20 20 20 06 11F8FF 89B0 20 4C 44 20 44 45 2C 4C-45 44 31 0D 0A 38 30 30 LD DE,LED1..800 89C0 39 20 30 31 30 38 30 30-20 20 20 20 20 20 20 20 9 010800 89D0 4C 44 20 42 43 2C 24 30-30 30 38 0D 0A 38 30 30 LD BC,$0008..800 89E0 43 20 43 44 35 39 38 30-20 20 20 41 53 49 44 50 C CD5980 ASIDP 89F0 32 3A 43 41 4C 4C 20 54-4D 31 53 0D 0A 38 30 30 2:CALL TM1S..800 |
下はOHAYOB.TXTが収められている最初のセクタ(40C0H)の内容です。
>cm 8105 8105 40- 8106 A0-c0 8107 3E- >jp 8100 [000040C0] 8800 3B 20 4F 48 41 59 4F 20-66 6F 72 20 4E 44 5A 0D ; OHAYO for NDZ. 8810 0A 3B 20 30 33 2F 30 34-2F 32 38 20 35 2F 39 0D .; 03/04/28 5/9. 8820 0A 3B 31 30 2F 36 2F 31-20 66 6F 72 20 4E 44 38 .;10/6/1 for ND8 8830 30 5A 33 0D 0A 3B 0D 0A-20 20 20 20 20 4F 52 47 0Z3..;.. ORG 8840 20 24 38 30 30 30 0D 0A-20 20 20 20 20 4C 45 44 $8000.. LED 8850 31 3D 24 46 46 46 38 0D-0A 20 20 20 20 20 4C 45 1=$FFF8.. LE 8860 44 34 3D 24 46 46 46 42-0D 0A 20 20 20 20 20 53 D4=$FFFB.. S 8870 54 41 52 54 31 3D 24 30-38 30 46 0D 0A 20 20 20 TART1=$080F.. 8880 20 20 54 4D 35 4D 3D 24-30 32 44 44 0D 0A 3B 0D TM5M=$02DD..;. 8890 0A 20 20 20 20 20 43 41-4C 4C 20 43 4C 52 0D 0A . CALL CLR.. 88A0 3B 41 53 49 41 54 4F 20-64 69 73 70 0D 0A 20 20 ;ASIATO disp.. 88B0 20 20 20 4C 44 20 48 4C-2C 41 53 49 44 54 0D 0A LD HL,ASIDT.. 88C0 20 20 20 20 20 4C 44 20-44 45 2C 4C 45 44 31 0D LD DE,LED1. 88D0 0A 20 20 20 20 20 4C 44-20 42 43 2C 24 30 30 30 . LD BC,$000 88E0 38 0D 0A 41 53 49 44 50-32 3A 43 41 4C 4C 20 54 8..ASIDP2:CALL T 88F0 4D 31 53 0D 0A 20 20 20-20 20 4C 44 49 0D 0A 20 M1S.. LDI.. 8900 20 20 20 20 4A 50 20 50-45 2C 41 53 49 44 50 32 JP PE,ASIDP2 8910 0D 0A 20 20 20 20 20 43-41 4C 4C 20 54 4D 31 53 .. CALL TM1S 8920 0D 0A 20 20 20 20 20 43-41 4C 4C 20 43 4C 52 0D .. CALL CLR. 8930 0A 20 20 20 20 20 43 41-4C 4C 20 54 4D 31 53 0D . CALL TM1S. 8940 0A 3B 45 59 45 20 63 6C-6F 73 65 2F 6F 70 65 6E .;EYE close/open 8950 0D 0A 20 20 20 20 20 4C-44 20 42 2C 30 33 0D 0A .. LD B,03.. 8960 20 20 20 20 20 4C 44 20-48 4C 2C 24 31 43 31 43 LD HL,$1C1C 8970 0D 0A 20 20 20 20 20 4C-44 20 44 45 2C 24 33 46 .. LD DE,$3F 8980 33 46 0D 0A 45 59 45 3A-4C 44 20 28 4C 45 44 34 3F..EYE:LD (LED4 8990 29 2C 48 4C 0D 0A 20 20-20 20 20 43 41 4C 4C 20 ),HL.. CALL 89A0 54 4D 30 32 35 0D 0A 20-20 20 20 20 4C 44 20 28 TM025.. LD ( 89B0 4C 45 44 34 29 2C 44 45-0D 0A 20 20 20 20 20 43 LED4),DE.. C 89C0 41 4C 4C 20 54 4D 30 35-0D 0A 20 20 20 20 20 44 ALL TM05.. D 89D0 4A 4E 5A 20 2A 45 59 45-0D 0A 20 20 20 20 20 43 JNZ *EYE.. C 89E0 41 4C 4C 20 43 4C 52 0D-0A 3B 6F 68 61 79 6F 20 ALL CLR..;ohayo 89F0 64 69 73 70 0D 0A 20 20-20 20 20 4C 44 20 48 4C disp.. LD HL |
そして最後はOHAYOB.BINが収められているセクタ(4100H)の内容です。
>cm 8105 8105 40-41 8106 C0-00 8107 3E- >jp 8100 [00004100] 8800 CD 4E 80 21 6D 80 11 F8-FF 01 08 00 CD 59 80 ED ヘN.!m.......ヘY.. 8810 A0 EA 0C 80 CD 59 80 CD-4E 80 CD 59 80 06 03 21 ....ヘY.ヘN.ヘY...! 8820 1C 1C 11 3F 3F 22 FB FF-CD 5F 80 ED 53 FB FF CD ...??"..ヘ_..S..ヘ 8830 5C 80 10 F1 CD 4E 80 21-75 80 11 F8 FF 01 08 00 \...ヘN.!u....... 8840 CD 5C 80 ED A0 EA 40 80-CD 59 80 C3 0F 08 21 F8 ヘ\....@.ヘY.テ..!. 8850 FF 01 00 08 71 23 10 FC-C9 CD 5C 80 CD 5F 80 D5 ....q#..ノヘ\.ヘ_.ユ 8860 1E 32 D5 CD DD 02 D1 1D-C2 62 80 D1 C9 43 4C 43 .2ユヘン.ム.ツb.ムノCLC 8870 4C 43 4C 43 4C 3F 76 77-6E 3F 40 40 40 00 00 00 LCLCL?vwn?@@@... 8880 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8890 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 88F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8900 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8910 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8920 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8930 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8940 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8950 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8960 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8970 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8980 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 8990 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 89F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ >/exit 0000 00C3 - リモート接続を終了しました logfile closed at Mon Oct 31 17:23:54 2016 |
参考までに、ここでテストとして使ったファイルのうちOHAYOB.LSTを下に示します。
2010/9/17 14:32 ohayob.txt END=807C ; OHAYO for NDZ ; 03/04/28 5/9 ;10/6/1 for ND80Z3 ; ORG $8000 LED1=$FFF8 LED4=$FFFB START1=$080F TM5M=$02DD ; 8000 CD4E80 CALL CLR ;ASIATO disp 8003 216D80 LD HL,ASIDT 8006 11F8FF LD DE,LED1 8009 010800 LD BC,$0008 800C CD5980 ASIDP2:CALL TM1S 800F EDA0 LDI 8011 EA0C80 JP PE,ASIDP2 8014 CD5980 CALL TM1S 8017 CD4E80 CALL CLR 801A CD5980 CALL TM1S ;EYE close/open 801D 0603 LD B,03 801F 211C1C LD HL,$1C1C 8022 113F3F LD DE,$3F3F 8025 22FBFF EYE:LD (LED4),HL 8028 CD5F80 CALL TM025 802B ED53FBFF LD (LED4),DE 802F CD5C80 CALL TM05 8032 10F1 DJNZ *EYE 8034 CD4E80 CALL CLR ;ohayo disp 8037 217580 LD HL,OHAYODT 803A 11F8FF LD DE,LED1 803D 010800 LD BC,$0008 8040 CD5C80 OHYDP2:CALL TM05 8043 EDA0 LDI 8045 EA4080 JP PE,OHYDP2 8048 CD5980 CALL TM1S 804B C30F08 JP START1 ;LED clear 804E 21F8FF CLR:LD HL,LED1 8051 010008 LD BC,$0800 8054 71 CLR2:LD (HL),C 8055 23 INC HL 8056 10FC DJNZ *CLR2 8058 C9 RET ;1sec timer/0.5sec timer/0.25sec timer 8059 CD5C80 TM1S:CALL TM05 805C CD5F80 TM05:CALL TM025 805F D5 TM025:PUSH DE 8060 1E32 LD E,32;=50 8062 D5 TM025_2:PUSH DE 8063 CDDD02 CALL TM5M;4.496ms 8066 D1 POP DE 8067 1D DEC E 8068 C26280 JP NZ,TM025_2 806B D1 POP DE 806C C9 RET ;asiato data 806D 43 ASIDT:DB 43 806E 4C DB 4C 806F 43 DB 43 8070 4C DB 4C 8071 43 DB 43 8072 4C DB 4C 8073 43 DB 43 8074 4C DB 4C ;"ohayo---" 8075 3F OHAYODT:DB 3F;O 8076 76 DB 76;H 8077 77 DB 77;A 8078 6E DB 6E;y 8079 3F DB 3F;O 807A 40 DB 40;- 807B 40 DB,40;- 807C 40 DB 40;- ; ASIDP2 =800C ASIDT =806D CLR =804E CLR2 =8054 EYE =8025 LED1 =FFF8 LED4 =FFFB OHAYODT =8075 OHYDP2 =8040 START1 =080F TM025 =805F TM025_2 =8062 TM05 =805C TM1S =8059 TM5M =02DD |
今回はホットなビッグニュースをお届けしましたが、次回からは平常に戻りまして、SPIモードでのSDカードインターフェースの説明に戻ります。
私は、SDHCカードFAT32のアクセス成功を祝って、今夜は金麦で乾杯です。
SDカードインターフェースの製作[第5回]
2016.10.31upload
前へ
次へ
ホームページトップへ戻る