バックナンバーはこちら。
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の読み書き以外のコマンドたち。
- 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) | 11 | 5 | 12 | 4 |
Value | 0 | x | 0 | x |
Description | Reserved | Task ID | Reserved | Operation Code |

そしてOperation Codeの内訳は以下だ。
Operation Code | Description |
---|---|
0000b | Reserved |
0001b | Abort Entire Queue |
0010b | Abort Task ID |
Others | Reserved |

ようは、全体を停止するか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カード関連の話はこれで完了。
バックナンバーはこちら。
コメント