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

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

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

[第19回]


●セクタWRITE

今まではセクタREADのテストだけをやってきました。
セクタWRITEはどうするのだ?
ご心配なく。
ちゃんとセクタWRITEプログラムも作ってすでにテスト済みです。
ちょうどよい機会の到来です。
今回はセクタWRITEプログラムの実行です。
前回からのからみで、プログラムの説明は後回しにいたします。

前回までのところで、FAT1とFAT2の中身が一部異なっていることに気が付いたのですが、新しく購入したSDカードではFAT1とFAT2の中身は同じでした。
前の2枚はWindows7でファイルをコピーしたあとで、FAT1とFAT2が異なっていることに気が付きました。
残念ながらその2枚はファイルをコピーする前にはFAT2の読み出しはしていませんでした。
前の2枚については使用前からFAT2のクラスタbPが7FFFだったのか、それともWindows7でファイルコピーをしたから、そのようになったのか、ここまでのテストでは確認できません。
それをはっきりさせるには3枚目のSDカードに同じようにしてファイルをコピーして、その後にFAT2を読み出して確認してみればよいのですけれど。

ちょっとそれは気が進みません。
いくらテストだからといって新品のSDカードをそんなに次々に使用済みにしてしまうなんて。
この先、テストの確認のために、また新品のSDカードが必要になるかもしれません。
今回購入したSDカードはそういう時のために何も書き込まないでしばらくこのまま置いておきたいと思います。

そこでセクタWRITEプログラムの登場です。
書込み済みのSDカードの中身をクリアして未使用の状態にすれば、それを使ってテストができるじゃありませんか。

ということで、さっそく作業開始です。
まずは2番目に使用したSDカードのFAT1を読み出しました。

logfile nd80zlog\11231839.txt open

ND80ZVに接続しました
0001 0000 - z
1000 00C3 - 
*** nd80z3 basic ****
ndwr2h.bin loaded,from E23F to E535
>/ld sdcdif2r.bin,8100
loading SDCDIF2R.BIN ...0110(272)bytes loaded,from 8100 to 820F
>cm 8103
8103 00-
8104 00-01
8105 00-
>jp 8100
FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01
FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01
FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01
FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF00FF00FFFFFFFE
F8FFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
96DA

ファイルをコピー済みですからデータエリアのクラスタ4個がFFFFになっています。
それを未使用の状態にするために、読み込んだRAM上で0000に書き直します。

>dm 8800,882f
8800  F8 FF FF FF FF FF FF FF-FF FF FF FF 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  ................
>cm 8804
8804 FF-00
8805 FF-00
8806 FF-00
8807 FF-00
8808 FF-00
8809 FF-00
880A FF-00
880B FF-00
880C 00-

そしてそのRAMエリアを元のセクタに書き込みます。
セクタWRITEプログラムはSDCDIF3B.BINです。

>/ld sdcdif3b.bin,8100
loading SDCDIF3B.BIN ...0114(276)bytes loaded,from 8100 to 8213
>cm 8103
8103 00-
8104 00-01
8105 00-
>jp 8100
FF01FF01FF00FF00
E5000000000000FF

うまく書き込めたようです。
その確認はあとでまとめてすることにして、続いてFAT2も更新してしまいましょう。

>cm 8103
8103 00-
8104 01-
8105 00-f0
8106 3E-
>jp 8100
FF01FF01FF00FF00
E5000000000000FF

最後の仕上げです。
ディレクトリエリアもクリアしておきましょう。
FAT1、FAT2を書き込んだRAMエリアはほとんどが00ですから、これを利用することにします。
先頭のF8FFFFFFを00で書き換えておいて、ディレクトリエリア(セクタbO2E0)に書き込みます。

>dm 8800,880f
8800  F8 FF FF FF 00 00 00 00-00 00 00 00 00 00 00 00  ................
>cm 8800
8800 F8-00
8801 FF-00
8802 FF-00
8803 FF-00
8804 00-
>cm 8103
8103 00-
8104 01-02
8105 F0-e0
8106 3E-
>jp 8100
FF01FF01FF00FF00
E50000000000000000000000FF

うまく書き込めたかどうか確認してみます。

>/ld sdcdif2r.bin,8100
loading SDCDIF2R.BIN ...0110(272)bytes loaded,from 8100 to 820F
>cm 8103
8103 00-
8104 00-01
8105 00-
>jp 8100
FF01FF01FF00FF00FFFFFE
F8FFFFFF00000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
D780
>cm 8103
8103 00-
8104 01-
8105 00-f0
8106 3E-
>jp 8100
FF01FF01FF00FF00FFFFFE
F8FFFFFF00000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
D780
>cm 8103
8103 00-
8104 01-02
8105 F0-e0
8106 3E-
>jp 8100
FF01FF01FF00FF00FFFFFE
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000

FAT1、FAT2、ディレクトリエリアが未使用の状態になりました。

今度はWindows7で確認してみます。



Windows7でも、このSDカードが空だと認めてくれました。

ここに今までと同じようにファイルをコピーします。



ファイルをコピーしました。

それではこのコピー済みのSDカードをもう一度読み出してみます。
最初はFAT1です。

>cm 8103
8103 00-
8104 02-01
8105 E0-00
8106 3E-
>jp 8100
FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01
FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01
FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01
FF01FF01FF01FF01FF01FF01FF01FF01FF01FF01FF00FF00FFFFFFFE
F8FFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
96DA

データエリアのクラスタ4個がFFFFになっています。
次はいよいよFAT2です。

>cm 8103
8103 00-
8104 01-
8105 00-f0
8106 3E-
>jp 8100
FF01FF01FF00FF00FFFFFE
F8FFFF7FFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
336A

わお!
クラスタbPが7FFFになっています。
やっぱり犯人はWindows7でした。
うむむ。
何か意味があるのでしょうけれど、その意味を追求することには余り意味はありませんでしょう。
ともかくこれで気分がすっきりいたしました。
ああ、せっかくですから、新しくコピーしたディレクトリも読み出しておきましょう。

>cm 8103
8103 00-
8104 01-02
8105 F0-e0
8106 3E-
>jp 8100
FF01FF01FF00FF00FFFFFE
4E44334D4F4E324F4C53542000652AAA774977490000B836293D020000400000
4E44334D4F4E324F5458542010682AAA774977490000A236293D030037320000
4E44334D4F4E324F42494E20006D2AAA774977490000B836293D0400E4050000
4E44334D4F4E324F42544B2000702AAA774977490000B836293D0500E8050000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
233A
>dm 8800,887f
8800  4E 44 33 4D 4F 4E 32 4F-4C 53 54 20 00 65 2A AA  ND3MON2OLST .e*ェ
8810  77 49 77 49 00 00 B8 36-29 3D 02 00 00 40 00 00  wIwI..ク6)=...@..
8820  4E 44 33 4D 4F 4E 32 4F-54 58 54 20 10 68 2A AA  ND3MON2OTXT .h*ェ
8830  77 49 77 49 00 00 A2 36-29 3D 03 00 37 32 00 00  wIwI..「6)=..72..
8840  4E 44 33 4D 4F 4E 32 4F-42 49 4E 20 00 6D 2A AA  ND3MON2OBIN .m*ェ
8850  77 49 77 49 00 00 B8 36-29 3D 04 00 E4 05 00 00  wIwI..ク6)=......
8860  4E 44 33 4D 4F 4E 32 4F-42 54 4B 20 00 70 2A AA  ND3MON2OBTK .p*ェ
8870  77 49 77 49 00 00 B8 36-29 3D 05 00 E8 05 00 00  wIwI..ク6)=......
>/exit
0000 00C3 - 
リモート接続を終了しました
logfile closed at Wed Nov 23 21:23:24 2016


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

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