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

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

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

はじめに

SDカードのCQ Modeの読み書き以外のコマンドたちの話。
今回はCMD43(Q_MANAGEMENT)について。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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のステートマシンと読み書き以外のコマンド

フクさん
フクさん

今回はCMD43(Q_MANAGEMENT)についての話。
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の読み書き以外のコマンドたち。

  • CMD19(SEND_TUNING_BLOCK)
  • CMD32(ERASE_WR_BLK_START)
  • CMD33(ERASE_WR_BLK_END)
  • CMD38(ERASE)
  • CMD43(Q_MANAGEMENT) ← これ

CMD43(Q_MANAGEMENT)

太郎くん
太郎くん

残りはCMD43(Q_MANAGEMENT)だけど。

太郎くん
太郎くん

名前的には何かを管理するやつ?

フクさん
フクさん

管理と言えば管理だけど、
やれることはCommandQueueに設定したTaskを中止するだけのコマンドだな。

太郎くん
太郎くん

あーそういうやつか。

CMD43(Q_MANAGEMENT)のリクエストパラメータ

フクさん
フクさん

CMD43(Q_MANAGEMENT)のリクエストパラメータは以下になる。

Bit position[31:21][20:16][15:4][3:0]
Width(bit)115124
Value0x0x
DescriptionReservedTask IDReservedOperation Code
フクさん
フクさん

そしてOperation Codeの内訳は以下だ。

Operation CodeDescription
0000bReserved
0001bAbort Entire Queue
0010bAbort Task ID
OthersReserved
太郎くん
太郎くん

ようは、全体を停止するかTask IDを指定して該当Task IDだけのCommandQueueを停止させるかってことか。

フクさん
フクさん

その通り。

フクさん
フクさん

注意点としては、
Sequential CQ mode時はTask ID指定の停止指示は禁止されているってところだな。

太郎くん
太郎くん

ん?なんで?

フクさん
フクさん

Sequential CQ modeは順番に処理していくmodeなんで、特定のTaskをいきなり停止されても困るんだろうね。
Task ID指定の停止指示をしてしまった場合の動作は未定義で何かが保証される動作にならないとされてる。

太郎くん
太郎くん

なるほど!
確かに言われてみればそうだね。

CMD43(Q_MANAGEMENT)のレスポンス

太郎くん
太郎くん

停止処理関係だから、レスポンスフォーマットはたぶんR1bかな。

フクさん
フクさん

正解。

フクさん
フクさん

ちなみにCommandQueueにTask IDが登録されなくても特にエラーは返さない。

太郎くん
太郎くん

逆にエラーを返すパターンがあるのか知りたいな。

フクさん
フクさん

まぁOperation Codeが間違ってるとかだとエラーかな。

太郎くん
太郎くん

そりゃそうだろう。

制限事項

フクさん
フクさん

普通やらないと思うけど、仕様書上で明記されてたんで制限事項を説明しておこう。

太郎くん
太郎くん

停止処理だから、終わるまで何もするなって話かな?

フクさん
フクさん

その通り。
R1bでbusy待ちしてるから、普通はそんなことしないんだけど、
CMD44(Q_TASK_INFO_A)で新たなタスクを追加しないよう記載されてる。

太郎くん
太郎くん

確かに普通はやらなそうだなー。

フクさん
フクさん

というわけで、CMD43(Q_MANAGEMENT)の話は終了

今後の方針

太郎くん
太郎くん

もしかして、一通り終わった・・・のか??

フクさん
フクさん

うん。
SDカード関連の話は終わった。

太郎くん
太郎くん

よっしゃー!完了だー!!

フクさん
フクさん

いや、SDカード関連の話が終わっただけで、
FileSystemとかの話は全然してないよ!!
発端を思い出して!!

太郎くん
太郎くん

あ゛

太郎くん
太郎くん

まじかーーー!!!

フクさん
フクさん

まぁFileSystemも結構なボリュームありそうなんだよねー。

太郎くん
太郎くん

\(^o^)/オワタ

フクさん
フクさん

だから終わってないってば!

まとめ

フクさん
フクさん

まとめだよ。

  • CMD43(Q_MANAGEMENT)について説明。
    • CommandQueueに登録されてるTaskを全部かTask ID別に停止できる。
    • Sequential CQ mode時にTask ID単位の停止は禁止されている。
      • 停止した際の挙動は未規定の未保証。
  • SDカード関連の話はこれで完了。

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

コメント

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