電子装置のエラーを取り扱う方法において、不揮発性メモリNVMから電子装置をブーティングし、NVMにエラーが発生したかどうか決定し、NVMにエラーが発生したという決定に応答して、少なくとも1つのエラー通知を揮発性メモリの一部分に記憶し、電子装置がブーティングを終了したときに少なくとも1つのエラー通知を使用してエラーを修正する、ことを含む方法。NVMにエラーが発生しなかったという決定に応答して、NVMからの電子装置のブーティングを継続すること更に含む、請求項1に記載の方法。前記揮発性メモリの一部分は、メモリバッファである、請求項1に記載の方法。前記揮発性メモリの一部分は、予約されたランダムアクセスメモリエリアである。請求項1に記載の方法。前記修正は、エラーが非致命的エラーであることを決定し、エラーに関連したNVMの少なくとも1つのブロックを識別し、その少なくとも1つのブロックに記憶されたデータをNVMの別のブロックへと書き込む、ことを含む請求項1に記載の方法。前記修正は、エラーが致命的エラーであることを決定し、エラーに関連したNVMの少なくとも1つのブロックを識別し、その少なくとも1つのブロックを撤退させる、ことを含む請求項1に記載の方法。電子装置の回復を強制し、電子装置のファームウェアを更新する、ことを更に含む請求項6に記載の方法。不揮発性メモリNVMと、エラーログを記憶するように動作する揮発性メモリと、NVMにアクセスするように動作できるメモリインターフェイスと、を備え、前記メモリインターフェイスは、前記NVMから前記揮発性メモリへブートローダーをロードし、そのブートローダーを使用して前記NVMから前記揮発性メモリへファームウェアをロードし、前記ファームウェアのロード中に少なくとも1つのエラーが生じたかどうか決定し、少なくとも1つのエラーが生じたと決定するのに応答して、少なくとも1つのエラー通知をエラーログに記憶する、ように動作する電子装置。前記電子装置は、前記ファームウェアがロードされる間にリードオンリコンテクストにある、請求項8に記載の電子装置。前記メモリインターフェイスは、リフレッシュ通知及び修正不能なエラー修正コード通知の少なくとも1つを受け取るのに応答して少なくとも1つのエラーが生じたことを決定するように動作する、請求項8に記載の電子装置。前記メモリインターフェイスは、オペレーティングシステムを前記揮発性メモリへロードするように動作する、請求項8に記載の電子装置。前記NVMへデータを書き込むよう動作するNVMドライバを更に備えた、請求項11に記載の電子装置。前記NVMドライバは、更に、前記エラーログを処理し、少なくとも1つのエラーを修正する、ように動作する請求項12に記載の電子装置。少なくとも1つのエラーが生じなかったとの決定に応答して、前記メモリインターフェイスは、前記揮発性メモリへファームウェアをロードし続けるように動作する、請求項8に記載の電子装置。前記NVMは、NANDフラッシュメモリである、請求項8に記載の電子装置。電子装置の不揮発性メモリNVMから電子装置の揮発性メモリへリードオンリコンテクストにおいてファームウェアを読み取り、その読み取られたファームウェアにおいて少なくとも1つのエラーを検出するように動作する制御回路と、電子装置が書き込み可能なコンテクストに到達したときにその少なくとも1つのエラーを修正するように動作するNVMドライバと、を備えたメモリインターフェイス。前記制御回路は、前記揮発性メモリの一部分に少なくともエラー通知を記憶するように動作する、請求項16に記載のメモリインターフェイス。前記NVMドライバは、書き込み可能なコンテクストで動作する、請求項16に記載のメモリインターフェイス。前記NVMドライバは、少なくとも1つのエラーが非致命的エラーであることを決定し、そのエラーに関連したNVMにおける少なくとも1つのブロックを識別し、その少なくとも1つのブロックに記憶されたデータをNVMの少なくとも1つの他のブロックへ移動する、ように動作する、請求項16に記載のメモリインターフェイス。前記NVMドライバは、少なくとも1つのエラーが致命的エラーであることを決定し、そのエラーに関連したNVMにおける少なくとも1つのブロックを識別し、NVMの少なくとも1つの他のブロックへデータをコピーし、その少なくとも1つのブロックを撤退させる、ように動作する請求項16に記載のメモリインターフェイス。ある状況において、装置がブートアップされている間にNVMにエラーが生じることがある。このようなエラーは、それが修正されないままであると、データロスを引き起こしたり装置を不作動にしたりする。NANDフラッシュメモリのような不揮発性メモリNVMからの装置ブートアップ中にエラーを取り扱うためのシステム及び方法が提供される。電子装置は、装置ブートアップ中に装置がNVMからのデータを読み取ることしかできないときに不揮発性メモリのエラーログを使用してエラー通知を追跡することができる。例えば、電子装置がNVMからブートアップされている間に、装置のNVMインターフェイスがエラーを検出し、1つ以上のエラー通知をエラーログに記憶することができる。次いで、装置がブーティングを終了し、装置への書き込みが可能な状態に到達すると、装置のNVMドライバは、エラーログを使用して、以前に検出されたエラーを修正するように構成することができる。本発明の前記及び他の態様及び効果は、全体を通じて同じ部分が同じ参照文字で示された添付図面を参照して以下の詳細な説明を考察したときに明らかとなろう。不揮発性メモリNVMからの装置ブートアップ中にエラーを取り扱うシステム及び方法が提供される。ファームウェアの故障を防止しそしてデータロスを回避するために、電子装置のNVMインターフェイスは、装置がブートアップされている間にエラーを検出してエラーログを不揮発性メモリに維持するよう構成することができる。この段階中に、電子装置は、リードオンリコンテクストで動作する。ここで使用するリードオンリコンテクストとは、電子装置がNVMへの書き込みを遂行することができず、従って、NVMにおいて検出されたエラーを修正もできない動作状態を指す。次いで、電子装置が書き込み可能なコンテクストに入ると例えば、装置ブートアップが終了すると、電子装置のNVMドライバは、エラーログを使用して、その検出されたエラーを修正するように構成することができる。ここで使用する書き込み可能なコンテクストとは、電子装置の1つ以上のコンポーネントがNVMへの書き込み動作を遂行できる動作状態を指す。従って、装置が書き込み可能なコンテクストに入ると、NVMドライバは、より信頼性の高いブロックへデータを移動し、及び/又は欠陥に近いブロックを撤退させることができる。従って、装置に記憶されたファームウェアは、長期間にわたり更新を必要とせずに使用することができると共に、致命的エラーの発生を減少することもできる。図1は、電子装置100のブロック図である。ある実施形態において、電子装置100は、ポータブルメディアプレーヤ例えば、カリフォルニア州クパチーノのアップル社から入手できるiPodTM、セルラー電話例えば、アップル社から入手できるiPhoneTM、ポケットサイズパーソナルコンピュータ、パーソナルデジタルアシスタントPDA、デスクトップコンピュータ、ラップトップコンピュータ、及び他の適当な形式の電子装置であり、又はそれらを含む。電子装置100は、システムオンアチップSoC110と、不揮発性メモリNVM120とを備えている。NVM120は、フローティングゲート又は電荷捕獲技術に基づくNANDフラッシュメモリ、NORフラッシュメモリ、消去可能なプログラマブルリードオンリメモリEPROM、電気的に消去可能なプログラマブルリードオンリメモリEEPROM、強誘電体RAMFRAM、磁気抵抗RAMMRAM、又はその組み合わせを含む。NVM120は、消去可能な最小単位であるブロックへ編成でき、更に、プログラム又は読み取り可能な最小単位であるページへ編成することもできる。ある実施形態では、NVM120は、複数の集積回路を含むことができ、各集積回路は、複数のブロックを有する。対応する集積回路からのブロック例えば、同じ位置又はブロック番号を有するブロックは、スーパーブロックを形成する。NVM120の各メモリ位置例えば、ページ又はブロックは、物理的アドレス例えば、物理的ページアドレス又は物理的ブロックアドレスを使用して参照することができる。システムオンアチップ110は、SoC制御回路112と、メモリ114と、NVMインターフェイス116とを備えている。SoC制御回路112は、SoC110の一般的動作及び機能を制御すると共に、SoC110又は装置100の他のコンポーネントを制御する。例えば、ユーザ入力、及び/又はアプリケーション又はオペレーティングシステムのインストラクションに応答して、SoC制御回路112は、NVM120からデータを得るか又はそこにデータを記憶するためにNVMインターフェイス116に読み取り又は書き込みコマンドを発生することができる。明瞭化のため、SoC制御回路112が記憶又は検索のために要求するデータは、ユーザデータと称されるが、データは、ユーザ又はユーザアプリケーションに直接関連したものでなくてもよい。むしろ、ユーザデータは、例えば、アプリケーション又はオペレーティングシステムを経てSoC制御回路112により発生され又は得られるデジタル情報の適当なシーケンスでよい。SoC制御回路112は、ハードウェア、ソフトウェア及びファームウェアの組み合わせ、並びに電子装置100の機能を駆動するように働くコンポーネント、回路又はロジックを含む。例えば、SoC制御回路112は、NVM120又はメモリ114に記憶されたソフトウェア/ファームウェアの制御のもとで動作する1つ以上のプロセッサを備えている。SoC制御回路112は、アプリケーション、オペレーティングシステム、NVMドライバ117、又はメモリ114にロードされたブートローダーのようなプログラムの制御のもとで動作することができる。メモリ114は、適当な形式の揮発性メモリ、例えば、ランダムアクセスメモリRAM例えば、スタティックRAMSRAM、ダイナミックランダムアクセスメモリDRAM、同期ダイナミックランダムアクセスメモリSDRAM、ダブルデータレートDDRRAM、キャッシュメモリ、リードオンリメモリROM、又はその組み合わせを含む。又、メモリ114は、不揮発性メモリ120へプログラムするか又はそこから読み出すためにユーザデータを一時的に記憶することのできるデータソースを含む。ある実施形態では、メモリ114は、SoC制御回路112の一部分として具現化されるプロセッサのためのメインメモリとして働いてもよい。更に、メモリ114の1つ以上の部分を使用して、装置のブートアップ中に使用されるエラーログ、オペレーティングシステム、並びに関連ファームウェア及びカーネルを記憶することもできる。NVMインターフェイス116は、NVM120と、SoC制御回路112により実行されるオペレーティングシステム、アプリケーション、ブートローダー、或いは他の非メモリ特有又は非ベンダー特有プログラムとの間のインターフェイス又はドライバとして働くように構成されたハードウェア、ソフトウェア及び/又はファームウェアの適当な組み合わせを含むことができる。NVMインターフェイス116に含まれるソフトウェアモジュールについては、それに対応するプログラムコードがNVM120又はメモリ114に記憶される。NVMインターフェイス116は、SoC制御回路112がNVM120にアクセスして、NVM120のメモリ位置例えば、ページ、ブロック、スーパーブロック、集積回路及びそこに記憶されたデータ例えば、ユーザデータを管理できるようにする種々の機能を遂行することができる。例えば、NVMインターフェイス116は、SoC制御回路112からの読み取り又は書き込みコマンドを解釈し、ウェアレベリングを遂行し、そしてNVM120のバスプロトコルに適合する読み取り及びプログラムインストラクションを発生することができる。NVMインターフェイス116は、NVMドライバ117及びバスコントローラ118を備えている。NVMドライバ117は、プログラムからのメモリアクセスコマンドを解釈するためのNVM特有の又はベンダー特有のソフトウェア及び/又はファームウェアを含む。ある実施形態では、NVMドライバ117は、NVM120の異なる部分へのアクセスを与える複数のソフトウェアモジュール又はドライバを含む。例えば、NVMドライバ117は、ファイルシステムを通してNVM120のメモリ位置の少なくとも幾つかへのアクセスを与えるためのブロック装置ドライバを含む。更に、NVMドライバ117は、NVM120内の他のメモリ位置に記憶された不揮発性プレブート情報例えば、ブートアップ中に電子装置100により使用される情報へのアクセスを与えるために個別の不揮発性プレブート記憶ドライバ例えば、マスクROMを含むこともできる。NVMドライバ117は、更に、例えば、オペレーティングシステムとNVM120との間に積層ソフトウェアインターフェイスを与えるための種々のソフトウェアモジュール又はドライバを含むこともできる。NVMドライバ117は、NVM120とインターフェイスして、NVMドライバ117、オペレーティングシステム、及びアプリケーションの上位レベルソフトウェアモジュールからNVM120の細部を取り去る下位レベルソフトウェアモジュールを備えている。この下位レベルソフトウェアモジュールは、例えば、NVM120のブロックを、上位レベルソフトウェアモジュールにより使用するためのスーパーブロックへとグループ化するドライバを含むことができる。下位レベルソフトウェアモジュールは、不揮発性プレブート記憶ドライバも含む。ある実施形態では、NVMドライバ117は、それがNVM120へリードオンリアクセスを与えることのできるリードオンリコンテクストで構成される。リードオンリコンテクストは、より小さなソフトウェアモジュール及びより速い速度を許す。従って、このコンテクストは、NVM120への書き込みが一般的に不要な装置ブートアップ中に使用される。他の実施形態では、NVMドライバ117は、それがNVM120への1つ以上の書き込みを遂行するようにバスコントローラ118に指令することのできる書き込み可能なコンテクストで構成される。特に、書き込み可能なコンテクストで動作する間に、NVMドライバ117は、電子装置100の書き込み可能なコンテクストについてコンパイルされたソフトウェアモジュールを実行することができる。バスコントローラ118は、NVMドライバ117が、NVM120のバス仕様例えば、データレートを使用してNVM120にアクセスできるようにする適当なハードウェアコンポーネントを含む。図1に示されていないある実施形態では、NVMドライバ117及び/又はバスコントローラ118は、フラッシュメモリドライバのように、NVM120のための個別のメモリコントローラ例えば、フラッシュコントローラで具現化されてもよい。これらの実施形態では、SoC110又はSoC制御回路112は、ホストコントローラとして動作することができる。例えば、ホストコントローラとして、SoC110は、NVM120へ読み取り及び書き込み要求を発生することができる。NVMインターフェイス116及びSoC制御回路112は、個別のモジュールとして示されているが、これは、本発明の実施形態の説明を簡単化するためのものに過ぎない。これらのモジュールは、ハードウェアコンポーネント、ソフトウェアコンポーネント、又はその両方を共有する。例えば、SoC制御回路112は、NVMインターフェイス116のためのソフトウェアベースのメモリドライバを実行することができる。電子装置100のパワーアップ又は再ブート時に、NVM120からメモリ114へブートローダーがロードされる。次いで、電子装置100は、ブートローダーを使用して、NVM120からメモリ114へデータ例えば、オペレーティングシステム並びに関連ファームウェア及びカーネルをロードすることができる。ブートローダーが、NVM120の1つ以上のブロックに記憶されたデータを読み取ってメモリ114へロードする間に、これらブロックの幾つかにおいてエラーが検出されることがある。例えば、あるエラーは、非致命的エラーであり例えば、1つ以上のリフレッシュ通知の発生により指示される、一方、他のエラーは、致命的エラーである例えば、1つ以上の修正不能なエラー修正コードuECC通知により指示される。これらエラーが装置100により修正されることが、多くの要因によって妨げられる。その1つの要因は、データがブートローダーにより読み取られるときに、エラーを修正できないリードオンリコンテクストで装置100が動作することである。上述したように、リードオンリコンテクストとは、電子装置がNVMへの書き込みを遂行することができず、従って、NVMにおいて検出されたエラーを修正できない動作状態を指す。別の要因は、検出されるエラーの幾つかが過渡的なことである。例えば、装置ブートアップ中に、電子装置100は、特定のページ又はブロックにおいてリフレッシュ動作を行う必要があることを示す1つ以上のリフレッシュ通知を受け取る。しかしながら、そのページ又はブロックのその後の読み取り時に、装置100は、付加的なリフレッシュ通知を受け取らないことがある。それでも、そのページ又はブロックにおいてリフレッシュ動作を遂行しなければならない。更に、ロードされるデータは、ブートローダーでしか読み取られないので、装置100は、それがブートアップを終了すると、それらエラーを再検出することができない。従って、それらエラーは、装置のブートアップが完了した後に、修正されないままとなる。その結果、それらエラーをできるだけ早急に例えば、1つ以上のブロックを撤退させるか又は記憶されたデータをNVM120の異なるブロックへ移動することにより修正するのが好ましいが、装置100は、ファームウェアが例えば、1つ以上の致命的エラーのために欠陥となるまで動作を続けることになる。従って、装置100において強制的回復を遂行することが必要になる。強制的回復が終了した後にも、元のエラーは、依然、修正されないままである。特に、強制的回復中に、新たなファームウェアがNVM120に書き込まれることがある。ある場合には、古いファームウェアが記憶されていた同じブロックに新たなファームウェアが書き込まれることがある。一般的に、装置100が元のエラーを再検出することはない。というのは、装置100が、新たなファームウェアをNVM120に書き込む前に、古いファームウェアを読み出して検査するプロトコルがないからである。1つの考えられる解決策は、ブートアッププロセスが完了した後に電子装置100がメモリ114に記憶されたファームウェアを再検証することである。このような解決策を使用しても、装置100は、過渡的な非致命的エラーを再検出することができない。更に、この解決策は、装置100が完全に機能するときでもデータの読み取りに時間がかかるので装置の性能に否定的に影響する。従って、ファームウェアの欠陥を防止し、データのロスを回避するために、NVMインターフェイス116は、装置のブートアップ中にエラーを検出しそしてエラーログを維持するように構成することができる。装置100が書き込み可能なコンテクストに入ると例えば、装置ブートアップが完了すると、NVMドライバ117は、エラーログを使用して検出されたエラーを修正するように構成することができる。例えば、NVMドライバ117は、データを、より信頼性のあるブロックへ移動させ、及び/又は欠陥に接近したブロックを撤退させ、それにより、装置全体の信頼性を改善することができる。上述したように、書き込み可能なコンテクストとは、電子装置の1つ以上のコンポーネントがNVMへの書き込み動作を遂行できる動作状態を指す。図2は、電子装置ブートアップを示す図200である。メモリ214は、メモリ114図1と同じ又は同様である。又、同様に、NVM220は、NVM120図1と同じであるか又は同様である。図2に示すメモリ214の部分230-234は、単なる例示に過ぎないことを理解されたい。例えば、各部分のここに示すサイズは、例示であり、実施形態をその示されたサイズに限定するものと考えてはならない。又、これら部分の順序は、適当な順序に再配置してもよいことを理解されたい。ある実施形態では、電子装置例えば、図1の電子装置100のオペレーティングシステムは、その電子装置のパワーアップ又は再ブート中にNVM220からブートアップされる。例えば、図2に示すように、期間T1中の装置のパワーアップ又は再ブート時に、ブートローダー230がNVM220からNVMインターフェイス例えば、図1のNVMインターフェイス116を経て揮発性メモリ214へロードされる。期間T2中に、ブートローダー230は、オペレーティングシステム及びその関連データをメモリ214へロードするように構成される。例えば、オペレーティングシステムに加えて、NVMインターフェイスは、カーネル及びファームウェアもロードし、これは、オペレーティングシステムを構成するのに使用でき、及び/又はオペレーティングシステムにより始動のために使用できる。特に、NVMインターフェイスは、NVMの1つ以上のメモリ位置例えば、1つ以上のブロックからオペレーティングシステム、カーネル及びファームウェアを読み取ることができる。ある実施形態では、NVMインターフェイスは、リードオンリコンテクストで読み取りを遂行することができる。従って、図2に示すように、オペレーティングシステム及びその関連データは、NVM220からNVMインターフェイスを通してメモリ214へロードできるデータ232により指示される。データ232がメモリ214へロードされる間に、NVMインターフェイスは、NVM220における1つ以上のエラー250例えば、NVM220から読み取られているファームウェアにおける1つ以上のエラーを検出することができる。このようなエラーを検出すると、NVMインターフェイスは、1つ以上のエラー通知例えば、リフレッシュ通知又はuECC通知をメモリ214の一部分に記憶することができる。例えば、期間T3中に、NVMインターフェイスは、1つ以上のエラー通知をエラーログ234に記憶することができ、エラーログは、メモリ214におけるスクラッチメモリバッファ及び/又は予約されたランダムアクセスメモリエリアとして具現化することができる。電子装置がブートを行うと例えば、オペレーティングシステムがメモリ214にロードされて、始動すると、NVMドライバ例えば、図1のNVMドライバ117は、エラーログ234を検査し、そして1つ以上の修正アクションを遂行することができる。特に、NVMドライバは、書き込み可能なコンテクストで動作し、1つ以上の修正アクションを遂行するようにバスコントローラ例えば、図1のバスコントローラに指令することができる。従って、図2の期間T4の間に、NVMドライバは、エラーログ234を検査することができる。例えば、NVMドライバは、エラーログ234を処理して、1つ以上のエラー通知を読み取ることができる。次いで、期間T5中に、NVMドライバは、エラー通知を使用してエラー250を修正することができる。例えば、エラーログ234からの1つ以上のリフレッシュ通知を読み取るのに応答して、NVMドライバは、例えば、ガベージコレクションを遂行することによりNVM220のページ又はブロックに記憶されたデータをリフレッシュすることができる。別の例として、エラーログ234からの1つ以上のuECC通知を読み取るのに応答して、NVMドライバは、装置を回復させる必要があることを指示する通知を送信することができる。図3は、NVM例えば、図1のNVM120、又は図2のNVM220からの装置ブートアップ中にエラーを取り扱うためのプロセス300を例示するフローチャートである。プロセス300のステップは、NVMとインターフェイスできるNVMインターフェイス例えば、図1のNVMインターフェイス116、NVMにデータを書き込むことのできるNVMドライバ例えば、図1のNVMドライバ117、或いは電子装置例えば、図1の電子装置100のコンポーネント又はコンポーネントの組み合わせにより実行することができる。プロセス300は、ステップ302において開始する。ステップ304において、NVMインターフェイスがファームウェアを更新する。例えば、ファームウェアは、電子装置が工場にある間に、或いは装置が使用されるときのソフトウェアダウンロード中に、更新される。次いで、ステップ306において、ファームウェアの更新が成功であったかどうか決定することができる。ステップ306において、ファームウェアの更新が不成功であったと決定されると、プロセス300は、ステップ304へ戻り、ファームウェアを再び更新することができる。ステップ306において、ファームウェアの更新が成功であったと決定されると、プロセス300は、ステップ308へ進む。ステップ308において、電子装置をNVMからブートすることができる。例えば、NVMインターフェイスは、NVMから揮発性メモリ例えば、図1のメモリ114又は図2のメモリ214へブートローダーをロードすることができる。次いで、ブートローダーを使用して、NVMインターフェイスは、オペレーティングシステム、カーネル及びファームウェアを揮発性メモリにロードするように試みることができる。例えば、図2に示すように、NVMインターフェイスは、ブートローダー230をNVM220からメモリ214へロードし、そしてブートローダー230は、データ232をメモリ214へロードするように試みることができる。ステップ310へと続いて、致命的エラー例えば、致命的ブートローディングエラーが生じたかどうか決定することができる。このような致命的エラーは、電子装置が首尾良くブートアップされるのを妨げることがある。ステップ310において、致命的エラーが生じたと決定されると、プロセスは、ステップ304へ戻り、NVMインターフェイスは、ファームウェアを再び更新するように試みることができる。ステップ310において、致命的エラーが生じなかったと決定されると、プロセスは、ステップ312へ進む。ステップ312において、NVMに少なくとも1つのエラー例えば、ファームウェアロード中の1つ以上のエラーが発生したかどうか決定される。ステップ312において、NVMに少なくとも1つのエラーが発生しなかったと決定されると、プロセス300は、NVMインターフェイスがオペレーティングシステム、カーネル及びファームウェアを揮発性メモリへロードし終え、そしてオペレーティングシステムが始動すると例えば、装置が書き込み可能なコンテクストに到達すると、ステップ314へ進む。しかしながら、ステップ312において、NVMに少なくとも1つのエラーが生じたと決定されると、プロセス300は、ステップ316へ進む。ある実施形態では、NVMインターフェイスは、1つ以上のエラー通知例えば、リフレッシュ通知及び/又はuECC通知を受け取るのに応答して少なくとも1つのエラーが発生したことを決定できる。例えば、図2に示すように、NVMインターフェイスは、NVMインターフェイスは、NVM220において1つ以上のエラー250を検出することができる。ステップ316において、揮発性メモリの一部分に1つ以上のエラー通知を記憶することができる。例えば、図2に示すように、NVMインターフェイスは、メモリ214のエラーログ234にエラー通知を記憶することができる。1つ以上のエラー通知を記憶した後に、プロセス300は、ステップ314へ進む。ステップ314において、NVMの1つ以上のエラーが装置のブートアップ中に検出されたかどうか決定することができる。例えば、NVMドライバ例えば、図1のNVMドライバ117は、エラーログを処理し、そして1つ以上のエラー通知がエラーログに記憶されたかどうか決定することができる。ステップ314において、装置のブートアップ中にエラーが検出されないと決定された場合には、プロセス300は、ステップ318で終了となる。ある実施形態において、その後の時点で、電子装置がパワーダウンされ、再ブートされる。次いで、サブプロセス330が開始され、ステップ308において、電子装置をNVMからブートすることができる。ステップ314において、装置ブートアップ中に1つ以上のエラーが検出されたと決定された場合には、NVMドライバは、記憶されたエラー通知を使用して1つ以上のエラーを修正するように試みることができる。従って、プロセス300は、ステップ320へ進む。ステップ320において、装置のブートアップ中に1つ以上の致命的エラーが検出されたかどうか決定することができる。例えば、NVMドライバは、エラーログが1つ以上のuECC通知を含むかどうか決定することができる。ステップ320において、装置のブートアップ中に検出されたエラーが致命的なエラーであると決定された場合には、プロセス300は、ステップ322へ進む。ステップ322において、NVMドライバは、致命的なエラーに関連した1つ以上のブロックを撤退させることができる。例えば、NVMドライバは、その関連ブロックを最初に識別することができる。次いで、NVMドライバは、その関連ブロックに記憶されたデータをNVMの他のブロックへコピーすることによりブロックを撤退させることができる。データをコピーした後、その関連ブロックを、利用可能なプログラム可能なブロックのプールから撤退させることができる。ブロックを撤退させた後、プロセス300は、ステップ304へ戻り、NVMインターフェイスは、電子装置の回復を強制することができる。例えば、NVMインターフェイスは、ファームウェアを再び更新するように試みることができる。ステップ320において、装置のブートアップ中に検出されたエラーが致命的エラーでないと決定された場合には、プロセス300は、ステップ324へ進む。例えば、NVMドライバは、1つ以上のエラーが、ブーティングにとって重要でない非致命的エラーであると決定する。ステップ324において、NVMドライバは、非致命的エラーに関連した1つ以上のブロックに記憶されたデータを移動することができる。この先制移動は、非致命的エラーが後で致命的エラーへと発展するのを防止する。例えば、NVMドライバは、その関連ブロックを最初に識別することができる。ブロックを識別した後に、NVMドライバは、その関連ブロックに記憶されたデータをNVMの他のブロックに書き込むことができる。プロセス300は、次いで、ステップ318で終了となる。電子装置例えば、図2の電子装置100のブートアッププロセス中にエラーログを維持し及び処理できることが理解される。従って、ステップ308ないし322図3に破線で輪郭を描かれ、サブプロセス330として示されたは、装置ブートアッププロセス中にNVMインターフェイス及び/又はNVMドライバにより行われるステップを表すことができる。例えば、サブプロセス330は、通常の装置ブートアップ中にステップ308で例えば、動作中の電子装置がパワーダウンされて再ブートされるときに開始されてもよい。図3のプロセスは、単なる例示に過ぎないことを理解されたい。本発明の範囲から逸脱せずに、プロセス300及びサブプロセス330のいずれかのステップを除去し、変更し又は結合してもよいし、付加的なステップを追加してもよい。本発明の前記実施形態は、例示のためのものであって、それに限定されない。