【FileSystem】車載外部ストレージ その65【SD応答向上仕様⑭】

【FileSystem】車載外部ストレージ その65【SD応答向上仕様⑭】 車載外部ストレージ

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

はじめに

SDカードのPERFORMANCE_ENHANCEの話。
CMD48(READ_EXTR_SINGLE)、CMD49(WRITE_EXTR_SINGLE)について。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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

セルフメンテナンス有効化に使うコマンド

太郎くん
太郎くん

前回、セルフメンテナンス有効化に
CMD48(READ_EXTR_SINGLE)、CMD49(WRITE_EXTR_SINGLE)
を使うってのは聞いたけど、このコマンドの詳細を聞いてないような?

フクさん
フクさん

んー、本筋はあまり関係無かったんで、端折ったけど、
一応説明しておくか。

CMD48(READ_EXTR_SINGLE)

フクさん
フクさん

CMD48(READ_EXTR_SINGLE)のパラメータは以下になる。

Bit position31[30:27]26[25:9][8:0]
Width(bit)141178
Valuexx0xx
DescriptionMIOFNOrsvADDRLEN
太郎くん
太郎くん

MIOMemory or I/O
で、
FNOFunction No
だったね。

太郎くん
太郎くん

あとは、アドレスと取得するデータ長指定する感じか。

フクさん
フクさん

そうそう。
そして、レスポンスは恒例のR1フォーマットだ。

Bit position4746[45:40][39:8][7:1]0
Width(bit)1163271
Value‘0’‘0’xxx‘1’
Descriptionstart bittransmission bitcommand indexcard statusCRC7end bit
太郎くん
太郎くん

んで、R1レスポンスに追従する形でDATラインでレジスタが読み出せるわけか。

フクさん
フクさん

正解!

CMD49(WRITE_EXTR_SINGLE)

フクさん
フクさん

そして、CMD48(READ_EXTR_SINGLE)の逆方向になるCMD49(WRITE_EXTR_SINGLE)。
構造としてはCMD48(READ_EXTR_SINGLE)と似てはいるけど。

Bit position31[30:27]26[25:9][8:0]
Width(bit)141178
Valuexx0xx
DescriptionMIOFNOMWADDRLEN/MASK
太郎くん
太郎くん

確かにCMD48(READ_EXTR_SINGLE)と似てるけど、
MWとLEN/MASKってところが違うね?

フクさん
フクさん

MWMask Write Mode。
LEN/MASKは
MWが0の時はデータ長
MWが1の時はデータ長が1byte固定で、書き込みマスクになる。

太郎くん
太郎くん

ん?
MWが1の時の書き込みマスクのイメージわかない・・・。

フクさん
フクさん

単にbit単位でアクセスしたいって時に使うやつだね。
例えば、書き込み先1byteのうち、下位2bitしか書き換えたいんだけど、
1byte書き込みをすると他の6bitも書き換えてしまう。
その場合、マスクを0000_0011b(=03h)にすると

下位2bitにだけを書き込み範囲する状態になる。

太郎くん
太郎くん

あー、なるほど。
確かに書き込みする時に他のbitまで書き換えるのはちょっと困るもんね。

フクさん
フクさん

そして、このコマンドもレスポンスはR1。
R1に追従する形でDATで書き込みデータを送出する流れだ。

太郎くん
太郎くん

まぁ聞いてみたら普通の読み書きって感じだね。

フクさん
フクさん

そうだね。
書き込み時のマスクの話が少しイメージが湧きにくいくらいかな。

フクさん
フクさん

じゃ、次回こそは各セルフメンテナンスの振る舞いについてだ。

まとめ

フクさん
フクさん

まとめだよ。

  • セルフメンテナンス有効化に使うコマンドは以下。
    • CMD48(READ_EXTR_SINGLE)。
    • CMD49(WRITE_EXTR_SINGLE)。
  • 基本的にはMemory or I/O、Function Noを指定しての読み書き。
    • 書き込み側はbit単位のマスクができる。

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

コメント

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