(57)【特許請求の範囲】
【請求項１】
第１領域および第２領域にそれぞれブートコードを格納したＮＡＮＤフラッシュメモリーと、
ランダムアクセスメモリーと、
前記ＮＡＮＤフラッシュメモリー内の前記ブートコードを前記ランダムアクセスメモリーに展開して実行し、ブート回数に応じて、異なるタイミングで前記第１領域のブートコードの書き換えおよび前記第２領域のブートコードの書き換えを実行するプロセッサーと、
ブート時の前記プロセッサーのアクセス先を前記第１領域および前記第２領域のいずれかに設定するブート領域設定部と、
前記ブート領域設定部を制御して、所定の回数ごとに、ブート時の前記プロセッサーのアクセス先を、前記第１領域および前記第２領域の一方から他方へ交互に切り替えるコントローラーと、
を備えることを特徴とする情報処理装置。
【請求項２】
前記プロセッサーは、前記第２領域のブートコードを使用して前記第１領域のブートコードを書き換え、前記第１領域のブートコードを使用して前記第２領域のブートコードを書き換えることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記コントローラーは、前記第１領域のブートコードでブートするたびに、第１ブート回数カウンターをインクリメントし、前記第２領域のブートコードでブートするたびに、第２ブート回数カウンターをインクリメントし、
前記プロセッサーは、前記第１ブート回数カウンターの値が所定値に達すると、前記第１領域のブートコードの書き換えを実行し、前記第２ブート回数カウンターの値が所定値に達すると、前記第２領域のブートコードの書き換えを実行すること、
を特徴とする請求項１または請求項２記載の情報処理装置。
【請求項４】
前記コントローラーは、ディープスリープの開始時に、前記プロセッサーおよび前記ランダムアクセスメモリーの電源をオフにし、前記ディープスリープにおいて、定期的に、所定の処理のために、前記プロセッサーおよび前記ランダムアクセスメモリーの電源をオンにして前記プロセッサーに前記ブートコードを実行させ、前記ブートコードを実行させた後の前記所定の処理の完了後に前記プロセッサーおよび前記ランダムアクセスメモリーの電源をオフにすることを特徴とする請求項１から請求項３のいずれか１項記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関するものである。
【背景技術】
【０００２】
ある情報処理装置では、ＮＡＮＤフラッシュメモリーにブートコードを格納しておき、ブート時に、ＮＡＮＤフラッシュメモリーからＲＡＭ（Random Access Memory）へブートコードを展開し、ＲＡＭ上のブートコードを実行してブート処理を行っている(たとえば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−２７１３９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＮＡＮＤフラッシュメモリーにブートコードを格納しておき、ブート時に、ＮＡＮＤフラッシュメモリーからＲＡＭへブートコードを展開し、ＲＡＭ上のブートコードを実行するブート処理（以下、ＮＡＮＤブートという）を採用しているシステムにおいて、ディープスリープ期間中に、定期的にシステムを起動させる必要がある場合、ＮＡＮＤフラッシュメモリーのブートセクターに対するリードアクセスが頻繁に発生し、ＮＡＮＤフラッシュメモリー固有のリードディスターブによってブートセクター内のブートコードが破損してしまうことがある。
【０００５】
そのようなリードディスターブによるブートコードの破損を防ぐために、ブートコードの書き換えを行うことが考えられるが、ブートコードの書き換えに失敗した場合、システムの起動が行えなくなってしまう。
【０００６】
本発明は、上記の問題に鑑みてなされたものであり、ＮＡＮＤブートシステムのブートコードの書き換えを安全に行うことができる情報処理装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る情報処理装置は、第１領域および第２領域にそれぞれブートコードを格納したＮＡＮＤフラッシュメモリーと、ランダムアクセスメモリーと、前記ＮＡＮＤフラッシュメモリー内の前記ブートコードを前記ランダムアクセスメモリーに展開して実行し、ブート回数に応じて、異なるタイミングで前記第１領域のブートコードの書き換えおよび前記第２領域のブートコードの書き換えを実行するプロセッサーと、ブート時の前記プロセッサーのアクセス先を前記第１領域および前記第２領域のいずれかに設定するブート領域設定部と、前記ブート領域設定部を制御して、所定の回数ごとに、ブート時の前記プロセッサーのアクセス先を、前記第１領域および前記第２領域の一方から他方へ交互に切り替えるコントローラーとを備える。
【発明の効果】
【０００８】
本発明によれば、ブートコードの書き換えを安全に行うことができる情報処理装置を得ることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本発明の実施の形態に係る情報処理装置の構成を示すブロック図である。
【図２】図２は、図１に示す情報処理装置の動作について説明するフローチャートである。
【発明を実施するための形態】
【００１０】
以下、図に基づいて本発明の実施の形態を説明する。
【００１１】
図１は、本発明の実施の形態に係る情報処理装置の構成を示すブロック図である。
【００１２】
図１に示す情報処理装置は、ＣＰＵ（Central Processing Unit）１、ＮＡＮＤフラッシュメモリー２、ブート領域設定部３、コントローラー４、およびＲＡＭ５を有する。
【００１３】
ＣＰＵ１は、ブート時に、ＮＡＮＤフラッシュメモリー２内のブートコードをＲＡＭ５に展開して実行するプロセッサーである。
【００１４】
ＮＡＮＤフラッシュメモリー２は、第１領域１１および第２領域１２にそれぞれ互いに同一のブートコードを格納している。例えば、第１領域１１および第２領域１２は、互いに異なる２つのバンクで構成されるブート領域である。
【００１５】
ＣＰＵ１は、ブート回数に応じて、異なるタイミングで第１領域１１のブートコードの書き換えおよび第２領域１２のブートコードの書き換えを実行する。
【００１６】
ブート領域設定部３は、コントローラー４からの切換信号に従って、ブート時のＣＰＵ１のアクセス先を第１領域１１および第２領域１２のいずれかに設定する。
【００１７】
コントローラー４は、通常動作とディープスリープとの間の状態遷移を管理し、ディープスリープの開始時に、ＣＰＵ１、ＲＡＭ５などの電源をオフにし、ディープスリープの期間中、定期的に（例えば３秒ごとに）、所定の処理のために、ＣＰＵ１、ＲＡＭ５などの電源をオンにしてＣＰＵ１にブートコードを実行させ、ブートコード後の所定の処理の完了後にＣＰＵ１、ＲＡＭ５などの電源をオフにする。
【００１８】
例えば、上述の所定の処理としては、所定のタイミングからの経過時間が所定時間に達したか否かを確認する処理が実行される。そのような処理は、例えば、ネットワークプロトコル上、所定時間ごとに定期的にデータ送信を行う必要がある場合に実行される。
【００１９】
また、コントローラー４は、ブート領域設定部３を制御して、所定の回数ごとに、ブート時のプロセッサーのアクセス先を、第１領域１１および第２領域１２の一方から他方へ交互に切り替える。
【００２０】
さらに、この実施の形態では、コントローラー４は、第２領域１２のブートコードを使用して第１領域１１のブートコードを書き換え、第１領域１１のブートコードを使用して記第２領域１２のブートコードを書き換える。
【００２１】
さらに、この実施の形態では、コントローラー４は、第１領域１１および第２領域１２のブートコードのそれぞれについての第１および第２ブート回数カウンターを有し、第１領域１１のブートコードでブートするたびに、第１ブート回数カウンターをインクリメントし、第２領域１２のブートコードでブートするたびに、第２ブート回数カウンターをインクリメントする。そして、ＣＰＵ１は、第１ブート回数カウンターの値が所定値に達すると、第１領域１１のブートコードの書き換えを実行し、第２ブート回数カウンターの値が所定値に達すると、第２領域１２のブートコードの書き換えを実行する。
【００２２】
次に、上記情報処理装置の動作について説明する。図２は、図１に示す情報処理装置の動作について説明するフローチャートである。
【００２３】
コントローラー４は、起動タイミング（例えば３秒ごと）になると（ステップＳ１）、ＣＰＵ１、ＲＡＭ５などの電源をオンし、第１領域１１および第２領域１２のうち、現在選択されているブート領域についてのブート回数カウントをインクリメントする（ステップＳ２）。
【００２４】
他方、ＣＰＵ１は、電源がオンされ、リセットベクターからブートコードの読み出しを行う。このとき、ブート領域設定部３により現在選択されているブート領域が選択され、ＣＰＵ１は、そのブート領域からブートコードを読み出してＲＡＭ５に展開し、そのブートコードを実行する（ステップＳ４）。このブート処理が完了すると、ＣＰＵ１は、上述の所定の処理の実行を開始する。
【００２５】
ブート処理の完了後、コントローラー４は、ブート領域設定部３に切換信号を供給して、ブート領域を切り換える（ステップＳ５）。これにより、次回のブートでは、今回使用されたブート領域とは異なるブート領域のブートコードが使用される。
【００２６】
また、ＣＰＵ１は、ブートコードに従って、今回使用されたブート領域のブート回数カウンターの値が所定値（例えば１０万回）以上であるか否かを判定し（ステップＳ６）、今回使用されたブート領域のブート回数カウンターの値が所定値以上である場合には、そのブート領域のブートコードの書き換え（つまり、リフレッシュ動作）を実行し（ステップＳ７）、そのブート回数カウンターの値をゼロにリセットする。
【００２７】
その後、コントローラー４は、上述の所定の処理が終了すると（ステップＳ８）、ＣＰＵ１、ＲＡＭ５などの電源をオフし、ステップＳ１に戻り、次の起動タイミングまで待機する。
【００２８】
なお、ここでは、１回ごとにブート領域が切り換えられているが、所定の複数回ごとにブート領域を切り換えるようにしてもよい。
【００２９】
以上のように、上記実施の形態によれば、ブート領域設定部３は、ブート時のＣＰＵ１のアクセス先をＮＡＮＤフラッシュメモリー２の第１領域１１および第２領域１２のいずれかに設定し、コントローラー４は、ブート領域設定部３を制御して、所定の回数ごとに、ブート時のＣＰＵ１のアクセス先を、第１領域１１および第２領域１２の一方から他方へ交互に切り替える。ＣＰＵ１は、ブート回数に応じて、異なるタイミングで第１領域１１のブートコードの書き換えおよび第２領域１２のブートコードの書き換えを実行する。
【００３０】
これにより、仮に一方のブート領域のブートコードの書き換えに失敗した場合でも、他方のブート領域のブートコードで引き続き次回のブートが可能であるとともに、書き換えに失敗したブート領域のブートコードを他方のブート領域のブートコードで修復することができる。したがって、ＮＡＮＤブートシステムのブートコードの書き換えを安全に行うことができる。
【００３１】
なお、上述の実施の形態は、本発明の好適な例であるが、本発明は、これらに限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。
【産業上の利用可能性】
【００３２】
本発明は、例えば、ＮＡＮＤブートを採用している電子機器に適用可能である。
【符号の説明】
【００３３】
１  ＣＰＵ（プロセッサーの一例）
２  ＮＡＮＤフラッシュメモリー
３  ブート領域設定部
４  コントローラー
５  ランダムアクセスメモリー
１１  第１領域
１２  第２領域
【図１】
0005875558.tif 000002
【図２】
0005875558.tif 000003