• 公開日:2020年12月24日
  • | 更新日:2022年11月21日

e.MMC 設計注意点 – 電源オフ操作

はじめに

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の導入についてご不明な点があれば、下記のフォームよりお問い合わせください。

お問い合わせはこちらから