標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
やっと(!)MYCPU80の改良型基板製作に着手しました!!
[第903回]
●SDカードでERR:92?(3)
前回からの続きです。
問題のSDカードのセクタbOを読み出してみて、普通ならそこにあるべきMBRがなくなっていて、代わりにBPBが書かれていることを発見しました。
独立化セットのSDカードアクセスプログラムでは想定外です。
これではまともにアクセスすることはできません。
そこでMBRとBPBを本来あるべきところに書き直しました。
ふつうはBPBはもっと後ろのセクタに置かれているのですが、そこはとりあえず試しにということで、セクタbPに置きました。
そのように対策をしておいて、DIRコマンドを使ってみたところERR:92は表示されなくなりました。
そこでFORMATを実行して、適当なファイルをセーブし、それを読み出してみて、正常に動作することを確認しました。
これでてっきり、直った!と思ったのですが。
念のため一度SDカードをSDカードソケットから外してから再度挿入して、もう一度DIRコマンドを実行してみたところ、まさかのエラーです。
またしてもERR:92が表示されてしまいました。
どうやらERR:92はMBRの問題とは別のところに原因があるようです。
さらにいろいろ試してみて、以下のことがわかりました。
1)このSDカードではDIRコマンドを実行するとERR:92が表示される
2)SDPIC2D.BINを実行したあとでDIRコマンドを実行するとERR:92は表示されずに以後は正常にアクセスできるようになる
3)一度電源OFFにするかSDカードを外したあと、再度挿入すると、また1)の状態に戻ってしまう
どうやらSDカードに最初にアクセスするときに必要な初期化の手続きに問題があるようです。
そこでSDPIC2D.BINとシステムに組み込んでいるSDカードアクセスプログラムの初期化のところを比較してみました。
どちらも手続きには違いはなかったのですが、システムROMのプログラムにはERR:92が表示される部分が追加されていることがわかりました。
こちらはシステムROMのERR:92の部分です。
;CMD1 out 70BA 0600 START070:LD B,00 70BC 0E41 START07:LD C,41 70BE 110000 LD DE,$0000 70C1 210000 LD HL,$0000 70C4 CD2572 CALL COUT0 70C7 0E00 LD C,00 70C9 CDED71 START09:CALL SIN 70CC 63 LD H,E 70CD 7B LD A,E 70CE B7 OR A;00? 70CF CAE270 JP Z,SECT0RD 70D2 0D DEC C 70D3 CAF87C JP Z,ERR92;>2GB sdcard? 70D6 FE01 CP 01 70D8 C2C970 JP NZ,START09 70DB 05 DEC B 70DC CAF87C JP Z,ERR92;>2GB sdcard? 70DF C3BC70 JP START07 |
こちらはSDPIC2Dの同じ部分です。
;CMD1 out 8157 0E41 START07:LD C,41 8159 110000 LD DE,$0000 815C 210000 LD HL,$0000 815F CD8082 CALL COUT 8162 CD4882 START09:CALL SIN 8165 63 LD H,E 8166 7B LD A,E 8167 F5 PUSH AF 8168 CD4B10 CALL HXDP2 816B F1 POP AF 816C B7 OR A;00? 816D CA7881 JP Z,RWCHECK 8170 FE01 CP 01 8172 C26281 JP NZ,START09 8175 C35781 JP START07 |
システムROMでは256回試行して正しい応答が得られない場合には処理を打ち切ってERR:92を表示しています。
このようにしておかないと正しくアクセスできないSDカードの場合にシステムがハングアップしてしまいますから、これは必要な手続きです。
ただ個別のSDカードの中には256回の試行では正しい応答が得られないものがあるようです。
プログラムとしては256回というのは繰り返し回数としては最も簡単に行なえるものなのでこのようにしたのですが、これで不足する場合があるということになると、もっと繰り返し回数を増やす必要が出てきます。
そうなるとROMの交換ということになって、これはちょっと対応が大変です。
今回この問題のSDカードを送っていただいたお客様は、同じSDカードを別に1枚購入されたそうですが、そちらのほうはエラーは表示されず普通に使用できているとのことです。
私のところでも今まで何枚かの2GBのSDカードを使っているのですが、ERR:92が表示されることは経験していません。
おそらくはERR:92が発生するSDカードに当たることは、それほど多くはないのでは、と希望的に考えています。
システムプログラムを変更するということは、なかなかに手間がかかる作業なので、今すぐにというわけにはいきません。
それにどの程度の繰り返し回数ならばよいのかということもテストしながら確認する必要があります。
ということでシステムプログラムの変更についてはもう少し先のことにしたいと今は考えています。
TTLでCPUをつくろう![第903回]
2018.5.11upload
前へ
次へ
ホームページトップへ戻る