【FileSystem】車載外部ストレージ その39【SD初期化㉒】

【FileSystem】車載外部ストレージ その39【SD初期化㉒】 車載外部ストレージ

バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/

はじめに

SDカードのSDモード通信の初期化シーケンスの「CMD3(SEND_RELATIVE_ADDR)によるPublished RCAの取得」について。
レスポンスパラメータのうちのcard status bitsについて。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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カードのSDモード通信の初期化シーケンス詳細

フクさん
フクさん

「CMD3(SEND_RELATIVE_ADDR)によるPublished RCAの取得」について。
card status bitsの説明が終わってないのでそれをやる。

  • CMD8(SEND_IF_COND)によるSDv2判定及びサポート電圧判定。
  • ACMD41(SD_SEND_OP_COND)によるHigh Capacity設定とVoltage Switch可否判定。
  • CMD11(VOLTAGE_SWITCH)によるVoltage Switch。
  • CMD2(ALL_SEND_CID)によるCIDの取得。
  • CMD3(SEND_RELATIVE_ADDR)によるPublished RCAの取得。 ← これ2回目/全2回
  • CMD7(SELECT/DESELECT_CARD)によるTransfer State(tran)遷移。
フクさん
フクさん

全体フロー。

SDカードのSDモード通信の初期化シーケンスのフロー図
フクさん
フクさん

CMD3(SEND_RELATIVE_ADDR)のレスポンスのR6フォーマット。

Bit position[31:16][15:0]
Width(bit)1616
Valuexx
DescriptionNew published RCAcard status bitsのbit23,22,19,12:0

card status bits

太郎くん
太郎くん

card statusって、以前どっかで聞いたような?

フクさん
フクさん

うん。
R1レスポンスの時に出て来たね。

太郎くん
太郎くん

あ、じゃあ、それと一緒なのか。

フクさん
フクさん

ちょっと違う。

太郎くん
太郎くん

え゛

フクさん
フクさん

表の中にも書いてるんだけど、card statusの一部が載ってるだけだね。
bit23,22,19,12:0の範囲だけ。

card statusからcard status bitsを抜き出す。

太郎くん
太郎くん

確かcard statusはこんな感じだったと思う。

BitsIdentifier
31OUT_OF_RANGE
30ADDRESS_ERROR
29BLOCK_LEN_ERROR
28ERASE_SEQ_ERROR
27ERASE_PARAM
26WP_VIOLATION
25CARD_IS_LOCKED
24LOCK_UNLOCK_FAILED
23COM_CRC_ERROR
22ILLEGAL_COMMAND
21CARD_ECC_FAILED
20CC_ERROR
19ERROR
18reserved
17reserved
16CSD_OVERWRITE
15WP_ERASE_SKIP
14CARD_ECC_DISABLED
13ERASE_RESET
[12:9]CURRENT_STATE
8READY_FOR_DATA
7reserved
6FX_EVENT
5APP_CMD
4reserved
3AKE_SEQ_ERROR
[2:0]reserved
太郎くん
太郎くん

そこから、bit23,22,19,12:0を抜き出すと・・・。

BitsIdentifier備考
15COM_CRC_ERROR(bit23)
14ILLEGAL_COMMAND(bit22)
13ERROR(bit19)
[12:9]CURRENT_STATE
8READY_FOR_DATA
7reserved
6FX_EVENT
5APP_CMD
4reserved
3AKE_SEQ_ERROR
[2:0]reserved
太郎くん
太郎くん

こんな感じで16bitに圧縮される感じか。

フクさん
フクさん

正解!

card status bitsに圧縮されている理由

太郎くん
太郎くん

でも、なんで16bitに圧縮しちゃったんだろうね?

フクさん
フクさん

まぁ使わないからってのが理由だと思うよ。
RCAを取得するコマンドに対するレスポスなんで、
OUT_OF_RANGE、ADDRESS_ERROR、BLOCK_LEN_ERROR・・・
と発生しようがないエラーが削られてるだけだね。

太郎くん
太郎くん

あ、確かに言われてみればそうか。
じゃー納得だ。

フクさん
フクさん

というわけで、「CMD3(SEND_RELATIVE_ADDR)によるPublished RCAの取得」の話は終了~。

まとめ

フクさん
フクさん

まとめだよ。

  • CMD3(SEND_RELATIVE_ADDR)によるPublished RCAの取得の説明続き。
    • card status bitsはcard statusの一部を切り出したもの。
    • CMD3(SEND_RELATIVE_ADDR)として、card status内の無関係なエラーパターンを削除したものがcard status bitsになっている。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました