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

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

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

はじめに

SDカードのPERFORMANCE_ENHANCEの話。
Card-initiated maintenanceについて。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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が絡むんで、表を貼っておこう。

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月15日Task 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

Card-initiated maintenance

フクさん
フクさん

そして今回はCard-initiated maintenance。

フクさん
フクさん

これはPerformance Enhancement Registerの
Card Initiated maintenance Enable
を1にしておけばOKだ。

太郎くん
太郎くん

あれ?
開始指示とかはしないの?

フクさん
フクさん

Card-initiated maintenanceは
SDカードバスがIdleになったら勝手にやってくれるモードなんだ。

太郎くん
太郎くん

ほー。
つまり、こっちが指示しなくても、
暇になったらちょっとずつ最適化をしてくれるって感じなのかな?

フクさん
フクさん

そうだね。
ただし、セルフメンテナンス中でもちゃんとコマンドには応答しないといけない。

太郎くん
太郎くん

結構大変そうだねー。

Card-initiated maintenanceの終了判定

太郎くん
太郎くん

でも、Card-initiated maintenanceもどっかで終了するんだよね?
どうやって判断するんだろ?

フクさん
フクさん

R1レスポンスフォーマットでcard statusってのが取得できるじゃん?

太郎くん
太郎くん

そうだね。

フクさん
フクさん

その中にFX_EVENTってbitがある。
それが立ってたら終了したって合図だ。

太郎くん
太郎くん

FX_EVENT?
そんなのあったっけ?

太郎くん
太郎くん

card status自体はここでやったけど。

太郎くん
太郎くん

とりあえず表を持ってきた。

BitsIdentifier
31OUT_OF_RANGE
30ADDRESS_ERROR
29BLOCK_LEN_ERROR
28ERASE_SEQ_ERROR
27ERASE_PARAM
26WP_VIOLATION
25CARD_IS_LOCKED
24LOCK_UNLOCK_FAILED
23COM_CRC_ERROR
22ILLEGAL_COMMAND
21CARD_ECC_FAILED
20CC_ERROR
19ERROR
18reserved
17reserved
16CSD_OVERWRITE
15WP_ERASE_SKIP
14CARD_ECC_DISABLED
13ERASE_RESET
[12:9]CURRENT_STATE
8READY_FOR_DATA
7reserved
6FX_EVENT
5APP_CMD
4reserved
3AKE_SEQ_ERROR
[2:0]reserved
太郎くん
太郎くん

お!
確かにFX_EVENTってのがいるね。
これを見て判断するのか。

太郎くん
太郎くん

ところでFX_EVENTって何かの略だと思うけど、
正式名称はどうなってるの?

フクさん
フクさん

FX_EVENTFunction Extension Eventの略だね。
FX_EVENT自体はセルフメンテナンス以外にも使われるものだけど、
SDカードのストレージとしての機能以外の何かしらの通知で使われイメージだ。

SDカードに搭載し得る特殊な機能

太郎くん
太郎くん

セルフメンテナンスもストレージとしての機能ではないもんね。

太郎くん
太郎くん

例えば、他にどんな機能があるの?

フクさん
フクさん

そうだねー。
Wifi機能とか、iSDIOとかが有名かな。

太郎くん
太郎くん

なに?iSDIOって?

フクさん
フクさん

SDAの記述を引用しよう。

iSDIO(インテリジェントSDIO)規格は、Wireless LAN SDのブランドで、IEEE 802.11(a/b/g/n)を搭載した機器、ホームネットワーキングやクラウドコンピューティングサービスとSDメモリーカード間での通信を可能とする新しいSD規格として開発されました。Wireless LAN SDメモリーカードは、通常のSDメモリーカードにワイヤレスLAN (Local Area Network)、フラッシュメモリーとMPUモジュールを一体化した初のSD規格です。規格策定完了後に会員企業の製品開発に利用可能となるWireless LAN SD規格は、単純なホストコマンドで、複雑な通信タスクの実行をSDカードで可能にします。

SDAより
太郎くん
太郎くん

ほう。
こんな仕様があるのか・・・。

フクさん
フクさん

iSDIOは
KIOXIA(旧東芝メモリ)社のFlashAirが有名だね。
というか他でやってるところは記憶にないな。

太郎くん
太郎くん

まぁこれもそういうのがあるってのだけ覚えておこう。

まとめ

フクさん
フクさん

まとめだよ。

  • Card-initiated maintenanceについて説明。
  • Card Initiated maintenance Enableを1にすれば起動。
    • SDカードバスがIdleの時に勝手にセルフメンテナンスを実施してくれる。
  • R1フォーマットのcard statusにあるFX_EVENTで完了判定。

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

コメント

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