マイコン独立大作戦
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
前へ
次へ
ホームページトップへ戻る