バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
SDカードのCQ Modeの話。
「CMD45(Q_TASK_INFO_B)で開始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のステートマシンと基本フロー
今回は「CMD45(Q_TASK_INFO_B)で開始Blockアドレスを指定」について。
CQ Modeのステートマシン図を貼っておく。
CQ Modeを使用する際の基本的なフロー。
- CMD49(WRITE_EXTR_SINGLE)でEnable CQ=1にする。
- CMD44(Q_TASK_INFO_A)で読み込みor書き込み、優先度、制御Block数を設定
- CMD45(Q_TASK_INFO_B)で開始Blockアドレスを指定 ← これの第1回/全2回
- 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)で書き込み
CMD45(Q_TASK_INFO_B)のリクエストパラメータ
まずはともあれ、まずはCMD45(Q_TASK_INFO_B)のリクエストパラメータかな?
以前ちょっと言ったかもしれないが、
CMD45(Q_TASK_INFO_B)のリクエストパラメータは
32bit長のStart block addressになる。
確かにここで言ってた。
CMD45(Q_TASK_INFO_B)単体の話としてはこれで終了だ。
意外とあっさりだったね。
あれ?
「CMD45(Q_TASK_INFO_B)単体の話としては」????
CMD44(Q_TASK_INFO_A)とCMD45(Q_TASK_INFO_B)の関係性
なんとなく察してるかもしれないけど、
CMD44(Q_TASK_INFO_A)とCMD45(Q_TASK_INFO_B)は
それぞれのコマンドが単体で完結するものではない。
CMD44(Q_TASK_INFO_A)は
- Direction
- Extended Address
- Priority
- Task ID
- Number of Blocks
CMD45(Q_TASK_INFO_B)は、
- Start block address
確かに、両方揃ってないとパラメータとしては不足かな?
そうそう。
特にTask IDはCMD44(Q_TASK_INFO_A)でしか指定してないんで、
CMD45(Q_TASK_INFO_B)単体だと、どのTask IDか分からない。
んー?
そうすると何かしらの制約があるってこと?
Yes!
まぁそこら辺を次回解説しよう。
まとめ
まとめだよ。
- CMD45(Q_TASK_INFO_B)で開始Blockアドレスを指定について説明。
- リクエストパラメータは32bit長のStart block address。
- CMD44(Q_TASK_INFO_A)とCMD45(Q_TASK_INFO_B)は2つで1つの意味になる。
- これらのコマンド利用には制約がある。
バックナンバーはこちら。
コメント