(57)【要約】【課題】より容易にブートローダの機能拡張を行うことができる不揮発性メモリを利用したブート方法を提供する。【解決手段】不揮発性メモリを利用したブート方法は、ブートローダを拡張するブートローダ拡張プログラムの送信可能な通信相手から通信要求を受信し、通信要求を受信後、通信相手から書き込み要求コマンドを受信すると、ブートローダ拡張プログラムの受信を待ち、ブートローダ拡張プログラムを受信すると、ブートローダ拡張プログラムをNAND型フラッシュメモリ２６のブートローダ拡張部２６に書き込む。【選択図】図２
2010170491.tif 000002
【特許請求の範囲】
【請求項１】
ブートローダを拡張するブートローダ拡張プログラムの送信可能な通信相手から通信要求を受信し、
前記通信要求を受信後、前記通信相手から書き込み要求コマンドを受信すると、前記ブートローダ拡張プログラムの受信を待ち、
前記ブートローダ拡張プログラムを受信すると、前記ブートローダ拡張プログラムを不揮発性メモリの所定の領域に書き込むことを特徴とする不揮発性メモリを利用したコンピュータシステムまたはメモリシステムのブート方法。
【請求項２】
ブートローダを拡張するブートローダ拡張プログラムの送信可能な通信相手から通信要求を受信し、
前記通信要求を受信後、前記通信相手から書き込み要求コマンドを受信すると、前記ブートローダ拡張プログラムの受信を待ち、
前記ブートローダ拡張プログラムを受信すると、受信した前記ブートローダ拡張プログラムをメインメモリに書き出し、
前記メインメモリに書き出した前記ブートローダ拡張プログラムの整合性のチェックを行い、
前記整合性がある場合に、前記ブートローダ拡張プログラムを不揮発性メモリの所定の領域に書き込むことを特徴とする不揮発性メモリを利用したコンピュータシステムまたはメモリシステムのブート方法。
【請求項３】
前記通信相手から拡張実行コマンドを受信し、
前記不揮発性メモリの所定の領域に書き込まれた前記拡張実行コマンドで指定された対応するブートローダ拡張プログラムをメインメモリに読み出し、
読み出したブートローダ拡張プログラムを実行することを特徴とする請求項１又は２に記載の不揮発性メモリを利用したコンピュータシステムまたはメモリシステムのブート方法。
【請求項４】
前記拡張実行コマンドを受信可能か否かの判定を行い、
前記拡張実行コマンドを受信可能な場合、前記対応するブートローダ拡張プログラムを前記メインメモリに読み出すことを特徴とする請求項３に記載の不揮発性メモリを利用したコンピュータシステムまたはメモリシステムのブート方法。
【請求項５】
オペレーティングシステムを格納する領域と、ブートローダ拡張プログラムを格納するための所定の領域とを有する不揮発性メモリと、
ブートローダを拡張する前記ブートローダ拡張プログラムの送信可能な通信相手から通信要求を受信する通信部と、
前記不揮発性メモリの格納された前記オペレーティングシステムをメインメモリにロードする機能と、前記通信部を介して通信要求を受信するための通信機能とを有するブートローダと、
前記ブートローダが通信要求を受信した後、前記通信部を介して書き込み要求コマンドを受信すると、前記ブートローダ拡張プログラムの受信を待ち、前記通信部を介して受信された前記ブートローダ拡張プログラムを不揮発性メモリの所定の領域に書き込む拡張プログラムと、
を有することを特徴とするコンピュータシステムまたはメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを利用したブート方法及びコンピュータシステムに関し、特に、通信機能により不揮発性メモリにブートローダ拡張プログラムを格納する不揮発性メモリを利用したブート方法及びコンピュータシステムに関する。
【背景技術】
【０００２】
従来、コンピュータシステムは、ブートローダを用いてオペレーティングシステム（以下、OSという）を読み出し、システムの起動を行っている。このブートローダは、基本的に、ランダムアクセス可能なマスクROM、あるいは、NOR型フラッシュメモリに実装されている。例えば、マスクROMにブートローダが実装されている場合、ブートローダに対して、機能拡張、あるいは、修正を行うことができない。そのため、ブートローダに対して、機能拡張、あるいは、修正を行う場合は、マスクROMを入れ換える必要があり、開発コストがかかるという問題があった。
【０００３】
また、NOR型フラッシュメモリにブートローダが実装されている場合、ブートローダに対して、機能拡張、あるいは、修正を行うことができる。しかしながら、NOR型フラッシュメモリは、マスクROMに比べ高価である。そのため、NOR型フラッシュメモリを搭載するシステムを量産する場合は、開発コストがかかるという問題があった。
【０００４】
そこで、安価で大容量のNAND型フラッシュメモリにブートローダを実装し、このブートローダの情報に基づいて、OSをシステムメモリにロードしてシステムを起動するコンピュータシステムの起動方法が提案されている（例えば、特許文献１参照）。
【０００５】
しかし、この提案のコンピュータシステムは、ブートローダの機能拡張に関しては、開示されていない。
【特許文献１】特開２００８−６５７２５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、より容易にブートローダの機能拡張を行うことができる不揮発性メモリを利用したブート方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様によれば、ブートローダを拡張するブートローダ拡張プログラムの送信可能な通信相手から通信要求を受信し、前記通信要求を受信後、前記通信相手から書き込み要求コマンドを受信すると、前記ブートローダ拡張プログラムの受信を待ち、前記ブートローダ拡張プログラムを受信すると、前記ブートローダ拡張プログラムを不揮発性メモリの所定の領域に書き込むことを特徴とする不揮発性メモリを利用したコンピュータシステムまたはメモリシステムのブート方法を提供することができる。
【発明の効果】
【０００８】
本発明の不揮発性メモリを利用したブート方法によれば、より容易にブートローダの機能拡張を行うことができる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照して本発明の実施の形態について詳細に説明する。
【００１０】
（第１の実施の形態）
まず、図１に基づき、本発明の第１の実施の形態に係るコンピュータシステムについて説明する。図１は、本発明の第１の実施の形態に係るコンピュータシステムの構成を示すブロック図である。図１に示すように、コンピュータシステム１は、中央処理装置（以下、CPUという）１１と、ROM１２と、RAM１３と、SSD（Solid State Drive）１４と、バス１５とを有して構成されている。
【００１１】
CPU１１、ROM１２、RAM１３及びSSD１４は、互いにバス１５を介して接続されている。
【００１２】
ROM１２には、コンピュータシステム１上で実行される各種プログラムが格納されている。CPU１１は、これらのプログラムをROM１２から読み出しRAM１３上に展開し、読み出したプログラムを実行する。また、後述するSSD１４に記憶されているOSがRAM１３に読み出されることにより、コンピュータシステム１が起動される。
【００１３】
SSD１４は、記憶媒体としてフラッシュメモリを用いるドライブ装置であり、後述するブートローダ、及びOS等が記憶されている。なお、本実施の形態では、フラッシュメモリとして、後述するようにNAND型フラッシュメモリを用いている。
【００１４】
図２は、SSD（メモリシステム）の構成を示すブロック図である。図２に示すように、SSD１４は、プロセッサユニット２１と、マスクROM２２と、メインメモリ２３と、UART（Universal Asynchronous Receiver Transmitter）２４と、NANDコントローラ２５と、NAND型フラッシュメモリ２６と、バス２７と、ATA（Advanced Technology Attachment）２８とを有して構成されている。
【００１５】
プロセッサユニット２１、マスクROM２２、メインメモリ２３、UART２４、NANDコントローラ２５及びATA２８は、互いにバス２７を介して接続されている。また、バス２７は、ATA２８を介して、バス１５と接続されている。即ち、SSD１４は、ATA２８を介して、バス１５と接続されている。
【００１６】
マスクROM２２には、ブートローダ３１及び拡張プログラム３２が格納されている。また、NAND型フラッシュメモリ２６は、後述するブートローダ拡張プログラムを格納するための記憶領域であるブートローダ拡張部３３を有して構成されている。
【００１７】
ブートローダ３１は、イニシャルプログラムローダとも呼ばれ、システムの起動を行う起動装置である。ブートローダ３１には、NAND型フラッシュメモリ２６内における、OSが格納されているアドレス等の情報が含まれている。即ち、システムの起動時には、このブートローダ３１が実行され、NAND型フラッシュメモリ２６に格納されているブート対象プログラムであるOSがメインメモリ２３に読み出され、OSの起動が行われる。
【００１８】
また、ブートローダ３１は、通信機能を有しており、後述するUART２４を介して通信要求を受信する。ブートローダ３１が通信要求を受信すると、拡張プログラム３２が読み出され、実行される。この通信要求は、後述するブートローダ拡張プログラムを送信する通信相手から送信される。
【００１９】
拡張プログラム３２は、UART２４を介して、通信相手から書き込み要求コマンド及び拡張実行コマンド等の各種通信コマンドを受信する。拡張プログラム３２は、これらの通信コマンドに基づいて、後述するブートローダ機能の拡張を行う。
【００２０】
特に、拡張プログラム３２は、書き込み要求コマンドを受信した後、UART２４を介してブートローダ拡張プログラムを受信すると、受信したブートローダ拡張プログラムをNAND型フラッシュメモリ２６のブートローダ拡張部３３に書き込み処理を行う。また、拡張プログラム３２は、拡張実行コマンドを受信すると、ブートローダ拡張部３３に書き込まれているブートローダ拡張プログラムを実行する処理を行う。なお、ブートローダ拡張部３３の記憶領域は、ブートローダ拡張プログラムが格納されていない場合、あるいは、ブートローダ拡張プログラムが実行された後、他のデータを格納するために開放してもよい。
【００２１】
DRAM、あるいは、SDRAMにより構成されるメインメモリ２３には、ブートローダ３１、拡張プログラム３２、あるいは、OSが読み出され、格納される。
【００２２】
UART２４は、通信機能を有し、上述した通信要求、通信コマンド及びブートローダの機能を拡張するためのブートローダ拡張プログラムを受信する。
【００２３】
NANDコントローラ２５は、NAND型フラッシュメモリ２６へのデータの書き込み、及び、NAND型フラッシュメモリ２６からのデータの読み出し制御を行う。
【００２４】
NAND型フラッシュメモリ２６には、ブート対象プログラム、即ち、OSが格納されている。このOSは、上述したように、システムの起動時にブートローダ３１によってメインメモリ２３に読み出される。なお、NAND型フラッシュメモリ２６には、OSの他にアプリケーションプログラム等が格納されていてもよい。
【００２５】
（システムの起動）
コンピュータシステム１の電源が投入されると、マスクROM２２に格納されているブートローダ３１がメインメモリ２３に読み出される。プロセッサユニット２１は、ブートローダ３１に格納されるOSのアドレス情報等に基づいて、NAND型フラッシュメモリ２６に格納されているOSをメインメモリ２３に読み出す。メインメモリ２３に読み出されたOSがRAM１３上に読み出されることにより、コンピュータシステム１が起動する。
【００２６】
（ブートローダ機能の拡張）
ここで、ブートローダ拡張部３３にブートローダ拡張プログラムが書き込まれる書き込み処理について説明する。図３は、ブートローダ拡張プログラムの書き込み処理の流れの例を説明するためのフローチャートである。ここで、ブートローダ拡張プログラムは、例えば、自己診断を行う診断プログラム等である。
【００２７】
まず、ブートローダ３１がUART２４を介して通信要求を受信する（ステップＳ１）。この通信要求の受信は、例えば、ハードウエアスイッチの切り換えによって行われる。なお、通信要求の受信は、ブートローダ３１がメモリ上のフラグを所定の間隔で見に行くようにしてもよいし、ブートローダ３１が通信待ちをしてもよい。このように、ブートローダ３１がUART２４を介して通信要求を受信すると、拡張プログラム３２が実行され、通信可能な状態となる。
【００２８】
次に、拡張プログラム３２は、ブートローダ拡張部３３に対する書き込み要求コマンド、即ち、ブートローダ拡張プログラムをブートローダ拡張部３３に書く込むための書き込み要求コマンドを通信相手から受信し（ステップＳ２）、ブートローダ拡張部３３に格納するブートローダ拡張プログラムの受信を待つ（ステップＳ３）。拡張プログラム３２は、UART２４を介してブートローダ拡張プログラムを受信すると、受信したブートローダ拡張プログラムをメインメモリ２３に書き出す（ステップＳ４）。
【００２９】
次に、拡張プログラム３２は、メインメモリ２３に書き出されたブートローダ拡張プログラムの整合性のチェックを行う（ステップＳ５）。書き出されたブートローダ拡張プログラムの整合性がない場合、NOとなり、ステップＳ１に戻り、通信要求の受信を待つ。書き出されたブートローダ拡張プログラムの整合性がある場合、YESとなり、拡張プログラム３２は、NAND型フラッシュメモリ２６のブートローダ拡張部３３にブートローダ拡張プログラムを書き込み（ステップＳ６）、処理を終了する。
【００３０】
ここで、更に、拡張プログラム３２が書き込み要求を受信し、上述したブートローダ拡張プログラムとは別のブートローダ拡張プログラムを受信すると、拡張プログラム３２は、この別のブートローダ拡張プログラムをNAND型フラッシュメモリ２６上のブートローダ拡張部３３に書き込む処理を行うことになる。この場合、別のブートローダ拡張プログラムは、ブートローダ拡張部３３において、上述したブートローダ拡張プログラムが格納された領域とは別の領域に書き込まれる。
【００３１】
次に、ブートローダ拡張部３３に書き込まれたブートローダ拡張プログラムを読み出し、実行する処理について説明する。図４は、ブートローダ拡張プログラムの読み出し処理の流れの例を説明するためのフローチャートである。なお、図３と同一の処理については同一の符号を付して説明を省略する。
【００３２】
ブートローダ拡張部３３にブートローダ拡張プログラムが格納されている状態において、コンピュータシステム１の電源が投入されると、以下の処理が実行される。
【００３３】
まず、ステップＳ１において、ブートローダ３１が、例えば、ハードウエアスイッチの切り換えにより、UART２４を介して通信要求を受信すると、拡張プログラム３２が実行され、通信可能な状態となる。なお、ブートローダ３１がUART２４を介して通信要求を受信しない場合は、上述したOSの読み出しが行われ、システムの起動が行われる。
【００３４】
次に、拡張プログラム３２は、UART２４において、ブートローダ拡張プログラムを実行させるための拡張実行コマンドを通信相手から受け取る（ステップＳ１１）。拡張プログラム３２は、受け取った拡張実行コマンドについて、拡張実行コマンドに基づく処理が実行できる状態で受信可能か否かを判定する（ステップＳ１２）。受信可能でない場合、NOとなり、ステップＳ１に戻り通信要求の受信を待つ。受信可能な場合、YESとなり、ブートローダ拡張部３３のうち、拡張実行コマンドで指定された対応する領域に格納されたブートローダ拡張プログラムをメインメモリ２３に読み出す（ステップＳ１３）。
【００３５】
拡張プログラム３２は、メインメモリ２３上に読み出されたブートローダ拡張プログラムを実行し（ステップＳ１４）、処理を終了する。このように、ブートローダ拡張プログラムが実行された後に、上述したOSの読み出しが行われ、システムの起動が行われる。
【００３６】
なお、ステップＳ１４において、ブートローダ拡張プログラムが実行された後は、ステップＳ１に戻り、通信要求の受信を待つようにしてもよい。また、拡張プログラム３２は、ブートローダ拡張プログラムが実行されると、UART２４を介して実行終了を示す実行終了コマンドを通信相手に送信ようにしてもよい。
【００３７】
なお、ハードウエアスイッチによりブートローダ拡張部３３に格納されたブートローダ拡張プログラムを実行するか否かを選択するようにしているが、ブートローダ拡張部３３にブートローダ拡張プログラムが格納されていれば、システムの起動時に毎回ブートローダ拡張プログラムを読み出し、実行するようにしてもよい。
【００３８】
以上のように、本実施の形態のコンピュータシステム１は、ブートローダ３１に通信機能を設け、拡張プログラム３２によって通信部であるUART２４を介してロードされたブートローダ拡張プログラムをNAND型フラッシュメモリ２６に書き込むようにした。この結果、ブートローダ拡張プログラムをNAND型フラッシュメモリ２６に書き込むことができるようになる。このように、不揮発性メモリであるNAND型フラッシュメモリ２６を利用し、システムの起動を行うことにより、システムの変更に対して柔軟に対応することができる。
【００３９】
よって、本実施の形態の不揮発性メモリを利用したブート方法によれば、安価で、かつ、容易にブートローダの機能拡張を行うことができる。
【００４０】
（第２の実施の形態）
次に、第２の実施の形態について説明する。図５は、本発明の第２の実施の形態に係るパーソナルコンピュータシステムの構成を示すブロック図である。なお、図５において図２と同一の構成については、同一の符号を付して説明を省略する。
【００４１】
図５に示すように、パーソナルコンピュータシステム（以下、PCシステムという）１００は、図２のプロセッサユニット２１に代わり、CPU４１を用いて構成され、その他の構成は図２と同様に、マスクROM２２と、メインメモリ２３と、UART２４と、NANDコントローラ２５と、NAND型フラッシュメモリ２６と、バス２７と、ATA２８とを有して構成されている。このPCシステム１００は、ATA２８を介して、ネットワークと接続されている。
【００４２】
また、マスクROM２２は、ブートローダ３１と、拡張プログラム３２とを有し、NAND型フラッシュメモリ２６は、ブートローダ拡張部３３を有して構成されている。
【００４３】
PCシステム１００の電源が投入されると、ブートローダ３１が実行され、NAND型フラッシュメモリ２６からブート対象プログラムが読み出さる。このように読み出されたブート対象プログラムがメインメモリ２３に書き込まれることにより、PCシステム１００の起動が行われる。
【００４４】
ブートローダ３１は、通信機能を有し、UART２４を介して通信要求を受信する。ブートローダ３１が通信要求を受信すると、拡張プログラム３２が読み出され、実行される。
【００４５】
拡張プログラム３２は、UART２４を介して、書き込み要求コマンド及び拡張実行コマンド等の各種通信コマンドを受信する。
【００４６】
ブートローダ３１が通信要求を受信した後、拡張プログラム３２が書き込み要求コマンドを受信すると、図３に示す、ブートローダ拡張プログラムをブートローダ拡張部３３に書き込む書き込み処理が実行される。また、ブートローダ３１が通信要求を受信した後、拡張プログラム３２が拡張実行コマンドを受信すると、図４に示す、ブートローダ拡張部３３からブートローダ拡張プログラムを読み出す読み出し処理が実行される。
【００４７】
以上のように、本実施の形態のPCシステム１００は、ブートローダ３１に通信機能を設け、拡張プログラム３２によって通信部であるUART２４を介してロードされたブートローダ拡張プログラムをNAND型フラッシュメモリ２６に書き込むようにした。この結果、ブートローダ拡張プログラムをNAND型フラッシュメモリ２６に書き込むことができ、システムの変更に対して柔軟に対応することができる。
【００４８】
よって、本実施の形態のPCシステムによれば、第１の実施の形態と同様に、安価で、かつ、容易にブートローダの機能拡張を行うことができる。
【００４９】
なお、本明細書におけるフローチャート中の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、あるいは実行毎に異なった順序で実行してもよい。
【００５０】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【００５１】
【図１】本発明の第１の実施の形態に係るコンピュータシステムの構成を示すブロック図である。
【図２】SSD（メモリシステム）の構成を示すブロック図である。
【図３】ブートローダ拡張プログラムの書き込み処理の流れの例を説明するためのフローチャートである。
【図４】ブートローダ拡張プログラムの読み出し処理の流れの例を説明するためのフローチャートである。
【図５】本発明の第２の実施の形態に係るパーソナルコンピュータシステムの構成を示すブロック図である。
【符号の説明】
【００５２】
１…コンピュータシステム、１１…CPU、１２…ROM、１３…RAM、１４…SSD、１５…バス、２１…CPU、２２…マスクROM、２３…メインメモリ、２４…UART、２５…NANDコントローラ、２６…NAND型フラッシュメモリ、２７…バス、２８…ATA、３１…ブートローダ、３２…拡張プログラム、３３…ブートローダ拡張部、１００…PCシステム。
【図１】
2010170491.tif 000003
【図２】
2010170491.tif 000004
【図３】
2010170491.tif 000005
【図４】
2010170491.tif 000006
【図５】
2010170491.tif 000007