【FileSystem】車載外部ストレージ その43【SD読み書きSPIモード③】

【FileSystem】車載外部ストレージ その43【SD読み書きSPIモード③】 車載外部ストレージ

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

はじめに

SDカードのSPIモード通信の読み書き詳細の
「ACMD23(SET_WR_BLK_ERASE_COUNT)による消去ブロック数指定」
について。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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カードのSPIモード通信の読み書き詳細

フクさん
フクさん

じゃ、今回は
「ACMD23(SET_WR_BLK_ERASE_COUNT)による消去ブロック数指定」
について。

  • CMD24(WRITE_BLOCK)による書き込み
  • ACMD23(SET_WR_BLK_ERASE_COUNT)による消去ブロック数指定 ← これ
  • CMD25(WRITE_MULTIPLE_BLOCK)による書き込み
  • Start Block/data Response/STOP_TRAN tokenの発行
  • CMD17(READ_SINGLE_BLOCK)による読み出し
  • CMD18(READ_MULTIPLE_BLOCK)による読み出し
  • CMD12(STOP_TRANSMISSION)による停止

ACMD23(SET_WR_BLK_ERASE_COUNT)のリクエスト

太郎くん
太郎くん

まずはACMD23(SET_WR_BLK_ERASE_COUNT)のリクエストパラメータかな。

フクさん
フクさん

23bit長の”Number of blocks”ってパラメータだけだね。

Bit position[31:23][22:0]
Width(bit)923
Valuexx
DescriptionStuff bitsNumber of blocks
太郎くん
太郎くん

これで事前に消去ブロックを指示するわけか。

太郎くん
太郎くん

あれ?
事前に消去ブロックする数を設定するのはわかったけど、
どのアドレスというかどのBlockという指定はいらないの?

フクさん
フクさん

あくまで事前に数を設定するだけだね。
SDカードの内部的なdefault値は1になっているようで、
これを実際にWRITE_MULTIPLE_BLOCKする際の消去単位にしているらしい。
事前に消去ブロック数を書き込みBlock数にすることで高速化が見込めるってことだと思う。

太郎くん
太郎くん

なんかめずらしく歯切れの悪い言い方するねぇ・・・。

フクさん
フクさん

まぁ仕様書上はそう書いてるってだけだからね。
実際に高速になるかは、SDカード内部の設計次第なんで。

太郎くん
太郎くん

まぁ仕様書上で推奨されているなら、それに従った方が良いね。

ACMD23(SET_WR_BLK_ERASE_COUNT)のレスポンス

フクさん
フクさん

ACMD23(SET_WR_BLK_ERASE_COUNT)のレスポンスはR1フォーマット。

SDカードSPIモードR1フォーマット
太郎くん
太郎くん

まぁ大体のコマンドがR1フォーマットだよねー。

フクさん
フクさん

そうだね。
基本はR1。
特殊な役割をもったコマンドは専用レスポンス。
って考え方の設計/実装が妥当だろう。

まとめ

フクさん
フクさん

まとめだよ。

  • ACMD23(SET_WR_BLK_ERASE_COUNT)による消去ブロック数指定について説明。
  • ACMD23のリクエストパラメータはNumber of blocks。
    • 指定しない場合のdefault値は”1″となる。
    • 仕様書上は書き込み高速化が見込めるとあるが、実際はSDカード側の設計次第。

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

コメント

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