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

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

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

はじめに

SDカードのPERFORMANCE_ENHANCEの話。
ホスト主導、カード主導のセルフメンテナンス起動と有効化について。

Performance Enhancement Registerがキモとなる。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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

セルフメンテナンス起動

太郎くん
太郎くん

セルフメンテナンスの起動は
ホスト主導とカード主導があるんだったよね。

フクさん
フクさん

そうそう。
言い換えると、
ホスト主導が明示的
カード主導が暗黙的
言っても良いかな。

太郎くん
太郎くん

(ようわからんが、話聞けばわかるんかな・・・。)

セルフメンテナンス有効化について

太郎くん
太郎くん

で、それぞれのセルフメンテナンスはどうやって起動するの?

フクさん
フクさん

起動する前に有効化する必要がる。
有効化するには、
Performance Enhancement Register
の該当ビットへの書き込みが必要となる。

太郎くん
太郎くん

(出たよ、出たよ、唐突に新しい単語!)

Performance Enhancement Register

フクさん
フクさん

まぁたぶんわからんと思ってるだろうから、
Performance Enhancement Register
を書き出そう。

Byte OffsetBitsNameDescription
0Performance Enhancement Function Revision00h:Revison 1
1[0]FX_EVENT Support0:Not support,1:Supported
2[0]Card Initiated Maintenance Support0:Not support,1:Supported
2[1]Host Initiated maintenance Support0:Not support,1:Supported
3[1:0]Card maintenance Urgency 00b:None, 01b:Mild, 10b:Middle, 11b:Urgent
4[0]Cache Support0:Not support,1:Supported
5Reserved
6CQ Support and Depth00h:CA is not supported,01h:depth=2(ID=0,1),…,1Fh:depth=32(ID 0~31)
7Reserved
8-15Task Error Status00h:No Error,01h:Error,Other:Reserved
16-256Reserved
2570FX_EVENT Enable0:Disable,1Enable
2580Card Initiated maintenance Enable0:Disable,1Enable
2581Host Initiated maintenance Enable0:Disable,1Enable
2590Start Host-Initiated Maintenance1:Starts host-initiated maintenance.0:By card indicates the break of maintenance.(break within 1 secomd.)
2600Flush Cache1:Start Cache flush.0:By card indicates the end of Cache flush.(flush within 1 second.)
2620Enable CQ0:Disable,1Enable
2621CQ Mode0:Voluntary mode, 1:Sequential Mode
263-511Reserved
太郎くん
太郎くん

この情報って、どうやって読み書きするの?

フクさん
フクさん

CMD48(READ_EXTR_SINGLE)、CMD49(WRITE_EXTR_SINGLE)
を使う。
上記のコマンドのパラメータにMIO(Memory or I/O)FNO(Function No)ってパラメータがあるんで、
MIOをMemory指定(=0b)、FNOを02h指定で読み書きができる。

太郎くん
太郎くん

なるほど。
特殊な用途の特殊なコマンドがあるんだね。

太郎くん
太郎くん

で、

  • Card Initiated maintenance Enable
  • Host Initiated maintenance Enable

ってのがあるから、これを有効にすれば、メンテナンスモードが有効になるってわけか。

フクさん
フクさん

そうなるね。
まぁそれぞれがどのように振舞うのかは次回説明だな。

まとめ

フクさん
フクさん

まとめだよ。

  • セルフメンテナンスは2種類。
    • ホスト主導で明示的実行。
    • カード主導で暗黙的実行。
  • セルフメンテナンスを有効化するにはPerformance Enhancement Registerを制御する必要がある。
    • CMD48(READ_EXTR_SINGLE)、CMD49(WRITE_EXTR_SINGLE)を使用する。

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

コメント

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