2015年10月27日

やっとファイル読み書きできました

NiosII + FatFsを使ってFDD/HDDエミュレーション部を作ろうとしているのですが、
FatFsからSDカードに読み書きがなぜかうまくいきませんでした。
FatFsは他人の物だから信じられるとして、ディレクトリ読み出し、ファイル読み出しは
うまくいっているようですがファイルへの書き込みができません。
ただ、ファイル自体は作成されています。(サイズ=0)
FatFsの下位として、物理デバイスへのアクセス部分は自分で書かなくてはなりません。
初期化、セクタ読み出し、セクタ書き込み等の各ルーチンを書くのですが、
ディレクトリ表示がちゃんと出来ているという事は初期化とセクタ読み出しは
正常に動いている(筈)です。また、ファイルも一応、作成されていますので
書込みも出来ている。。。と思っていましたが、そこに間違いが有りました。
デバグでトレースするとちゃんと書き込みも出来ています。ただ、
実行するといつからかディスクステータスがメディア無しになっています。
ステータスをメディア無しに切り替えているところに片っ端からブレークポイントを
設定して実行したところ、発見しました。
SDカードに書き込み(CMD24)を発行後、データを書き込み、その後書き込みBUSY中は
SDカードは0x00を返してくるのですが、そこに読み出し1000回でタイムアウト、
メディア異常でメディア無しと判断するプログラムを書いていました。
まぁ1000回というのは100回ではちょっと少ないかな?と思って深く考えずに
1000回にしたのですが、これが短すぎたようで10,000回でも駄目でした。
結果、無限ループにして0xffが帰ったらループを抜けるようにして
ファイルへの書き込みも成功するようになりました。
posted by プー at 12:42| Comment(0) | NiosII | 更新情報をチェックする