バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
SDカードのSDモード通信のNo data Operationについて。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
SDモード通信のNo data Operation
じゃ、SDモードのNo data Operationからー。
- No data Operation ← これ
- (Multiple) Block Read Operatio
- (Multiple) Block Write Operation
とりあえず、図解よろしくー。
まぁこれは一番シンプルなんで、それほど悩むところはないかな。
ほー。
ノーレスポンスでタイムアウトするパターンと、
普通にやり取りできるパターンだね。
ノーレスポンス
ノーレスポンスってどういうときに起きるの?
単純にサポートしてないコマンドを投げた時だね。
送信ミスみたいな感じ?
当然、それも含まれるが、
SDカードかMMCかの判定やSDSC、SDHCの判定で使われることを想定してるっぽいね。
SDカード、MMC判定
どうやって、SDカードとMMCを区別するの?
ACMD41(APP_SEND_OP_COND)ってのを送ってみる。
ノーレスポンスだったらMMC。
レスポンスありだったらSDカード。
って寸法だ。
ほー。
ということは
MMCはACMD41はサポートしてないってことなのか。
ちなみにノーレスポンス判定になるタイムアウト値とかはどうなってるの?
commandによるところはあるようだが、基本1秒だね。
SDSC、SDHC判定
もう一個のSDSC、SDHC判定も特定コマンドで判断って感じかな?
そうだね。
CMD8(SEND_IF_COND)ってので判断する。
ノリはACMD41と一緒で、CMD8に応答しなければSDSC、
応答すれば、SDHC以降。
なるほどー。
そうやって判断してたんだねー。
ここらへんは、新しいSDの仕様が出るたびに改定されてるところなんで、
今後もいろいろ判定用のコマンドは増えていくのかもしれないね。
まとめ
まとめだよ。
- SDモード通信のNo data Operationを説明。
- ノーレスポンスのパターンが割と重要。
- ACMD41でSD、MMC判定。
- CMD8でSDSC、SDHC以降判定。
- SDの仕様が増えるたびに今後増えていくかも。
- ノーレスポンス判定タイムアウトは1秒。
バックナンバーはこちら。
コメント