- 公開日:2020年12月24日
- | 更新日:2022年11月21日
e.MMC 設計注意点 – 電源オフ操作
- ライター:TtoK
- メモリー
はじめに
e.MMCは Embedded Multi-Media Card を略したモバイル機器用のストレージ製品の一つです。JEDEC規格では、”e・MMC”と表記されています。
ただし、この「・」半角中黒の点が直接入力できない、あまり使用されない文字のため、”e.MMC”、”e-MMC”、”eMMC”などさまざまな書き方で表記されています。ここでは“e.MMC”と記載していきます。
最近ではEmbeddedの文字どおり、コンシューマー以外の組み込み用途としても検討が広がっています。
その理由としては、以下(1)~(5)があげられます。
(1) NORフラッシュの容量不足
(2) 面倒なNANDフラッシュの制御は無視できる
(3) SSDと比較して簡単なバス・インタフェースで接続
(4) パッケージも含めJEDECで規格化されている
(5) Linux/Android でサポートされている
図1. e.MMCの利点
e.MMC は図1の通り、ストレージ機能を構成する装置で設計時における簡略化をサポートする製品となっています。ただし簡略化されたといっても、採用において幾つか注意が必要です。今回の技術記事では、電源断の注意点について説明します。
電源断(パワーロス)操作
e.MMC製品はもともとモバイル機器用であり、バッテリーバックアップを有した装置を想定しています。つまり突然のパワーロスの対策はされていません。本稿では、パワーロス発生時に必要なオペレーションについて記述します。
まず、e.MMCの電源構成としては、図2のように、NANDフラッシュ部の電源供給(VCC)とe.MMCコントローラー部の電源供給(VCCQ)は別電源となります。このため、NANDフラッシュを確実に制御するためには、NANDフラッシュが動作中、つまりVCCが供給されている間、e.MMCコントローラーへの電源供給はそれよりも長い期間、最低電圧を保つ必要があります。
もし、e.MMCへ電源が供給されなかったり、不安定な状態が続いてしまったりすると、NANDフラッシュ内に保存されているデータへの影響が考えられ、破壊されるケースも考えられます。
図2. e.MMC概略アーキテクチャー
そして、下記の操作の途中で突然のパワーロスが起こった場合もデータ破壊が懸念されます。
- データのプログラミング途中 (書き込み)
- データの消去途中
- バックグラウンド処理中
バックグラウンド処理とは、エラー訂正、バッド・ブロック管理、ウェア・レベリング、ガーベージ・コレクション、物理/論理マッピング等をおこなっています。
ホスト側はe.MMCのパワーロスとなる前に、e.MMCへ通知する必要があります。これにより、e.MMCは電源が切られる準備をします。パワーロスとなるVCC、VCCQの両方の電源が切れる場合の通知は、以下の2種類が用意されています。
- POWER_OFF_LONG
- POWER_OFF_SHORT
また、e.MMCは、VCCのみオフしスリープ状態となる機能も用意されています。
- SLEEP_NOTIFICATION
最初にホストは、e.MMCに対して電源オフを実行するため、SWITCH コマンド(CMD6)を発行して Extended card specific data(ECSD)レジスターの34バイト目のPOWER_OFF_NOTIFICATIONにPOWERED_ON(0x01)を設定する必要があります。電源オフを実行するには、このECSDレジスターの34バイト目のPOWER_OFF_NOTIFICATIONに上記3つ(POWER_OFF_LONG、POWER_OFF_SHORT、SLEEP_NOTIFICATION)のいずれかを設定します。ホストはBusyを監視しディアサートされるのを待ち、電源オフすることができます。詳細は表1を参照ください。
値 | 内容 | コメント |
---|---|---|
0x00 | NO_POWER_NOTIFICATION | ホストは電源オフ通知をサポートしていない |
0x01 | POWERED_ON | ホストは電源オフ通知をサポートしており 現在は電源オン状態 |
0x02 | POWER_OFF_SHORT | GENERAIC_CMD6_TIME以内の応答があり 電源オフが可能 |
0x03 | POWER_OFF_LONG | POWER_OFF_LONG_TIME以内の応答があり 電源オフが可能 |
0x04 | SLEEP_NOTIFICATION | SLEEP_NOTIFICATION_TIME以内の応答があり VCC電源オフが可能 |
表1. ECSDレジスター[34]“POWER_OFF_NOTIFICATION”設定値
VCC、VCCQ の両方の電源が切れる場合を想定すると、POWER_OFF_LONG、POWER_OFF_SHORTの2種類がありますが、2つの電源オフの違いは、ホストが電源オフにしたい緊急度によるものです。
POWER_OFF_SHORTの場合
SHORTはLONGと比較し 早い応答となります。この場合のe.MMC 内部の電源オフ処理時間は SWITCHコマンドの最大タイムアウト以内の処理時間となります。SWITCHコマンドのタイムアウト時間はECSDレジスターの248バイト目(GENERIC_CMD6_TIME) に設定されています。
POWER_OFF_LONGの場合
時間的な猶予が許容される状態であり、ECSDレジスターの247バイト目(Power off notification long timeout)の値によるタイムアウトを最大とした処理時間となります。ただしPOWER_OFF_SHORTで電源オフした場合、次の電源オンの初期化時間がPOWR_OFF_LONGで電源オフした場合と比べ、延びることになります。
表2にあるように、タイムアウト時間の計算式はそれぞれの値に10ms乗算します。POWER_OFF_LONG_TIMEがGENERIC_CMD6_TIMEより大きな値が設定されているはずです。
値 | GENERIC_CMD6_TIME | POWER_OFF_LONG_TIME | SLEEP_NOTIFICATION_TIME |
---|---|---|---|
0x00 | 未定義 | 未定義 | 未定義 |
0x01 | 10ms x 1 = 10ms | 10ms x 1 = 10ms | 10us x 2^1 = 20us |
0x02 | 10ms x 2 = 20ms | 10ms x 2 = 20ms | 10us x 2^2 = 40us |
——— | ——— | ——— | ——— |
0x17 | 10ms x 23 = 230ms | 10ms x 23 = 230ms | 10us x 2^23 = 83336ms |
——— | ——— | ——— | 予約 |
0xFF | 10ms x 255 = 2550ms | 10ms x 255 = 2550ms | 予約 |
表2.ECSDレジスター[216/247/247]タイムアウト設定値
SLEEP_NOTIFICATIONの場合
SLEEP_NOTIFICATION_TIMEはPOWER_OFF_SHORTとPOWER_OFF_LONGとは異なる計算式が用意されています。
ホストはSLEEP_AWAKE(CMD5)を発行してスリープ状態から復帰した後に、POWER_OFF_NOTIFICATIONにPOWERED_ON(0x01)を設定する必要があります。
産業機器向けe.MMC選定に役立つラインナップ表
Micron Technologyでは最新のNANDフラッシュを搭載したe.MMC製品を提供しています。
こちらのラインナップ表では、各メーカーごとに異なるVCCQ電圧レベルなど、特に産業機器向けにe.MMCを選定するお客様に役立つ情報をご確認いただけます。
簡単なご登録でダウンロードいただけますので、是非ご活用ください。
まとめ
e.MMCはもともとモバイル用途に作られたデバイスではありますが、現在ではさまざまな用途で活用されています。その際に注意するべきe.MMCの電源断、パワーオフについて解説しました。
– e.MMCはモバイル機器用途を想定しており、特に電源オフに関しては注意が必要
– NANDフラッシュ電源VCCは、e.MMCコントローラー電源VCCQがオンの必要がある
– NANDフラッシュのデータを守るために電源オフは通知が必要
もし、e.MMCの導入についてご不明な点があれば、下記のフォームよりお問い合わせください。