(57)【特許請求の範囲】
【請求項１】
記憶媒体の起動時に参照されるブート領域に格納されたブート情報と、前記記憶媒体を識別する識別情報とを、アクセス対象の前記記憶媒体である第１記憶媒体から読み出すアクセス部と、
前記第１記憶媒体から読み出された第１ブート情報が正常である場合、複数の記憶媒体のそれぞれのブート情報および識別情報を記憶する記憶部に、前記第１記憶媒体から読み出された前記第１ブート情報を前記第１記憶媒体の第１識別情報に対応付けて格納するバックアップ部と、
前記第１記憶媒体から読み出された前記第１ブート情報が正常でなく、かつ、前記第１記憶媒体の前記第１識別情報が前記記憶部に記憶されている場合、前記第１記憶媒体の前記第１識別情報に対応する第２ブート情報を前記記憶部から読み出し、前記第１記憶媒体の前記ブート領域に格納された前記第１ブート情報を前記記憶部から読み出した前記第２ブート情報を用いて修復する修復部と
を有し、
前記第１記憶媒体から読み出された前記第１ブート情報が正常である場合、前記バックアップ部は、
前記第１記憶媒体から読み出された前記第１ブート情報を用いて第１のハッシュ値を算出し、
前記第１記憶媒体から読み出された前記第１ブート情報を前記第１記憶媒体の前記第１識別情報に対応付けて前記記憶部に格納した後に、前記第１記憶媒体の前記第１識別情報に対応する前記第２ブート情報を前記記憶部から読み出し、前記記憶部から読み出した前記第２ブート情報を用いて第２のハッシュ値を算出し、
前記第１のハッシュ値が前記第２のハッシュ値と等しい場合、前記第２のハッシュ値を前記第１記憶媒体の前記第１識別情報に対応付けて前記記憶部に格納する
ことを特徴とする半導体装置。
【請求項２】
請求項１に記載の半導体装置において、
前記第１記憶媒体から読み出された前記第１ブート情報が正常でなく、かつ、前記第１記憶媒体の前記第１識別情報が前記記憶部に記憶されている場合、前記修復部は、
前記記憶部から読み出した前記第２ブート情報を用いて第３のハッシュ値を算出し、
前記第１記憶媒体の前記第１識別情報に対応する前記第２のハッシュ値を前記記憶部から読み出し、
前記記憶部から読み出した前記第２のハッシュ値が前記第３のハッシュ値と等しい場合、前記記憶部から読み出した前記第２ブート情報を前記第１記憶媒体の前記ブート領域に格納し、前記第２のハッシュ値が前記第３のハッシュ値と異なる場合、前記第１記憶媒体の前記ブート領域に格納された前記第１ブート情報の修復を中止する
ことを特徴とする半導体装置。
【請求項３】
請求項１または請求項２に記載の半導体装置において、
前記バックアップ部は、前記第１のハッシュ値が前記第２のハッシュ値と異なる場合、前記第１記憶媒体の前記第１識別情報および前記第１記憶媒体の前記第１識別情報に対応する前記第２ブート情報を、前記記憶部から削除する
ことを特徴とする半導体装置。
【請求項４】
記憶媒体の制御方法において、
記憶媒体の起動時に参照されるブート領域に格納されたブート情報と、前記記憶媒体を識別する識別情報とを、アクセス対象の前記記憶媒体である第１記憶媒体から読み出し、
前記第１記憶媒体から読み出された第１ブート情報が正常である場合、複数の記憶媒体のそれぞれのブート情報および識別情報を記憶する記憶部に、前記第１記憶媒体から読み出された前記第１ブート情報を前記第１記憶媒体の第１識別情報に対応付けて格納し、
前記第１記憶媒体から読み出された前記第１ブート情報が正常でなく、かつ、前記第１記憶媒体の前記第１識別情報が前記記憶部に記憶されている場合、前記第１記憶媒体の前記第１識別情報に対応する第２ブート情報を前記記憶部から読み出し、前記第１記憶媒体の前記ブート領域に格納された前記第１ブート情報を前記記憶部から読み出した前記第２ブート情報を用いて修復し、
前記第１記憶媒体から読み出された前記第１ブート情報が正常である場合、前記第１記憶媒体から読み出された前記第１ブート情報を用いて第１のハッシュ値を算出し、
前記第１記憶媒体から読み出された前記第１ブート情報を前記第１記憶媒体の前記第１識別情報に対応付けて前記記憶部に格納した後に、前記第１記憶媒体の前記第１識別情報に対応する前記第２ブート情報を前記記憶部から読み出し、前記記憶部から読み出した前記第２ブート情報を用いて第２のハッシュ値を算出し、
前記第１のハッシュ値が前記第２のハッシュ値と等しい場合、前記第２のハッシュ値を前記第１記憶媒体の前記第１識別情報に対応付けて前記記憶部に格納する
ことを特徴とする記憶媒体の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置および記憶媒体の制御方法に関する。
【背景技術】
【０００２】
コンピュータ等の情報処理装置は、フラッシュメモリ、ハードディスク等の複数のセクタを有する記憶媒体を外部記憶装置として使用する。記憶媒体の先頭セクタは、マスターブートレコード（以下、ＭＢＲ（Master Boot Record）とも称する）と呼ばれ、記憶媒体の起動時に最初にアクセスされる。
【０００３】
例えば、起動ディスクとしてハードディスクが接続されたコンピュータは、電源が投入された場合、ハードディスクのＭＢＲに格納された情報に基づいて、ＯＳ（Operating System）を起動する。したがって、ハードディスクのＭＢＲに格納された情報が破壊された場合、コンピュータがＯＳを起動することは困難である。
【０００４】
このため、ＭＢＲから読み出された情報が正常でない場合に、ＭＢＲに格納された情報を修復するコンピュータが提案されている（例えば、特許文献１参照）。この種のコンピュータは、ハードディスクのＭＢＲとは別の領域（以下、バックアップＭＢＲとも称する）に、ＭＢＲに格納する情報をコピーする。例えば、ＭＢＲに格納された情報が破壊された場合、コンピュータは、バックアップＭＢＲに格納された情報をＭＢＲにコピーし、ＭＢＲにコピーした情報に基づいてＯＳを起動する。このように、コンピュータは、起動ディスクとして使用されるハードディスクのＭＢＲをＯＳの起動時に修復する。そして、コンピュータは、電源が切断される場合に、電源の切断時にＭＢＲに保持している情報をバックアップＭＢＲにコピーする。
【０００５】
なお、ＯＳの起動を安全に実行するために、ＯＳの起動処理に用いられるデータの安全性を確認してからＯＳを起動する方法が提案されている（例えば、特許文献２−４参照）。この種の方法では、ＯＳの起動処理に用いられるデータのハッシュ値を算出し、算出したハッシュ値を用いてデータの安全性を確認する。
【０００６】
また、所定のブロック単位でデータが消去されるフラッシュメモリでは、フラッシュメモリにアクセスするために必要な情報等を含むブートデータは、例えば、先頭のブロックに格納される。以下、ブートデータが格納されるブロックは、ブートブロックとも称される。例えば、フラッシュメモリを制御する制御装置は、フラッシュメモリを起動する場合、フラッシュメモリのブートブロックに格納されたブートデータを最初に読み出す。その後、フラッシュメモリを制御する制御装置は、フラッシュメモリに対するアクセスを、ブートブロックから読み出したブートデータに基づいて実行する。
【０００７】
したがって、フラッシュメモリのブートブロックに格納されたブートデータが破壊された場合、フラッシュメモリに対する正常なアクセスが実行されない場合がある。このため、ブートデータを２つブートブロックに格納するフラッシュメモリを含む外部記憶装置が提案されている（例えば、特許文献５参照）。この種の外部記憶装置は、外部記憶装置の起動時に２つのブートブロックを参照する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１２−２４３１９９号公報
【特許文献２】特開２００６−３２３８１４号公報
【特許文献３】特開２００７−１０２７９１号公報
【特許文献４】特開２００９−５２１７６０号公報
【特許文献５】特開平１１−１１０１４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ＭＢＲに格納された情報をＭＢＲとは別の領域に格納する記憶媒体では、ＭＢＲとは別の領域に格納された情報（ＭＢＲに格納された情報のバックアップ）と、ＭＢＲに格納された情報との両方が同時に破壊されるおそれがある。この場合、記憶媒体のＭＢＲは正常に修復されないおそれがある。このため、記憶媒体の信頼度は低下する。
【００１０】
１つの側面では、本件開示の半導体装置および記憶媒体の制御方法は、記憶媒体の信頼度を向上することを目的とする。
【課題を解決するための手段】
【００１１】
一観点によれば、半導体装置は、記憶媒体の起動時に参照されるブート領域に格納されたブート情報と、記憶媒体を識別する識別情報とを、アクセス対象の記憶媒体である第１記憶媒体から読み出すアクセス部と、第１記憶媒体から読み出された第１ブート情報が正常である場合、複数の記憶媒体のそれぞれのブート情報および識別情報を記憶する記憶部に、第１記憶媒体から読み出された第１ブート情報を第１記憶媒体の第１識別情報に対応付けて格納するバックアップ部と、第１記憶媒体から読み出された第１ブート情報が正常でなく、かつ、第１記憶媒体の第１識別情報が記憶部に記憶されている場合、第１記憶媒体の第１識別情報に対応する第２ブート情報を記憶部から読み出し、第１記憶媒体のブート領域に格納された第１ブート情報を記憶部から読み出した第２ブート情報を用いて修復する修復部とを有し、第１記憶媒体から読み出された第１ブート情報が正常である場合、バックアップ部は、第１記憶媒体から読み出された第１ブート情報を用いて第１のハッシュ値を算出し、第１記憶媒体から読み出された第１ブート情報を第１記憶媒体の第１識別情報に対応付けて記憶部に格納した後に、第１記憶媒体の第１識別情報に対応する第２ブート情報を記憶部から読み出し、記憶部から読み出した第２ブート情報を用いて第２のハッシュ値を算出し、第１のハッシュ値が第２のハッシュ値と等しい場合、第２のハッシュ値を第１記憶媒体の第１識別情報に対応付けて記憶部に格納する。
【００１２】
別の観点によれば、記憶媒体の制御方法では、記憶媒体の起動時に参照されるブート領域に格納されたブート情報と、記憶媒体を識別する識別情報とを、アクセス対象の記憶媒体である第１記憶媒体から読み出し、第１記憶媒体から読み出された第１ブート情報が正常である場合、複数の記憶媒体のそれぞれのブート情報および識別情報を記憶する記憶部に、第１記憶媒体から読み出された第１ブート情報を第１記憶媒体の第１識別情報に対応付けて格納し、第１記憶媒体から読み出された第１ブート情報が正常でなく、かつ、第１記憶媒体の第１識別情報が記憶部に記憶されている場合、第１記憶媒体の第１識別情報に対応する第２ブート情報を記憶部から読み出し、第１記憶媒体のブート領域に格納された第１ブート情報を記憶部から読み出した第２ブート情報を用いて修復し、第１記憶媒体から読み出された第１ブート情報が正常である場合、第１記憶媒体から読み出された第１ブート情報を用いて第１のハッシュ値を算出し、第１記憶媒体から読み出された第１ブート情報を第１記憶媒体の第１識別情報に対応付けて記憶部に格納した後に、第１記憶媒体の第１識別情報に対応する第２ブート情報を記憶部から読み出し、記憶部から読み出した第２ブート情報を用いて第２のハッシュ値を算出し、第１のハッシュ値が第２のハッシュ値と等しい場合、第２のハッシュ値を第１記憶媒体の第１識別情報に対応付けて記憶部に格納する。
【発明の効果】
【００１３】
本件開示の半導体装置および記憶媒体の制御方法は、記憶媒体の信頼度を向上できる。
【図面の簡単な説明】
【００１４】
【図１】半導体装置および記憶媒体の制御方法の一実施形態を示す図である。
【図２】半導体装置および記憶媒体の制御方法の別の実施形態を示す図である。
【図３】図２に示した記憶部の一例を示す図である。
【図４】図２に示した半導体装置の動作の一例を示す図である。
【図５】図４に示したバックアップ処理の一例を示す図である。
【図６】図４に示した修復処理の一例を示す図である。
【図７】図２に示した半導体装置の動作の別の例を示す図である。
【図８】半導体装置および記憶媒体の制御方法の別の実施形態を示す図である。
【図９】図２に示した半導体装置のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１５】
以下、実施形態について、図面を用いて説明する。
【００１６】
図１は、半導体装置および記憶媒体の制御方法の一実施形態を示す。図１の破線の矢印は、信号等の情報の流れを示す。図１に示す半導体装置１０は、ハードウェアのみで実現されてもよく、記憶媒体の制御プログラム等のソフトウェアによりハードウェアを制御することにより実現されてもよい。
【００１７】
半導体装置１０は、ＵＳＢ（Universal Serial Bus）メモリ、ＳＤメモリカード、ハードディスク等の記憶媒体３０と不揮発性メモリ等の記憶部２０とに接続される。例えば、半導体装置１０は、記憶媒体３０が着脱可能に接続されるコンピュータおよび携帯機器等の情報処理装置に搭載される。
【００１８】
記憶媒体３０は、記憶媒体３０の起動時に半導体装置１０に最初にアクセスされるマスターブートレコード（以下、ＭＢＲとも称する）３２と、記憶媒体３０が半導体装置１０に認識された後にアクセス可能になるデータ領域３４とを有する。ＭＢＲ３２は、複数のセクタのうちの先頭セクタであり、記憶媒体３０の起動時に参照されるブート領域の一例である。例えば、記憶媒体３０の起動時に参照されるパーティションテーブル等を含むブート情報ＢＩＮＦ１は、記憶媒体３０の先頭セクタであるＭＢＲ３２に格納される。パーティションテーブルは、記憶媒体３０のデータ領域３４を複数の領域（パーティション）に分割した際の各パーティションに関する情報を有する。なお、記憶媒体３０は、データ領域３４を１つのパーティションとして使用してもよい。また、例えば、記憶媒体３０を識別するシリアル番号等の識別情報ＩＤＩＮＦは、記憶媒体３０の規格等により決められた領域に格納される。
【００１９】
半導体装置１０は、記憶媒体３０が接続された場合、記憶媒体３０のＭＢＲ３２に最初にアクセスし、ＭＢＲ３２に格納されたブート情報ＢＩＮＦ１を読み出す。そして、半導体装置１０は、ＭＢＲ３２から読み出したブート情報ＢＩＮＦ１が正常である場合、ブート情報ＢＩＮＦ１に基づいて、記憶媒体３０のデータ領域３４にアクセスする。なお、半導体装置１０は、ＭＢＲ３２から読み出したブート情報ＢＩＮＦ１が正常でない場合、記憶媒体３０のＭＢＲ３２に格納されたブート情報ＢＩＮＦ１を、記憶部２０に記憶されたブート情報ＢＩＮＦ２を用いて修復する。例えば、半導体装置１０は、ＭＢＲ３２から読み出したブート情報ＢＩＮＦ１を用いても記憶媒体３０を認識できない場合、ブート情報ＢＩＮＦ１が正常でないと判定する。半導体装置１０によるＭＢＲ３２の修復は、例えば、記憶媒体の制御方法に基づいて実行される。
【００２０】
半導体装置１０は、アクセス部１２、バックアップ部１４および修復部１６を有する。アクセス部１２は、アクセス対象の記憶媒体３０が半導体装置１０に接続された場合、記憶媒体３０のＭＢＲ３２に格納されたブート情報ＢＩＮＦ１と、記憶媒体３０を識別する識別情報ＩＤＩＮＦとを、記憶媒体３０から読み出す。そして、アクセス部１２は、記憶媒体３０から読み出したブート情報ＢＩＮＦ１および識別情報ＩＤＩＮＦを、バックアップ部１４および修復部１６に転送する。
【００２１】
バックアップ部１４は、アクセス部１２から受けたブート情報ＢＩＮＦ１が正常である場合、アクセス部１２から受けたブート情報ＢＩＮＦ１をブート情報ＢＩＮＦ２とし、ブート情報ＢＩＮＦ２と識別情報ＩＤＩＮＦとを互いに対応付けて記憶部２０に格納する。すなわち、バックアップ部１４は、記憶媒体３０から読み出されたブート情報ＢＩＮＦ１が正常である場合、記憶媒体３０から読み出されたブート情報ＢＩＮＦ１をブート情報ＢＩＮＦ２として記憶媒体３０の識別情報ＩＤＩＮＦに対応付けて記憶部２０に格納する。例えば、互いに異なる複数の記憶媒体３０が半導体装置１０に同時または異なる時刻に接続された場合、記憶部２０は、複数の記憶媒体３０のブート情報ＢＩＮＦ２および識別情報ＩＤＩＮＦを記憶する。
【００２２】
修復部１６は、記憶媒体３０から読み出されたブート情報ＢＩＮＦ１が正常でなく、かつ、記憶媒体３０の識別情報ＩＤＩＮＦが記憶部２０に記憶されている場合、記憶媒体３０の識別情報ＩＤＩＮＦに対応するブート情報ＢＩＮＦ２を記憶部２０から読み出す。そして、修復部１６は、記憶媒体３０のＭＢＲ３２に格納されたブート情報ＢＩＮＦ１を、記憶部２０から読み出したブート情報ＢＩＮＦ２を用いて修復する。
【００２３】
例えば、修復部１６は、アクセス部１２から受けたブート情報ＢＩＮＦ１が正常でない場合、アクセス部１２から受けた識別情報ＩＤＩＮＦが記憶部２０に記憶されているか否かを判定する。アクセス部１２から受けた識別情報ＩＤＩＮＦが記憶部２０に記憶されている場合、修復部１６は、アクセス部１２から受けた識別情報ＩＤＩＮＦに対応するブート情報ＢＩＮＦ２を記憶部２０から読み出す。そして、修復部１６は、記憶部２０から読み出したブート情報ＢＩＮＦ２をブート情報ＢＩＮＦ１として、アクセス部１２を介して記憶媒体３０のＭＢＲ３２に格納する。これにより、記憶媒体３０のＭＢＲ３２に格納されるブート情報ＢＩＮＦ１は、修復される。
【００２４】
このように、複数の記憶媒体３０のブート情報ＢＩＮＦ２が識別情報ＩＤＩＮＦに対応付けて記憶部２０に記憶されているため、半導体装置１０は、複数の記憶媒体３０が使用される場合でも、ＭＢＲ３２の修復に使用するブート情報ＢＩＮＦ２を選択できる。したがって、半導体装置１０は、複数の記憶媒体３０が使用される場合でも、ＭＢＲ３２に格納されたブート情報ＢＩＮＦ１が破壊された記憶媒体３０のＭＢＲ３２を修復できる。
【００２５】
なお、半導体装置１０の構成は、図１に示す例に限定されない。例えば、記憶部２０は、半導体装置１０に含まれてもよい。また、記憶部２０は、ＵＳＢメモリ等のリムーバルディスクでもよい。あるいは、記憶部２０に電源が常に供給される場合、記憶部２０は、揮発性メモリでもよい。
【００２６】
以上、図１に示す実施形態では、記憶媒体３０の信頼度を向上できる。例えば、ブート情報ＢＩＮＦ１のバックアップであるブート情報ＢＩＮＦ２は、記憶媒体３０とは別の記憶部２０に記憶される。これにより、記憶媒体３０のＭＢＲ３２に格納されたブート情報ＢＩＮＦ１と、ブート情報ＢＩＮＦ１のバックアップであるブート情報ＢＩＮＦ２とが同時に破壊されることを抑制することができる。
【００２７】
ここで、ブート情報ＢＩＮＦ１のバックアップであるブート情報ＢＩＮＦ２とブート情報ＢＩＮＦ１とを同じ記憶媒体に記憶する従来方法では、記憶媒体のＭＢＲに格納されたブート情報ＢＩＮＦ１とブート情報ＢＩＮＦ２とが同時に破壊されるおそれがある。例えば、記憶媒体が半導体装置と非接続の場合でも、記憶媒体のＭＢＲに格納されたブート情報ＢＩＮＦ１を破壊した要因により、記憶媒体のＭＢＲと別の領域に格納されたブート情報ＢＩＮＦ２（ブート情報ＢＩＮＦ１のバックアップ）も破壊されるおそれがある。
【００２８】
これに対し、図１に示す実施形態では、記憶媒体３０が半導体装置１０と非接続の場合、記憶媒体３０は記憶部２０に接続されない。このため、記憶媒体３０が半導体装置１０と非接続の場合では、記憶媒体３０のＭＢＲ３２に格納されたブート情報ＢＩＮＦ１を破壊した要因は、ブート情報ＢＩＮＦ２を記憶した記憶部２０に影響を与えない。したがって、図１に示す実施形態では、記憶媒体３０のＭＢＲ３２に格納されたブート情報ＢＩＮＦ１とブート情報ＢＩＮＦ２（ブート情報ＢＩＮＦ１のバックアップ）とが同時に破壊されることを抑制できる。これにより、図１に示す実施形態では、記憶媒体３０のＭＢＲ３２を修復することができなくなることを抑制でき、記憶媒体３０のデータ領域３４にアクセスできなくなることを抑制できる。この結果、記憶媒体３０の信頼度を向上することができる。
【００２９】
なお、識別情報ＩＤＩＮＦを用いずに、ブート情報ＢＩＮＦ２を記憶部２０に格納する方法では、複数の記憶媒体３０が半導体装置１０に接続される場合、記憶媒体３０のＭＢＲ２が誤ったブート情報ＢＩＮＦ２で修復されるおそれがある。
【００３０】
これに対し、図１に示す実施形態では、ブート情報ＢＩＮＦ２を識別情報ＩＤＩＮＦに対応付けて記憶部２０に格納するため、複数の記憶媒体３０が半導体装置１０に接続される場合でも記憶媒体１０のＭＢＲ３２を修復できる。例えば、バックアップ部１４は、互いに異なる複数の記憶媒体３０が半導体装置１０に同時または異なる時刻に接続された場合、複数の記憶媒体３０の各ブート情報ＢＩＮＦ２を複数の記憶媒体３０の各識別情報ＩＤＩＮＦに対応付けて記憶部２０に格納する。また、修復部１６は、修復対象の記憶媒体３０の識別情報ＩＤＩＮＦに対応するブート情報ＢＩＮＦ２を、記憶部２０に記憶された複数のブート情報ＢＩＮＦ２のうちから選択して読み出す。そして、修復部１６は、記憶部２０から読み出したブート情報ＢＩＮＦ２をブート情報ＢＩＮＦ１として、アクセス部１２を介して記憶媒体３０のＭＢＲ３２に格納する。このように、図１に示す実施形態では、半導体装置１０に接続された複数の記憶媒体３０のうち、ＭＢＲ３２に格納されたブート情報ＢＩＮＦ１が破壊された記憶媒体３０のＭＢＲ３２を修復できる。
【００３１】
図２は、半導体装置および記憶媒体の制御方法の別の実施形態を示す。図１で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図２の破線の矢印は、信号等の情報の流れを示す。図２に示す半導体装置１００は、ハードウェアのみで実現されてもよく、記憶媒体の制御プログラム等のソフトウェアによりハードウェアを制御することにより実現されてもよい。半導体装置１００は、ＵＳＢメモリ、ＳＤメモリカード、ハードディスク等の記憶媒体３００に接続される。例えば、半導体装置１００は、記憶媒体３００が着脱可能に接続されるコンピュータおよび携帯機器等の情報処理装置に搭載される。
【００３２】
記憶媒体３００は、ＭＢＲ３２０およびデータ領域３４０を有する。記憶媒体３００、ＭＢＲ３２０およびデータ領域３４０は、図１に示した記憶媒体３０、ＭＢＲ３２およびデータ領域３４と同一または同様である。例えば、ＭＢＲ３２０は、複数のセクタのうちの先頭セクタであり、記憶媒体３００の起動時に参照されるブート領域の一例である。したがって、記憶媒体３００の起動時に参照されるパーティションテーブル等を含むブート情報ＢＩＮＦ１は、記憶媒体３００の先頭セクタであるＭＢＲ３２０に格納される。また、例えば、記憶媒体３００を識別するシリアル番号等の識別情報ＩＤＩＮＦは、記憶媒体３００の規格等により決められた領域に格納される。
【００３３】
半導体装置１００は、複数のインターフェース部１２０（１２０Ａ、１２０Ｂ、１２０Ｃ）と、半導体装置１００の動作を制御する制御部１１０と、不揮発性メモリ等の記憶部２００とを有する。なお、半導体装置１００は、記憶部２００を除いて定義されてもよい。
【００３４】
半導体装置１００は、記憶媒体３００のＭＢＲ３２０から読み出したブート情報ＢＩＮＦ１が正常である場合、ブート情報ＢＩＮＦ１に基づいて、記憶媒体３００のデータ領域３４０にアクセスする。また、半導体装置１００は、記憶媒体３００のＭＢＲ３２０から読み出したブート情報ＢＩＮＦ１が正常でない場合、記憶媒体３００のＭＢＲ３２０に格納されたブート情報ＢＩＮＦ１を、記憶部２００に記憶されたブート情報ＢＩＮＦ２を用いて修復する。半導体装置１００によるＭＢＲ３２０の修復は、例えば、記憶媒体の制御方法に基づいて実行される。
【００３５】
インターフェース部１２０は、ＵＳＢメモリ、ＳＤメモリカード、ハードディスク等の記憶媒体３００のインタフェースであり、半導体装置１００で使用される記憶媒体３００が接続される。なお、複数のインターフェース部１２０は、互いに同じ種類の記憶媒体３００（例えば、ＵＳＢメモリ）のインタフェースでもよいし、異なる種類の記憶媒体３００（例えば、ＵＳＢメモリおよびＳＤメモリカード等）のインタフェースでもよい。
【００３６】
例えば、記憶媒体３００が接続されたインターフェース部１２０は、制御部１１０から供給される制御信号およびデータ等の情報を記憶媒体３００に出力し、記憶媒体３００から供給される制御信号およびデータ等の情報を制御部１１０に出力する。
【００３７】
制御部１１０は、アクセス制御部１２２と、バックアップ部１４０と、修復部１６０とを有する。アクセス制御部１２２は、アクセス対象の記憶媒体３００がインターフェース部１２０に接続された場合、ＭＢＲ３２０に格納されたブート情報ＢＩＮＦ１と、識別情報ＩＤＩＮＦとを、記憶媒体３００からインターフェース部１２０を介して読み出す。そして、アクセス制御部１２２は、記憶媒体３００から読み出したブート情報ＢＩＮＦ１および識別情報ＩＤＩＮＦを、バックアップ部１４０および修復部１６０に転送する。
【００３８】
すなわち、インターフェース部１２０およびアクセス制御部１２２は、記憶媒体３００のＭＢＲ３２０に格納されたブート情報ＢＩＮＦ１と、記憶媒体３００を識別する識別情報ＩＤＩＮＦとを、アクセス対象の記憶媒体３００から読み出すアクセス部の一例である。
【００３９】
バックアップ部１４０は、ブート情報ＢＩＮＦ２のハッシュ値ＨＡＳＨ２（以下、第２のハッシュ値ＨＡＳＨ２とも称する）を識別情報ＩＤＩＮＦに対応付けて記憶部２００に格納することを除いて、図１に示したバックアップ部１４と同一または同様である。
【００４０】
例えば、バックアップ部１４０は、アクセス制御部１２２から受けたブート情報ＢＩＮＦ１が正常である場合、アクセス制御部１２２から受けたブート情報ＢＩＮＦ１を用いて第１のハッシュ値を算出する。
【００４１】
また、バックアップ部１４０は、アクセス制御部１２２から受けたブート情報ＢＩＮＦ１をブート情報ＢＩＮＦ２として、記憶媒体３００の識別情報ＩＤＩＮＦに対応付けて記憶部２００に格納する。その後、バックアップ部１４０は、記憶媒体３００の識別情報ＩＤＩＮＦに対応するブート情報ＢＩＮＦ２を記憶部２００から読み出す。
【００４２】
そして、バックアップ部１４０は、記憶部２００から読み出したブート情報ＢＩＮＦ２を用いて第２のハッシュ値ＨＡＳＨ２を算出する。第１のハッシュ値が第２のハッシュ値ＨＡＳＨ２と等しい場合、バックアップ部１４０は、第２のハッシュ値ＨＡＳＨ２を記憶媒体３００の識別情報ＩＤＩＮＦに対応付けて記憶部２００に格納する。
【００４３】
なお、第１のハッシュ値が第２のハッシュ値ＨＡＳＨ２と異なる場合は、ブート情報ＢＩＮＦ２の記憶部２００への書き込みが失敗しているおそれがある。このため、バックアップ部１４０は、第１のハッシュ値が第２のハッシュ値ＨＡＳＨ２と異なる場合、記憶媒体３００から読み出されたブート情報ＢＩＮＦ１をブート情報ＢＩＮＦ２として、記憶部２００に再度書き込みをしてもよい。これにより、正常でないブート情報ＢＩＮＦ２が記憶部２００に格納されることを抑制することができる。
【００４４】
このように、バックアップ部１４０は、記憶媒体３００から読み出されたブート情報ＢＩＮＦ１が正常である場合、ブート情報ＢＩＮＦ２と、ブート情報ＢＩＮＦ２から算出したハッシュ値ＨＡＳＨ２とを、識別情報ＩＤＩＮＦに対応付けて記憶部２００に格納する。例えば、互いに異なる複数の記憶媒体３００が半導体装置１００に同時または異なる時刻に接続された場合、記憶部２００は、複数の記憶媒体３００のブート情報ＢＩＮＦ２と、ブート情報ＢＩＮＦ２のハッシュ値ＨＡＳＨ２と、識別情報ＩＤＩＮＦとを記憶する。
【００４５】
修復部１６０は、記憶部２００から読み出したブート情報ＢＩＮＦ２が正常であるかをブート情報ＢＩＮＦ２のハッシュ値ＨＡＳＨ２を用いて判定することを除いて、図１に示した修復部１６と同一または同様である。
【００４６】
例えば、修復部１６０は、アクセス制御部１２２から受けたブート情報ＢＩＮＦ１が正常でない場合、アクセス制御部１２２から受けた識別情報ＩＤＩＮＦが記憶部２００に記憶されているか否かを判定する。アクセス制御部１２２から受けた識別情報ＩＤＩＮＦが記憶部２００に記憶されている場合、修復部１６０は、アクセス制御部１２２から受けた識別情報ＩＤＩＮＦに対応するブート情報ＢＩＮＦ２および第２のハッシュ値ＨＡＳＨ２を記憶部２００から読み出す。
【００４７】
そして、修復部１６０は、記憶部２００から読み出したブート情報ＢＩＮＦ２を用いて第３のハッシュ値を算出する。ハッシュ値ＨＡＳＨ２が第３のハッシュ値と等しい場合、修復部１６０は、記憶部２００から読み出したブート情報ＢＩＮＦ２をブート情報ＢＩＮＦ１として、アクセス制御部１２２およびインタフェース部１２０を介して記憶媒体３００のＭＢＲ３２０に格納する。これにより、記憶媒体３００のＭＢＲ３２０に格納されるブート情報ＢＩＮＦ１は、修復される。
【００４８】
なお、ハッシュ値ＨＡＳＨ２が第３のハッシュ値と異なる場合、修復部１６０は、記憶媒体３００のＭＢＲ３２０に格納されたブート情報ＢＩＮＦ１の修復を中止する。このように、修復部１６０は、記憶媒体３００から読み出されたブート情報ＢＩＮＦ１が正常でなく、かつ、記憶媒体３００の識別情報ＩＤＩＮＦが記憶部２００に記憶されている場合、ＭＢＲ３２０の修復を中止するかを、ハッシュ値ＨＡＳＨ２を用いて判定する。
【００４９】
例えば、記憶部２００からのブート情報ＢＩＮＦ２の読み出しが失敗した場合、あるいは、記憶部２００に記憶されているブート情報ＢＩＮＦ２が破壊されていた場合等では、第２のハッシュ値ＨＡＳＨ２が第３のハッシュ値と異なる。したがって、修復部１６０は、第２のハッシュ値ＨＡＳＨ２が第３のハッシュ値と異なる場合にＭＢＲ３２０の修復を中止することにより、正常でないブート情報ＢＩＮＦ２でＭＢＲ３２０を修復することを防止できる。
【００５０】
なお、半導体装置１００の構成は、図２に示す例に限定されない。例えば、記憶部２００は、半導体装置１００の外部に設けられてもよい。また、記憶部２００は、ＵＳＢメモリ等のリムーバルディスクでもよい。あるいは、記憶部２００に電源が常に供給される場合、記憶部２００は、揮発性メモリでもよい。
【００５１】
図３は、図２に示した記憶部２００の一例を示す。記憶部２００は、ブート情報ＢＩＮＦ２、ハッシュ値ＨＡＳＨ２、識別情報ＩＤＩＮＦを記憶する複数の領域２１０を有する。各領域２１０は、識別情報ＩＤＩＮＦと、識別情報ＩＤＩＮＦに対応付けされたブート情報ＢＩＮＦ２およびハッシュ値ＨＡＳＨ２とを記憶する。例えば、複数の領域２１０のそれぞれのサイズは、互いに同じサイズに固定される。なお、複数の領域２１０のうちの所定数の領域２１０のサイズは、互いに異なるサイズでもよい。また、記憶部２００は、記憶する識別情報ＩＤＩＮＦ等のデータ量に応じて、複数の領域２１０のそれぞれのサイズを識別情報ＩＤＩＮＦ毎に変更してもよい。
【００５２】
図４は、図２に示した半導体装置１００の動作の一例を示す。図４に示す動作は、ハードウェアのみで実現されてもよく、記憶媒体の制御プログラム等のソフトウェアによりハードウェアを制御することにより実現されてもよい。図４に示す動作は、例えば、記憶媒体３００が半導体装置１００に接続される度に実行される。なお、図４では、記憶媒体３００がインタフェース部１２０Ａに接続された場合を例にして半導体装置１００の動作を説明する。
【００５３】
ステップＳ１００では、制御部１１０は、インタフェース部１２０Ａに接続された記憶媒体３００のＭＢＲ３２０に格納されたブート情報ＢＩＮＦ１と、記憶媒体３００を識別する識別情報ＩＤＩＮＦとを、記憶媒体３００から取得する。例えば、アクセス制御部１２２は、ブート情報ＢＩＮＦ１と識別情報ＩＤＩＮＦとを記憶媒体３００からインタフェース部１２０Ａを介して読み出す。
【００５４】
ステップＳ２００では、制御部１１０は、ステップＳ１００で取得したブート情報ＢＩＮＦ１に基づいて初期処理を実行する。初期処理は、例えば、記憶媒体３００を認識する処理等である。記憶媒体３００の認識に成功した場合、記憶媒体３００のデータ領域３４０は、アクセス可能になる。
【００５５】
ステップＳ２２０では、制御部１１０は、ステップＳ１００で取得したブート情報ＢＩＮＦ１が正常か否かを判定する。例えば、制御部１１０は、ステップＳ２００の初期処理が成功した場合、ブート情報ＢＩＮＦ１が正常であると判定する。すなわち、制御部１１０は、記憶媒体３００の認識に失敗した場合、ブート情報ＢＩＮＦ１が正常でないと判定する。
【００５６】
なお、ステップＳ２２０の処理は、制御部１１０内のブロックのうち、図２に示したブロック（アクセス制御部１２２、バックアップ部１４０および修復部１６０）以外のブロックで実行されてもよいし、図２に示したブロックのいずれかで実行されてもよい。例えば、ステップＳ２２０の処理は、制御部１１０のアクセス制御部１２２で実行されてもよい。あるいは、ステップＳ２２０の処理は、バックアップ部１４０および修復部１６０の一方で実行されてもよいし、バックアップ部１４０および修復部１６０の両方で実行されてもよい。
【００５７】
ステップＳ１００で取得したブート情報ＢＩＮＦ１が正常である場合、半導体装置１００の動作は、ステップＳ３００に移る。一方、ステップＳ１００で取得したブート情報ＢＩＮＦ１が正常でない場合、半導体装置１００の動作は、ステップＳ７００に移る。
【００５８】
ステップＳ３００では、バックアップ部１４０は、インタフェース部１２０Ａに接続された記憶媒体３００のＭＢＲ３２０のバックアップが記憶部２００に格納されているか否かを判定する。例えば、バックアップ部１４０は、ステップＳ１００で取得した識別情報ＩＤＩＮＦが記憶部２００に記憶されている場合、記憶媒体３００のＭＢＲ３２０のバックアップが記憶部２００に格納されていると判定する。
【００５９】
記憶媒体３００のＭＢＲ３２０のバックアップが記憶部２００に格納されている場合、半導体装置１００の動作は、ステップＳ４００に移る。一方、記憶媒体３００のＭＢＲ３２０のバックアップが記憶部２００に格納されていない場合、半導体装置１００の動作は、ステップＳ６００に移る。
【００６０】
ステップＳ４００では、バックアップ部１４０は、ステップＳ１００で取得したブート情報ＢＩＮＦ１のバックアップであるブート情報ＢＩＮＦ２を、記憶部２００から取得する。例えば、バックアップ部１４０は、ステップＳ１００で取得した識別情報ＩＤＩＮＦに対応するブート情報ＢＩＮＦ２を記憶部２００から読み出す。
【００６１】
ステップＳ５００では、バックアップ部１４０は、ステップＳ４００で取得したブート情報ＢＩＮＦ２（ブート情報ＢＩＮＦ１のバックアップ）が正常か否かを判定する。例えば、バックアップ部１４０は、ブート情報ＢＩＮＦ２の内容が記憶媒体３００の規格等で決められた内容に適合しているか否かを判定する。なお、バックアップ部１４０は、ブート情報ＢＩＮＦ２に基づく初期処理を実行した場合に、記憶媒体３００の認識が成功するか否かを判定してもよい。
【００６２】
ステップＳ４００で取得したブート情報ＢＩＮＦ２が正常である場合、半導体装置１００の動作は、ステップＳ５２０に移る。一方、ステップＳ４００で取得したブート情報ＢＩＮＦ２が正常でない場合、半導体装置１００の動作は、ステップＳ６００に移る。
【００６３】
ステップＳ５２０では、バックアップ部１４０は、ステップＳ４００で取得したブート情報ＢＩＮＦ２（ブート情報ＢＩＮＦ１のバックアップ）と、ステップＳ１００で取得したブート情報ＢＩＮＦ１とに差が有るか否かを判定する。例えば、バックアップ部１４０は、ブート情報ＢＩＮＦ２の内容とブート情報ＢＩＮＦ１の内容とを直接比較して、ブート情報ＢＩＮＦ２とブート情報ＢＩＮＦ１とに差が有るか否かを判定する。
【００６４】
なお、バックアップ部１４０は、ハッシュ値を用いて、ブート情報ＢＩＮＦ２とブート情報ＢＩＮＦ１とに差が有るか否かを判定してもよい。例えば、バックアップ部１４０は、ステップＳ１００で取得した識別情報ＩＤＩＮＦに対応するハッシュ値ＨＡＳＨ２（第２のハッシュ値ＨＡＳＨ２）を記憶部２００から読み出す。また、ステップＳ１００で取得したブート情報ＢＩＮＦ１のハッシュ値（第１のハッシュ値）を算出する。そして、バックアップ部１４０は、第１のハッシュ値と第２のハッシュ値ＨＡＳＨ２とを比較して、ブート情報ＢＩＮＦ２とブート情報ＢＩＮＦ１とに差が有るか否かを判定する。なお、ステップＳ５２０の処理にハッシュ値が用いられる場合、ステップＳ４００の処理およびステップＳ５００の処理は、省かれてもよい。
【００６５】
ブート情報ＢＩＮＦ２とブート情報ＢＩＮＦ１とに差がない場合、記憶媒体３００が半導体装置１００に接続されたときの半導体装置１００の処理は、終了する。一方、ブート情報ＢＩＮＦ２とブート情報ＢＩＮＦ１とに差が有る場合、半導体装置１００の動作は、ステップＳ６００に移る。
【００６６】
ステップＳ６００では、バックアップ部１４０は、ステップＳ１００で取得したブート情報ＢＩＮＦ１のバックアップを記憶部２００に格納するバックアップ処理を実行する。バックアップ処理の詳細は、図５で説明する。
【００６７】
ステップＳ７００では、修復部１６０は、インタフェース部１２０Ａに接続された記憶媒体３００のＭＢＲ３２０のバックアップが記憶部２００に格納されているか否かを判定する。例えば、修復部１６０は、ステップＳ１００で取得した識別情報ＩＤＩＮＦが記憶部２００に記憶されている場合、記憶媒体３００のＭＢＲ３２０のバックアップが記憶部２００に格納されていると判定する。
【００６８】
記憶媒体３００のＭＢＲ３２０のバックアップが記憶部２００に格納されている場合、半導体装置１００の動作は、ステップＳ８００に移る。一方、記憶媒体３００のＭＢＲ３２０のバックアップが記憶部２００に格納されていない場合、半導体装置１００の動作は、ステップＳ９２０に移る。
【００６９】
ステップＳ８００では、修復部１６０は、記憶媒体３００のＭＢＲ３２０に格納されたブート情報ＢＩＮＦ１を修復する修復処理を実行する。修復処理の詳細は、図６で説明する。
【００７０】
ステップＳ９００では、制御部１１０は、ステップＳ８００で修復したブート情報ＢＩＮＦ１に基づいて初期処理を実行する。例えば、ステップＳ８００でのブート情報ＢＩＮＦ１の修復が成功した場合では、半導体装置１００は、記憶媒体３００を認識して、記憶媒体３００が接続されたときの処理を終了する。一方、ステップＳ８００でのブート情報ＢＩＮＦ１の修復が失敗した場合では、半導体装置１００は、記憶媒体３００の認識に失敗した状態で、記憶媒体３００が接続されたときの処理を終了する。
【００７１】
ステップＳ９２０では、修復部１６０は、記憶媒体３００のＭＢＲ３２０のバックアップが存在しない等のエラーを半導体装置１００の外部（例えば、半導体装置１００に接続された表示装置）に通知する。なお、ステップＳ９２０の処理は、省かれてもよい。
【００７２】
このように、半導体装置１００は、記憶媒体３００が接続された場合、記憶媒体３００のＭＢＲ３２０のバックアップを記憶部２００に格納する。また、半導体装置１００は、半導体装置１００に接続された記憶媒体３００のＭＢＲ３２０が破壊されていた場合、記憶部２００に格納したバックアップを用いて、記憶媒体３００のＭＢＲ３２０を修復する。これにより、記憶媒体３００の信頼度を向上させることができる。
【００７３】
なお、半導体装置１００の動作は、図４に示す例に限定されない。例えば、半導体装置１００は、ステップＳ２２０において、ステップＳ５２０の処理と同様の判定方法により、ブート情報ＢＩＮＦ１が正常か否かを判定してもよい。この場合、ステップＳ２００の処理は、ステップＳ６００の処理の後に実行されてもよい。例えば、半導体装置１００は、ステップＳ２００の処理が省かれた場合、ステップＳ６００の処理を実行した後に、ステップＳ９００の処理を実行してもよい。
【００７４】
また、ステップＳ５００の処理は、省かれてもよい。例えば、ブート情報ＢＩＮＦ２が正常でない場合、ステップＳ５２０の処理において、ブート情報ＢＩＮＦ２と正常なブート情報ＢＩＮＦ１とで差が有ると判定されるため、ステップＳ６００のバックアップ処理は実行される。
【００７５】
図５は、図４に示したバックアップ処理（ステップＳ６００）の一例を示す。すなわち、図５は、図２に示したバックアップ部１４０の動作の一例を示す。なお、図５では、記憶媒体３００がインタフェース部１２０Ａに接続された場合を例にしてバックアップ部１４０の動作を説明する。
【００７６】
ステップＳ６１０では、バックアップ部１４０は、記憶媒体３００のブート情報ＢＩＮＦ２と識別情報ＩＤＩＮＦとを記憶部２００に格納する。例えば、バックアップ部１４０は、図４のステップＳ１００で取得したブート情報ＢＩＮＦ１を記憶媒体３００のブート情報ＢＩＮＦ２として、図４のステップＳ１００で取得した識別情報ＩＤＩＮＦに対応付けて記憶部２００に格納する。
【００７７】
ステップＳ６２０では、バックアップ部１４０は、ステップＳ６１０で記憶部２００に格納したブート情報ＢＩＮＦ２を読み出す。
【００７８】
ステップＳ６３０では、バックアップ部１４０は、記憶部２００から読み出したブート情報ＢＩＮＦ２のハッシュ値ＨＡＳＨ２を算出する。すなわち、バックアップ部１４０は、ステップＳ６２０で読み出したブート情報ＢＩＮＦ２からハッシュ値ＨＡＳＨ２を算出する。
【００７９】
ステップＳ６４０では、バックアップ部１４０は、記憶媒体３００から読み出したブート情報ＢＩＮＦ１のハッシュ値ＨＡＳＨ１（第１のハッシュ値）を算出する。すなわち、バックアップ部１４０は、図４のステップＳ１００で取得したブート情報ＢＩＮＦ１からハッシュ値ＨＡＳＨ１を算出する。
【００８０】
ステップＳ６５０では、バックアップ部１４０は、ステップＳ６３０で算出したハッシュ値ＨＡＳＨ２が、ステップＳ６４０で算出したハッシュ値ＨＡＳＨ１と等しいか否かを判定する。ハッシュ値ＨＡＳＨ２がハッシュ値ＨＡＳＨ１と等しい場合、バックアップ部１４０の動作は、ステップＳ６６０に移る。一方、ハッシュ値ＨＡＳＨ２がハッシュ値ＨＡＳＨ１と異なる場合、バックアップ部１４０の動作は、ステップＳ６７０に移る。
【００８１】
ステップＳ６６０では、バックアップ部１４０は、ステップＳ６３０で算出したハッシュ値ＨＡＳＨ２を、図４のステップＳ１００で取得した識別情報ＩＤＩＮＦに対応付けて記憶部２００に格納する。これにより、バックアップ処理は、正常に終了する。
【００８２】
ステップＳ６７０では、バックアップ部１４０は、ブート情報ＢＩＮＦ２（図４のステップＳ１００で取得したブート情報ＢＩＮＦ１）の書き込みを再実行するか否かを判定する。例えば、ハッシュ値ＨＡＳＨ２がハッシュ値ＨＡＳＨ１と異なる場合、ブート情報ＢＩＮＦ２の記憶部２００への書き込みが失敗しているおそれがある。このため、例えば、バックアップ部１４０は、書き込みを再実行するか否かを選択させるメッセージ等を半導体装置１００に接続された表示装置等に表示させ、書き込みを再実行するか否かを示す制御情報を受けるまで待機する。
【００８３】
ブート情報ＢＩＮＦ２の書き込みを再実行する場合、バックアップ部１４０の動作は、ステップＳ６８０に移る。一方、ブート情報ＢＩＮＦ２の書き込みを再実行しない場合、バックアップ部１４０の動作は、ステップＳ６９０に移る。
【００８４】
ステップＳ６８０では、バックアップ部１４０は、アクセス制御部１２２およびインタフェース部１２０Ａを介して、記憶媒体３００のＭＢＲ３２０からブート情報ＢＩＮＦ１を読み出す。ステップＳ６８０の処理が実行された後、バックアップ部１４０の動作は、ステップＳ６１０に戻る。これにより、ステップＳ６８０で記憶媒体３００から読み出されたブート情報ＢＩＮＦ１は、ブート情報ＢＩＮＦ２として記憶部２００に記憶される。
【００８５】
ステップＳ６９０では、バックアップ部１４０は、図４のステップＳ１００で取得した識別情報ＩＤＩＮＦに対応するバックアップ（ステップＳ６１０で記憶部２００に格納したブート情報ＢＩＮＦ２、識別情報ＩＤＩＮＦ等）を、記憶部２００から削除する。この場合、バックアップ処理は、ブート情報ＢＩＮＦ１をバックアップせずに、終了する。
【００８６】
このように、バックアップ部１４０は、ブート情報ＢＩＮＦ１のバックアップであるブート情報ＢＩＮＦ２が記憶部２００に正常に書き込めたか否かを、ブート情報ＢＩＮＦ１のハッシュ値ＨＳＡＨ１およびブート情報ＢＩＮＦ２のＨＡＳＨ２を用いて判定する。これにより、正常でないブート情報ＢＩＮＦ２が記憶部２００に格納されることを抑制することができる。
【００８７】
なお、バックアップ部１４０の動作は、図５に示す例に限定されない。例えば、バックアップ部１４０は、ブート情報ＢＩＮＦ２の書き込みの再実行を予め決められたリトライ回数に到達するまで試みてもよい。この場合、バックアップ部１４０は、ステップＳ６７０において、ブート情報ＢＩＮＦ２の書き込みの再実行の回数がリトライ回数未満か否かを判定する。そして、ブート情報ＢＩＮＦ２の書き込みの再実行の回数がリトライ回数未満の場合、バックアップ部１４０の動作は、ステップＳ６８０に移る。一方、ブート情報ＢＩＮＦ２の書き込みの再実行の回数がリトライ回数以上の場合、バックアップ部１４０の動作は、ステップＳ６９０に移る。
【００８８】
また、ステップＳ６８０の処理は、省かれてもよい。この場合、バックアップ部１４０は、図４のステップＳ１００で取得したブート情報ＢＩＮＦ１を再利用して、ブート情報ＢＩＮＦ２の書き込みを再実行する。
【００８９】
図６は、図４に示した修復処理（ステップＳ８００）の一例を示す。すなわち、図６は、図２に示した修復部１６０の動作の一例を示す。なお、図６では、記憶媒体３００がインタフェース部１２０Ａに接続された場合を例にして修復部１６０の動作を説明する。
【００９０】
ステップＳ８１０では、修復部１６０は、図４のステップＳ１００で取得した識別情報ＩＤＩＮＦに対応するブート情報ＢＩＮＦ２およびハッシュ値ＨＡＳＨ２を、記憶部２００から読み出す。
【００９１】
ステップＳ８２０では、修復部１６０は、記憶部２００から読み出したブート情報ＢＩＮＦ２のハッシュ値ＨＡＳＨ３（第３のハッシュ値）を算出する。すなわち、修復部１６０は、ステップＳ８１０で読み出したブート情報ＢＩＮＦ２からハッシュ値ＨＡＳＨ３を算出する。
【００９２】
ステップＳ８３０では、修復部１６０は、ステップＳ８１０で読み出したハッシュ値ＨＡＳＨ２が、ステップＳ８２０で算出したハッシュ値ＨＡＳＨ３と等しいか否かを判定する。ハッシュ値ＨＡＳＨ２がハッシュ値ＨＡＳＨ３と等しい場合、修復部１６０の動作は、ステップＳ８５０に移る。一方、ハッシュ値ＨＡＳＨ２がハッシュ値ＨＡＳＨ３と異なる場合、修復部１６０の動作は、ステップＳ８４０に移る。
【００９３】
ステップＳ８４０では、修復部１６０は、ＭＢＲ３２０の修復を中止するか否かを判定する。例えば、ハッシュ値ＨＡＳＨ２がハッシュ値ＨＡＳＨ３と異なる場合、記憶部２００に記憶されているブート情報ＢＩＮＦ２が破壊されているおそれがある。このため、例えば、修復部１６０は、ＭＢＲ３２０の修復を中止するか否かを選択させるメッセージ等を半導体装置１００に接続された表示装置等に表示させ、ＭＢＲ３２０の修復を中止するか否かを示す制御情報を受けるまで待機する。
【００９４】
ＭＢＲ３２０の修復を中止する場合、修復部１６０は、ＭＢＲ３２０に格納されたブート情報ＢＩＮＦ１を修復せずに、修復処理を終了する。この場合、正常でないブート情報ＢＩＮＦ２でＭＢＲ３２０が修復されることを防止することができる。一方、ＭＢＲ３２０の修復を中止しない場合、修復部１６０の動作は、ステップＳ８５０に移る。
【００９５】
ステップＳ８５０では、修復部１６０は、記憶部２００から読み出したブート情報ＢＩＮＦ２をブート情報ＢＩＮＦ１として、アクセス制御部１２２およびインタフェース部１２０Ａを介して記憶媒体３００のＭＢＲ３２０に格納する。これにより、修復処理は終了する。例えば、ハッシュ値ＨＡＳＨ２がハッシュ値ＨＡＳＨ３と等しい場合、ステップＳ８５０の処理により、記憶媒体３００のＭＢＲ３２０に格納されるブート情報ＢＩＮＦ１は正常に修復され、修復処理は正常に終了する。
【００９６】
なお、修復部１６０の動作は、図６に示す例に限定されない。例えば、修復部１６０は、ハッシュ値ＨＡＳＨ２がハッシュ値ＨＡＳＨ３と異なる場合、ステップＳ８４０の処理を実行せずに、修復処理を終了してもよい。すなわち、ステップＳ８４０の処理は、省かれてもよい。
【００９７】
あるいは、修復部１６０は、ブート情報ＢＩＮＦ２の読み出しを予め決められた所定回数に到達するまで繰り返し実行してもよい。この場合、修復部１６０は、ステップＳ８４０において、ブート情報ＢＩＮＦ２の読み出しの再実行の回数が所定回数未満か否かを判定する。そして、ブート情報ＢＩＮＦ２の読み出しの再実行の回数が所定回数未満の場合、修復部１６０の動作は、ステップＳ８１０に戻る。これにより、ブート情報ＢＩＮＦ２の読み出しの失敗に起因する修復処理の失敗を抑制することができる。一方、ブート情報ＢＩＮＦ２の読み出しの再実行の回数が所定回数以上の場合、修復部１６０は、ＭＢＲ３２０に格納されたブート情報ＢＩＮＦ１を修復せずに、修復処理を終了する。
【００９８】
図７は、図２に示した半導体装置１００の動作の別の例を示す。図７に示す動作は、ハードウェアのみで実現されてもよく、記憶媒体の制御プログラム等のソフトウェアによりハードウェアを制御することにより実現されてもよい。図７に示す動作は、例えば、記憶媒体３００と半導体装置１００とを非接続にする処理（記憶媒体の取り出し処理）が実行される度に実行される。なお、図７に示す動作は、記憶媒体３００のＭＢＲ３２０に格納されたブート情報ＢＩＮＦ１が更新された場合に実行されてもよい。
【００９９】
図７に示す動作では、図４に示した動作からステップＳ２００の処理およびステップＳ９００の処理が省かれ、ステップＳ９１０の処理が図４に示した動作に追加される。図４で説明したステップと同一または同様のステップについては、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図７では、記憶媒体３００とインタフェース部１２０Ａとを非接続にする場合を例にして半導体装置１００の動作を説明する。
【０１００】
ステップＳ１００では、制御部１１０は、インタフェース部１２０Ａに接続された記憶媒体３００のＭＢＲ３２０に格納されたブート情報ＢＩＮＦ１と、記憶媒体３００を識別する識別情報ＩＤＩＮＦとを、記憶媒体３００から取得する。制御部１１０がステップＳ１００の処理を実行した後、半導体装置１００の動作は、ステップＳ２２０に移る。
【０１０１】
ステップＳ２２０では、制御部１１０は、ステップＳ１００で取得したブート情報ＢＩＮＦ１が正常か否かを、図４で説明したステップＳ５２０の処理と同様の判定方法により判定する。
【０１０２】
ステップＳ３００では、バックアップ部１４０は、インタフェース部１２０Ａに接続された記憶媒体３００のＭＢＲ３２０のバックアップが記憶部２００に格納されているか否かを判定する。
【０１０３】
ステップＳ４００では、バックアップ部１４０は、ステップＳ１００で取得したブート情報ＢＩＮＦ１のバックアップであるブート情報ＢＩＮＦ２を、記憶部２００から取得する。
【０１０４】
ステップＳ５００では、バックアップ部１４０は、ステップＳ４００で取得したブート情報ＢＩＮＦ２（ブート情報ＢＩＮＦ１のバックアップ）が正常か否かを判定する。
【０１０５】
ステップＳ５２０では、バックアップ部１４０は、ステップＳ４００で取得したブート情報ＢＩＮＦ２（ブート情報ＢＩＮＦ１のバックアップ）と、ステップＳ１００で取得したブート情報ＢＩＮＦ１とに差が有るか否かを判定する。
【０１０６】
ブート情報ＢＩＮＦ２とブート情報ＢＩＮＦ１とに差がない場合、半導体装置１００の動作は、ステップＳ９１０に移る。一方、ブート情報ＢＩＮＦ２とブート情報ＢＩＮＦ１とに差が有る場合、半導体装置１００の動作は、ステップＳ６００に移る。
【０１０７】
ステップＳ６００では、バックアップ部１４０は、図５で説明したバックアップ処理を実行する。
【０１０８】
ステップＳ７００では、修復部１６０は、インタフェース部１２０Ａに接続された記憶媒体３００のＭＢＲ３２０のバックアップが記憶部２００に格納されているか否かを判定する。
【０１０９】
ステップＳ８００では、修復部１６０は、図６で説明した修復処理を実行する。修復部１６０がステップＳ８００の処理を実行した後、半導体装置１００の動作は、ステップＳ９１０に移る。
【０１１０】
ステップＳ９１０では、制御部１１０は、記憶媒体３００の取り出し許可を半導体装置１００の外部に通知する。例えば、制御部１１０は、半導体装置１００から記憶媒体３００を取り出してよいことを示すメッセージ等を半導体装置１００に接続された表示装置に表示させる。
【０１１１】
ステップＳ９２０では、修復部１６０は、記憶媒体３００のＭＢＲ３２０のバックアップが存在しない等のエラーを半導体装置１００の外部（例えば、半導体装置１００に接続された表示装置）に通知する。なお、ステップＳ９２０の処理は、省かれてもよい。
【０１１２】
このように、半導体装置１００は、記憶媒体３００が半導体装置１００から取り出される際に、記憶媒体３００のＭＢＲ３２０のバックアップを記憶部２００に格納する。これにより、記憶媒体３００が半導体装置１００に接続された後に、記憶媒体３００のＭＢＲ３２０に格納されたブート情報ＢＩＮＦ１が更新された場合でも、記憶媒体３００のＭＢＲ３２０のバックアップを記憶部２００に格納することができる。また、半導体装置１００は、半導体装置１００に接続された記憶媒体３００のＭＢＲ３２０が破壊されていた場合、記憶部２００に格納したバックアップを用いて、記憶媒体３００のＭＢＲ３２０を修復する。これにより、記憶媒体３００の信頼度を向上させることができる。
【０１１３】
なお、半導体装置１００の動作は、図７に示す例に限定されない。例えば、ステップＳ５００の処理は、省かれてもよい。また、ステップＳ２２０の処理、ステップＳ７００の処理、ステップＳ８００の処理およびステップＳ９２０の処理は、省かれてもよい。
【０１１４】
以上、図２から図７に示す実施形態においても、図１に示した実施形態と同様の効果を得ることができる。例えば、半導体装置１００は、記憶媒体３００のＭＢＲ３２０に格納されたブート情報ＢＩＮＦ１のバックアップであるブート情報ＢＩＮＦ２を、記憶媒体３００の識別情報ＩＤＩＮＦに対応付けて、記憶媒体３００とは別の記憶部２００に格納する。これにより、記憶媒体３００の信頼度を向上させることができる。
【０１１５】
さらに、半導体装置１００は、記憶部２００に書き込む前のブート情報ＢＩＮＦ１から算出したハッシュ値ＨＡＳＨ１と、記憶部２００に書き込んだ後のブート情報ＢＩＮＦ２から算出したハッシュ値ＨＡＳＨ２とを比較する。そして、半導体装置１００は、ハッシュ値ＨＡＳＨ１とハッシュ値ＨＡＳＨ２との比較結果に基づいて、ブート情報ＢＩＮＦ２が記憶部２００に正常に書き込めたか否かを判定する。これにより、正常でないブート情報ＢＩＮＦ２が記憶部２００に格納されることを抑制することができる。
【０１１６】
また、半導体装置１００は、記憶媒体３００のＭＢＲ３２０を修復する際に、記憶部２００から読み出したブート情報ＢＩＮＦ２から算出したハッシュ値ＨＡＳＨ３と、記憶部２００から読み出したハッシュ値ＨＡＳＨ２とを比較する。そして、半導体装置１００は、ハッシュ値ＨＡＳＨ２とハッシュ値ＨＡＳＨ３との比較結果に基づいて、記憶部２００から読み出したブート情報ＢＩＮＦ２が破壊されているか否かを判定する。これにより、正常でないブート情報ＢＩＮＦ２でＭＢＲ３２０を修復することを防止できる。
【０１１７】
図８は、半導体装置および記憶媒体の制御方法の別の実施形態を示す。図１から図７で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図８の破線の矢印は、信号等の情報の流れを示す。図８に示す半導体装置１０２は、ハードウェアのみで実現されてもよく、記憶媒体の制御プログラム等のソフトウェアによりハードウェアを制御することにより実現されてもよい。
【０１１８】
半導体装置１０２では、図２に示した記憶部２００が半導体装置１００から省かれ、記憶部２０２がインターフェース部１２０に接続される。また、半導体装置１０２は、図２に示した制御部１１０の代わりに制御部１１２を有する。半導体装置１０２のその他の構成は、図２に示した半導体装置１００と同一または同様である。
【０１１９】
また、半導体装置１０２の動作は、図２に示した半導体装置１００と同様である。例えば、半導体装置１０２は、記憶媒体３００が着脱可能に接続されるコンピュータおよび携帯機器等の情報処理装置に搭載され、図２から図７で説明した実施形態と同様の記憶媒体の制御方法に基づいて、記憶媒体３００のＭＢＲ３２０を修復する。
【０１２０】
半導体装置１０２は、複数のインターフェース部１２０（１２０Ａ、１２０Ｂ、１２０Ｃ）と、半導体装置１０２の動作を制御する制御部１１２とを有する。また、半導体装置１０２には、不揮発性メモリ等の記憶部２０２と記憶媒体３００とが接続される。図８に示す例では、インターフェース部１２０Ａに記憶媒体３００が接続され、インターフェース部１２０Ｂに記憶部２０２が接続される。なお、半導体装置１０２は、記憶部２０２を含めて定義されてもよい。
【０１２１】
記憶部２０２は、ＵＳＢメモリ等のリムーバルディスクであり、ＭＢＲ２２０およびデータ領域２４０を有する。なお、記憶部２０２のＭＢＲ２２０およびデータ領域２４０は、図１に示したＭＢＲ３２およびデータ領域３４と同一または同様である。また、記憶部２０２は、インターフェース部１２０（図８に示した例では、インターフェース部１２０Ｂ）を介して制御部１１２に接続されることを除いて、図２に示した記憶部２００と同様である。例えば、記憶部２０２は、複数の記憶媒体３００のブート情報ＢＩＮＦ２と、ブート情報ＢＩＮＦ２のハッシュ値ＨＡＳＨ２と、識別情報ＩＤＩＮＦとを、データ領域２４０に記憶する。
【０１２２】
例えば、記憶部２０２が接続されたインターフェース部１２０Ｂは、制御部１１２から供給されるブート情報ＢＩＮＦ２、ハッシュ値ＨＡＳＨ２および識別情報ＩＤＩＮＦ等の情報を記憶部２０２に出力する。また、インターフェース部１２０Ｂは、記憶部２０２から供給されるブート情報ＢＩＮＦ２、ハッシュ値ＨＡＳＨ２および識別情報ＩＤＩＮＦ等の情報を制御部１１２に出力する。
【０１２３】
制御部１１２は、アクセス制御部１２２と、バックアップ部１４２と、修復部１６２とを有する。図８では、インタフェース部１２０Ａに記憶媒体３００が接続され、インターフェース部１２０Ｂに記憶部２０２が接続された場合を例にしてアクセス制御部１２２等の動作の動作を説明する。
【０１２４】
アクセス制御部１２２は、アクセス対象の記憶媒体３００がインターフェース部１２０Ａに接続された場合、ＭＢＲ３２０に格納されたブート情報ＢＩＮＦ１と、識別情報ＩＤＩＮＦとを、記憶媒体３００からインターフェース部１２０Ａを介して読み出す。そして、アクセス制御部１２２は、記憶媒体３００から読み出したブート情報ＢＩＮＦ１および識別情報ＩＤＩＮＦを、バックアップ部１４２および修復部１６２に転送する。また、アクセス制御部１２２は、記憶部２０２がインターフェース部１２０Ｂに接続された状態で、記憶媒体３００がインターフェース部１２０Ａに接続された場合、インターフェース部１２０Ｂを介して記憶部２０２にアクセスする。
【０１２５】
バックアップ部１４２は、図２に示したバックアップ部１４０と同様である。なお、バックアップ部１４２と記憶部２０２との間のデータ転送は、アクセス制御部１２２およびインターフェース部１２０Ｂを介して実行される。
【０１２６】
例えば、バックアップ部１４２は、記憶媒体３００から読み出されたブート情報ＢＩＮＦ１をブート情報ＢＩＮＦ２として、アクセス制御部１２２およびインタフェース部１２０Ｂを介して記憶部２０２のデータ領域２４０に格納する。また、バックアップ部１４２は、ブート情報ＢＩＮＦ２を、アクセス制御部１２２およびインタフェース部１２０Ｂを介して記憶部２０２のデータ領域２４０から読み出す。
【０１２７】
修復部１６２は、図２に示した修復部１６０と同様である。なお、修復部１６２と記憶部２０２との間のデータ転送は、アクセス制御部１２２およびインターフェース部１２０Ｂを介して実行される。例えば、修復部１６２は、ブート情報ＢＩＮＦ２およびハッシュ値ＨＡＳＨ２を、アクセス制御部１２２およびインタフェース部１２０Ｂを介して記憶部２０２のデータ領域２４０から読み出す。
【０１２８】
なお、半導体装置１０２の構成は、図８に示す例に限定されない。例えば、記憶部２０２は、複数設けられてもよい。この場合、複数の記憶部２０２の１つは、他の記憶部２０２のＭＢＲ２２０に格納されたブート情報ＢＩＮＦ１を記憶してもよい。
【０１２９】
以上、図８に示す実施形態においても、図１から図７に示した実施形態と同様の効果を得ることができる。例えば、半導体装置１０２は、記憶媒体３００のＭＢＲ３２０に格納されたブート情報ＢＩＮＦ１のバックアップであるブート情報ＢＩＮＦ２を、記憶媒体３００の識別情報ＩＤＩＮＦに対応付けて、記憶媒体３００とは別の記憶部２０２に格納する。これにより、記憶媒体３００の信頼度を向上させることができる。
【０１３０】
また、半導体装置１０２は、記憶部２０２に書き込む前のブート情報ＢＩＮＦ１から算出したハッシュ値ＨＡＳＨ１と、記憶部２０２に書き込んだ後のブート情報ＢＩＮＦ２から算出したハッシュ値ＨＡＳＨ２とを比較する。そして、半導体装置１０２は、ハッシュ値ＨＡＳＨ１とハッシュ値ＨＡＳＨ２との比較結果に基づいて、ブート情報ＢＩＮＦ２が記憶部２０２に正常に書き込めたか否かを判定する。これにより、正常でないブート情報ＢＩＮＦ２が記憶部２０２に格納されることを抑制することができる。
【０１３１】
また、半導体装置１０２は、記憶媒体３００のＭＢＲ３２０を修復する際に、記憶部２０２から読み出したブート情報ＢＩＮＦ２から算出したハッシュ値ＨＡＳＨ３と、記憶部２０２から読み出したハッシュ値ＨＡＳＨ２とを比較する。そして、半導体装置１０２は、ハッシュ値ＨＡＳＨ２とハッシュ値ＨＡＳＨ３との比較結果に基づいて、記憶部２０２から読み出したブート情報ＢＩＮＦ２が破壊されているか否かを判定する。これにより、正常でないブート情報ＢＩＮＦ２でＭＢＲ３２０を修復することを防止できる。
【０１３２】
図９は、図２に示した半導体装置１００のハードウェア構成の一例を示している。なお、図２から図７で説明した要素と同様の要素については、同様の符号を付し、これ等については、詳細な説明を省略する。
【０１３３】
コンピュータ５００は、例えば、ＬＳＩ（Large Scale Integration）５１０、不揮発性メモリ５６０および光学ドライブ５７０を有する。ＬＳＩ５１０および不揮発性メモリ５６０は、例えば、ＬＳＩボードに搭載される。
【０１３４】
ＬＳＩ５１０は、ＣＰＵ（Central Processing Unit）５２０、ＵＳＢインターフェース回路５３０、５３２、ＳＤインターフェース回路５３４、メモリ５４０およびハードディスク５５０を有する。ＣＰＵ５２０、メモリ５４０、ハードディスク５５０、ＵＳＢインターフェース回路５３０、５３２、ＳＤインターフェース回路５３４、不揮発性メモリ５６０および光学ドライブ５７０は、バスＢＵＳに接続される。
【０１３５】
ＣＰＵ５２０は、例えば、メモリ５４０に格納された記憶媒体の制御プログラム等のアプリケーションプログラムを実行することで、図２に示した制御部１１０として機能する。したがって、図２に示した制御部１１０の機能は、ＣＰＵ５２０により実現される。
【０１３６】
ＵＳＢインターフェース回路５３０、５３２は、ＵＳＢメモリ６００（６００Ａ、６００Ｂ）のインタフェースであり、ＳＤインターフェース回路５３４は、ＳＤメモリカード６０２のインタフェースである。また、ＵＳＢメモリ６００およびＳＤメモリカード６０２は、図２に示した記憶媒体３００に対応する。すなわち、ＵＳＢインターフェース回路５３０、５３２、ＳＤインターフェース回路５３４は、図２に示したインターフェース部１２０に対応する。
【０１３７】
メモリ５４０は、例えば、コンピュータ５００のオペレーティングシステムを格納する。また、メモリ５４０は、例えば、半導体装置１００の動作をＣＰＵ５２０が実行するための記憶媒体の制御プログラム等のアプリケーションプログラムを格納する。なお、記憶媒体の制御プログラム等のアプリケーションプログラムは、ハードディスク５５０に格納されてもよい。
【０１３８】
不揮発性メモリ５６０は、ＵＳＢメモリ６００、ＳＤメモリカード６０２等の記憶媒体のブート情報ＢＩＮＦ２と、ブート情報ＢＩＮＦ２のハッシュ値ＨＡＳＨ２と、識別情報ＩＤＩＮＦとを記憶する。すなわち、不揮発性メモリ５６０は、図２に示した記憶部２００に対応する。
【０１３９】
したがって、図２に示した半導体装置１００の機能は、例えば、ＬＳＩ５１０と不揮発性メモリ５６０とにより実現される。なお、図１に示した半導体装置１０の機能および図８に示した半導体装置１０２の機能は、ＬＳＩ５１０により実現される。例えば、図８に示した制御部１１２の機能は、ＣＰＵ５２０により実現される。
【０１４０】
光学ドライブ５７０は、光ディスク等のリムーバブルディスク５８０を装着可能であり、装着したリムーバブルディスク５８０に記録された情報の読み出しおよび記録を行う。
【０１４１】
記憶媒体の制御プログラム等のアプリケーションプログラムは、例えば、光ディスク等のリムーバブルディスク５８０に記録して頒布することができる。例えば、コンピュータ５００は、記憶媒体の制御プログラム等のアプリケーションプログラムを、リムーバブルディスク５８０から光学ドライブ５７０を介して読み出し、メモリ５４０やハードディスク５５０に格納してもよい。また、コンピュータ５００は、記憶媒体の制御プログラム等のアプリケーションプログラムを、インターネット等のネットワークに接続する通信装置を介してダウンロードし、メモリ５４０やハードディスク５５０に格納してもよい。
【０１４２】
半導体装置１００のハードウェア構成は、図９に示す例に限定されない。例えば、コンピュータ５００は、光学ドライブ５７０が省かれてもよい。
【０１４３】
以上の実施形態において説明した発明を整理して、付記として開示する。
（付記１）
記憶媒体の起動時に参照されるブート領域に格納されたブート情報と、前記記憶媒体を識別する識別情報とを、アクセス対象の前記記憶媒体である第１記憶媒体から読み出すアクセス部と、
前記第１記憶媒体から読み出された第１ブート情報が正常である場合、複数の記憶媒体のそれぞれのブート情報および識別情報を記憶する記憶部に、前記第１記憶媒体から読み出された前記第１ブート情報を前記第１記憶媒体の第１識別情報に対応付けて格納するバックアップ部と、
前記第１記憶媒体から読み出された前記第１ブート情報が正常でなく、かつ、前記第１記憶媒体の前記第１識別情報が前記記憶部に記憶されている場合、前記第１記憶媒体の前記第１識別情報に対応する第２ブート情報を前記記憶部から読み出し、前記第１記憶媒体の前記ブート領域に格納された前記第１ブート情報を前記記憶部から読み出した前記第２ブート情報を用いて修復する修復部と
を有することを特徴とする半導体装置。
（付記２）
付記１に記載の半導体装置において、
前記第１記憶媒体から読み出された前記第１ブート情報が正常である場合、前記バックアップ部は、
前記第１記憶媒体から読み出された前記第１ブート情報を用いて第１のハッシュ値を算出し、
前記第１記憶媒体から読み出された前記第１ブート情報を前記第１記憶媒体の前記第１識別情報に対応付けて前記記憶部に格納した後に、前記第１記憶媒体の前記第１識別情報に対応する前記第２ブート情報を前記記憶部から読み出し、前記記憶部から読み出した前記第２ブート情報を用いて第２のハッシュ値を算出し、
前記第１のハッシュ値が前記第２のハッシュ値と等しい場合、前記第２のハッシュ値を前記第１記憶媒体の前記第１識別情報に対応付けて前記記憶部に格納する
ことを特徴とする半導体装置。
（付記３）
付記２に記載の半導体装置において、
前記第１記憶媒体から読み出された前記第１ブート情報が正常でなく、かつ、前記第１記憶媒体の前記第１識別情報が前記記憶部に記憶されている場合、前記修復部は、
前記記憶部から読み出した前記第２ブート情報を用いて第３のハッシュ値を算出し、
前記第１記憶媒体の前記第１識別情報に対応する前記第２のハッシュ値を前記記憶部から読み出し、
前記記憶部から読み出した前記第２のハッシュ値が前記第３のハッシュ値と等しい場合、前記記憶部から読み出した前記第２ブート情報を前記第１記憶媒体の前記ブート領域に格納し、前記第２のハッシュ値が前記第３のハッシュ値と異なる場合、前記第１記憶媒体の前記ブート領域に格納された前記第１ブート情報の修復を中止する
ことを特徴とする半導体装置。
（付記４）
付記２または付記３に記載の半導体装置において、
前記バックアップ部は、前記第１のハッシュ値が前記第２のハッシュ値と異なる場合、前記第１記憶媒体の前記第１識別情報および前記第１記憶媒体の前記第１識別情報に対応する前記第２ブート情報を、前記記憶部から削除する
ことを特徴とする半導体装置。
（付記５）
付記１ないし付記４のいずれか１項に記載の半導体装置において、
前記ブート領域は、記憶媒体の先頭セクタである
ことを特徴とする半導体装置。
（付記６）
記憶媒体の制御方法において、
記憶媒体の起動時に参照されるブート領域に格納されたブート情報と、前記記憶媒体を識別する識別情報とを、アクセス対象の前記記憶媒体である第１記憶媒体から読み出し、
前記第１記憶媒体から読み出された第１ブート情報が正常である場合、複数の記憶媒体のそれぞれのブート情報および識別情報を記憶する記憶部に、前記第１記憶媒体から読み出された前記第１ブート情報を前記第１記憶媒体の第１識別情報に対応付けて格納し、
前記第１記憶媒体から読み出された前記第１ブート情報が正常でなく、かつ、前記第１記憶媒体の前記第１識別情報が前記記憶部に記憶されている場合、前記第１記憶媒体の前記第１識別情報に対応する第２ブート情報を前記記憶部から読み出し、前記第１記憶媒体の前記ブート領域に格納された前記第１ブート情報を前記記憶部から読み出した前記第２ブート情報を用いて修復する
ことを特徴とする記憶媒体の制御方法。
【０１４４】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１４５】
１０、１００、１０２‥半導体装置；１２‥アクセス部；１６、１６０、１６２‥修復部；１４、１４０、１４２‥バックアップ部；２０、２００、２０２‥記憶部；３０、３００‥記憶媒体；３２、２２０、３２０‥ＭＢＲ；３４、２４０、３４０‥データ領域；１２０‥インタフェース部；１２２‥アクセス制御部；５００‥コンピュータ；５１０‥ＬＳＩ；５２０‥ＣＰＵ；５３０、５３２‥ＵＳＢインタフェース回路；５３４‥ＳＤインタフェース回路；５４０‥メモリ；５５０‥ハードディスク；５６０‥不揮発性メモリ；５７０‥光学ドライブ；５８０‥リムーバブルディスク
【図１】
0006554881.tif 000002
【図２】
0006554881.tif 000003
【図３】
0006554881.tif 000004
【図４】
0006554881.tif 000005
【図５】
0006554881.tif 000006
【図６】
0006554881.tif 000007
【図７】
0006554881.tif 000008
【図８】
0006554881.tif 000009
【図９】
0006554881.tif 000010