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

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

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

はじめに

SDカードのCQ Modeの読み書き以外のコマンドたちの話。
CMD38(ERASE)の続きでFULEについて。

登場人物

博識フクロウのフクさん

指差しフクロウ

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

フクさん
フクさん

今回はCMD38(ERASE)の続きでFULEについての話だ。
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) ← これの第2回/全3回
  • CMD43(Q_MANAGEMENT)

CMD38(ERASE)のFULE

フクさん
フクさん

前回も説明したが、FULEはFull User Area Logical Eraseの略で、全領域のEraseだ。

太郎くん
太郎くん

全領域って、
随分思い切った使い方だねー。

フクさん
フクさん

Windowsとかでフォーマットする時に
クイックフォーマットとか完全フォーマットとかでてくるじゃん?

太郎くん
太郎くん

確かに出てくるね。

フクさん
フクさん

それの完全フォーマットをする時に使うものと思っておけばOKかな。

太郎くん
太郎くん

確かクイックフォーマットだと
ファイルシステムの管理領域だけを初期化して、
実はデータは残ってたりするんだっけ?
それを復元したりも出来る場合があるっぽいね。

フクさん
フクさん

完全フォーマットの方は、
管理領域だけでなく、データ部分も完全に消去する。
FULEをサポートしてないこともあるんで、その場合は普通にEraseしているんだろう。

CMD38(ERASE)のFULEのサポート有無確認

太郎くん
太郎くん

ということはFULEがサポートされてるか確認できるってこと?

フクさん
フクさん

SD_STATUSで確認できるね。

BitsIdentifierValueDescription
511:510DAT_BUS_WIDTH’00’=1(default),’10’=4bit現在のバス幅。ACMD6(SET_BUS_WIDTH)でも取得可能
509SECURED_MODE‘0’=Not in the mode,’1’=In Serured ModeSecured modeか否か
508:496reserved
495:480SD_CARD_TYPE‘0000h’=SD,’0001h’=SD ROM,’0002h’=OPT
479:448SIZE_OF_PROTECTED_AREASize of protected area保護領域サイズ
447:440SPEED_CLASSSpeed Class of the cardカードのSpeed Class
439:432PERFORMANCE_MOVEAUのコピー速度
431:428AU_SIZESize of AUAllocation Unit(NAND-FLASH消去単位)
427:424reserved
423:408ERASE_SIZENumber of AUs to be erased at a timeERASE_TIMEOUTで指定された時間で消去できるAU数
407:402ERASE_TIMEOUTTimeout value for erasing areas specified by UNIT_OF_ERASE_AUERASE_SIZEで指定されたAU数を消去するのに必要な時間
401:400ERASE_OFFSETFixed offset value added to erase time.AU消去時に必ずかかるオフセット時間
388:396UHS_SPEED_GRADESpeed Grade for UHS mode.UHS mode時のSpeed Grade
395:392UHS_AU_SIZEsize of AU for UHS modeUHS mode時のAUサイズ
391:384VIDEO_SPEED_CLASSVedeo Speed Class value of the cardビデオスピードクラス
383:378reserved
377:368VSC_AU_SIZEAU size in MB for Video Speed Classビデオスピードクラスに於いてのAUサイズ
367:346SUS_ADDRSuspension Addressサスペンドアドレス
345:340reserved
339:336APP_PERF_CLASSApplication Performance Class Value of the cardアプリケーションパフォーマンスクラス
335:328PERFORMANCE_ENHANCESupport for Performance Enhancement functionalities応答向上機能
327:314reserved
313DISCARD_SUPPORT‘1’:SupportedERASE操作サポート
312FULE_SUPPORT‘1’:Supportedユーザエリア全域のERASE操作サポート
太郎くん
太郎くん

あー。一番下にいたのか。
これが有効になっていれば、FULEで一気に消去ができるってことになるのか。

フクさん
フクさん

そういうことだねー。

仕様面のいろいろ

太郎くん
太郎くん

FULEが全体消去ってことは特に開始アドレス、終了アドレスの指定は要らないってことかな?

フクさん
フクさん

いや、要るよ。
ちゃんとBlock0から最後のBlockを指定してあげる必要がある。
指定の範囲が違ってると通常のErase動作になる。

太郎くん
太郎くん

え?だったらEraseで全領域Eraseするのとなんにも変わらなくない??

フクさん
フクさん

FULEは通常Eraseと違って、busyの待ち時間が1秒固定なんだよね。
つまり、高速に全領域をEraseできる。
開始アドレス、終了アドレスを指定させるのは、間違って単発コマンドを送ってしまわないようにする処理上のゲートなんじゃないかなー?

太郎くん
太郎くん

あー高速に消去できるのか。
アドレスを指定するのも、消去する意思があることを示す上では重要な気もするね。

まとめ

フクさん
フクさん

まとめだよ。

  • CMD38(ERASE)のFULEについて説明。
  • 完全フォーマットとかで使われる仕様。
  • CMD38(ERASE)のFULEのサポート有無はSD_STATUSで確認できる。
  • 通常のERASEと違い、全領域ERASEであっても1秒以内に完了する仕様となっている。
    • 間違って使わないように消去範囲を明示する必要はある。

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

コメント

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