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

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

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

はじめに

SDカードのCQ Modeの話。
CMD44(Q_TASK_INFO_A)で読み込みor書き込み、優先度、制御Block数を設定について。

登場人物

博識フクロウのフクさん

指差しフクロウ

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

CQ Modeのステートマシンと基本フロー

フクさん
フクさん

今回は「CMD44(Q_TASK_INFO_A)で読み込みor書き込み、優先度、制御Block数を設定」について。
CQ Modeのステートマシン図を貼っておく。

CQ Modeのステートマシン(State Diagram in CQ Mode)、CMD49(WRITE_EXTR_SINGLE) Enable CQ=1、CMD49(WRITE_EXTR_SINGLE) Enable CQ=0、CMD12(STOP_TRANSMISSION),CMD13(SEND_STATUS),CMD32(ERASE_WR_BLK_ADDR),CMD33(ERASE_WR_BLK_END_ADDR)、CMD44(Q_TASK_INFO_A),CMD45(Q_TASK_INFO_B)、Read:CMD19(SEND_TUNING_BLOCK),CMD46(Q_RD_TASK),CMD48(READ_EXTR_SINGLE),CMD58(READ_EXTR_MULTI)、Write:CMD47(Q_WR_TASK),CMD49(WRITE_EXTR_SINGLE),CMD59(WRITE_EXTR_MULTI)、CMD38(ERASE),CMD43(Q_MANAGEMENT)、End of R1b,End of Data Transfer、CMD12(STOP_TRANSMISSION),CMD13(SEND_STATUS)、CMD44(Q_TASK_INFO_A),CMD45(Q_TASK_INFO_B)、CQ Disable、CQ Tran、CQ Enabled
フクさん
フクさん

CQ Modeを使用する際の基本的なフロー。

  • CMD49(WRITE_EXTR_SINGLE)でEnable CQ=1にする。
  • CMD44(Q_TASK_INFO_A)で読み込みor書き込み、優先度、制御Block数を設定 ← これの第1回/全3回
  • CMD45(Q_TASK_INFO_B)で開始Blockアドレスを指定
  • CMD13(SEND_STATUS/SEND_TASK_STATUS)でCQの状態を確認
  • CMD44(Q_TASK_INFO_A)で読み込み指示の場合はCMD46(Q_RD_TASK)で読み出し
  • CMD44(Q_TASK_INFO_A)で書き込み指示の場合はCMD47(Q_WR_TASK)で書き込み

CMD44(Q_TASK_INFO_A)で読み込みor書き込み、優先度、制御Block数を設定

太郎くん
太郎くん

まずは、CMD44(Q_TASK_INFO_A)のリクエストパラメータがどうなってるかってところかな?

フクさん
フクさん

こんな感じになってる。

bit position3130[29:24]23[22:21][20:16][15:0]
bit width11612516
value0xxxxxxxx00bxxxxxxxxxh
DescriptionReservedDirectionExtended AddressPriorityReservedTask IDNumber of Blocks
太郎くん
太郎くん
  • Direction
  • Extended Address
  • Priority
  • Task ID
  • Number of Blocks

ってパラメータがあるのはわかったけど、
それぞれの意味と言うか、どういう目的に設定されるのかな?

フクさん
フクさん

一個ずつ説明していこう。

CMD44(Q_TASK_INFO_A)のリクエストパラメータのDirection

フクさん
フクさん

まずはDirection。

太郎くん
太郎くん

1bitパラメータだから、方向の切り替えってことなんだろうけど、
なんの方向?

フクさん
フクさん

「読む」か「書く」かだね。
1だったらRead、
0だったらWrite。

太郎くん
太郎くん

あー!なるほど。
それでDirectionこと方向っていってるのか。

CMD44(Q_TASK_INFO_A)のリクエストパラメータのExtended Address

太郎くん
太郎くん

次はExtended Addressだけど、
直訳すると拡張アドレスってことになるのかな?

フクさん
フクさん

そうだね。
処理を開始するBlockアドレス指定はCMD45(Q_TASK_INFO_B)で指定するんだけど、
そこで指定できるのは32bit長
これを超える場合はこのExtended Addressで上位アドレスを指定することになる。

太郎くん
太郎くん

ここで行ってるアドレスって、byte単位じゃなくてBlock単位だよね?

太郎くん
太郎くん

SDカードの場合、1blockが512byteだから、
512×0xffffffff=2199023255040
ということで32bitあれば2TBbyteの範囲まで指定できるわけだけど、
それを超えるってことがあり得るってこと?

フクさん
フクさん

そうだね。
SDHCが最大32Gbyte。
SDXCが最大2Tbyte。
SDUCが最大128Tbyte

太郎くん
太郎くん

あー!
SDUCが2Tbyteを超えるのか?!
その時にExtended Addressが必要になるってことか?!

フクさん
フクさん

そういうことだねー。

まとめ

フクさん
フクさん

まとめだよ。

  • CMD44(Q_TASK_INFO_A)のリクエストパラメータ説明。
  • リクエストパラメータのDirectionは「読む」か「書く」かの指定。
  • リクエストパラメータのExtended AddressはSDUCのように2TByteを超える場合に使用。
    • SDUCの仕様上の最大容量は128Tbyte。

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

コメント

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