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

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

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

はじめに

SDカードのCQ Modeの話。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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のステートマシン

フクさん
フクさん

今回から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
太郎くん
太郎くん

うーん、ステートマシン図があるのはありがたいけど、
具体的な流れがわからんからなー。

具体的なフロー

フクさん
フクさん

まぁ具体的なフローも提示しよう。

  • CMD49(WRITE_EXTR_SINGLE)でEnable CQ=1にする。
  • CMD44(Q_TASK_INFO_A)で読み込みor書き込み、優先度、制御Block数を設定
  • 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)、CMD45(Q_TASK_INFO_B)で処理を予約できるんだけど、
CQの数だけ先行して予約ができる
その後はTask IDっての識別するのだけど、
CMD46(Q_RD_TASK)、CMD47(Q_WR_TASK)にTask IDを指定して実際の読み書きをする感じだ。

太郎くん
太郎くん

ほー。
ということは、予約をできるだけして、
先にSDカード側でいろいろ準備しておいてもらって、
実際の読み書きの段階では高速に応答できるって感じか。

フクさん
フクさん

そうそう。
その認識でOKだ。

CMD49(WRITE_EXTR_SINGLE)でEnable CQ=1にする

太郎くん
太郎くん

最初の「CMD49(WRITE_EXTR_SINGLE)でEnable CQ=1にする」って話って、
前回のPerformance Enhancement RegisterのEnable CQを書き換える話かな?

フクさん
フクさん

そうだね。
Enable CQを1にすると、CQ ModeのステートマシンはCQ Tranという状態へ遷移する。

太郎くん
太郎くん

うーん、これだけでCQ Modeが使えるのかと思ってたけど、
まだまだ先があったのか・・・。

フクさん
フクさん

(まぁ今回のフローでは語ってない話もあるんだけど・・・これは今は言わない方が良いな・・・。)

太郎くん
太郎くん

(今回のフローの中で出てきてないコマンドがステートマシン図にあるけど・・・これは今は聞かない方が良いな・・・。)

まとめ

フクさん
フクさん

まとめだよ。

  • CQ Modeのステートマシンを見せた。
    • 基本フローも書き出し。
  • CQ Modeは読み書き処理の予約ができ、その予約はTask IDで識別される。
  • Task IDをもって、実際の読み書き結果を取得する。
  • 「CMD49(WRITE_EXTR_SINGLE)でEnable CQ=1にする」は前回出た話。

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

コメント

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