忍者ブログ

NOROMA CLUB -日記-

SDカードのライトプロテクト解析

先日故障して書き込みできなくなったSDカードの続きです。
microSDには物理的なプロテクトスイッチもないので、
おそらく、どこかのレジスタで判断しているのかと思い、
FPGAと自作SDIF回路とロジアナを使ってちょっと解析してみました。

結論としては、CSDレジスタのPERM_WRITE_PROTECTが1になっているのが原因のようです。

ロジアナの結果はこんな感じ。
わかりにくいですが、CMD9(SEND_CSD)のレスポンスbit13で
"PERM_WRITE_PROTECT[13]=1"になっているところです。

ちなみに正常なカードの場合はこんな感じ。

メーカも容量も違うのでいろいろ差分はありますが、
とりあえず"PERM_WRITE_PROTECT[13]=0"なので正常です。


以下、参考情報。
・CSDレジスタは、「Card-Specific Data register」のことらしいです。
・PERM_WRITE_PROTECTは、「Permanently Write Protect」のことらしく、
 一度"1"になったら戻す術はないようです。
・もうひとつ"TEMP_WEITE_PROTECT(Temporarily Write Protect)"もあって、
 名前のとおりこちらは一時的なプロテクトのようです。
・WRITE_PROTECT=1の時はWrite/Eraseコマンドが全部無視されるようです。
 正規ではない自作コントローラを使って、空気を読まずにCMD24(WITE_BLOCK)とかしてもダメみたいです(笑)
・CSDレジスタのほかにも、OCR(ACMD41で取得)やら、CID(CMD2で取得)やら、RCA(CMD3で取得)やらあって、
 家の転がっているメーカも容量もバラバラなカードで比べてみるとちょっと楽しいかも(笑)

拍手[0回]

PR