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

マイコン独立大作戦
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

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