(57)【要約】  プログラム実行領域に保存された実行対象プログラムを実行する情報処理装置（２００）において、更新用プログラム入力部（２０１）は、実行対象プログラムに対する更新用プログラムの入力を受け付ける。一時保存部（２０２）は、入力された更新用プログラムを一時保存領域に一時保存する。判定部（２０３）は、一時保存された更新用プログラムに過不足がないか否かを判定し、生成部（２０４）は、判定された結果、更新用プログラムに過不足がない場合、プログラム実行領域に保存された実行対象プログラムの更新準備が完了した旨を示す更新情報を生成する。そして、更新情報保存部（２０５）は、生成された更新情報を更新情報保存領域に保存する。
2008041337.tif 000002
【特許請求の範囲】
【請求項１】
プログラム実行領域に保存された実行対象プログラムを実行する情報処理装置において、
前記実行対象プログラムに対する更新用プログラムの入力を受け付ける更新用プログラム入力手段と、
前記更新用プログラム入力手段によって入力された更新用プログラムを一時保存領域に一時保存する一時保存手段と、
前記一時保存手段によって一時保存された更新用プログラムに過不足がないか否かを判定する判定手段と、
前記判定手段によって判定された結果、前記更新用プログラムに過不足がない場合、前記プログラム実行領域に保存された前記実行対象プログラムの更新準備が完了した旨を示す更新情報を生成する生成手段と、
前記生成手段によって生成された更新情報を更新情報保存領域に保存する更新情報保存手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記更新用プログラム入力手段は、
さらに、前記判定手段によって判定された結果、前記更新用プログラムに過不足がある場合、当該更新用プログラムの出力元に対して取得要求をおこなうことによって当該更新用プログラムの入力を受け付けることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
自装置の再稼働に関する再稼働情報の入力を受け付ける再稼働情報入力手段と、
前記再稼働情報入力手段によって再稼働情報が入力された場合、初期起動プログラム保存領域に保存された初期起動プログラムを起動させて、前記更新情報を参照することによって前記更新準備が完了しているか否かを判断する判断手段と、
前記判断手段によって判断された結果、前記更新準備が完了している場合、前記更新用プログラムを前記プログラム実行領域に複製することによって前記実行対象プログラムを更新する更新手段と、
を備えることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記更新手段は、
前記プログラム実行領域に複製した前記更新用プログラムを検証することによって、前記実行対象プログラムを実行可能な形式に更新することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記判断手段によって判断された結果、前記更新準備が完了していない場合、前記プログラム実行領域に保存された前記実行対象プログラムを実行する実行手段を有することを特徴とする請求項３に記載の情報処理装置。
【請求項６】
前記更新用プログラムは、前記実行対象プログラムとして実行される際に、前記初期起動プログラムによって実行される仮想初期起動プログラムを含み、
前記実行手段は、
前記仮想初期起動プログラムの実行にしたがって、前記プログラム実行領域に保存された前記実行対象プログラムを実行することを特徴とする請求項３に記載の情報処理装置。
【請求項７】
前記プログラム実行領域は、前記仮想初期起動プログラムを保存する仮想プログラム保存領域を備え、
前記更新手段は、
前記前記仮想初期起動プログラムを、前記仮想プログラム保存領域に複製することによって、前記実行対象プログラムを更新することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
プログラム実行領域に保存された実行対象プログラムを実行する情報処理方法において、
前記実行対象プログラムに対する更新用プログラムの入力を受け付ける更新用プログラム入力工程と、
前記更新用プログラム入力工程によって入力された更新用プログラムを一時保存領域に一時保存する一時保存工程と、
前記一時保存工程によって一時保存された更新用プログラムに過不足がないか否かを判定する判定工程と、
前記判定工程によって判定された結果、前記更新用プログラムに過不足がない場合、前記プログラム実行領域に保存された前記実行対象プログラムの更新準備が完了した旨を示す更新情報を生成する生成工程と、
前記生成工程によって生成された更新情報を更新情報保存領域に保存する更新情報保存工程と、
を含むことを特徴とする情報処理方法。
【請求項９】
請求項８に記載の情報処理方法をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項１０】
請求項９に記載の情報処理プログラムを記録したことを特徴とするコンピュータに読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、実行対象となるプログラムの実行および更新が可能な情報処理装置、情報処理方法、情報処理プログラムおよびコンピュータに読み取り可能な記録媒体に関する。ただし、この発明の利用は、上述した情報処理装置、情報処理方法、情報処理プログラムおよびコンピュータに読み取り可能な記録媒体には限られない。
【背景技術】
【０００２】
従来より、一つのマイコン（マイクロコンピュータ）における制御プログラムを更新する際には、データ設定器などの外部機器を使用して、データの更新をおこなっている。近年では、制御プログラムの更新の際に、他のマイコンから割り込み処理によって更新エラーを起こさないようにするため、制御プログラムの更新中に、他のマイコンからの割り込み処理を禁止する提案がされている（たとえば、下記特許文献１参照。）。【０００３】
ここで、図１を用いて、実行対象となるプログラムが実行可能に保存されたプログラム実行マイコン（マイクロコンピュータ）におけるプログラムの更新の概要について説明する。図１は、プログラム実行マイコンにおけるプログラムの更新の概要について示す説明図である。【０００４】
図１において、プログラム更新システム１００は、プログラム実行マイコン１０１と、更新用プログラム送信側マイコン１０２と、フラッシュメモリ１０３と、から構成されている。【０００５】
プログラム実行マイコン１０１は、バッファ領域１１０と、プログラム領域１１１と、ＩＰＬ（Ｉｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ）領域１１２と、Ｖｅｃｔｏｒ領域１１３と、から構成されている。【０００６】
バッファ領域１１０は、後述する更新用プログラム送信側マイコン１０２から送信される更新用プログラムを一時的に保存する。更新用プログラムは、たとえば、マイコン間通信によって更新用プログラム送信側マイコン１０２からバッファ領域１１０に送信され、プログラム実行マイコン１０１の実行対象となるプログラムの更新用のプログラムである。【０００７】
バッファ領域１１０に一時保存された更新用プログラムは、図示しないＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が、後述するＩＰＬ領域１１２を参照することによって、プログラム領域１１１に複製（コピー）される。換言すれば、後述するプログラム領域１１１に保存されたプログラムａ，ｂ，ｃは、更新用プログラムのプログラム領域１１１に複製されることによって更新がおこなわれる構成である。【０００８】
プログラム領域１１１は、プログラム実行マイコン１０１の実行対象となるプログラムａ，ｂ，ｃを保存する。具体的には、たとえば、プログラム領域１１１は、プログラムａを保存するＡ領域１２１と、プログラムｂを保存するＢ領域１２２と、プログラムｃを保存するＣ領域１２３と、から構成されている。【０００９】
各プログラムａ，ｂ，ｃは、たとえば、図示しないＣＰＵによって読み込まれて実行される構成でもよい。具体的には、たとえば、プログラムａ，ｂ，ｃは、図示しないＣＰＵが、後述するＶｅｃｔｏｒ領域１１３に格納された、プログラムａ，ｂ，ｃのアドレスを参照することによって実行される。なお、図１の説明では、３つの領域（Ａ領域１２１，Ｂ領域１２２，Ｃ領域１２３）を用いて説明したが、領域の数量および実行対象となるプログラムの数はこれに限るものではない。【００１０】
ＩＰＬ領域１１２は、リセットスタート時に図示しないＣＰＵによって最初に実行されるプログラムを保存する領域である。具体的には、たとえば、ＩＰＬ領域１１２は、バッファ領域１１０に一時保存された更新用プログラムをプログラム領域１１１に複製するか、プログラム領域１１１に保存された各プログラムａ，ｂ，ｃを実行するかを決定するプログラムを保存する。【００１１】
Ｖｅｃｔｏｒ領域１１３は、イベント発生時にプログラム実行マイコン１０１の実行対象となるプログラムのアドレスを格納する。具体的には、たとえば、図示しないＣＰＵは、リセットスタート時には、Ｖｅｃｔｏｒ領域１１３を参照してＩＰＬ領域１１２に保存されたプログラムのアドレスを読み込む。また、図示しないＣＰＵは、たとえば、通常起動時には、Ｖｅｃｔｏｒ領域１１３を参照してプログラム領域１１１に保存された各プログラムａ，ｂ，ｃのアドレスを読み込む。【００１２】
更新用プログラム送信側マイコン１０２は、プログラム実行マイコン１０１に対して、プログラム実行マイコン１０１の実行対象となるプログラムａ，ｂ，ｃの更新用プログラムを送信する。具体的には、たとえば、更新用プログラム送信側マイコン１０２は、フラッシュメモリ１０３が保存している更新用プログラムを読み込んで、読み込んだ更新用プログラムをプログラム実行マイコン１０１に送信する。【００１３】
フラッシュメモリ１０３は、各種データを保存することができる記録媒体で、図１では、プログラム実行マイコン１０１の実行対象となるプログラムａ，ｂ，ｃの更新用プログラムを保存する。具体的には、たとえば、フラッシュメモリ１０３は、更新用プログラム送信側マイコン１０２に対して、保存している更新用プログラムを出力する。【００１４】
【特許文献１】特開２００４−１１８３６９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
しかしながら、上記従来技術では、マイコンにおける制御プログラムを更新する場合、更新専用の外部機器が必要となるため、マイコンの利用者は、更新専用の外部機器を用意する負担が生じてしまうという問題が一例として挙げられる。【００１６】
また、更新専用の外部機器を有するマイコンの製造元などで、制御プログラムを更新する場合、マイコンの利用者は、製造元に対するマイコンの送付や受け取りに関する手間が発生するばかりか、更新に要する時間を浪費してしまうという問題が一例として挙げられる。【００１７】
一方、更新専用の外部機器を用いずに、マイコン間通信などによって受信される更新用プログラムによって、実行対象となるプログラムを更新する場合、書き換え（複製）の途中に電源障害などによって更新動作が中断されると、マイコンが起動できなくなってしまうという問題が一例として挙げられる。【００１８】
特に、Ｖｅｃｔｏｒ領域に格納された、実行対象となるプログラムのアドレスを書き換える場合、書き換えの途中で更新動作が中断されると、中断復旧後の起動時にＶｅｃｔｏｒ領域を参照できないため、マイコンが起動できなくなってしまうという問題が一例として挙げられる。【００１９】
また、Ｖｅｃｔｏｒ領域に格納された、実行対象となるプログラムのアドレスを書き換えずに、実行対象となるプログラムだけを更新する場合、Ｖｅｃｔｏｒ領域に格納された、実行対象となるプログラムのアドレスが固定されるため、初期設定によるプログラムの配置を変更できず、汎用性に欠けるとともにプログラム領域の容量を効率的に使用できないという問題が一例として挙げられる。
【課題を解決するための手段】
【００２０】
上述した課題を解決し、目的を達成するため、請求項１の発明にかかる情報処理装置は、プログラム実行領域に保存された実行対象プログラムを実行する情報処理装置において、前記実行対象プログラムに対する更新用プログラムの入力を受け付ける更新用プログラム入力手段と、前記更新用プログラム入力手段によって入力された更新用プログラムを一時保存領域に一時保存する一時保存手段と、前記一時保存手段によって一時保存された更新用プログラムに過不足がないか否かを判定する判定手段と、前記判定手段によって判定された結果、前記更新用プログラムに過不足がない場合、前記プログラム実行領域に保存された前記実行対象プログラムの更新準備が完了した旨を示す更新情報を生成する生成手段と、前記生成手段によって生成された更新情報を更新情報保存領域に保存する更新情報保存手段と、を備えることを特徴とする。【００２１】
また、請求項８の発明にかかる情報処理方法は、プログラム実行領域に保存された実行対象プログラムを実行する情報処理方法において、前記実行対象プログラムに対する更新用プログラムの入力を受け付ける更新用プログラム入力工程と、前記更新用プログラム入力工程によって入力された更新用プログラムを一時保存領域に一時保存する一時保存工程と、前記一時保存工程によって一時保存された更新用プログラムに過不足がないか否かを判定する判定工程と、前記判定工程によって判定された結果、前記更新用プログラムに過不足がない場合、前記プログラム実行領域に保存された前記実行対象プログラムの更新準備が完了した旨を示す更新情報を生成する生成工程と、前記生成工程によって生成された更新情報を更新情報保存領域に保存する更新情報保存工程と、を含むことを特徴とする。【００２２】
また、請求項９の発明にかかる情報処理プログラムは、請求項８に記載の情報処理方法をコンピュータに実行させることを特徴とする。【００２３】
また、請求項１０の発明にかかるコンピュータに読み取り可能な記録媒体は、請求項９に記載の情報処理プログラムを記録したことを特徴とする。
【図面の簡単な説明】
【００２４】
【図１】図１は、プログラム実行マイコンにおけるプログラムの更新の概要について示す説明図である。
【図２】図２は、本実施の形態にかかる情報処理装置の機能的構成の一例を示すブロック図である。
【図３】図３は、本実施の形態にかかる情報処理装置の処理の内容を示すフローチャートである。
【図４】図４は、本実施例にかかるワンチップマイコンのハードウェア構成の一例を示すブロック図である。
【図５】図５は、本実施例にかかるワンチップマイコンにおける実行対象プログラムの更新の概要を示す説明図である。
【図６】図６は、本実施例にかかる有効プログラム領域に保存されるプログラムについて示す説明図である。
【図７】図７は、本実施例にかかるワンチップマイコンにおける更新用プログラムの受け付け処理手順を示すフローチャートである。
【図８】図８は、本実施例にかかるワンチップマイコンの起動処理手順を示すフローチャートである。
【図９】図９は、本実施例にかかるワンチップマイコンにおける割り込み処理（図８のステップＳ８１２）手順を示すフローチャートである。
【符号の説明】
【００２５】
２００  情報処理装置
２０１  更新用プログラム入力部
２０２  一時保存部
２０３  判定部
２０４  生成部
２０５  更新情報保存部
２０６  再稼働情報入力部
２０７  判断部
２０８  更新部
２０９  実行部
【発明を実施するための最良の形態】
【００２６】
以下に添付図面を参照して、この発明にかかる情報処理装置、情報処理方法、情報処理プログラムおよびコンピュータに読み取り可能な記録媒体の好適な実施の形態を詳細に説明する。【００２７】
（実施の形態）
（情報処理装置の機能的構成）
図２を用いて、本実施の形態にかかる情報処理装置の機能的構成について説明する。図２は、本実施の形態にかかる情報処理装置の機能的構成の一例を示すブロック図である。【００２８】
図２において、プログラム実行領域に保存された実行対象プログラムを実行する情報処理装置２００は、更新用プログラム入力部２０１と、一時保存部２０２と、判定部２０３と、生成部２０４と、更新情報保存部２０５と、再稼働情報入力部２０６と、判断部２０７と、更新部２０８と、実行部２０９と、から構成されている。【００２９】
更新用プログラム入力部２０１は、実行対象プログラムに対する更新用プログラムの入力を受け付ける。具体的には、たとえば、更新用プログラムの入力は、図示しない更新用プログラムが送信可能な外部装置から入力を受け付けることとしてもよい。【００３０】
更新用プログラムは、たとえば、情報処理装置２００における不図示のメモリ領域などに割り当てられたプログラム実行領域に複製（コピー）されて実行対象プログラムとなる。また、更新用プログラムは、実行対象プログラムとして実行される際に、初期起動プログラムによって実行される仮想初期起動プログラムを含む構成でもよい。具体的には、たとえば、仮想初期起動プログラムは、プログラム実行領域が備える仮想プログラム領域に保存され、初期起動プログラムによって実行される。ここで、初期起動プログラムは、たとえば、情報処理装置１００の再稼働の際に起動されるプログラムである。【００３１】
さらに、更新用プログラム入力部２０１は、後述する判定部２０３によって判定された結果、更新用プログラムに過不足がある場合、更新用プログラムの出力元に対して取得要求をおこなうことによって更新用プログラムの入力を受け付けることとしてもよい。【００３２】
一時保存部２０２は、更新用プログラム入力部２０１によって入力された更新用プログラムを一時保存領域に一時保存する。具体的には、たとえば、一時保存部２０２は、情報処理装置２００における不図示のメモリ領域などに割り当てられたバッファ領域など、データの一時保存が可能な領域に更新用プログラムを一時保存することとしてもよい。【００３３】
判定部２０３は、一時保存部２０２によって一時保存された更新用プログラムに過不足がないか否かを判定する。具体的には、たとえば、判定部２０３は、複数回に分割されて入力される更新用プログラムが、すべて一時保存領域に一時保存されたか否かを判定することとしてもよい。【００３４】
生成部２０４は、判定部２０３によって判定された結果、更新用プログラムに過不足がない場合、プログラム実行領域に保存された実行対象プログラムの更新準備が完了した旨を示す更新情報を生成する。更新情報は、たとえば、実行対象プログラムの更新準備が完了した旨を示す代わりに、更新準備が完了していない旨を示す情報であってもよい。【００３５】
更新情報保存部２０５は、生成部２０４によって生成された更新情報を更新情報保存領域に保存する。具体的には、たとえば、更新情報保存部２０５は、情報処理装置２００における不図示のメモリ領域などに割り当てられた更新情報保存領域に更新情報を保存する。なお、更新情報保存部２０５は、生成部２０４によって更新準備が完了した旨を示す更新情報の代わりに、更新準備が完了していない旨を示す情報を保存していてもよい。【００３６】
再稼働情報入力部２０６は、自装置の再稼働に関する再稼働情報の入力を受け付ける。再稼働情報の入力は、たとえば、リセットスタートの処理要求などの入力であってもよい。【００３７】
判断部２０７は、再稼働情報入力部２０６によって再稼働情報が入力された場合、初期起動プログラム保存領域に保存された初期起動プログラムを起動させて更新情報を参照することによって、更新準備が完了しているか否かを判断する。具体的には、たとえば、判断部２０７は、情報処理装置２００における不図示のメモリ領域などに割り当てられた初期起動プログラム保存領域に保存された初期起動プログラムを起動させる構成である。【００３８】
更新部２０８は、判断部２０７によって判断された結果、更新準備が完了している場合、更新用プログラムをプログラム実行領域に複製することによって実行対象プログラムを更新する。具体的には、たとえば、実行対象プログラムの更新は、更新準備が完了している場合、一時保存部２０２によって保存された更新用プログラムを実行対象プログラムに対して上書き保存する構成でもよい。【００３９】
また、更新部２０８は、たとえば、更新用プログラムを実行対象プログラムに上書きする際、更新用プログラムに含まれる仮想初期起動プログラムを用いて、プログラム実行領域が備える仮想プログラム保存領域の仮想初期起動プログラムもあわせて上書きすることとなる。【００４０】
また、更新部２０８は、プログラム実行領域に複製した更新用プログラムを検証することによって、実行対象プログラムを実行可能な形式に更新することとしてもよい。具体的には、たとえば、更新用プログラムの検証は、更新用プログラムが実行対象プログラムとして過不足なく複製されたか否かを確認する構成でもよい。【００４１】
実行部２０９は、判断部２０７によって判断された結果、更新準備が完了していない場合、プログラム実行領域に保存された実行対象プログラムを実行する。具体的には、たとえば、実行部２０９は、仮想初期起動プログラムの実行にしたがって、プログラム実行領域に保存された実行対象プログラムを実行する。すなわち、実行部２０９は、更新準備が完了していない場合、初期起動プログラム保存領域に保存された初期起動プログラムの起動によって実行される仮想初期起動プログラムによって、実行対象プログラムを実行することができる。【００４２】
換言すれば、初期起動プログラムは、再稼働情報が入力されると起動して、更新準備が完了しているか否かを判断させる。そして、初期起動プログラムは、判断の結果、更新準備が完了している場合は、更新用プログラムを用いて、実行対象プログラムを更新させることとなる。一方、初期起動プログラムは、判断の結果、更新準備が完了していない場合は、仮想プログラム保存領域に保存されている仮想初期起動プログラムを実行させることにより、実行対象プログラムを実行させることとなる。【００４３】
このように、情報処理装置２００は、実行対象プログラムを更新する場合、仮想プログラム保存領域に保存された仮想初期起動プログラムを、実行対象プログラムとあわせて更新する構成である。また、情報処理装置２００は、初期起動プログラムによって仮想初期起動プログラムを実行させることによって、実行対象プログラムを実行することができる。【００４４】
したがって、情報処理装置２００は、仮想プログラム保存領域に仮想初期起動プログラムを保存することによって、実行対象プログラムを更新する際に初期起動プログラムを更新しなくても、実行対象プログラムの更新あるいは実行を確実におこなうことができる。換言すれば、実行対象プログラムの更新中に、電源障害などに起因して更新処理に不具合が発生しても、電源復旧時には、再度初期起動プログラムの実行によって、実行対象プログラムの更新あるいは実行をおこなうことができる。【００４５】
（情報処理装置２００の処理の内容）
つぎに、図３を用いて本実施の形態にかかる情報処理装置２００の処理の内容について説明する。図３は、本実施の形態にかかる情報処理装置の処理の内容を示すフローチャートである。図３のフローチャートにおいて、まず、更新用プログラム入力部２０１によって、更新用プログラムの入力を受け付けたか否かを判断する（ステップＳ３０１）。【００４６】
ステップＳ３０１において、更新用プログラムの入力を受け付けた場合（ステップＳ３０１：Ｙｅｓ）は、一時保存部２０２によって、一時保存領域にステップＳ３０１において入力された更新用プログラムを一時保存する（ステップＳ３０２）。【００４７】
また、ステップＳ３０１において、更新用プログラムの入力を受け付けない場合（ステップＳ３０１：Ｎｏ）は、ステップＳ３０６へ移行して、再稼働情報入力部２０６によって、再稼働情報の入力を受け付けたか否かを判断する（ステップＳ３０６）。【００４８】
つぎに、判定部２０３によって、ステップＳ３０２において一時保存された更新用プログラムに過不足がないか否かを判定する（ステップＳ３０３）。【００４９】
そして、生成部２０４によって、ステップＳ３０３において判定された結果に基づいて、更新情報を生成する（ステップＳ３０４）。更新情報は、たとえば、ステップＳ３０３において判定された結果、更新用プログラムに過不足がない場合、プログラム実行領域に保存された実行対象プログラムの更新準備が完了した旨を示す情報である。また、更新情報は、たとえば、ステップＳ３０３において判定された結果、更新用プログラムに過不足がある場合、更新準備が完了していない旨を示す情報であってもよい。【００５０】
つづいて、更新情報保存部２０５によって、更新情報保存領域にステップＳ３０４において生成された更新情報を保存する（ステップＳ３０５）。【００５１】
つぎに、再稼働情報入力部２０６によって、再稼働情報の入力を受け付けたか否かを判断する（ステップＳ３０６）。再稼働情報は、たとえば、リセットスタートの処理要求などであってもよい。【００５２】
ステップＳ３０６において、再稼働情報の入力を受け付けた場合（ステップＳ３０６：Ｙｅｓ）は、判断部２０７によって、初期起動プログラム保存領域に保存された初期起動プログラムを起動させて更新情報を参照することによって、更新準備が完了しているか否かを判断する（ステップＳ３０７）。【００５３】
また、ステップＳ３０６において、再稼働情報の入力を受け付けない場合（ステップＳ３０６：Ｎｏ）は、ステップＳ３０１に戻って処理を繰り返す。【００５４】
ステップＳ３０７において、更新準備が完了している場合（ステップＳ３０７：Ｙｅｓ）は、更新部２０８によって、更新用プログラムをプログラム実行領域に複製することによって実行対象プログラムを更新する（ステップＳ３０８）。そして、実行部２０９によって、ステップＳ３０８において更新された実行対象プログラムを実行して（ステップＳ３０９）、一連の処理を終了する。【００５５】
また、ステップＳ３０７において、更新準備が完了していない場合（ステップＳ３０７：Ｎｏ）は、ステップＳ３０９へ移行して、実行部２０９によって、プログラム実行領域に保存された実行対象プログラムを実行する（ステップＳ３０９）。そして、一連の処理を終了する。【００５６】
換言すれば、ステップＳ３０７〜ステップＳ３０９では、更新準備が完了している場合は、実行対象プログラムを更新してから、更新した実行対象プログラムを実行する。また、更新準備が完了していない場合は、実行対象プログラムを更新せずに、プログラム実行領域に保存されている実行対象プログラムを実行することとしてもよい。【００５７】
以上説明したように、本実施の形態によれば、一時保存部に保存された更新用プログラムによって実行対象プログラムを更新するため、専用の外部機器を用意しなくても実行対象プログラムの更新をおこなうことができる。【００５８】
また、本実施の形態によれば、更新用プログラムの更新準備が完了してから、実行対象プログラムを更新するため、更新用プログラムの入力途中に電源障害などが発生しても、実行対象プログラムに対する弊害の防止を図ることができる。【００５９】
また、本実施の形態によれば、仮想初期起動プログラムを含む更新用プログラムによって実行対象プログラムを更新するため、初期起動プログラムの更新をしなくてもよい。したがって、更新途中に電源障害などが発生しても、復旧後には初期起動プログラムによって自装置を起動することができる。【００６０】
すなわち、本実施の形態によれば、電源障害の復旧後であっても、初期起動プログラムによって実行対象プログラムの更新あるいは実行をおこなうことができる。具体的には、たとえば、本実施の形態によれば、電源障害の復旧後に再稼働情報が入力されると、電源障害によって更新途中であるため、初期起動プログラムによって更新を継続あるいはやり直しすることができる。また、本実施の形態によれば、電源障害があっても更新が終了していれば、初期起動プログラムによって仮想初期起動プログラムを実行させて、実行対象プログラムを実行することができる。【００６１】
くわえて、実行対象プログラムは、仮想初期起動プログラムによって実行されることとなるため、汎用性に富んだ実行対象プログラムの配置を設計でき、プログラム実行領域の利用の効率化を図ることができる。換言すれば、初期起動プログラムの代わりに、実行対象プログラムとあわせて更新される仮想初期起動プログラムによって、実行対象プログラムを実行するため、初期起動プログラムによって制限される配置ではなく、仮想初期起動プログラムに設定される自由度のある配置を実現できる。【００６２】
また、本実施の形態によれば、更新用プログラムを検証することによって、実行対象プログラムを実行可能な形式に更新するため、的確な実行対象プログラムの更新を図ることができる。
【実施例】
【００６３】
以下に、本発明の実施例について説明する。本実施例では、たとえば、フラッシュＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）内蔵のワンチップマイコンによって、本発明の情報処理装置を実施した場合の一例について説明する。【００６４】
（ワンチップマイコンのハードウェア構成）
まず、図４を用いて、本実施例にかかるワンチップマイコンのハードウェア構成について説明する。図４は、本実施例にかかるワンチップマイコンのハードウェア構成の一例を示すブロック図である。【００６５】
図４において、ワンチップマイコン４００は、ＣＰＵ４０１と、フラッシュＲＯＭ４０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０３と、入出力Ｉ／Ｆ（インターフェース）４０４と、を備えている。また、各構成部４０１〜４０４は、バス４１０によってそれぞれ接続されている。【００６６】
まず、ＣＰＵ４０１はワンチップマイコン４００の全体の制御を司る。具体的には、たとえば、ＣＰＵ４０１は、フラッシュＲＯＭ４０２に記録されたプログラムを読み込み、ＲＡＭ４０３をワークエリアとして読み込んだプログラムを実行する構成でもよい。【００６７】
フラッシュＲＯＭ４０２は、ブートプログラムや実行対象となる実行対象プログラムなどの各種プログラムを記録している。詳細は図５を用いて説明するが、フラッシュＲＡＭ４０２は、たとえば、各種プログラムを書き換え可能に記録し、電源を切ってもデータが消えない不揮発性半導体メモリなどである。【００６８】
ＲＡＭ４０３は、ＣＰＵ４０１のワークエリアとして使用される。具体的には、たとえば、ＲＡＭ４０３は、データの書き込みと読み出しが随時可能な半導体メモリでもよく、ＣＰＵ４０１によって読み込まれたプログラムを実行するためのワークエリアとなる。【００６９】
入出力Ｉ／Ｆ４０４は、図示しない外部機器に接続され、ワンチップマイコン４００とＣＰＵ４０１とのインターフェースとして機能する。入出力Ｉ／Ｆ４０４は、さらに、有線あるいは無線などを介してインターネットなどの通信網に接続され、この通信網とＣＰＵ４０１とのインターフェースとしても機能する。【００７０】
また、詳細は図５に後述するが、入出力Ｉ／Ｆ４０４は、ワンチップマイコン４００の外部に接続されたマイコンから、マイコン間通信によってフラッシュＲＯＭ４０２に記録された実行対象プログラムに対する更新用プログラムの入力を受け付けることとしてもよい。【００７１】
なお、図４では説明を省略したが、本実施例にかかるワンチップマイコン４００は、ＣＰＵ４０１、フラッシュＲＯＭ４０２、ＲＡＭ４０３、入出力Ｉ／Ｆ４０４のほかに、タイマ、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）ドライバ、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｏｒｏｌｌｅｒ）、Ａ／Ｄ（Ａｎａｌｏｇ／Ｄｉｇｉｔａｌ）コンバータなどの周辺機能を備えていてもよい。【００７２】
なお、実施の形態にかかる情報処理装置２００の機能的構成のうち、更新用プログラム入力部２０１や再稼働情報入力部２０６は入出力Ｉ／Ｆ４０４によって、一時保存部２０２や判定部２０３や生成部２０４や更新情報保存部２０５や判断部２０７や更新部２０８や実行部２０９はＣＰＵ４０１がフラッシュＲＯＭ４０２やＲＡＭ４０３に記録された各種プログラムを実行することによって、それぞれその機能を実現する。【００７３】
（ワンチップマイコン４００における実行対象プログラムの更新の概要）
つぎに、図５を用いて、本実施例にかかるワンチップマイコン４００における実行対象プログラムの更新の概要について説明する。図５は、本実施例にかかるワンチップマイコンにおける実行対象プログラムの更新の概要を示す説明図である。【００７４】
図５において、プログラム更新システム５００は、ワンチップマイコン４００と、更新用プログラム送信側マイコン５０２と、フラッシュメモリ５０３と、から構成されている。【００７５】
ワンチップマイコン４００における図４に示したフラッシュＲＯＭ４０２は、有効プログラム情報保存領域５１０と、空き領域５１１と、更新用プログラム保存領域５１２と、有効プログラム領域５１３と、ＩＰＬ領域５１４と、Ｖｅｃｔｏｒ領域５１５と、から構成されている。【００７６】
有効プログラム情報保存領域５１０は、後述する有効プログラム領域５１３に記録された実行対象プログラムの更新準備が完了した旨を示す更新情報を保存する領域である。具体的には、たとえば、更新情報は、後述する更新用プログラム保存領域５１２に、更新用プログラム送信側マイコン５０２から複数回に分割されて入力される更新用プログラムに過不足がない場合、更新準備が完了したこととする情報でもよい。【００７７】
また、更新情報は、たとえば、実行対象プログラムの更新準備が完了した旨を示す代わりに、更新準備が完了していない旨を示す情報であってもよい。【００７８】
空き領域５１１は、本実施例におけるフラッシュＲＯＭ４０２の未使用領域であり、初期設定によって変更することができる。【００７９】
更新用プログラム保存領域５１２は、後述する更新用プログラム送信側マイコン５０２から送信される更新用プログラムを一時的に保存する領域である。更新用プログラムは、たとえば、マイコン間通信によって更新用プログラム送信側マイコン５０２から図示しない入出力Ｉ／Ｆ４０４を介して入力され、ワンチップマイコン４００の実行対象となる実行対象プログラムの更新用のプログラムである。【００８０】
また、更新用プログラムは、たとえば、図示しないＣＰＵ４０１によって有効プログラム情報保存領域５１０に保存された更新情報が参照されて更新準備が完了している場合に、有効プログラム領域５１３に複製（コピー）される。換言すれば、更新用プログラムは、たとえば、ＣＰＵ４０１によって実行対象プログラムに対して上書き保存され、その実行対象プログラムが更新されることとなる。【００８１】
このように、更新情報を参照して実行対象プログラムの更新をおこなう構成とすれば、更新用プログラムが不完全な状態で実行対象プログラムを更新して不具合を引き起こすことを防ぐことができる。すなわち、電源障害など、何らかの障害によって更新用プログラムの一時保存がストップしてしまった場合、リセットスタートによってストップした時点の更新用プログラムによって中途半端な状態の実行対象プログラムの更新はおこなわずに、一つ前の手順に戻って、更新用プログラムの一時保存を開始することができる。【００８２】
また、更新用プログラムは、実行対象プログラムとして実行される際に、初期起動プログラムによって実行される仮想初期起動プログラムを含む構成でもよい。初期起動プログラムは、たとえば、再稼働（リセットスタート）の際に起動されるプログラムである。【００８３】
有効プログラム領域５１３は、ワンチップマイコン４００の実行対象となる実行対象プログラムを保存する領域である。詳細は図６を用いて説明するが、有効プログラム領域５１３に保存された実行対象プログラムは、複数でもよく、図示しないＣＰＵ４０１に読み込まれて実行されることとしてもよい。【００８４】
また、有効プログラム領域５１３に更新用プログラムが複製された場合、ＣＰＵ４０１は、複製された更新用プログラムを検証することによって、実行対象プログラムを実行可能な形式に更新することとしてもよい。具体的には、たとえば、更新用プログラムの検証は、更新用プログラムが実行対象プログラムとして過不足なく複製されたか否かを確認する構成でもよい。【００８５】
ＩＰＬ領域５１４は、リセットスタート時に図示しないＣＰＵ４０１によって最初に実行される初期起動プログラムを保存する領域である。具体的には、たとえば、ＩＰＬ領域５１４は、更新用プログラム保存領域５１２に一時保存された更新用プログラムを有効プログラム領域５１３に複製するか、有効プログラム領域５１３に保存された各実行対象プログラムを実行するかを決定するプログラムを保存する。【００８６】
Ｖｅｃｔｏｒ領域５１５は、イベント発生時にワンチップマイコン４００の実行対象となるプログラムのアドレスを格納する。具体的には、たとえば、図示しないＣＰＵ４０１は、リセットスタート時には、Ｖｅｃｔｏｒ領域５１５を参照してＩＰＬ領域５１４に保存されたプログラムのアドレスを読み込む。また、ＣＰＵ４０１は、たとえば、通常起動時には、Ｖｅｃｔｏｒ領域５１５を参照して有効プログラム領域５１３に保存された各実行対象プログラムのアドレスを読み込むこととしてもよい。【００８７】
このように、ＩＰＬ領域５１４およびＶｅｃｔｏｒ領域５１５に保存されたデータは、更新用プログラムによって書き換えをおこなわないため、更新用プログラムの一時保存中や、実行対象プログラムの更新中に障害が発生しても、リセットスタートによって、ＣＰＵ４０１がＩＰＬ領域５１４およびＶｅｃｔｏｒ領域５１５に保存されたデータを参照すれば、ワンチップマイコン４００の動作を正常に再開することができる。【００８８】
更新用プログラム送信側マイコン５０２は、ワンチップマイコン４００に対して、ワンチップマイコン４００の実行対象となる実行対象プログラムの更新用プログラムを送信する。具体的には、たとえば、更新用プログラム送信側マイコン５０２は、フラッシュメモリ５０３が保存している更新用プログラムを読み込んで、読み込んだ更新用プログラムをワンチップマイコン４００に送信する。【００８９】
フラッシュメモリ５０３は、各種データを保存することができる記録媒体で、図５では、ワンチップマイコン４００の実行対象となる実行対象プログラムの更新用プログラムを保存する。具体的には、たとえば、フラッシュメモリ５０３は、更新用プログラム送信側マイコン５０２に対して、保存している更新用プログラムを出力する。【００９０】
ここで、図６を用いて、有効プログラム領域５１３に保存されるプログラムについて説明する。図６は、本実施例にかかる有効プログラム領域に保存されるプログラムについて示す説明図である。【００９１】
図６において、有効プログラム領域５１３は、仮想初期起動プログラムを保存する仮想Ｖｅｃｔｏｒ領域６０１と、実行対象となる実行対象プログラムａ，ｂ，ｃを保存する実行対象プログラム領域６０２と、から構成されている。【００９２】
仮想Ｖｅｃｔｏｒ領域６０１に保存された仮想初期起動プログラムは、リセットスタート時に、通常起動である場合に図示しないＣＰＵ４０１によって読み込まれる。仮想初期起動プログラムは、たとえば、通常起動時に実行対象となる実行対象プログラムａ，ｂ，ｃを実行させるプログラムで、ＣＰＵ４０１に対して、実行対象プログラム領域６０２に保存された実行対象プログラムａ，ｂ，ｃのアドレスを指定する構成でもよい。【００９３】
具体的には、たとえば、ＣＰＵ４０１は、リセットスタート時に、Ｖｅｃｔｏｒ領域５１５を参照してＩＰＬ領域５１４に保存されたプログラムのアドレスを読み込むことによって、更新用プログラムの複製（実行対象プログラムの更新）、あるいは、実行対象プログラムを実行する。【００９４】
より具体的には、たとえば、ＣＰＵ４０１は、有効プログラム情報保存領域５１０に保存された更新情報に基づいて、更新用プログラムの複製、あるいは、実行対象プログラムの実行を選択し、実行対象プログラムを実行する場合、Ｖｅｃｔｏｒ領域５１５を参照して、仮想Ｖｅｃｔｏｒ領域６０１のアドレスを読み込む。【００９５】
そして、ＣＰＵ４０１は、仮想Ｖｅｃｔｏｒ領域６０１に保存された仮想初期起動プログラムによってアドレスが指定される実行対象プログラムａ，ｂ，ｃを実行することとしてもよい。【００９６】
このように、ＩＰＬ領域５１４およびＶｅｃｔｏｒ領域５１５は更新せずに、有効プログラム領域５１３における仮想初期起動プログラムを保存する仮想Ｖｅｃｔｏｒ領域６０１および実行対象プログラム領域６０２を更新することで、実行対象プログラムａ，ｂ，ｃの配置に関する制限を最小限に抑制することができる。【００９７】
換言すれば、たとえば、図１に示すように、仮想初期起動プログラムがないと、Ｖｅｃｔｏｒ領域１１３を更新しない場合は、各実行対象プログラムａ，ｂ，ｃを保存する領域に余裕を持たせた配置としなければならない。一方で、Ｖｅｃｔｏｒ領域１１３を更新用プログラムによって更新する場合は、プログラムの更新中に電源障害などが発生すると、Ｖｅｃｔｏｒ領域１１３に不具合が発生してしまい、プログラム実行マイコン１０１が動作しなくなってしまう。【００９８】
（ワンチップマイコン４００の処理の内容）
つぎに、図７〜図９を用いて、本実施例にかかるワンチップマイコン４００の処理の内容について説明する。図７は、本実施例にかかるワンチップマイコンにおける更新用プログラムの受け付け処理手順を示すフローチャートである。図７のフローチャートにおいて、まず、入出力Ｉ／Ｆ４０４によって、更新用プログラム送信側マイコン５０２からプログラム更新準備完了通知を受け付けたか否かを判断する（ステップＳ７０１）。プログラム更新準備完了通知は、たとえば、更新用プログラム送信側マイコン５０２がフラッシュメモリ５０３やその他外部機器から更新用プログラムを取得した場合、更新用プログラム送信側マイコン５０２からワンチップマイコン４００に送信されることとしてもよい。【００９９】
ステップＳ７０１において、プログラム更新準備完了通知を受け付けるのを待って、受け付けた場合（ステップＳ７０１：Ｙｅｓ）は、ワンチップマイコン４００は、プログラム更新モードへ移行し（ステップＳ７０２）、ＣＰＵ４０１によって、更新用プログラム保存領域５１２を初期化する（ステップＳ７０３）。更新用プログラム保存領域５１２の初期化は、たとえば、更新用プログラム保存領域５１２の容量を空きとすることでもよく、すなわち、更新用プログラム保存領域５１２に中途半端なデータがあった場合は消去することとしてもよい。【０１００】
つぎに、入出力Ｉ／Ｆ４０４によって、ステップＳ７０３において更新用プログラム保存領域５１２が初期化されたら、更新用プログラム送信側マイコン５０２に対して、受け入れ可能通知を出力する（ステップＳ７０４）。【０１０１】
そして、入出力Ｉ／Ｆ４０４によって、ステップＳ７０４において出力された受け入れ可能通知に応じて更新用プログラム送信側マイコン５０２から出力される、更新用プログラムのデータをパケット受信する（ステップＳ７０５）。【０１０２】
つぎに、入出力Ｉ／Ｆ４０４によって、ステップＳ７０５においてパケット受信された更新用プログラムのデータについて、更新用プログラム送信側マイコン５０２に対して、パケット受信完了通知を出力する（ステップＳ７０６）。【０１０３】
つづいて、入出力Ｉ／Ｆ４０４によって、更新用プログラムをすべて受信したか否かを判断する（ステップＳ７０７）。更新用プログラムをすべて受信したか否かの判断は、たとえば、ステップＳ７０５においてパケット受信される最後の更新用プログラムのデータに付与されるフラグを受信した場合に、すべて受信したと判断する構成でもよい。【０１０４】
ステップＳ７０７において、更新用プログラムをすべて受信した場合（ステップＳ７０７：Ｙｅｓ）は、ＣＰＵ４０１によって、更新用プログラム保存領域５１２に一時保存される更新用プログラムのチェックサムを確認する（ステップＳ７０８）。チェックサムは、たとえば、複数回に分割されてパケット受信される更新用プログラムが、すべて更新用プログラム保存領域５１２に一時保存されたか否かを判定することとしてもよい。【０１０５】
また、ステップＳ７０７において、更新用プログラムをすべて受信しない場合（ステップＳ７０７：Ｎｏ）は、ステップＳ７０５に戻って処理を繰り返す。【０１０６】
つぎに、ステップＳ７０８においてチェックサムを確認したら、ＣＰＵ４０１によって、有効プログラム情報保存領域５１０に更新用プログラム準備完了状態であることを書き込む（ステップＳ７０９）。更新用プログラム準備完了状態の書き込みは、たとえば、実行対象プログラムの更新準備が完了した旨を示す更新情報を有効プログラム情報保存領域５１０に保存することである。【０１０７】
なお、図７のフローチャートでは説明を省略するが、ステップＳ７０８においてチェックサムが確認できない場合は、エラーとして、再度更新用プログラム送信側マイコン５０２に対して、更新用プログラムを要求することとしてもよい。【０１０８】
そして、入出力Ｉ／Ｆ４０４によって、更新用プログラム送信側マイコン５０２に対してシャットダウン要求を出力する（ステップＳ７１０）。その後、入出力Ｉ／Ｆ４０４によって、更新用プログラム送信側マイコン５０２からステップＳ７１０におけるシャットダウン要求に応じたシャットダウン完了通知を受信して（ステップＳ７１１）、一連の更新用プログラムの受け付け処理を終了する。【０１０９】
つづいて、図８を用いて、本実施例にかかるワンチップマイコン４００の起動処理手順について説明する。図８は、本実施例にかかるワンチップマイコンの起動処理手順を示すフローチャートである。図８のフローチャートにおいて、まず、入出力Ｉ／Ｆ４０４によって、リセットスタートを受け付ける（ステップＳ８０１）。【０１１０】
ステップＳ８０１において、リセットスタートを受け付けると、ＣＰＵ４０１によって、ＩＰＬ領域５１４に保存されたＩＰＬを起動して（ステップＳ８０２）、有効プログラム情報保存領域５１０を参照する（ステップＳ８０３）。【０１１１】
そして、ＣＰＵ４０１によって、ステップＳ８０３において参照された有効プログラム情報保存領域５１０の更新情報より、更新用プログラム準備は完了しているか否かを判断する（ステップＳ８０４）。更新用プログラム準備は、たとえば、有効プログラム情報保存領域５１０に更新用プログラム準備完了状態であることが書き込まれている（たとえば、図７に示したステップＳ７０９）か否かを判断することとしてもよい。【０１１２】
ステップＳ８０４において、更新用プログラム準備が完了している場合（ステップＳ８０４：Ｙｅｓ）は、ＣＰＵ４０１によって、コピープログラムを起動させる（ステップＳ８０５）。コピープログラムは、たとえば、更新用プログラム保存領域５１２に一時保存された更新用プログラムを有効プログラム領域５１３に保存された実行対象プログラムなど各種プログラムに上書き保存するプログラムでもよい。【０１１３】
そして、ステップＳ８０５において起動されたコピープログラムによるコピーが終了するのを待って（ステップＳ８０６：Ｎｏ）、終了した場合（ステップＳ８０６：Ｙｅｓ）は、ＣＰＵ４０１によって、有効プログラム領域５１３にコピーされたプログラムを検証する（ステップＳ８０７）。プログラムの検証は、たとえば、更新用プログラムが実行対象プログラムとして過不足なくコピーされたか否かを確認する構成でもよい。【０１１４】
そして、ステップＳ８０７においてプログラムの検証をおこなったら、ＣＰＵ４０１によって、有効プログラム情報保存領域５１０に通常起動状態であることを書き込んで（ステップＳ８０８）、ステップＳ８０１へ戻って処理を繰り返す。【０１１５】
なお、図８のフローチャートでは説明を省略するが、ステップＳ８０７においてプログラムの検証の結果、実行対象プログラムとして過不足なくコピーされていない場合は、エラーとして、更新用プログラム保存領域５１２からのコピーを再度おこなうこととしてもよい。【０１１６】
また、ステップＳ８０４において、更新用プログラム準備が完了していない場合（ステップＳ８０４：Ｎｏ）は、ＣＰＵ４０１によって、ステップＳ８０３において参照された有効プログラム情報保存領域５１０への書き込みが通常起動状態であるか否かを判断する（ステップＳ８０９）。【０１１７】
ステップＳ８０９において、通常起動状態である場合（ステップＳ８０９：Ｙｅｓ）は、ＣＰＵ４０１によって、有効プログラム領域５１３のプログラムを起動させる（ステップＳ８１０）。【０１１８】
具体的には、たとえば、有効プログラム領域５１３のプログラムの起動は、ＣＰＵ４０１によって、Ｖｅｃｔｏｒ領域５１５を参照して、仮想Ｖｅｃｔｏｒ領域６０１のアドレスを読み込む。そして、ＣＰＵ４０１によって、仮想Ｖｅｃｔｏｒ領域６０１に保存された仮想初期起動プログラムによってアドレスが指定される実行対象プログラムａ，ｂ，ｃを実行することとしてもよい。【０１１９】
また、ステップＳ８０９において、通常起動状態でない場合（ステップＳ８０９：Ｎｏ）は、ステップＳ８０１へ戻って処理を繰り返す。【０１２０】
つぎに、入出力Ｉ／Ｆ４０４によって、割り込み処理を受け付けたか否かを判断する（ステップＳ８１１）。ステップＳ８１１において、割り込み処理を受け付けた場合（ステップＳ８１１：Ｙｅｓ）は、ＣＰＵ４０１によって、割り込み処理をおこなって（ステップＳ８１２）、プログラムが終了したか否かを判断する（ステップＳ８１３）。なお、割り込み処理の詳細は、図９に後述する。【０１２１】
また、ステップＳ８１１において、割り込み処理を受け付けない場合（ステップＳ８１１：Ｎｏ）は、ステップＳ８１３へ移行して、プログラムが終了したか否かを判断する（ステップＳ８１３）。【０１２２】
ステップＳ８１３において、プログラムが終了した場合（ステップＳ８１３：Ｙｅｓ）は、ステップＳ８０１へ戻って処理を繰り返す。また、ステップＳ８１３において、プログラムが終了しない場合（ステップＳ８１３：Ｎｏ）は、ステップＳ８１０へ戻って処理を繰り返す。【０１２３】
つぎに、図９を用いて、本実施例にかかるワンチップマイコン４００における割り込み処理（図８のステップＳ８１２）手順について説明する。図９は、本実施例にかかるワンチップマイコンにおける割り込み処理（図８のステップＳ８１２）手順を示すフローチャートである。図９のフローチャートにおいて、まず、ＣＰＵ４０１によって、仮想Ｖｅｃｔｏｒ領域６０１を参照する（ステップＳ９０１）。【０１２４】
つぎに、ＣＰＵ４０１によって、ステップＳ９０１において参照された仮想Ｖｅｃｔｏｒ領域６０１に保存された仮想初期起動プログラムを起動させて、実行対象プログラム領域６０２を参照する（ステップＳ９０２）。【０１２５】
そして、ＣＰＵ４０１によって、ステップＳ９０２において参照された実行対象プログラム領域６０２に保存されたプログラムの中から実行対象となるプログラムを起動させて（ステップＳ９０３）、一連の割り込み処理を終了する。【０１２６】
以上説明したように、本実施例にかかるワンチップマイコンによれば、更新用プログラム保存領域に保存された更新用プログラムによって実行対象プログラムを更新するため、更新専用の外部機器を用意することなく、適切に実行対象プログラムを更新することができる。【０１２７】
また、有効プログラム情報保存領域に更新用プログラム準備完了状態であることが書き込まれてから、実行対象プログラムを更新する構成であるため、更新用プログラム準備完了状態となる前に電源障害などが発生しても、復旧後にはワンチップマイコンは正常に起動することができる。【０１２８】
さらに、Ｖｅｃｔｏｒ領域の書き換えをおこなわずに、仮想Ｖｅｃｔｏｒ領域を含む有効プログラム領域を更新する構成であるため、更新途中に電源障害などが発生しても、復旧後にはワンチップマイコンは正常に起動することができ、有効プログラム領域の効率的な利用を図ることができる。【０１２９】
なお、本実施の形態で説明した情報処理方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
【図１】
2008041337.tif 000003
【図２】
2008041337.tif 000004
【図３】
2008041337.tif 000005
【図４】
2008041337.tif 000006
【図５】
2008041337.tif 000007
【図６】
2008041337.tif 000008
【図７】
2008041337.tif 000009
【図８】
2008041337.tif 000010
【図９】
2008041337.tif 000011
【手続補正書】
【提出日】平成21年3月11日(2009.3.11)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、実行対象となるプログラムの実行および更新が可能な情報処理装置、情報処理方法、情報処理プログラムおよびコンピュータに読み取り可能な記録媒体に関する。ただし、この発明の利用は、上述した情報処理装置、情報処理方法、情報処理プログラムおよびコンピュータに読み取り可能な記録媒体には限られない。
【背景技術】
【０００２】
従来より、一つのマイコン（マイクロコンピュータ）における制御プログラムを更新する際には、データ設定器などの外部機器を使用して、データの更新をおこなっている。近年では、制御プログラムの更新の際に、他のマイコンから割り込み処理によって更新エラーを起こさないようにするため、制御プログラムの更新中に、他のマイコンからの割り込み処理を禁止する提案がされている（たとえば、下記特許文献１参照。）。
【０００３】
ここで、図１を用いて、実行対象となるプログラムが実行可能に保存されたプログラム実行マイコン（マイクロコンピュータ）におけるプログラムの更新の概要について説明する。図１は、プログラム実行マイコンにおけるプログラムの更新の概要について示す説明図である。
【０００４】
図１において、プログラム更新システム１００は、プログラム実行マイコン１０１と、更新用プログラム送信側マイコン１０２と、フラッシュメモリ１０３と、から構成されている。
【０００５】
プログラム実行マイコン１０１は、バッファ領域１１０と、プログラム領域１１１と、ＩＰＬ（Ｉｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ）領域１１２と、Ｖｅｃｔｏｒ領域１１３と、から構成されている。
【０００６】
バッファ領域１１０は、後述する更新用プログラム送信側マイコン１０２から送信される更新用プログラムを一時的に保存する。更新用プログラムは、たとえば、マイコン間通信によって更新用プログラム送信側マイコン１０２からバッファ領域１１０に送信され、プログラム実行マイコン１０１の実行対象となるプログラムの更新用のプログラムである。
【０００７】
バッファ領域１１０に一時保存された更新用プログラムは、図示しないＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が、後述するＩＰＬ領域１１２を参照することによって、プログラム領域１１１に複製（コピー）される。換言すれば、後述するプログラム領域１１１に保存されたプログラムａ，ｂ，ｃは、更新用プログラムのプログラム領域１１１に複製されることによって更新がおこなわれる構成である。
【０００８】
プログラム領域１１１は、プログラム実行マイコン１０１の実行対象となるプログラムａ，ｂ，ｃを保存する。具体的には、たとえば、プログラム領域１１１は、プログラムａを保存するＡ領域１２１と、プログラムｂを保存するＢ領域１２２と、プログラムｃを保存するＣ領域１２３と、から構成されている。
【０００９】
各プログラムａ，ｂ，ｃは、たとえば、図示しないＣＰＵによって読み込まれて実行される構成でもよい。具体的には、たとえば、プログラムａ，ｂ，ｃは、図示しないＣＰＵが、後述するＶｅｃｔｏｒ領域１１３に格納された、プログラムａ，ｂ，ｃのアドレスを参照することによって実行される。なお、図１の説明では、３つの領域（Ａ領域１２１，Ｂ領域１２２，Ｃ領域１２３）を用いて説明したが、領域の数量および実行対象となるプログラムの数はこれに限るものではない。
【００１０】
ＩＰＬ領域１１２は、リセットスタート時に図示しないＣＰＵによって最初に実行されるプログラムを保存する領域である。具体的には、たとえば、ＩＰＬ領域１１２は、バッファ領域１１０に一時保存された更新用プログラムをプログラム領域１１１に複製するか、プログラム領域１１１に保存された各プログラムａ，ｂ，ｃを実行するかを決定するプログラムを保存する。
【００１１】
Ｖｅｃｔｏｒ領域１１３は、イベント発生時にプログラム実行マイコン１０１の実行対象となるプログラムのアドレスを格納する。具体的には、たとえば、図示しないＣＰＵは、リセットスタート時には、Ｖｅｃｔｏｒ領域１１３を参照してＩＰＬ領域１１２に保存されたプログラムのアドレスを読み込む。また、図示しないＣＰＵは、たとえば、通常起動時には、Ｖｅｃｔｏｒ領域１１３を参照してプログラム領域１１１に保存された各プログラムａ，ｂ，ｃのアドレスを読み込む。
【００１２】
更新用プログラム送信側マイコン１０２は、プログラム実行マイコン１０１に対して、プログラム実行マイコン１０１の実行対象となるプログラムａ，ｂ，ｃの更新用プログラムを送信する。具体的には、たとえば、更新用プログラム送信側マイコン１０２は、フラッシュメモリ１０３が保存している更新用プログラムを読み込んで、読み込んだ更新用プログラムをプログラム実行マイコン１０１に送信する。
【００１３】
フラッシュメモリ１０３は、各種データを保存することができる記録媒体で、図１では、プログラム実行マイコン１０１の実行対象となるプログラムａ，ｂ，ｃの更新用プログラムを保存する。具体的には、たとえば、フラッシュメモリ１０３は、更新用プログラム送信側マイコン１０２に対して、保存している更新用プログラムを出力する。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００４−１１８３６９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
しかしながら、上記従来技術では、マイコンにおける制御プログラムを更新する場合、更新専用の外部機器が必要となるため、マイコンの利用者は、更新専用の外部機器を用意する負担が生じてしまうという問題が一例として挙げられる。
【００１６】
また、更新専用の外部機器を有するマイコンの製造元などで、制御プログラムを更新する場合、マイコンの利用者は、製造元に対するマイコンの送付や受け取りに関する手間が発生するばかりか、更新に要する時間を浪費してしまうという問題が一例として挙げられる。
【００１７】
一方、更新専用の外部機器を用いずに、マイコン間通信などによって受信される更新用プログラムによって、実行対象となるプログラムを更新する場合、書き換え（複製）の途中に電源障害などによって更新動作が中断されると、マイコンが起動できなくなってしまうという問題が一例として挙げられる。
【００１８】
特に、Ｖｅｃｔｏｒ領域に格納された、実行対象となるプログラムのアドレスを書き換える場合、書き換えの途中で更新動作が中断されると、中断復旧後の起動時にＶｅｃｔｏｒ領域を参照できないため、マイコンが起動できなくなってしまうという問題が一例として挙げられる。
【００１９】
また、Ｖｅｃｔｏｒ領域に格納された、実行対象となるプログラムのアドレスを書き換えずに、実行対象となるプログラムだけを更新する場合、Ｖｅｃｔｏｒ領域に格納された、実行対象となるプログラムのアドレスが固定されるため、初期設定によるプログラムの配置を変更できず、汎用性に欠けるとともにプログラム領域の容量を効率的に使用できないという問題が一例として挙げられる。
【課題を解決するための手段】
【００２０】
上述した課題を解決し、目的を達成するため、請求項１の発明にかかる情報処理装置は、  プログラムを保存するメモリおよびプログラムを実行する制御手段を備える情報処理装置であって、前記メモリは、実行対象となるプログラムのアドレスを保存するＶｅｃｔｏｒ領域、リセットスタート時に実行される初期起動プログラムを保存するＩＰＬ領域、実行対象プログラムを保存する実行対象プログラム領域と、リセットスタート時に前記実行対象プログラムを実行させるための仮想初期起動プログラムを保存する仮想Ｖｅｃｔｏｒ領域と、から構成される有効プログラム領域、および前記有効プログラム領域のプログラムを更新するための更新用プログラムを一時保存する更新用プログラム保存領域、を有し、前記制御手段は、リセットスタートを受け付けた場合に、前記Ｖｅｃｔｏｒ領域を参照して前記ＩＰＬ領域の初期起動プログラムを実行して、前記更新用プログラム保存領域に更新用プログラムが不足なく保存されて更新準備が完了しているか否かを判定し、前記更新準備が完了している場合には前記更新用プログラムを前記有効プログラム領域に複製し、前記更新準備が完了していない場合には前記仮想Ｖｅｃｔｏｒ領域の仮想初期起動プログラムを実行して前記実行対象プログラム領域の実行対象プログラムを実行することを特徴とする。
【００２１】
また、請求項２の発明にかかる情報処理方法は、プログラムを保存するメモリを備える情報処理装置が実行する情報処理方法であって、前記メモリは、実行対象となるプログラムのアドレスを保存するＶｅｃｔｏｒ領域、リセットスタート時に実行される初期起動プログラムを保存するＩＰＬ領域、実行対象プログラムを保存する実行対象プログラム領域と、リセットスタート時に前記実行対象プログラムを実行させるための仮想初期起動プログラムを保存する仮想Ｖｅｃｔｏｒ領域と、から構成される有効プログラム領域、および前記有効プログラム領域のプログラムを更新するための更新用プログラムを一時保存する更新用プログラム保存領域、を有し、リセットスタートを受け付けた場合に、前記Ｖｅｃｔｏｒ領域を参照して前記ＩＰＬ領域の初期起動プログラムを実行して、前記更新用プログラム保存領域に更新用プログラムが不足なく保存されて更新準備が完了しているか否かを判定し、前記更新準備が完了している場合には前記更新用プログラムを前記有効プログラム領域に複製し、前記更新準備が完了していない場合には前記仮想Ｖｅｃｔｏｒ領域の仮想初期起動プログラムを実行して前記実行対象プログラム領域の実行対象プログラムを実行する制御工程を含むことを特徴とする。
【００２２】
また、請求項３の発明にかかる情報処理プログラムは、請求項２に記載の情報処理方法をコンピュータに実行させることを特徴とする。
【００２３】
また、請求項４の発明にかかるコンピュータに読み取り可能な記録媒体は、請求項３に記載の情報処理プログラムを記録したことを特徴とする。
【図面の簡単な説明】
【００２４】
【図１】プログラム実行マイコンにおけるプログラムの更新の概要について示す説明図である。
【図２】本実施の形態にかかる情報処理装置の機能的構成の一例を示すブロック図である。
【図３】本実施の形態にかかる情報処理装置の処理の内容を示すフローチャートである。
【図４】本実施例にかかるワンチップマイコンのハードウェア構成の一例を示すブロック図である。
【図５】本実施例にかかるワンチップマイコンにおける実行対象プログラムの更新の概要を示す説明図である。
【図６】本実施例にかかる有効プログラム領域に保存されるプログラムについて示す説明図である。
【図７】本実施例にかかるワンチップマイコンにおける更新用プログラムの受け付け処理手順を示すフローチャートである。
【図８】本実施例にかかるワンチップマイコンの起動処理手順を示すフローチャートである。
【図９】本実施例にかかるワンチップマイコンにおける割り込み処理（図８のステップＳ８１２）手順を示すフローチャートである。
【発明を実施するための形態】
【００２５】
以下に添付図面を参照して、この発明にかかる情報処理装置、情報処理方法、情報処理プログラムおよびコンピュータに読み取り可能な記録媒体の好適な実施の形態を詳細に説明する。
【００２６】
（実施の形態）
（情報処理装置の機能的構成）
図２を用いて、本実施の形態にかかる情報処理装置の機能的構成について説明する。図２は、本実施の形態にかかる情報処理装置の機能的構成の一例を示すブロック図である。
【００２７】
図２において、プログラム実行領域に保存された実行対象プログラムを実行する情報処理装置２００は、更新用プログラム入力部２０１と、一時保存部２０２と、判定部２０３と、生成部２０４と、更新情報保存部２０５と、再稼働情報入力部２０６と、判断部２０７と、更新部２０８と、実行部２０９と、から構成されている。
【００２８】
更新用プログラム入力部２０１は、実行対象プログラムに対する更新用プログラムの入力を受け付ける。具体的には、たとえば、更新用プログラムの入力は、図示しない更新用プログラムが送信可能な外部装置から入力を受け付けることとしてもよい。
【００２９】
更新用プログラムは、たとえば、情報処理装置２００における不図示のメモリ領域などに割り当てられたプログラム実行領域に複製（コピー）されて実行対象プログラムとなる。また、更新用プログラムは、実行対象プログラムとして実行される際に、初期起動プログラムによって実行される仮想初期起動プログラムを含む構成でもよい。具体的には、たとえば、仮想初期起動プログラムは、プログラム実行領域が備える仮想プログラム領域に保存され、初期起動プログラムによって実行される。ここで、初期起動プログラムは、たとえば、情報処理装置１００の再稼働の際に起動されるプログラムである。
【００３０】
さらに、更新用プログラム入力部２０１は、後述する判定部２０３によって判定された結果、更新用プログラムに過不足がある場合、更新用プログラムの出力元に対して取得要求をおこなうことによって更新用プログラムの入力を受け付けることとしてもよい。
【００３１】
一時保存部２０２は、更新用プログラム入力部２０１によって入力された更新用プログラムを一時保存領域に一時保存する。具体的には、たとえば、一時保存部２０２は、情報処理装置２００における不図示のメモリ領域などに割り当てられたバッファ領域など、データの一時保存が可能な領域に更新用プログラムを一時保存することとしてもよい。
【００３２】
判定部２０３は、一時保存部２０２によって一時保存された更新用プログラムに過不足がないか否かを判定する。具体的には、たとえば、判定部２０３は、複数回に分割されて入力される更新用プログラムが、すべて一時保存領域に一時保存されたか否かを判定することとしてもよい。
【００３３】
生成部２０４は、判定部２０３によって判定された結果、更新用プログラムに過不足がない場合、プログラム実行領域に保存された実行対象プログラムの更新準備が完了した旨を示す更新情報を生成する。更新情報は、たとえば、実行対象プログラムの更新準備が完了した旨を示す代わりに、更新準備が完了していない旨を示す情報であってもよい。
【００３４】
更新情報保存部２０５は、生成部２０４によって生成された更新情報を更新情報保存領域に保存する。具体的には、たとえば、更新情報保存部２０５は、情報処理装置２００における不図示のメモリ領域などに割り当てられた更新情報保存領域に更新情報を保存する。なお、更新情報保存部２０５は、生成部２０４によって更新準備が完了した旨を示す更新情報の代わりに、更新準備が完了していない旨を示す情報を保存していてもよい。
【００３５】
再稼働情報入力部２０６は、自装置の再稼働に関する再稼働情報の入力を受け付ける。再稼働情報の入力は、たとえば、リセットスタートの処理要求などの入力であってもよい。
【００３６】
判断部２０７は、再稼働情報入力部２０６によって再稼働情報が入力された場合、初期起動プログラム保存領域に保存された初期起動プログラムを起動させて更新情報を参照することによって、更新準備が完了しているか否かを判断する。具体的には、たとえば、判断部２０７は、情報処理装置２００における不図示のメモリ領域などに割り当てられた初期起動プログラム保存領域に保存された初期起動プログラムを起動させる構成である。
【００３７】
更新部２０８は、判断部２０７によって判断された結果、更新準備が完了している場合、更新用プログラムをプログラム実行領域に複製することによって実行対象プログラムを更新する。具体的には、たとえば、実行対象プログラムの更新は、更新準備が完了している場合、一時保存部２０２によって保存された更新用プログラムを実行対象プログラムに対して上書き保存する構成でもよい。
【００３８】
また、更新部２０８は、たとえば、更新用プログラムを実行対象プログラムに上書きする際、更新用プログラムに含まれる仮想初期起動プログラムを用いて、プログラム実行領域が備える仮想プログラム保存領域の仮想初期起動プログラムもあわせて上書きすることとなる。
【００３９】
また、更新部２０８は、プログラム実行領域に複製した更新用プログラムを検証することによって、実行対象プログラムを実行可能な形式に更新することとしてもよい。具体的には、たとえば、更新用プログラムの検証は、更新用プログラムが実行対象プログラムとして過不足なく複製されたか否かを確認する構成でもよい。
【００４０】
実行部２０９は、判断部２０７によって判断された結果、更新準備が完了していない場合、プログラム実行領域に保存された実行対象プログラムを実行する。具体的には、たとえば、実行部２０９は、仮想初期起動プログラムの実行にしたがって、プログラム実行領域に保存された実行対象プログラムを実行する。すなわち、実行部２０９は、更新準備が完了していない場合、初期起動プログラム保存領域に保存された初期起動プログラムの起動によって実行される仮想初期起動プログラムによって、実行対象プログラムを実行することができる。
【００４１】
換言すれば、初期起動プログラムは、再稼働情報が入力されると起動して、更新準備が完了しているか否かを判断させる。そして、初期起動プログラムは、判断の結果、更新準備が完了している場合は、更新用プログラムを用いて、実行対象プログラムを更新させることとなる。一方、初期起動プログラムは、判断の結果、更新準備が完了していない場合は、仮想プログラム保存領域に保存されている仮想初期起動プログラムを実行させることにより、実行対象プログラムを実行させることとなる。
【００４２】
このように、情報処理装置２００は、実行対象プログラムを更新する場合、仮想プログラム保存領域に保存された仮想初期起動プログラムを、実行対象プログラムとあわせて更新する構成である。また、情報処理装置２００は、初期起動プログラムによって仮想初期起動プログラムを実行させることによって、実行対象プログラムを実行することができる。
【００４３】
したがって、情報処理装置２００は、仮想プログラム保存領域に仮想初期起動プログラムを保存することによって、実行対象プログラムを更新する際に初期起動プログラムを更新しなくても、実行対象プログラムの更新あるいは実行を確実におこなうことができる。換言すれば、実行対象プログラムの更新中に、電源障害などに起因して更新処理に不具合が発生しても、電源復旧時には、再度初期起動プログラムの実行によって、実行対象プログラムの更新あるいは実行をおこなうことができる。
【００４４】
（情報処理装置２００の処理の内容）
つぎに、図３を用いて本実施の形態にかかる情報処理装置２００の処理の内容について説明する。図３は、本実施の形態にかかる情報処理装置の処理の内容を示すフローチャートである。図３のフローチャートにおいて、まず、更新用プログラム入力部２０１によって、更新用プログラムの入力を受け付けたか否かを判断する（ステップＳ３０１）。
【００４５】
ステップＳ３０１において、更新用プログラムの入力を受け付けた場合（ステップＳ３０１：Ｙｅｓ）は、一時保存部２０２によって、一時保存領域にステップＳ３０１において入力された更新用プログラムを一時保存する（ステップＳ３０２）。
【００４６】
また、ステップＳ３０１において、更新用プログラムの入力を受け付けない場合（ステップＳ３０１：Ｎｏ）は、ステップＳ３０６へ移行して、再稼働情報入力部２０６によって、再稼働情報の入力を受け付けたか否かを判断する（ステップＳ３０６）。
【００４７】
つぎに、判定部２０３によって、ステップＳ３０２において一時保存された更新用プログラムに過不足がないか否かを判定する（ステップＳ３０３）。
【００４８】
そして、生成部２０４によって、ステップＳ３０３において判定された結果に基づいて、更新情報を生成する（ステップＳ３０４）。更新情報は、たとえば、ステップＳ３０３において判定された結果、更新用プログラムに過不足がない場合、プログラム実行領域に保存された実行対象プログラムの更新準備が完了した旨を示す情報である。また、更新情報は、たとえば、ステップＳ３０３において判定された結果、更新用プログラムに過不足がある場合、更新準備が完了していない旨を示す情報であってもよい。
【００４９】
つづいて、更新情報保存部２０５によって、更新情報保存領域にステップＳ３０４において生成された更新情報を保存する（ステップＳ３０５）。
【００５０】
つぎに、再稼働情報入力部２０６によって、再稼働情報の入力を受け付けたか否かを判断する（ステップＳ３０６）。再稼働情報は、たとえば、リセットスタートの処理要求などであってもよい。
【００５１】
ステップＳ３０６において、再稼働情報の入力を受け付けた場合（ステップＳ３０６：Ｙｅｓ）は、判断部２０７によって、初期起動プログラム保存領域に保存された初期起動プログラムを起動させて更新情報を参照することによって、更新準備が完了しているか否かを判断する（ステップＳ３０７）。
【００５２】
また、ステップＳ３０６において、再稼働情報の入力を受け付けない場合（ステップＳ３０６：Ｎｏ）は、ステップＳ３０１に戻って処理を繰り返す。
【００５３】
ステップＳ３０７において、更新準備が完了している場合（ステップＳ３０７：Ｙｅｓ）は、更新部２０８によって、更新用プログラムをプログラム実行領域に複製することによって実行対象プログラムを更新する（ステップＳ３０８）。そして、実行部２０９によって、ステップＳ３０８において更新された実行対象プログラムを実行して（ステップＳ３０９）、一連の処理を終了する。
【００５４】
また、ステップＳ３０７において、更新準備が完了していない場合（ステップＳ３０７：Ｎｏ）は、ステップＳ３０９へ移行して、実行部２０９によって、プログラム実行領域に保存された実行対象プログラムを実行する（ステップＳ３０９）。そして、一連の処理を終了する。
【００５５】
換言すれば、ステップＳ３０７〜ステップＳ３０９では、更新準備が完了している場合は、実行対象プログラムを更新してから、更新した実行対象プログラムを実行する。また、更新準備が完了していない場合は、実行対象プログラムを更新せずに、プログラム実行領域に保存されている実行対象プログラムを実行することとしてもよい。
【００５６】
以上説明したように、本実施の形態によれば、一時保存部に保存された更新用プログラムによって実行対象プログラムを更新するため、専用の外部機器を用意しなくても実行対象プログラムの更新をおこなうことができる。
【００５７】
また、本実施の形態によれば、更新用プログラムの更新準備が完了してから、実行対象プログラムを更新するため、更新用プログラムの入力途中に電源障害などが発生しても、実行対象プログラムに対する弊害の防止を図ることができる。
【００５８】
また、本実施の形態によれば、仮想初期起動プログラムを含む更新用プログラムによって実行対象プログラムを更新するため、初期起動プログラムの更新をしなくてもよい。したがって、更新途中に電源障害などが発生しても、復旧後には初期起動プログラムによって自装置を起動することができる。
【００５９】
すなわち、本実施の形態によれば、電源障害の復旧後であっても、初期起動プログラムによって実行対象プログラムの更新あるいは実行をおこなうことができる。具体的には、たとえば、本実施の形態によれば、電源障害の復旧後に再稼働情報が入力されると、電源障害によって更新途中であるため、初期起動プログラムによって更新を継続あるいはやり直しすることができる。また、本実施の形態によれば、電源障害があっても更新が終了していれば、初期起動プログラムによって仮想初期起動プログラムを実行させて、実行対象プログラムを実行することができる。
【００６０】
くわえて、実行対象プログラムは、仮想初期起動プログラムによって実行されることとなるため、汎用性に富んだ実行対象プログラムの配置を設計でき、プログラム実行領域の利用の効率化を図ることができる。換言すれば、初期起動プログラムの代わりに、実行対象プログラムとあわせて更新される仮想初期起動プログラムによって、実行対象プログラムを実行するため、初期起動プログラムによって制限される配置ではなく、仮想初期起動プログラムに設定される自由度のある配置を実現できる。
【００６１】
また、本実施の形態によれば、更新用プログラムを検証することによって、実行対象プログラムを実行可能な形式に更新するため、的確な実行対象プログラムの更新を図ることができる。
【実施例】
【００６２】
以下に、本発明の実施例について説明する。本実施例では、たとえば、フラッシュＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）内蔵のワンチップマイコンによって、本発明の情報処理装置を実施した場合の一例について説明する。
【００６３】
（ワンチップマイコンのハードウェア構成）
まず、図４を用いて、本実施例にかかるワンチップマイコンのハードウェア構成について説明する。図４は、本実施例にかかるワンチップマイコンのハードウェア構成の一例を示すブロック図である。
【００６４】
図４において、ワンチップマイコン４００は、ＣＰＵ４０１と、フラッシュＲＯＭ４０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０３と、入出力Ｉ／Ｆ（インターフェース）４０４と、を備えている。また、各構成部４０１〜４０４は、バス４１０によってそれぞれ接続されている。
【００６５】
まず、ＣＰＵ４０１はワンチップマイコン４００の全体の制御を司る。具体的には、たとえば、ＣＰＵ４０１は、フラッシュＲＯＭ４０２に記録されたプログラムを読み込み、ＲＡＭ４０３をワークエリアとして読み込んだプログラムを実行する構成でもよい。
【００６６】
フラッシュＲＯＭ４０２は、ブートプログラムや実行対象となる実行対象プログラムなどの各種プログラムを記録している。詳細は図５を用いて説明するが、フラッシュＲＡＭ４０２は、たとえば、各種プログラムを書き換え可能に記録し、電源を切ってもデータが消えない不揮発性半導体メモリなどである。
【００６７】
ＲＡＭ４０３は、ＣＰＵ４０１のワークエリアとして使用される。具体的には、たとえば、ＲＡＭ４０３は、データの書き込みと読み出しが随時可能な半導体メモリでもよく、ＣＰＵ４０１によって読み込まれたプログラムを実行するためのワークエリアとなる。
【００６８】
入出力Ｉ／Ｆ４０４は、図示しない外部機器に接続され、ワンチップマイコン４００とＣＰＵ４０１とのインターフェースとして機能する。入出力Ｉ／Ｆ４０４は、さらに、有線あるいは無線などを介してインターネットなどの通信網に接続され、この通信網とＣＰＵ４０１とのインターフェースとしても機能する。
【００６９】
また、詳細は図５に後述するが、入出力Ｉ／Ｆ４０４は、ワンチップマイコン４００の外部に接続されたマイコンから、マイコン間通信によってフラッシュＲＯＭ４０２に記録された実行対象プログラムに対する更新用プログラムの入力を受け付けることとしてもよい。
【００７０】
なお、図４では説明を省略したが、本実施例にかかるワンチップマイコン４００は、ＣＰＵ４０１、フラッシュＲＯＭ４０２、ＲＡＭ４０３、入出力Ｉ／Ｆ４０４のほかに、タイマ、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）ドライバ、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｏｒｏｌｌｅｒ）、Ａ／Ｄ（Ａｎａｌｏｇ／Ｄｉｇｉｔａｌ）コンバータなどの周辺機能を備えていてもよい。
【００７１】
なお、実施の形態にかかる情報処理装置２００の機能的構成のうち、更新用プログラム入力部２０１や再稼働情報入力部２０６は入出力Ｉ／Ｆ４０４によって、一時保存部２０２や判定部２０３や生成部２０４や更新情報保存部２０５や判断部２０７や更新部２０８や実行部２０９はＣＰＵ４０１がフラッシュＲＯＭ４０２やＲＡＭ４０３に記録された各種プログラムを実行することによって、それぞれその機能を実現する。
【００７２】
（ワンチップマイコン４００における実行対象プログラムの更新の概要）
つぎに、図５を用いて、本実施例にかかるワンチップマイコン４００における実行対象プログラムの更新の概要について説明する。図５は、本実施例にかかるワンチップマイコンにおける実行対象プログラムの更新の概要を示す説明図である。
【００７３】
図５において、プログラム更新システム５００は、ワンチップマイコン４００と、更新用プログラム送信側マイコン５０２と、フラッシュメモリ５０３と、から構成されている。
【００７４】
ワンチップマイコン４００における図４に示したフラッシュＲＯＭ４０２は、有効プログラム情報保存領域５１０と、空き領域５１１と、更新用プログラム保存領域５１２と、有効プログラム領域５１３と、ＩＰＬ領域５１４と、Ｖｅｃｔｏｒ領域５１５と、から構成されている。
【００７５】
有効プログラム情報保存領域５１０は、後述する有効プログラム領域５１３に記録された実行対象プログラムの更新準備が完了した旨を示す更新情報を保存する領域である。具体的には、たとえば、更新情報は、後述する更新用プログラム保存領域５１２に、更新用プログラム送信側マイコン５０２から複数回に分割されて入力される更新用プログラムに過不足がない場合、更新準備が完了したこととする情報でもよい。
【００７６】
また、更新情報は、たとえば、実行対象プログラムの更新準備が完了した旨を示す代わりに、更新準備が完了していない旨を示す情報であってもよい。
【００７７】
空き領域５１１は、本実施例におけるフラッシュＲＯＭ４０２の未使用領域であり、初期設定によって変更することができる。
【００７８】
更新用プログラム保存領域５１２は、後述する更新用プログラム送信側マイコン５０２から送信される更新用プログラムを一時的に保存する領域である。更新用プログラムは、たとえば、マイコン間通信によって更新用プログラム送信側マイコン５０２から図示しない入出力Ｉ／Ｆ４０４を介して入力され、ワンチップマイコン４００の実行対象となる実行対象プログラムの更新用のプログラムである。
【００７９】
また、更新用プログラムは、たとえば、図示しないＣＰＵ４０１によって有効プログラム情報保存領域５１０に保存された更新情報が参照されて更新準備が完了している場合に、有効プログラム領域５１３に複製（コピー）される。換言すれば、更新用プログラムは、たとえば、ＣＰＵ４０１によって実行対象プログラムに対して上書き保存され、その実行対象プログラムが更新されることとなる。
【００８０】
このように、更新情報を参照して実行対象プログラムの更新をおこなう構成とすれば、更新用プログラムが不完全な状態で実行対象プログラムを更新して不具合を引き起こすことを防ぐことができる。すなわち、電源障害など、何らかの障害によって更新用プログラムの一時保存がストップしてしまった場合、リセットスタートによってストップした時点の更新用プログラムによって中途半端な状態の実行対象プログラムの更新はおこなわずに、一つ前の手順に戻って、更新用プログラムの一時保存を開始することができる。
【００８１】
また、更新用プログラムは、実行対象プログラムとして実行される際に、初期起動プログラムによって実行される仮想初期起動プログラムを含む構成でもよい。初期起動プログラムは、たとえば、再稼働（リセットスタート）の際に起動されるプログラムである。
【００８２】
有効プログラム領域５１３は、ワンチップマイコン４００の実行対象となる実行対象プログラムを保存する領域である。詳細は図６を用いて説明するが、有効プログラム領域５１３に保存された実行対象プログラムは、複数でもよく、図示しないＣＰＵ４０１に読み込まれて実行されることとしてもよい。
【００８３】
また、有効プログラム領域５１３に更新用プログラムが複製された場合、ＣＰＵ４０１は、複製された更新用プログラムを検証することによって、実行対象プログラムを実行可能な形式に更新することとしてもよい。具体的には、たとえば、更新用プログラムの検証は、更新用プログラムが実行対象プログラムとして過不足なく複製されたか否かを確認する構成でもよい。
【００８４】
ＩＰＬ領域５１４は、リセットスタート時に図示しないＣＰＵ４０１によって最初に実行される初期起動プログラムを保存する領域である。具体的には、たとえば、ＩＰＬ領域５１４は、更新用プログラム保存領域５１２に一時保存された更新用プログラムを有効プログラム領域５１３に複製するか、有効プログラム領域５１３に保存された各実行対象プログラムを実行するかを決定するプログラムを保存する。
【００８５】
Ｖｅｃｔｏｒ領域５１５は、イベント発生時にワンチップマイコン４００の実行対象となるプログラムのアドレスを格納する。具体的には、たとえば、図示しないＣＰＵ４０１は、リセットスタート時には、Ｖｅｃｔｏｒ領域５１５を参照してＩＰＬ領域５１４に保存されたプログラムのアドレスを読み込む。また、ＣＰＵ４０１は、たとえば、通常起動時には、Ｖｅｃｔｏｒ領域５１５を参照して有効プログラム領域５１３に保存された各実行対象プログラムのアドレスを読み込むこととしてもよい。
【００８６】
このように、ＩＰＬ領域５１４およびＶｅｃｔｏｒ領域５１５に保存されたデータは、更新用プログラムによって書き換えをおこなわないため、更新用プログラムの一時保存中や、実行対象プログラムの更新中に障害が発生しても、リセットスタートによって、ＣＰＵ４０１がＩＰＬ領域５１４およびＶｅｃｔｏｒ領域５１５に保存されたデータを参照すれば、ワンチップマイコン４００の動作を正常に再開することができる。
【００８７】
更新用プログラム送信側マイコン５０２は、ワンチップマイコン４００に対して、ワンチップマイコン４００の実行対象となる実行対象プログラムの更新用プログラムを送信する。具体的には、たとえば、更新用プログラム送信側マイコン５０２は、フラッシュメモリ５０３が保存している更新用プログラムを読み込んで、読み込んだ更新用プログラムをワンチップマイコン４００に送信する。
【００８８】
フラッシュメモリ５０３は、各種データを保存することができる記録媒体で、図５では、ワンチップマイコン４００の実行対象となる実行対象プログラムの更新用プログラムを保存する。具体的には、たとえば、フラッシュメモリ５０３は、更新用プログラム送信側マイコン５０２に対して、保存している更新用プログラムを出力する。
【００８９】
ここで、図６を用いて、有効プログラム領域５１３に保存されるプログラムについて説明する。図６は、本実施例にかかる有効プログラム領域に保存されるプログラムについて示す説明図である。
【００９０】
図６において、有効プログラム領域５１３は、仮想初期起動プログラムを保存する仮想Ｖｅｃｔｏｒ領域６０１と、実行対象となる実行対象プログラムａ，ｂ，ｃを保存する実行対象プログラム領域６０２と、から構成されている。
【００９１】
仮想Ｖｅｃｔｏｒ領域６０１に保存された仮想初期起動プログラムは、リセットスタート時に、通常起動である場合に図示しないＣＰＵ４０１によって読み込まれる。仮想初期起動プログラムは、たとえば、通常起動時に実行対象となる実行対象プログラムａ，ｂ，ｃを実行させるプログラムで、ＣＰＵ４０１に対して、実行対象プログラム領域６０２に保存された実行対象プログラムａ，ｂ，ｃのアドレスを指定する構成でもよい。
【００９２】
具体的には、たとえば、ＣＰＵ４０１は、リセットスタート時に、Ｖｅｃｔｏｒ領域５１５を参照してＩＰＬ領域５１４に保存されたプログラムのアドレスを読み込むことによって、更新用プログラムの複製（実行対象プログラムの更新）、あるいは、実行対象プログラムを実行する。
【００９３】
より具体的には、たとえば、ＣＰＵ４０１は、有効プログラム情報保存領域５１０に保存された更新情報に基づいて、更新用プログラムの複製、あるいは、実行対象プログラムの実行を選択し、実行対象プログラムを実行する場合、Ｖｅｃｔｏｒ領域５１５を参照して、仮想Ｖｅｃｔｏｒ領域６０１のアドレスを読み込む。
【００９４】
そして、ＣＰＵ４０１は、仮想Ｖｅｃｔｏｒ領域６０１に保存された仮想初期起動プログラムによってアドレスが指定される実行対象プログラムａ，ｂ，ｃを実行することとしてもよい。
【００９５】
このように、ＩＰＬ領域５１４およびＶｅｃｔｏｒ領域５１５は更新せずに、有効プログラム領域５１３における仮想初期起動プログラムを保存する仮想Ｖｅｃｔｏｒ領域６０１および実行対象プログラム領域６０２を更新することで、実行対象プログラムａ，ｂ，ｃの配置に関する制限を最小限に抑制することができる。
【００９６】
換言すれば、たとえば、図１に示すように、仮想初期起動プログラムがないと、Ｖｅｃｔｏｒ領域１１３を更新しない場合は、各実行対象プログラムａ，ｂ，ｃを保存する領域に余裕を持たせた配置としなければならない。一方で、Ｖｅｃｔｏｒ領域１１３を更新用プログラムによって更新する場合は、プログラムの更新中に電源障害などが発生すると、Ｖｅｃｔｏｒ領域１１３に不具合が発生してしまい、プログラム実行マイコン１０１が動作しなくなってしまう。
【００９７】
（ワンチップマイコン４００の処理の内容）
つぎに、図７〜図９を用いて、本実施例にかかるワンチップマイコン４００の処理の内容について説明する。図７は、本実施例にかかるワンチップマイコンにおける更新用プログラムの受け付け処理手順を示すフローチャートである。図７のフローチャートにおいて、まず、入出力Ｉ／Ｆ４０４によって、更新用プログラム送信側マイコン５０２からプログラム更新準備完了通知を受け付けたか否かを判断する（ステップＳ７０１）。プログラム更新準備完了通知は、たとえば、更新用プログラム送信側マイコン５０２がフラッシュメモリ５０３やその他外部機器から更新用プログラムを取得した場合、更新用プログラム送信側マイコン５０２からワンチップマイコン４００に送信されることとしてもよい。
【００９８】
ステップＳ７０１において、プログラム更新準備完了通知を受け付けるのを待って、受け付けた場合（ステップＳ７０１：Ｙｅｓ）は、ワンチップマイコン４００は、プログラム更新モードへ移行し（ステップＳ７０２）、ＣＰＵ４０１によって、更新用プログラム保存領域５１２を初期化する（ステップＳ７０３）。更新用プログラム保存領域５１２の初期化は、たとえば、更新用プログラム保存領域５１２の容量を空きとすることでもよく、すなわち、更新用プログラム保存領域５１２に中途半端なデータがあった場合は消去することとしてもよい。
【００９９】
つぎに、入出力Ｉ／Ｆ４０４によって、ステップＳ７０３において更新用プログラム保存領域５１２が初期化されたら、更新用プログラム送信側マイコン５０２に対して、受け入れ可能通知を出力する（ステップＳ７０４）。
【０１００】
そして、入出力Ｉ／Ｆ４０４によって、ステップＳ７０４において出力された受け入れ可能通知に応じて更新用プログラム送信側マイコン５０２から出力される、更新用プログラムのデータをパケット受信する（ステップＳ７０５）。
【０１０１】
つぎに、入出力Ｉ／Ｆ４０４によって、ステップＳ７０５においてパケット受信された更新用プログラムのデータについて、更新用プログラム送信側マイコン５０２に対して、パケット受信完了通知を出力する（ステップＳ７０６）。
【０１０２】
つづいて、入出力Ｉ／Ｆ４０４によって、更新用プログラムをすべて受信したか否かを判断する（ステップＳ７０７）。更新用プログラムをすべて受信したか否かの判断は、たとえば、ステップＳ７０５においてパケット受信される最後の更新用プログラムのデータに付与されるフラグを受信した場合に、すべて受信したと判断する構成でもよい。
【０１０３】
ステップＳ７０７において、更新用プログラムをすべて受信した場合（ステップＳ７０７：Ｙｅｓ）は、ＣＰＵ４０１によって、更新用プログラム保存領域５１２に一時保存される更新用プログラムのチェックサムを確認する（ステップＳ７０８）。チェックサムは、たとえば、複数回に分割されてパケット受信される更新用プログラムが、すべて更新用プログラム保存領域５１２に一時保存されたか否かを判定することとしてもよい。
【０１０４】
また、ステップＳ７０７において、更新用プログラムをすべて受信しない場合（ステップＳ７０７：Ｎｏ）は、ステップＳ７０５に戻って処理を繰り返す。
【０１０５】
つぎに、ステップＳ７０８においてチェックサムを確認したら、ＣＰＵ４０１によって、有効プログラム情報保存領域５１０に更新用プログラム準備完了状態であることを書き込む（ステップＳ７０９）。更新用プログラム準備完了状態の書き込みは、たとえば、実行対象プログラムの更新準備が完了した旨を示す更新情報を有効プログラム情報保存領域５１０に保存することである。
【０１０６】
なお、図７のフローチャートでは説明を省略するが、ステップＳ７０８においてチェックサムが確認できない場合は、エラーとして、再度更新用プログラム送信側マイコン５０２に対して、更新用プログラムを要求することとしてもよい。
【０１０７】
そして、入出力Ｉ／Ｆ４０４によって、更新用プログラム送信側マイコン５０２に対してシャットダウン要求を出力する（ステップＳ７１０）。その後、入出力Ｉ／Ｆ４０４によって、更新用プログラム送信側マイコン５０２からステップＳ７１０におけるシャットダウン要求に応じたシャットダウン完了通知を受信して（ステップＳ７１１）、一連の更新用プログラムの受け付け処理を終了する。
【０１０８】
つづいて、図８を用いて、本実施例にかかるワンチップマイコン４００の起動処理手順について説明する。図８は、本実施例にかかるワンチップマイコンの起動処理手順を示すフローチャートである。図８のフローチャートにおいて、まず、入出力Ｉ／Ｆ４０４によって、リセットスタートを受け付ける（ステップＳ８０１）。
【０１０９】
ステップＳ８０１において、リセットスタートを受け付けると、ＣＰＵ４０１によって、ＩＰＬ領域５１４に保存されたＩＰＬを起動して（ステップＳ８０２）、有効プログラム情報保存領域５１０を参照する（ステップＳ８０３）。
【０１１０】
そして、ＣＰＵ４０１によって、ステップＳ８０３において参照された有効プログラム情報保存領域５１０の更新情報より、更新用プログラム準備は完了しているか否かを判断する（ステップＳ８０４）。更新用プログラム準備は、たとえば、有効プログラム情報保存領域５１０に更新用プログラム準備完了状態であることが書き込まれている（たとえば、図７に示したステップＳ７０９）か否かを判断することとしてもよい。
【０１１１】
ステップＳ８０４において、更新用プログラム準備が完了している場合（ステップＳ８０４：Ｙｅｓ）は、ＣＰＵ４０１によって、コピープログラムを起動させる（ステップＳ８０５）。コピープログラムは、たとえば、更新用プログラム保存領域５１２に一時保存された更新用プログラムを有効プログラム領域５１３に保存された実行対象プログラムなど各種プログラムに上書き保存するプログラムでもよい。
【０１１２】
そして、ステップＳ８０５において起動されたコピープログラムによるコピーが終了するのを待って（ステップＳ８０６：Ｎｏ）、終了した場合（ステップＳ８０６：Ｙｅｓ）は、ＣＰＵ４０１によって、有効プログラム領域５１３にコピーされたプログラムを検証する（ステップＳ８０７）。プログラムの検証は、たとえば、更新用プログラムが実行対象プログラムとして過不足なくコピーされたか否かを確認する構成でもよい。
【０１１３】
そして、ステップＳ８０７においてプログラムの検証をおこなったら、ＣＰＵ４０１によって、有効プログラム情報保存領域５１０に通常起動状態であることを書き込んで（ステップＳ８０８）、ステップＳ８０１へ戻って処理を繰り返す。
【０１１４】
なお、図８のフローチャートでは説明を省略するが、ステップＳ８０７においてプログラムの検証の結果、実行対象プログラムとして過不足なくコピーされていない場合は、エラーとして、更新用プログラム保存領域５１２からのコピーを再度おこなうこととしてもよい。
【０１１５】
また、ステップＳ８０４において、更新用プログラム準備が完了していない場合（ステップＳ８０４：Ｎｏ）は、ＣＰＵ４０１によって、ステップＳ８０３において参照された有効プログラム情報保存領域５１０への書き込みが通常起動状態であるか否かを判断する（ステップＳ８０９）。
【０１１６】
ステップＳ８０９において、通常起動状態である場合（ステップＳ８０９：Ｙｅｓ）は、ＣＰＵ４０１によって、有効プログラム領域５１３のプログラムを起動させる（ステップＳ８１０）。
【０１１７】
具体的には、たとえば、有効プログラム領域５１３のプログラムの起動は、ＣＰＵ４０１によって、Ｖｅｃｔｏｒ領域５１５を参照して、仮想Ｖｅｃｔｏｒ領域６０１のアドレスを読み込む。そして、ＣＰＵ４０１によって、仮想Ｖｅｃｔｏｒ領域６０１に保存された仮想初期起動プログラムによってアドレスが指定される実行対象プログラムａ，ｂ，ｃを実行することとしてもよい。
【０１１８】
また、ステップＳ８０９において、通常起動状態でない場合（ステップＳ８０９：Ｎｏ）は、ステップＳ８０１へ戻って処理を繰り返す。
【０１１９】
つぎに、入出力Ｉ／Ｆ４０４によって、割り込み処理を受け付けたか否かを判断する（ステップＳ８１１）。ステップＳ８１１において、割り込み処理を受け付けた場合（ステップＳ８１１：Ｙｅｓ）は、ＣＰＵ４０１によって、割り込み処理をおこなって（ステップＳ８１２）、プログラムが終了したか否かを判断する（ステップＳ８１３）。なお、割り込み処理の詳細は、図９に後述する。
【０１２０】
また、ステップＳ８１１において、割り込み処理を受け付けない場合（ステップＳ８１１：Ｎｏ）は、ステップＳ８１３へ移行して、プログラムが終了したか否かを判断する（ステップＳ８１３）。
【０１２１】
ステップＳ８１３において、プログラムが終了した場合（ステップＳ８１３：Ｙｅｓ）は、ステップＳ８０１へ戻って処理を繰り返す。また、ステップＳ８１３において、プログラムが終了しない場合（ステップＳ８１３：Ｎｏ）は、ステップＳ８１０へ戻って処理を繰り返す。
【０１２２】
つぎに、図９を用いて、本実施例にかかるワンチップマイコン４００における割り込み処理（図８のステップＳ８１２）手順について説明する。図９は、本実施例にかかるワンチップマイコンにおける割り込み処理（図８のステップＳ８１２）手順を示すフローチャートである。図９のフローチャートにおいて、まず、ＣＰＵ４０１によって、仮想Ｖｅｃｔｏｒ領域６０１を参照する（ステップＳ９０１）。
【０１２３】
つぎに、ＣＰＵ４０１によって、ステップＳ９０１において参照された仮想Ｖｅｃｔｏｒ領域６０１に保存された仮想初期起動プログラムを起動させて、実行対象プログラム領域６０２を参照する（ステップＳ９０２）。
【０１２４】
そして、ＣＰＵ４０１によって、ステップＳ９０２において参照された実行対象プログラム領域６０２に保存されたプログラムの中から実行対象となるプログラムを起動させて（ステップＳ９０３）、一連の割り込み処理を終了する。
【０１２５】
以上説明したように、本実施例にかかるワンチップマイコンによれば、更新用プログラム保存領域に保存された更新用プログラムによって実行対象プログラムを更新するため、更新専用の外部機器を用意することなく、適切に実行対象プログラムを更新することができる。
【０１２６】
また、有効プログラム情報保存領域に更新用プログラム準備完了状態であることが書き込まれてから、実行対象プログラムを更新する構成であるため、更新用プログラム準備完了状態となる前に電源障害などが発生しても、復旧後にはワンチップマイコンは正常に起動することができる。
【０１２７】
さらに、Ｖｅｃｔｏｒ領域の書き換えをおこなわずに、仮想Ｖｅｃｔｏｒ領域を含む有効プログラム領域を更新する構成であるため、更新途中に電源障害などが発生しても、復旧後にはワンチップマイコンは正常に起動することができ、有効プログラム領域の効率的な利用を図ることができる。
【０１２８】
なお、本実施の形態で説明した情報処理方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
【符号の説明】
【０１２９】
２００  情報処理装置
２０１  更新用プログラム入力部
２０２  一時保存部
２０３  判定部
２０４  生成部
２０５  更新情報保存部
２０６  再稼働情報入力部
２０７  判断部
２０８  更新部
２０９  実行部
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プログラムを保存するメモリおよびプログラムを実行する制御手段を備える情報処理装置であって、
前記メモリは、
実行対象となるプログラムのアドレスを保存するＶｅｃｔｏｒ領域、
リセットスタート時に実行される初期起動プログラムを保存するＩＰＬ領域、
実行対象プログラムを保存する実行対象プログラム領域と、リセットスタート時に前記実行対象プログラムを実行させるための仮想初期起動プログラムを保存する仮想Ｖｅｃｔｏｒ領域と、から構成される有効プログラム領域、および
前記有効プログラム領域のプログラムを更新するための更新用プログラムを一時保存する更新用プログラム保存領域、
を有し、
前記制御手段は、
リセットスタートを受け付けた場合に、前記Ｖｅｃｔｏｒ領域を参照して前記ＩＰＬ領域の初期起動プログラムを実行して、前記更新用プログラム保存領域に更新用プログラムが不足なく保存されて更新準備が完了しているか否かを判定し、
前記更新準備が完了している場合には前記更新用プログラムを前記有効プログラム領域に複製し、前記更新準備が完了していない場合には前記仮想Ｖｅｃｔｏｒ領域の仮想初期起動プログラムを実行して前記実行対象プログラム領域の実行対象プログラムを実行することを特徴とする情報処理装置。
【請求項２】
プログラムを保存するメモリを備える情報処理装置が実行する情報処理方法であって、
前記メモリは、
実行対象となるプログラムのアドレスを保存するＶｅｃｔｏｒ領域、
リセットスタート時に実行される初期起動プログラムを保存するＩＰＬ領域、
実行対象プログラムを保存する実行対象プログラム領域と、リセットスタート時に前記実行対象プログラムを実行させるための仮想初期起動プログラムを保存する仮想Ｖｅｃｔｏｒ領域と、から構成される有効プログラム領域、および
前記有効プログラム領域のプログラムを更新するための更新用プログラムを一時保存する更新用プログラム保存領域、
を有し、
リセットスタートを受け付けた場合に、前記Ｖｅｃｔｏｒ領域を参照して前記ＩＰＬ領域の初期起動プログラムを実行して、前記更新用プログラム保存領域に更新用プログラムが不足なく保存されて更新準備が完了しているか否かを判定し、
前記更新準備が完了している場合には前記更新用プログラムを前記有効プログラム領域に複製し、前記更新準備が完了していない場合には前記仮想Ｖｅｃｔｏｒ領域の仮想初期起動プログラムを実行して前記実行対象プログラム領域の実行対象プログラムを実行する制御工程を含むことを特徴とする情報処理方法。
【請求項３】
請求項２に記載の情報処理方法をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項４】
請求項３に記載の情報処理プログラムを記録したことを特徴とするコンピュータに読み取り可能な記録媒体。
【国際調査報告】
2008041337.tif 000012
2008041337.tif 000013
2008041337.tif 000014
2008041337.tif 000015