(57)【要約】【課題】書換プログラム専用のメモリを用意する必要がなく、且つ書換プログラムの配置位置によるアドレス管理の煩わしさを低減するのに好適な制御プログラム書換システム、書換プログラム及び制御プログラム書換方法、並びに情報処理装置、情報処理装置制御プログラム及び情報処理装置制御方法を提供する。【解決手段】デバイス１０を、マイクロプロセッサ１０ａと、制御プログラム及び当該制御プログラムの書換処理を行うための書換プログラムを格納するプログラム格納用メモリ１０ｂと、を含んだ構成とし、前記書換プログラムは、プログラム格納用メモリ１０ｂにおける、書換用の制御プログラムにおける所定数値のみで記述されたコードのアドレス領域（マイクロプロセッサ１０ａのブートアドレス領域に対応）に対しては、データの消去及びデータの書き込みを行わないようにした。【選択図】図２
2008003668.tif 000002
【特許請求の範囲】
【請求項１】
プログラム格納用メモリに格納されたプログラムを実行するプロセッサと、
所定デバイスの動作を制御する制御プログラムを書き換えるための書換プログラムが前記プロセッサに対応するブートアドレス領域に格納され、且つ前記ブートアドレス領域以外のアドレス領域に前記制御プログラムが格納された前記プログラム格納用メモリと、
前記プロセッサに、前記制御プログラムの書換指示命令を与える書換指示命令手段と、
前記ブートアドレス領域に係る情報を含む書換用の制御プログラムを入力する制御プログラム入力手段と、を備え、
前記プロセッサは、前記書換指示命令手段によって与えられた書換指示命令に応じて、前記プログラム格納用メモリのブートアドレス領域に格納された前記書換プログラムを実行し、
前記書換プログラムは、前記制御プログラム入力手段によって入力された前記書換用の制御プログラムに含まれるブートアドレス領域の情報に基づき、前記プログラム格納用メモリの前記ブートアドレス領域に格納された前記書換プログラムを保持した状態で、当該ブートアドレス領域以外のアドレス領域に格納された制御プログラムを前記書換用の制御プログラムに書き換える書換ステップを前記プロセッサに実行させるためのプログラムを含むことを特徴とする制御プログラム書換システム。
【請求項２】
前記書換プログラムは、
前記プログラム格納用メモリの前記ブートアドレス領域以外のそれぞれ異なるアドレス領域に、第１〜第３チェック情報をそれぞれ別々に書き込むチェック情報書込ステップと、
前記プログラム格納用メモリの前記ブートアドレス領域以外のアドレス領域に前記第１〜第３チェック情報の照合を行うための照合情報を書き込む照合情報書込ステップと、
前記書き込まれた第１〜第３チェック情報と、前記書き込まれた照合情報とに基づき当該第１〜第３チェック情報が正しく書き込まれているか否かを判定する第１判定ステップと、
前記プログラム格納用メモリにおける前記制御プログラムの格納領域の所定アドレス領域に特定数値が書き込まれているか否かを判定する第２判定ステップと、
前記第１判定ステップ及び前記第２判定ステップの判定結果に基づき、前記第１〜第３チェック情報が正しく書き込まれており且つ特定数値が書き込まれていないと判定されたときに前記制御プログラムの処理に移行し、そうでないときに前記書換プログラムの処理を続行する移行制御ステップとからなる処理を前記プロセッサに実行させるためのプログラムを更に含むことを特徴とする請求項１記載の制御プログラム書換システム。
【請求項３】
前記チェック情報書込ステップにおいては、前記プログラム格納用メモリの前記ブートアドレス領域の開始アドレスの直前のアドレス領域に前記第１チェック情報を書き込み、
前記ブートアドレス領域の終端アドレスの直後のアドレス領域に前記第２チェック情報を書き込み、
前記制御プログラムの格納アドレス領域の終端アドレスに前記第３チェック情報を書き込み、
前記照合情報書込ステップにおいては、前記照合情報を前記第１〜第３チェック情報よりも先に書き込むことを特徴とする請求項２記載の制御プログラム書換システム。
【請求項４】
前記ブートアドレス領域の情報は、前記書換用の制御プログラムにおける前記ブートアドレス領域に対応するコード部分を特定数値とすることで構成されることを特徴とする請求項１乃至請求項３のいずれか１項に記載の制御プログラム書換システム。
【請求項５】
前記所定デバイスと、情報処理装置とを備え、
前記所定デバイスと前記情報処理装置とを互いにデータ通信可能に接続し、
前記所定デバイスは、前記プロセッサと、前記プログラム格納用メモリとを備え、
前記情報処理装置は、前記書換指示命令手段と、前記制御プログラム入力手段と、を備え、
前記制御プログラム入力手段は、前記所定デバイスに前記書換用の制御プログラムを入力することを特徴とする請求項１乃至請求項４のいずれか１項に記載の制御プログラム書換システム。
【請求項６】
所定デバイスの動作を制御する制御プログラムを書き換えるための書換プログラムが対象のプロセッサに対応するブートアドレス領域に格納され、且つ前記ブートアドレス領域以外のアドレス領域に前記制御プログラムが格納された前記プログラム格納用メモリにおける前記制御プログラムを、前記ブートアドレス領域の情報を含む書換用の前記制御プログラムに書き換えるための書換プログラムであって、
前記書換用の制御プログラムに含まれる前記ブートアドレス領域の情報に基づき、前記プログラム格納用メモリの前記ブートアドレス領域に格納された書換プログラムを格納した状態で、当該ブートアドレス領域以外のアドレス領域に格納された制御プログラムを前記書換用の制御プログラムに書き換える処理を前記プロセッサに実行させるためのプログラムを含むことを特徴とする書換プログラム。
【請求項７】
所定デバイスの動作を制御する制御プログラムを書き換えるための書換プログラムが対象のプロセッサに対応するブートアドレス領域に格納され、且つ前記ブートアドレス領域以外のアドレス領域に前記制御プログラムが格納された前記プログラム格納用メモリにおける、前記制御プログラムを書き換えるための制御プログラム書換方法であって、
前記プロセッサに、前記制御プログラムの書換指示命令を与える書換指示命令ステップと、
前記ブートアドレス領域に係る情報を含む書換用の制御プログラムを入力する制御プログラム入力ステップと、を含み、
前記プロセッサは、前記書換指示命令ステップにおいて与えられた書換指示情報に応じて、前記プログラム格納用メモリのブートアドレス領域に格納された前記書換プログラムを実行し、
前記書換プログラムは、前記情報入力ステップにおいて入力された前記書換用の制御プログラムに含まれるブートアドレス領域の情報に基づき、前記プログラム格納用メモリの前記ブートアドレス領域に格納された前記書換プログラムを保持した状態で、当該ブートアドレス領域以外のアドレス領域に格納された制御プログラムを前記書換用の制御プログラムに書き換える処理を前記プロセッサに実行させるためのプログラムを含むことを特徴とする制御プログラム書換方法。
【請求項８】
所定デバイスの有する、プログラム格納用メモリに格納されたプログラムを実行するプロセッサに、前記所定デバイスの動作を制御する制御プログラムを書き換えるための書換プログラムが前記プロセッサに対応するブートアドレス領域に格納され、且つ前記ブートアドレス領域以外のアドレス領域に前記制御プログラムが格納された前記プログラム格納用メモリにおける前記制御プログラムの書換指示命令を与える書換指示命令手段と、
前記ブートアドレス領域に係る情報を含む書換用の前記制御プログラムを前記所定デバイスに入力する制御プログラム入力手段と、を備えることを特徴とする情報処理装置。
【請求項９】
所定デバイスの有する、プログラム格納用メモリに格納されたプログラムを実行するプロセッサに、前記所定デバイスの動作を制御する制御プログラムを書き換えるための書換プログラムが前記プロセッサに対応するブートアドレス領域に格納され、且つ前記ブートアドレス領域以外のアドレス領域に前記制御プログラムが格納された前記プログラム格納用メモリにおける前記制御プログラムの書換指示命令を与える書換指示命令ステップと、
前記ブートアドレス領域に係る情報を含む書換用の前記制御プログラムを前記所定デバイスに入力する制御プログラム入力ステップとからなる処理をコンピュータに実行させるためのプログラムを含むことを特徴とする情報処理装置制御プログラム。
【請求項１０】
所定デバイスの有する、プログラム格納用メモリに格納されたプログラムを実行するプロセッサに、前記所定デバイスの動作を制御する制御プログラムを書き換えるための書換プログラムが前記プロセッサに対応するブートアドレス領域に格納され、且つ前記ブートアドレス領域以外のアドレス領域に前記制御プログラムが格納された前記プログラム格納用メモリにおける前記制御プログラムの書換指示命令を与える書換指示命令ステップと、
前記ブートアドレス領域に係る情報を含む書換用の前記制御プログラムを前記所定デバイスに入力する制御プログラム入力ステップと、を含むことを特徴とする情報処理装置制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム格納用のメモリに格納された、所定デバイスの動作を制御する制御プログラムを書き換える制御プログラム書換システム、書換プログラム及び制御プログラム書換方法、並びに情報処理装置、情報処理装置制御プログラム及び情報処理装置制御方法に関する。
【背景技術】
【０００２】
従来、デバイスの動作を制御するファームウェア等の制御プログラムは、フラッシュＲＯＭの連続するメモリ空間に配置され、ファームウェアの更新等を行う書換プログラム（ブートプログラム）は、フラッシュＲＯＭの先頭アドレスに配置されることが多い。また、最近では、ファームウェアの高性能化、高機能化の傾向が強く、データの書換が可能な、大容量のフラッシュＲＯＭや、複数のフラッシュＲＯＭなどの不揮発性メモリが使用されるようになっている。
【０００３】
フラッシュＲＯＭなどに格納されたファームウェア等のプログラムを書き換える従来技術として、例えば、特許文献１に記載のダウンロード方法および装置などがある。
この従来技術では、ファームウェアを書き換えるためのブートプログラムを格納するフラッシュＲＯＭと、ファームウェアを格納するフラッシュＲＯＭとを別々に用意し、受信したダウンロードデータが書換プログラムであれば、ブートプログラム用のフラッシュＲＯＭの内容を消去して、ダウンロードしたブートプログラムを書き込み、受信したダウンロードデータがファームウェアであれば、ファームウェア用のフラッシュＲＯＭの内容を消去して、ダウンロードしたファームウェアを書き込む。
【０００４】
また、書換プログラム（ブートプログラム）の配置アドレスはプロセッサの種類などによって異なるため、フラッシュＲＯＭの中間のアドレス領域に配置される場合もある。この場合は、フラッシュＲＯＭのメモリ領域が書換プログラムによって分断されることになる。
【特許文献１】特開２００２−７１５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１の従来技術においては、書換プログラム用と、ファームウェア用とで２つのフラッシュＲＯＭが必要となるため、デバイスのコストアップにつながるといった問題があった。
また、上記したように、書換プログラムによって、フラッシュＲＯＭのメモリ領域が分断されてしまうと、メモリ空間が不連続となり、ファームウェアの設計者側は、この書換プログラムのアドレス領域を考慮しながらファームウェアの設計をする必要がある。また、書換プログラムの機能によっては、分断された一方のメモリ領域しか使用することができず、メモリの使用効率が低下するといった問題が生じる恐れがあった。
【０００６】
そこで、本発明は、このような従来の技術の有する未解決の課題に着目してなされたものであって、書換プログラム専用のメモリを用意する必要がなく、且つ書換プログラムの配置位置によるアドレス管理の煩わしさを低減するのに好適な制御プログラム書換システム、書換プログラム及び制御プログラム書換方法、並びに情報処理装置、情報処理装置制御プログラム及び情報処理装置制御方法を提供することを目的としている。
【課題を解決するための手段】
【０００７】
〔形態１〕  上記目的を達成するために、形態１の制御プログラム書換システムは、
プログラム格納用メモリに格納されたプログラムを実行するプロセッサと、
所定デバイスの動作を制御する制御プログラムを書き換えるための書換プログラムが前記プロセッサに対応するブートアドレス領域に格納され、且つ前記ブートアドレス領域以外のアドレス領域に前記制御プログラムが格納された前記プログラム格納用メモリと、
前記プロセッサに、前記制御プログラムの書換指示命令を与える書換指示命令手段と、
前記ブートアドレス領域に係る情報を含む書換用の制御プログラムを入力する制御プログラム入力手段と、を備え、
前記プロセッサは、前記書換指示命令手段によって与えられた書換指示命令に応じて、前記プログラム格納用メモリのブートアドレス領域に格納された前記書換プログラムを実行し、
前記書換プログラムは、前記制御プログラム入力手段によって入力された前記書換用の制御プログラムに含まれるブートアドレス領域の情報に基づき、前記プログラム格納用メモリの前記ブートアドレス領域に格納された前記書換プログラムを保持した状態で、当該ブートアドレス領域以外のアドレス領域に格納された制御プログラムを前記書換用の制御プログラムに書き換える書換ステップを前記プロセッサに実行させるためのプログラムを含むことを特徴としている。
【０００８】
このような構成であれば、書換指示命令手段によって、前記プロセッサに、プログラム格納用メモリに格納された、所定デバイスの動作を制御する制御プログラムの書換指示命令を与えることが可能であり、制御プログラム入力手段によって、前記プロセッサに対応するブートアドレス領域に係る情報を含む書換用の制御プログラムを入力することが可能である。
【０００９】
また、前記プロセッサによって前記書換プログラムを実行することで、前記書換用の制御プログラムに含まれるブートアドレス領域の情報に基づき、前記プログラム格納用メモリの前記ブートアドレス領域に格納された前記書換プログラムを保持した状態で、当該ブートアドレス領域以外のアドレス領域に格納された制御プログラムを前記書換用の制御プログラムに書き換えることが可能である。
【００１０】
従って、制御プログラムの設計者は、プロセッサの種類によって異なるブートアドレス領域に対して制御プログラムのアドレス管理を容易に行うことができると共に、書換プログラムが自身を上書きしないように制御プログラムを書き換えることができるので、ブートアドレス領域がプログラム格納用メモリのアドレス空間を分断するような位置にある場合でも、メモリ空間を効率よく使用することができるという効果が得られる。
【００１１】
ここで、ブートアドレス領域とは、ブートセクタなどとも呼ばれ、プロセッサが起動時に最初にアクセスするメモリ領域であり、このブートアドレス領域に格納されたプログラム（書換プログラム）を実行することで、制御プログラムが実行されたり、制御プログラムの書き換え処理などが実行される。以下、書換プログラムに関する形態、制御プログラム書換方法に関する形態、情報処理装置に関する形態、情報処理装置制御プログラムに関する形態、情報処理装置制御方法に関する形態、発明を実施するための最良の形態の欄などにおいて同様である。
【００１２】
また、制御プログラムは、デバイス（ハードウェア）の基本的な動作制御を行うプログラムであって、例えば、一般にファームウェアと呼ばれているものなどが該当する。以下、書換プログラムに関する形態、制御プログラム書換方法に関する形態、情報処理装置に関する形態、情報処理装置制御プログラムに関する形態、情報処理装置制御方法に関する形態、発明を実施するための最良の形態の欄などにおいて同様である。
【００１３】
〔形態２〕  更に、形態２の制御プログラム書換システムは、形態１の制御プログラム書換システムにおいて、
前記書換プログラムは、
前記プログラム格納用メモリの前記ブートアドレス領域以外のそれぞれ異なるアドレス領域に、第１〜第３チェック情報をそれぞれ別々に書き込むチェック情報書込ステップと、
前記プログラム格納用メモリの前記ブートアドレス領域以外の所定アドレス領域に前記第１〜第３チェック情報の照合を行うための照合情報を書き込む照合情報書込ステップと、
前記書き込まれた第１〜第３チェック情報と、前記書き込まれた照合情報とに基づき当該第１〜第３チェック情報が正しく書き込まれているか否かを判定する第１判定ステップと、
前記プログラム格納用メモリにおける前記制御プログラムの格納領域の所定アドレス領域に特定数値が書き込まれているか否かを判定する第２判定ステップと、
前記第１判定ステップ及び前記第２判定ステップの判定結果に基づき、前記第１〜第３チェック情報が正しく書き込まれており且つ特定数値が書き込まれていないと判定されたときに前記制御プログラムの処理に移行し、そうでないときに前記書換プログラムの処理を続行する移行制御ステップとからなる処理を前記プロセッサに実行させるためのプログラムを更に含むことを特徴としている。
【００１４】
このような構成であれば、前記書換プログラムの実行によって、前記プログラム格納用メモリの前記ブートアドレス領域以外のそれぞれ異なるアドレス領域に、第１〜第３チェック情報をそれぞれ別々に書き込むことが可能であり、前記プログラム格納用メモリの前記ブートアドレス領域以外の所定アドレス領域に前記第１〜第３チェック情報の照合を行うための照合情報を書き込むことが可能である。
【００１５】
また、前記書き込まれた第１〜第３チェック情報と、前記書き込まれた照合情報とに基づき当該第１〜第３チェック情報が正しく書き込まれているか否かを判定することが可能であり、前記プログラム格納用メモリにおける前記制御プログラムの格納領域の所定アドレス領域に特定数値が書き込まれているか否かを判定することが可能であり、前記第１判定ステップ及び前記第２判定ステップの判定結果に基づき、第１〜第３チェック情報が正しく書き込まれていて且つ特定数値が書き込まれていないと判定されたときに前記制御プログラムの処理に移行し、そうでないときに前記書換プログラムの処理を続行することが可能である。
従って、プログラム格納用メモリに格納された制御プログラムが正常に書き換えられたか否かを簡易に確認することができると共に、正常に書き換えられなかった場合でも、その状態を検出し、制御プログラムが正常に書き換えられるまで書換プログラムの処理を続行することができるという効果が得られる。
【００１６】
〔形態３〕  更に、形態３の制御プログラム書換システムは、形態２の制御プログラム書換システムにおいて、
前記チェック情報書込ステップにおいては、前記プログラム格納用メモリの前記ブートアドレス領域の開始アドレスの直前のアドレス領域に前記第１チェック情報を書き込み、
前記ブートアドレス領域の終端アドレスの直後のアドレス領域に前記第２チェック情報を書き込み、
前記制御プログラムの格納アドレス領域の終端アドレスに前記第３チェック情報を書き込み、
前記照合情報書込ステップにおいては、前記照合情報を前記第１〜第３チェック情報よりも先に書き込むことを特徴としている。
【００１７】
このような構成であれば、前記書換プログラムの実行によって、前記プログラム格納用メモリの前記ブートアドレス領域の開始アドレスの直前のアドレスに第１チェック情報を書き込み、前記ブートアドレス領域の終端アドレスの直後のアドレスに第２チェック情報を書き込み、前記制御プログラムの格納アドレス領域の終端アドレスに第３チェック情報を書き込むことが可能であり、前記第１〜第３チェック情報の書き込みより先に、照合情報の書き込みを行うことが可能である。
従って、プログラム格納用メモリに格納された制御プログラムが正常に書き換えられたか否かを簡易且つ確実に確認することができると共に、正常に書き換えられなかった場合でも、その状態を検出し、制御プログラムが正常に書き換えられるまで書換プログラムの処理を続行することができるという効果が得られる。
【００１８】
〔形態４〕  更に、形態３の制御プログラム書換システムは、形態１乃至３のいずれか１に記載の制御プログラム書換システムにおいて、
前記ブートアドレス領域の情報は、前記書換用の制御プログラムにおける前記ブートアドレス領域に対応するコード部分を特定数値とすることで構成されることを特徴としている。
このような構成であれば、制御プログラムの設計者は、制御プログラムにおいて、前記ブートアドレス領域のコード部分を特定数値にするだけで、簡易に書換プログラムを書き換えることなく制御プログラムを書き換えることができるという効果が得られる。
【００１９】
〔形態５〕  更に、形態４の制御プログラム書換システムは、形態１乃至４のいずれか１の制御プログラム書換システムにおいて、
前記所定デバイスと、情報処理装置とを備え、
前記所定デバイスと前記情報処理装置とを互いにデータ通信可能に接続し、
前記所定デバイスは、前記プロセッサと、前記プログラム格納用メモリとを備え、
前記情報処理装置は、前記書換指示命令手段と、前記制御プログラム入力手段と、を備え、
前記制御プログラム入力手段は、前記所定デバイスに前記書換用の制御プログラムを入力することを特徴としている。
【００２０】
このような構成であれば、所定デバイスは、前記プロセッサによって前記書換プログラムを実行することで、前記書換用の制御プログラムに含まれるブートアドレス領域の情報に基づき、前記プログラム格納用メモリの前記ブートアドレス領域に格納された前記書換プログラムを保持した状態で、当該ブートアドレス領域以外のアドレス領域に格納された制御プログラムを前記書換用の制御プログラムに書き換えることが可能である。
【００２１】
また、情報処理装置は、書換指示命令手段によって、前記プロセッサに、プログラム格納用メモリに格納された、所定デバイスの動作を制御する制御プログラムの書換指示命令を与えることが可能であり、制御プログラム入力手段によって、前記プロセッサに対応するブートアドレス領域に係る情報を含む書換用の制御プログラムを前記所定デバイスに入力することが可能である。
これにより、ＰＣなどの情報処理装置に接続された所定デバイスのプログラム格納用メモリに格納された制御プログラムを、当該情報処理装置から所定デバイスに指示を与えることで、更新用の制御プログラムに簡易に書換えることができると共に、形態１の制御プログラム書換システムと同等の作用及び効果が得られる。
【００２２】
〔形態６〕  一方、上記目的を達成するために、形態６の書換プログラムは、
所定デバイスの動作を制御する制御プログラムを書き換えるための書換プログラムが対象のプロセッサに対応するブートアドレス領域に格納され、且つ前記ブートアドレス領域以外のアドレス領域に前記制御プログラムが格納された前記プログラム格納用メモリにおける前記制御プログラムを、前記ブートアドレス領域の情報を含む書換用の前記制御プログラムに書き換えるための書換プログラムであって、
前記書換用の制御プログラムに含まれる前記ブートアドレス領域の情報に基づき、前記プログラム格納用メモリの前記ブートアドレス領域に格納された書換プログラムを格納した状態で、当該ブートアドレス領域以外のアドレス領域に格納された制御プログラムを前記書換用の制御プログラムに書き換える処理を前記プロセッサに実行させるためのプログラムを含むことを特徴としている。
このような構成であれば、プロセッサによって書換プログラムが読み取られ、読み取られたプログラムに従ってプロセッサが処理を実行すると、形態１の制御プログラム書換システムと同等の作用及び効果が得られる。
【００２３】
〔形態７〕  また、上記目的を達成するために、形態７の制御プログラム書換方法は、
所定デバイスの動作を制御する制御プログラムを書き換えるための書換プログラムが対象のプロセッサに対応するブートアドレス領域に格納され、且つ前記ブートアドレス領域以外のアドレス領域に前記制御プログラムが格納された前記プログラム格納用メモリにおける、前記制御プログラムを書き換えるための制御プログラム書換方法であって、
前記プロセッサに、前記制御プログラムの書換指示命令を与える書換指示命令ステップと、
前記ブートアドレス領域に係る情報を含む書換用の制御プログラムを入力する制御プログラム入力ステップと、を含み、
前記プロセッサは、前記書換指示命令ステップにおいて与えられた書換指示情報に応じて、前記プログラム格納用メモリのブートアドレス領域に格納された前記書換プログラムを実行し、
前記書換プログラムは、前記情報入力ステップにおいて入力された前記書換用の制御プログラムに含まれるブートアドレス領域の情報に基づき、前記プログラム格納用メモリの前記ブートアドレス領域に格納された前記書換プログラムを保持した状態で、当該ブートアドレス領域以外のアドレス領域に格納された制御プログラムを前記書換用の制御プログラムに書き換える処理を前記プロセッサに実行させるためのプログラムを含むことを特徴としている。
これにより、形態１の制御プログラム書換システムと同等の効果が得られる。
【００２４】
〔形態８〕  一方、上記目的を達成するために、形態８の情報処理装置は、
所定デバイスの有する、プログラム格納用メモリに格納されたプログラムを実行するプロセッサに、前記所定デバイスの動作を制御する制御プログラムを書き換えるための書換プログラムが前記プロセッサに対応するブートアドレス領域に格納され、且つ前記ブートアドレス領域以外のアドレス領域に前記制御プログラムが格納された前記プログラム格納用メモリにおける前記制御プログラムの書換指示命令を与える書換指示命令手段と、
前記ブートアドレス領域に係る情報を含む書換用の前記制御プログラムを前記所定デバイスに入力する制御プログラム入力手段と、を備えることを特徴としている。
【００２５】
このような構成であれば、書換指示命令手段によって、前記プロセッサに、プログラム格納用メモリに格納された、所定デバイスの動作を制御する制御プログラムの書換指示命令を与えることが可能であり、制御プログラム入力手段によって、前記プロセッサに対応するブートアドレス領域に係る情報を含む書換用の制御プログラムを前記所定デバイスに入力することが可能である。
これにより、ＰＣなどの情報処理装置に接続された所定デバイスのプログラム格納用メモリに格納された制御プログラムを、当該情報処理装置から所定デバイスに指示を与えることで、更新用の制御プログラムに簡易に書換えることができるという効果が得られる。
【００２６】
〔形態９〕  また、上記目的を達成するために、形態９の情報処理装置制御プログラムは、
所定デバイスの有する、プログラム格納用メモリに格納されたプログラムを実行するプロセッサに、前記所定デバイスの動作を制御する制御プログラムを書き換えるための書換プログラムが前記プロセッサに対応するブートアドレス領域に格納され、且つ前記ブートアドレス領域以外のアドレス領域に前記制御プログラムが格納された前記プログラム格納用メモリにおける前記制御プログラムの書換指示命令を与える書換指示命令ステップと、
前記ブートアドレス領域に係る情報を含む書換用の前記制御プログラムを前記所定デバイスに入力する制御プログラム入力ステップとからなる処理をコンピュータに実行させるためのプログラムを含むことを特徴としている。
このような構成であれば、コンピュータによってプログラムが読み取られ、読み取られたプログラムに従ってコンピュータが処理を実行すると、形態８の情報処理装置と同等の作用及び効果が得られる。
【００２７】
〔形態１０〕  また、上記目的を達成するために、形態１０の情報処理装置制御方法は、
所定デバイスの有する、プログラム格納用メモリに格納されたプログラムを実行するプロセッサに、前記所定デバイスの動作を制御する制御プログラムを書き換えるための書換プログラムが前記プロセッサに対応するブートアドレス領域に格納され、且つ前記ブートアドレス領域以外のアドレス領域に前記制御プログラムが格納された前記プログラム格納用メモリにおける前記制御プログラムの書換指示命令を与える書換指示命令ステップと、
前記ブートアドレス領域に係る情報を含む書換用の前記制御プログラムを前記所定デバイスに入力する制御プログラム入力ステップと、を含むことを特徴としている。
これにより、形態８の情報処理装置と同等の効果が得られる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施の形態を図面に基づき説明する。図１〜図７は、本発明に係る制御プログラム書換システム、書換プログラム及び制御プログラム書換方法、並びに情報処理装置、情報処理装置制御プログラム及び情報処理装置制御方法の実施の形態を示す図である。
【００２９】
まず、本発明に係る制御プログラム書換システムの構成を図１に基づき説明する。図１は、本発明に係る制御プログラム書換システム１００の概略構成を示すブロック図である。
制御プログラム書換システム１００は、図１に示すように、自己の備えるメモリに格納された制御プログラム（ファームウェア）によってその動作が制御されるデバイス１０と、アプリケーションソフトを実行してデバイス１０の制御プログラムの書換処理のための各種コマンドを送信したり、デバイス１０からの入力に対応した処理を実行したりするなどデバイス１０を外部から制御する情報処理装置２０とを含んだ構成となっている。
【００３０】
更に、図２に基づき、デバイス１０の詳細な構成を説明する。ここで、図２は、デバイス１０の詳細構成を示すブロック図である。
デバイス１０は、図２に示すように、後述するプログラム格納用メモリ１０ｂに格納された各種プログラムを実行するマイクロプロセッサ１０ａと、制御プログラム及び当該制御プログラムの書換処理を行うための書換プログラムを格納するプログラム格納用メモリ１０ｂと、マイクロプロセッサ１０ａが各種プログラムを実行するのに使用するワークメモリ１０ｃと、外部機器との間のデータの送受信を行うためのデータ通信部１０ｄと、を含んだ構成となっている。
【００３１】
マイクロプロセッサ１０ａは、本実施の形態において、ＲＩＳＣ（Reduced Instruction Set Computer）型のプロセッサであり、プログラム格納用メモリ１０ｂに格納された書換プログラムの一部をワークメモリ１０ｃを用いて実行するようになっている。
プログラム格納用メモリ１０ｂは、本実施の形態において、フラッシュＲＯＭで構成されており、メモリのブロック単位の消去及びメモリへの１バイト単位の書き込みが可能となっている。本実施の形態においては、フラッシュＲＯＭのマイクロプロセッサ１０ａに対応するブートアドレス領域に書換プログラムが格納され、それ以外の領域に制御プログラムが格納される。
【００３２】
ワークメモリ１０ｃは、本実施の形態において、ＳＲＡＭ（Static Random Access Memory）から構成されており、マイクロプロセッサ１０ａが書換プログラムを実行するのに使用するメモリである。
データ通信部１０ｄは、本実施の形態において、ＵＳＢ（Universal Serial Bus）インタフェース（Ｉ／Ｆ）から構成され、ＵＳＢケーブルを介して外部機器とのデータ送受信を行う機能を有したものである。本実施の形態においては、ＵＳＢケーブルを介して、デバイス１０と情報処理装置２０とを接続し、情報処理装置２０からの各種コマンドや書換用（バージョンアップ用）の制御プログラム等を受信する。
【００３３】
更に、図３に基づき、情報処理装置２０の詳細な構成を説明する。ここで、図３は、情報処理装置２０の詳細構成を示すブロック図である。
情報処理装置２０は、図３に示すように、ＯＳ（Operating System）、デバイス１０ａに対応するダウンローダ等の各種アプリケーションプログラムを実行するマイクロプロセッサ２０ａと、各種アプリケーションプログラム等のプログラムデータや、これらプログラムで使用するデータ等を記憶するデータ記憶部２０ｂと、マイクロプロセッサ２０ａが各種プログラムを実行するのに使用するワークメモリ２０ｃと、外部機器との間のデータ送受信を行うためのデータ通信部２０ｄと、を含んだ構成となっている。
【００３４】
マイクロプロセッサ２０ａは、本実施の形態において、ＲＩＳＣ型のプロセッサであり、データ記憶部２０ｂに格納された各種プログラムをワークメモリ２０ｃを用いて実行するようになっている。
データ記憶部２０ｂは、本実施の形態において、磁気記録型の記憶装置の一つであるＨＤＤ（Hard Disk Drive）から構成されており、各種アプリケーションプログラム等のプログラムデータ、及び各種プログラムの実行に必要なデータ等を記憶するようになっている。
【００３５】
ワークメモリ２０ｃは、本実施の形態において、ＳＲＡＭから構成されており、マイクロプロセッサ２０ａが各種プログラムを実行するのに使用するメモリである。
データ通信部２０ｄは、本実施の形態において、ＵＳＢＩ／Ｆから構成され、ＵＳＢケーブルを介して外部機器とのデータ送受信を行う機能を有したものである。本実施の形態においては、デバイス１０とＵＳＢケーブルを介して接続し、デバイス１０に対して各種コマンドや書換用の制御プログラム等を送信する。
【００３６】
更に、図４に基づき、電源投入時におけるデバイス１０の書換プログラムの動作処理の流れを説明する。ここで、図４は、電源投入時におけるデバイス１０の書換プログラムの動作処理を示すフローチャートである。
デバイス１０の電源が投入されると、マイクロプロセッサ１０ａによって、プログラム格納用メモリ１０ｂのブート領域に格納された書換プログラムが実行され、図４に示すように、ステップＳ１００に移行する。
ステップＳ１００では、マイクロプロセッサ１０ａにおいて、プログラム格納用メモリ１０ｂの特定領域に格納された照合情報及びチェック情報を読み出し、これら読み出した照合情報とチェック情報とを比較してステップＳ１０２に移行する。
【００３７】
ステップＳ１０２では、マイクロプロセッサ１０ａにおいて、ステップＳ１００の比較結果に基づき、照合情報とチェック情報とが一致しているか否かを判定し、一致していると判定された場合(Yes)は、ステップＳ１０４に移行し、そうでない場合(No)は、ステップＳ１００に移行する。本実施の形態において、照合情報は、チェック情報と同じ情報を含んでおり、照合情報とチェック情報とがそれぞれ一致することで、制御プログラムが正常に書き込まれていると判断する。
ステップＳ１０４に移行した場合は、マイクロプロセッサ１０ａにおいて、プログラム格納用メモリ１０ｂのメモリ領域における制御プログラムのＢｏｏｔ（ブート）領域の先頭データを読み出してステップＳ１０６に移行する。
【００３８】
ステップＳ１０６では、マイクロプロセッサ１０ａにおいて、ステップＳ１０４で読み出した先頭データが、全て所定数値以外で構成されているか否かを判定し、所定数値以外で構成されていると判定された場合(Yes)は、ステップＳ１０８に移行し、そうでない場合(No)は、ステップＳ１００に移行する。例えば、先頭データが全て１６進数の「０ｘＦＦ」であった場合などに、所定数値で構成されている（ステップＳ１０６の「Ｎｏ」の分岐）と判定する。つまり、プログラム格納用メモリ１０ｂのＢｏｏｔ領域に格納された先頭データが、全て０ｘＦＦであった場合は、制御プログラムの書換処理が実行されていると判断する。一方、照合情報とチェック情報とがそれぞれ一致し、先頭データが全て０ｘＦＦで構成されていなかった場合は、制御プログラムの実行モードであると判断する。
【００３９】
ステップＳ１０８に移行した場合は、マイクロプロセッサ１０ａにおいて、プログラム格納用メモリ１０ｂに格納された制御プログラムを実行して書換プログラムを終了する。
更に、図５に基づき、情報処理装置２０における、ダウンローダによる制御プログラムの書換処理の流れを説明する。ここで、図５は、情報処理装置２０における、ダウンローダによる制御プログラムの書換処理を示すフローチャートである。また、ダウンローダは、デバイス１０の制御プログラムをアップデートする（書き換える）ための、情報処理装置２０側で実行されるアプリケーションソフトである。
【００４０】
制御プログラムの書換処理は、マイクロプロセッサ２０ａによって、データ記憶部２０ｂに記憶されたダウンローダが起動されることで開始され、図５に示すように、まずステップＳ２００に移行する。
ステップＳ２００では、マイクロプロセッサ２０ａにおいて、書換プログラムへの移行コマンドの発行指示があったか否かを判定し、発行指示があったと判定された場合(Yes)は、ステップＳ２０２に移行し、そうでない場合(No)は、指示があるまで判定処理を続行する。
【００４１】
ステップＳ２０２に移行した場合は、マイクロプロセッサ２０ａにおいて、データ通信部２０ｄを介して、デバイス１０に書換プログラムへの移行コマンドを送信してステップＳ２０４に移行する。
ステップＳ２０４では、マイクロプロセッサ２０ａにおいて、データ通信部２０ｄを介してデバイス１０からの正常応答を示すデータを受信したか否かを判定し、受信したと判定された場合(Yes)は、ステップＳ２０６に移行し、そうでない場合(No)は、正常応答を示すデータを受信するか、エラー通知を受信するまで判定処理を続行する。本実施の形態において、エラー通知を受信した場合は、ステップＳ２０２に移行して再度移行コマンドを送信する。
【００４２】
ステップＳ２０６に移行した場合は、マイクロプロセッサ２０ａにおいて、プログラム格納用メモリ１０ｂの指定アドレス（ブロック単位）にデータを書き込むコマンドである、ライトコマンド及び書換用（アップデート用）の制御プログラムのプログラムコードを、データ通信部２０ｄを介してデバイス１０に送信してステップＳ２０８に移行する。
ステップＳ２０８では、マイクロプロセッサ２０ａにおいて、データ通信部２０ｄを介してデバイス１０からの正常応答を示すデータを受信したか否かを判定し、受信したと判定された場合(Yes)は、ステップＳ２１０に移行し、そうでない場合(No)は、正常応答を示すデータを受信するか、エラー通知を受信するまで判定処理を続行する。本実施の形態において、エラー通知を受信した場合は、ステップＳ２０６に移行して再度ライトコマンド及びライトデータ（プログラムコード）を送信する。
【００４３】
ステップＳ２１０に移行した場合は、マイクロプロセッサ２０ａにおいて、プログラム格納用メモリ１０ｂの指定アドレス（ブロック単位）に格納されたデータを読み出すコマンドである、リードコマンドを、データ通信部２０ｄを介してデバイス１０に送信してステップＳ２１２に移行する。
ステップＳ２１２では、マイクロプロセッサ２０ａにおいて、データ通信部２０ｄを介して、デバイス１０のプログラム格納用メモリ１０ｂから読み出されたデータ（主にプログラムコード）を受信したか否かを判定し、受信したと判定された場合(Yes)は、ステップＳ２１４に移行し、そうでない場合(No)は、データを受信するか、エラー通知を受信するまで判定処理を続行する。本実施の形態において、エラー通知を受信した場合は、ステップＳ２１０に移行して再度リードコマンドを送信する。
【００４４】
ステップＳ２１４に移行した場合は、マイクロプロセッサ２０ａにおいて、ステップＳ２１６で受信したデータと、これに対応する書換用の制御プログラムのデータとを比較してステップＳ２１６に移行する。
ステップＳ２１６では、マイクロプロセッサ２０ａにおいて、ステップＳ２１４の比較結果に基づき、ステップＳ２０６で送信したプログラムコードが、デバイス１０において正常に書き換えられたか否かを判定し、正常に書き換えられたと判定された場合(Yes)は、ステップＳ２１８に移行し、そうでない場合(No)は、ステップＳ２０６に移行する。
【００４５】
ステップＳ２１８に移行した場合は、マイクロプロセッサ２０ａにおいて、書換処理が終了したか否かを判定し、終了したと判定された場合(Yes)は、ステップＳ２２０に移行し、そうでない場合(No)は、ステップＳ２０６に移行する。
ステップＳ２２０に移行した場合は、マイクロプロセッサ２０ａにおいて、デバイス１０における書換プログラムを終了させて制御プログラムへと移行させるコマンドである、終了コマンドを、データ通信部２０ｄを介してデバイス１０に送信してステップＳ２００に移行する。
【００４６】
更に、図６に基づき、デバイス１０における書換プログラムの動作処理の流れを説明する。ここで、図６は、デバイス１０における書換プログラムの動作処理を示すフローチャートである。
書換プログラムは、図６に示すように、まずステップＳ３００に移行し、マイクロプロセッサ１０ａにおいて、データ通信部１０ｄを介して、情報処理装置２０からの移行コマンドを受信したか否かを判定し、受信したと判定された場合(Yes)は、ステップＳ３０２に移行し、そうでない場合(No)は、受信するまで判定処理を繰り返す。
【００４７】
ステップＳ３０２に移行した場合は、マイクロプロセッサ１０ａにおいて、制御プログラムを実行中か否かを判定し、実行中であると判定された場合(Yes)は、ステップＳ３０４に移行し、そうでない場合(No)は、ステップＳ３２８に移行する。
ステップＳ３０４に移行した場合は、マイクロプロセッサ１０ａにおいて、デバイス主要部（ハードウェア）との接続をソフト的に切断してから、書換プログラムのエントリアドレスにジャンプして書換プログラムを起動してステップＳ３０６に移行する。
【００４８】
ステップＳ３０６では、マイクロプロセッサ１０ａにおいて、データ通信部１０ｄを介して、書換プログラムを正常に起動したことを示す応答を、情報処理装置２０に送信してステップＳ３０８に移行する。
ステップＳ３０８では、マイクロプロセッサ１０ａにおいて、データ通信部１０ｄを介して、情報処理装置２０からライトコマンド及びライトデータ（ブロック単位）を受信したか否かを判定し、受信したと判定された場合(Yes)は、ステップＳ３１０に移行し、そうでない場合(No)は、受信するまで判定処理を繰り返す。
【００４９】
ステップＳ３１０に移行した場合は、マイクロプロセッサ１０ａにおいて、ステップＳ３０８で受信したライトデータは、全て特定数値で構成されているか否かを判定し、特定数値で構成されていると判定された場合(Yes)は、ステップＳ３１２に移行し、そうでない場合(No)は、ステップＳ３３２に移行する。本実施の形態において、書換用の制御プログラムにおける、書換プログラムの格納領域に対するアドレスに対しては、そのプログラムコードが、全て特定数値（０ｘＦＦなど）のみで構成されており、書換プログラムは、この特定数値の有無から、自己の格納アドレスの情報を得るようになっている。
【００５０】
ステップＳ３１２に移行した場合は、マイクロプロセッサ１０ａにおいて、プログラム格納用メモリ１０ｂにおける、ステップＳ３０８で受信したライトコマンドの指定するメモリアドレスに格納されたデータ（ブロック単位）を消去せずに、書き込みが正常に終了したことを示す応答を、データ通信部１０ｄを介して情報処理装置２０に送信してステップＳ３１４に移行する。
【００５１】
つまり、制御プログラムの開発者は、制御プログラムの開発において、プログラム格納用メモリ１０ｂにおけるプロセッサのＢｏｏｔアドレス領域（書換プログラムの格納領域）に対して特定数値のみで構成されるプログラムコードを記述することで、制御プログラムの書換処理において、そのアドレスに格納されている書換プログラムを消去しないようにする（保持する）ことができる。
【００５２】
ステップＳ３１４では、マイクロプロセッサ１０ａにおいて、データ通信部１０ｄを介して、情報処理装置２０からリードコマンドを受信したか否かを判定し、受信したと判定された場合(Yes)は、ステップＳ３１６に移行し、そうでない場合(No)は、受信するまで判定処理を繰り返す。
ステップＳ３１６に移行した場合は、マイクロプロセッサ１０ａにおいて、プログラム格納用メモリ１０ｂにおける、リードコマンドの示すアドレス（ブロック単位）に格納されたプログラムコードを読み出してステップＳ３１８に移行する。このとき、上記した特定数値のみで構成されたライトデータに対応するアドレスが指定された場合は、データを読み出さずにステップＳ３１８に移行する。
【００５３】
ステップＳ３１８では、マイクロプロセッサ１０ａにおいて、データ通信部１０ｄを介して、ステップＳ３１６で読み出したプログラムコードを、情報処理装置２０に送信してステップＳ３２０に移行する。ここで、上記した特定数値のみで構成されたライトデータに対応するアドレスに格納されたデータを送信する場合は、実際に格納されているデータでは無く、特定数値のみで構成されるデータ（ダミーデータ）を生成して送信する。これは、情報処理装置２０側で正常に書き換えられたか否かを判定する処理（コンペア処理）を実行する際に、書換の行われない書換プログラム部分と、書換用の制御プログラムにおけるマイクロプロセッサ１０ａのＢｏｏｔ領域に対応する特定数値部分との比較処理を正常に行わせるためである。
【００５４】
ステップＳ３２０では、マイクロプロセッサ１０ａにおいて、データ通信部１０ｄを介して、情報処理装置２０から終了コマンドを受信したか否かを判定し、受信したと判定された場合(Yes)は、ステップＳ３２２に移行し、そうでない場合(No)は、ステップＳ３０８に移行する。
ステップＳ３２２に移行した場合は、マイクロプロセッサ１０ａにおいて、プログラム格納用メモリ１０ｂの特定領域に格納されたチェック情報を読み出してステップＳ３２４に移行する。
【００５５】
ステップＳ３２４では、マイクロプロセッサ１０ａにおいて、プログラム格納用メモリ１０ｂの特定領域に格納された照合情報を読み出してステップＳ３２６に移行する。
ステップＳ３２６では、マイクロプロセッサ１０ａにおいて、ステップＳ３２２で読み出したチェック情報と、ステップＳ３２４で読み出した照合情報とを比較してステップＳ３２８に移行する。
【００５６】
ステップＳ３２８では、マイクロプロセッサ１０ａにおいて、ステップＳ３２６の比較結果に基づき、チェック情報と照合情報とが一致しているか否かを判定し、一致していると判定された場合(Yes)は、ステップＳ３３０に移行し、そうでない場合(No)は、データ通信部１０ｄを介して、正常に書き込まれなかったこと示すエラー通知を、情報処理装置２０に送信してステップＳ３００に移行する。
【００５７】
ステップＳ３３０に移行した場合は、マイクロプロセッサ１０ａにおいて、プログラム格納用メモリ１０ｂに格納された制御プログラムを実行して書換プログラムを終了する。
一方、ステップＳ３１０において、プログラムコードが全て特定数値から構成されておらずステップＳ３３２に移行した場合は、マイクロプロセッサ１０ａにおいて、プログラム格納用メモリ１０ｂにおける、ステップＳ３０８で受信したライトコマンドの示すメモリアドレスに格納されたデータ（ブロック単位）を消去してステップＳ３３４に移行する。
【００５８】
ステップＳ３３４では、マイクロプロセッサ１０ａにおいて、ステップＳ３３２において格納データを消去したメモリブロックに、ステップＳ３０８で受信したプログラムコードを書き込んでステップＳ３３６に移行する。
ステップＳ３３６では、マイクロプロセッサ１０ａにおいて、データ通信部１０ｄを介して、書き込みが正常に終了したか否かを示す応答を、情報処理装置２０に送信してステップＳ３１４に移行する。
【００５９】
また、ステップＳ３０２において、制御プログラムが実行中ではなくステップＳ３３８に移行した場合は、マイクロプロセッサ１０ａにおいて、書換プログラムが正常に起動していることを示す応答を、データ通信部１０ｄを介して、情報処理装置２０に送信してステップＳ３０８に移行する。
【００６０】
次に、図７に基づき、本実施の形態の動作を説明する。
ここで、図７は、プログラム格納用メモリ１０ｂのデータ格納内容の一例を示す図である。
まず、デバイス１０のプログラム格納用メモリ１０ｂについて説明する。
デバイス１０のプログラム格納用メモリ１０ｂは、ここでは、８Ｍバイトのメモリ容量を有しており、図７に示すように、そのメモリ領域に対して、０ｘ００００００〜０ｘ７ＦＦＦＦＦ（１６進数）のアドレス番号が割り当てられている。更に、この割り当てられたアドレス番号によって構成されるメモリ空間は、図７に示すように、Ｂｌｏｃｋ０〜Ｂｌｏｃｋ１２７の連続する６４Ｍビットサイズの１２８個のアドレスＢｌｏｃｋで管理されており、本実施の形態において、データの書き込みやデータの消去は、このＢｌｏｃｋ単位で行われる。
【００６１】
次に、デバイス１０のプログラム格納用メモリ１０ｂの各種データの格納構成を説明する。
図７に示すように、Ｂｌｏｃｋ０〜Ｂｌｏｃｋ６４（Ａｒｅａ−Ａ）及びＢｌｏｃｋ６６〜Ｂｌｏｃｋ１２７（Ａｒｅａ−Ｂ）のメモリ領域は、制御プログラム（図７に示すＵｓｅｒ  Ｐｒｏｇｒａｍ  Ｃｏｄｅ）の格納領域となっている。そして、Ｂｌｏｃｋ０のアドレス番号０ｘ００００００〜０ｘ０００１ＣＢは、制御プログラムのＢｏｏｔ領域となっている。
【００６２】
更に、０ｘ０００１ＣＣから所定アドレスまでは、照合情報（図７に示すＦｉｒｍｗａｒｅ  Ｖｅｒｓｉｏｎ）が格納される。また、Ｂｌｏｃｋ６４の０ｘ３ＦＦＦＦＣ〜０ｘ３ＦＦＦＦＥは、第１チェック情報（図７に示すＰｒｏｇｒａｍ  Ｗｒｉｔｅ  Ｃｏｍｐｌｅｔｅ  Ｍａｒｋ（＃１））が格納される。また、Ｂｌｏｃｋ６６の０ｘ４１００００〜０ｘ４１０００Ｂは、第２チェック情報（図７に示すＰｒｏｇｒａｍ  Ｗｒｉｔｅ  Ｃｏｍｐｌｅｔｅ  Ｍａｒｋ（＃２））が格納される。また、Ｂｌｏｃｋ１２７の０ｘ７ＦＦＦＦＣ〜０ｘ７ＦＦＦＦＦは、第３チェック情報（図７に示すＰｒｏｇｒａｍ  Ｗｒｉｔｅ  Ｃｏｍｐｌｅｔｅ  Ｍａｒｋ（＃３））が格納される。
【００６３】
一方、上記制御プログラムの格納領域以外の領域である、Ｂｌｏｃｋ６５（０ｘ４０００００〜０ｘ０３ＦＦＦＦ）は、マイクロプロセッサ１０ａのＢｏｏｔ領域になっており、このメモリ領域に書換プログラムが格納される。つまり、マイクロプロセッサ１０ａは、起動後において最初に０ｘ４０００００のプログラムコードを読み出して実行するようになっている。
【００６４】
次に、本実施の形態の制御プログラム書換システム１００の実際の動作を説明する。
デバイス１０に電源が投入されると、マイクロプロセッサ１０ａが駆動し、まず、プログラム格納用メモリ１０ｂのマイクロプロセッサ１０ａのブート領域であるＢｌｏｃｋ６５のメモリ領域（０ｘ４０００００）に格納された書換プログラムのプログラムコードを、ワークメモリ１０ｂに順次読み出して実行する。次に、マイクロプロセッサ１０ａは、書換プログラムに従って、Ｂｌｏｃｋ０の照合情報の格納領域に格納されているデータをワークメモリ１０ｃに読み出し、続いてＢｌｏｃｋ６４、６６及び１２７の第１〜第３チェック情報の格納領域にそれぞれ格納されているデータをワークメモリ１０ｃに読み出す。  ここで、照合情報には、第１〜第３チェック情報と同じ情報が含まれており、マイクロプロセッサ１０ａは、上記読み出したデータをそれぞれ比較し（ステップＳ１００）、当該比較結果に基づき、照合情報に含まれるデータと、第１〜第３チェック情報とが全て一致するか否かを判定する（ステップＳ１０２）。
【００６５】
照合情報に含まれるデータと、第１〜第３チェック情報とがいずれか１つでも一致しない場合（ステップＳ１０２の「Ｎｏ」の分岐）は、マイクロプロセッサ１０ａは、データ通信部１０ｄを介して、情報処理装置２０にエラーを通知して、処理の先頭に戻り（ステップＳ１００）、上記同様の処理を行う。
【００６６】
一方、照合情報に含まれるデータと、第１〜第３チェック情報とが全て一致する場合（ステップＳ１０２の「Ｙｅｓ」の分岐）は、マイクロプロセッサ１０ａは、制御プログラムのＢｏｏｔ領域（図７のＵｓｅｒ  Ｐｒｏｇｒａｍ  Ｖｅｃｔｏｒ）の先頭データの数値をワークメモリ１０ｃに読み出し（ステップＳ１０４）、その数値が全て０ｘＦＦ（１６進数）で構成されているか否かを判定する（ステップＳ１０６）。全て０ｘＦＦで構成されている場合（ステップＳ１０６の「Ｎｏ」の分岐）は、データ通信部１０ｄを介して、情報処理装置２０にエラーを通知して、処理の先頭に戻り（ステップＳ１００に移行）、上記同様の処理（ステップＳ１００〜Ｓ１０６）を行う。一方、全てが０ｘＦＦで構成されていない場合（ステップＳ１０６の「Ｙｅｓ」の分岐）は、制御プログラムの先頭コードにジャンプし、当該先頭のプログラムコードから順番にプログラムコードをワークメモリ１０ｃに読み出し制御プログラムを実行する（ステップＳ１０８）。これにより、デバイス１０が通常動作を開始する。例えば、デバイス１０がキーボードやマウス等の入力デバイスであれば、デバイスの操作に応じた信号データを、データ通信部１０ｄを介して情報処理装置２０に送信する。情報処理装置２０では、デバイス１０に対応したアプリケーションソフトの実行中などにおいて、デバイス１０からの入力信号に応じた処理を実行する。
【００６７】
次に、情報処理装置２０における、制御プログラム書換システム１００における、デバイス１０の制御プログラムの書換処理の動作を説明する。
制御プログラムの書換処理は、制御プログラムの開発者等のユーザが、情報処理装置２０の不図示の操作部（入力デバイス等）を操作し、データ記憶部２０ｂに記憶されたダウンローダ（プログラム）を、マイクロプロセッサ２０ａに実行させることで行われる。ここで、ダウンローダは、デバイス１０の制御プログラムを、書換用（例えば、アップデート用）の制御プログラムに書き換えるためのプログラムである。このダウンローダを実行することによって、操作部を介したユーザからの指示に応じて、デバイス１０に対し、制御プログラムから書換プログラムへの移行コマンドを送信したり、書換に必要な各種コマンドやデータを送信したりする。例えば、ライトコマンドと一緒にデータ記憶部２０ｂから書換用の制御プログラムを読み出してブロック単位でそのプログラムコードを送信したりする。
【００６８】
ここでは、ダウンローダの実行によって、不図示の表示部に、書換用の制御プログラムの候補一覧が表示され、キーボードやマウス等の入力デバイスを介して、ユーザがその一覧の中から任意のものを選択し、且つ書換処理の実行指示を与えることで書換処理が実行される。
従って、ダウンローダが実行されると、まず、マイクロプロセッサ２０ａによって、ユーザからの書換プログラムへの移行指示コマンドの発行指示があったか否かを判定する（ステップＳ２００）。発行指示は、前述したように、ユーザが操作部を介して書き換えたい制御プログラムを一覧の中から選択し、且つ実行指示を入力することで与えられる。マイクロプロセッサ２０ａは、この発行指示があると（ステップＳ２００の「Ｙｅｓ」の分岐）、書換プログラムへの移行コマンドを、データ通信部２０ｄを介して、デバイス１０に送信する（ステップＳ２０２）。
【００６９】
一方、デバイス１０は、制御プログラムの実行中に、情報処理装置２０からの書換プログラムへの移行コマンドを、データ通信部１０ｄを介して受信すると（ステップＳ３００の「Ｙｅｓ」の分岐）、制御プログラムの実行中であれば（ステップＳ３０２の「Ｙｅｓ」の分岐）、デバイス主要部（ハードウェア）との接続状態を検出し、次いでその接続をソフト的に切断し、書換プログラムのエントリアドレスにジャンプして書換プログラムを起動する（ステップＳ３０４）。このエントリアドレスの情報は、制御プログラムのＢｏｏｔ領域の直後のアドレスに書き込まれている。マイクロプロセッサ１０ａは、書換プログラムが正常に起動すると、正常応答を、データ通信部１０ｄを介して情報処理装置２０に送信する（ステップＳ３０６）。
【００７０】
情報処理装置２０は、デバイス１０からの移行コマンドに対する正常応答を受信すると（ステップＳ２０４の「Ｙｅｓ」の分岐）、ライトコマンドと共に、書換用の制御プログラムのプログラムコード及び書込先のアドレス情報（ブロック単位）を、データ通信部２０ｄを介してデバイス１０に送信する。なお、制御プログラムには、照合情報及び第１〜第３チェック情報などが含まれており、上記した特定のアドレスブロックに対しては、これらのデータを送信する。以下、これらの特定情報やプログラムコードなどの書込対象のデータをライトデータと称す。
【００７１】
一方、デバイス１０は、情報処理装置２０からのライトコマンド及びライトデータを受信すると（ステップＳ３０８の「Ｙｅｓ」の分岐）、当該受信したライトデータが、０ｘＦＦのみで構成されているか否かを判定する（ステップＳ３１０）。０ｘＦＦのみから構成されていない場合（ステップＳ３１０の「Ｎｏ」の分岐）は、受信したライトデータの書き込みは、マイクロプロセッサ１０ａのＢｏｏｔ領域以外への書き込みであると判断され、まず、指定されたメモリブロックに格納されたデータを全て消去する（ステップＳ３３２）。そして、消去後のメモリブロックに、受信したライトデータ（プログラムコード等）を書き込む（ステップＳ３３４）。書き込みが正常に終了した場合は、データ通信部１０ｄを介して、正常応答を情報処理装置２０に送信する（ステップＳ３３６）。
【００７２】
情報処理装置２０は、デバイス１０からライトコマンドに対する正常応答を受信すると（ステップＳ２０８の「Ｙｅｓ」の分岐）、このライトコマンドに対応するアドレスを指定したリードコマンドを、データ通信部２０ｄを介してデバイス１０に送信する。
デバイス１０は、情報処理装置２０からのリードコマンドをデータ通信部１０ｄを介して受信すると（ステップＳ３１４の「Ｙｅｓ」の分岐）、リードコマンドの指定アドレスに格納されたプログラムコードを読み出し（ステップＳ３１６）、当該読み出したプログラムコードをデータ通信部１０ｄを介して情報処理装置２０に送信する（ステップＳ３１８）。
【００７３】
情報処理装置２０は、デバイス１０から、リードコマンドに対するプログラムコードを、データ通信部２０ｄを介して受信すると（ステップＳ２１２の「Ｙｅｓ」の分岐）、この受信したプログラムコードと、このプログラムコードのアドレスに対して書き込みを要求したプログラムコードとを比較し（ステップＳ２１４）、当該比較結果に基づき、正常に書き込まれたか否かを判定する（ステップＳ２１６）。もちろん、正常に書き込まれている場合は、両者が一致することになる。
【００７４】
一方、デバイス１０において、情報処理装置２０からライトコマンドと共に受信したプログラムコードが、全て０ｘＦＦで構成されていると判定された場合（ステップＳ３１０の「Ｙｅｓ」の分岐）は、指定されたアドレス領域に自己（書換プログラム）が格納されていると判断し、指定アドレスに格納されたデータを消去せずに、正常応答を、データ通信部１０ｄを介して情報処理装置２０に送信する（ステップＳ３１２）。更に、このライトコマンドに対するリードコマンドが、情報処理装置２０から送信されてくると、デバイス１０は、マイクロプロセッサ１０ａによって、前記指定アドレスに格納されている書換プログラムを読み出さずに、その代わりとして、０ｘＦＦで全てが構成されたデータを、データ通信部１０ｄを介して情報処理装置２０に送信する（ステップＳ３１８）。
【００７５】
従って、情報処理装置２０では、マイクロプロセッサ１０ａのＢｏｏｔアドレスに対するリードコマンドに対して、０ｘＦＦで全てが構成されるデータを受信することになるので、このデータと、制御プログラムのＢｏｏｔアドレス部分のデータ（全て０ｘＦＦ）とを比較することになるので、実際は書換が行われていなくとも、正常に書換が行われたと判断する（ステップＳ２１６の「Ｙｅｓ」の分岐）。
【００７６】
上記したように、マイクロプロセッサ１０ａのＢｏｏｔアドレス領域（Ｂｌｏｃｋ６５）以外のアドレス領域に対しては、格納データの消去及び受信したライトデータの書き込みを行い、マイクロプロセッサ１０ａのＢｏｏｔアドレスに対しては、データの消去及びライトデータの書き込みを共に行わないようにして、プログラム格納用メモリ１０ｂに格納された制御プログラムを書換用の制御プログラムに書き換える。
そして、制御プログラムの書換が正常に終了すると、情報処理装置２０は、書換プログラムの終了コマンドを、データ通信部２０ｄを介して、デバイス１０に送信する。
【００７７】
デバイス１０は、情報処理装置２０から、データ通信部１０ｄを介して、終了コマンドを受信すると（ステップＳ３２０の「Ｙｅｓ」の分岐）、Ｂｌｏｃｋ６４、６６及び１２７の第１〜第３チェック情報の格納領域にそれぞれ格納されているデータをワークメモリ１０ｃに読み出し（ステップＳ３２２）、続いて、Ｂｌｏｃｋ０の照合情報の格納領域に格納されているデータをワークメモリ１０ｃに読み出す（ステップＳ３２４）。そして、これら読み出したデータをそれぞれ比較し（ステップＳ３２６）、当該比較結果に基づき、照合情報に含まれるデータと、第１〜第３チェック情報とが全て一致するか否かを判定する（ステップＳ３２８）。ここで、一致していない場合（ステップＳ３２８の「Ｎｏ」の分岐）は、情報処理装置２０に対してエラーを通知する。一方、全て一致している場合（ステップＳ３２８の「Ｙｅｓ」の分岐）は、制御プログラムの先頭コードにジャンプし、制御プログラムを実行する（ステップＳ３３０）。制御プログラムは、ソフト的に切断されているデバイス主要部を初期化し、デバイス主要部との再接続を行う。
【００７８】
以上、本実施の形態の制御プログラム書換システム１００においては、書換用の制御プログラムにおける、デバイス１０のマイクロプロセッサ１０ａのブート領域のアドレスに対するコードとして、所定数値（本実施の形態では全て０ｘＦＦ）を記述しておくことで、デバイス１０のプログラム格納用メモリ１０ｂに格納された書換プログラムは、この０ｘＦＦのコード部分のアドレス領域に対してデータの消去及びデータの書き込みを行わず、且つそれ以外のアドレス領域に対しては、指定されたアドレスに対するデータの消去及びデータの書き込みを行う処理を実行することが可能である。これにより、プログラム格納用メモリ１０ｂにおける、ブートアドレス領域に格納された書換プログラムを保持した状態で（消去及び書換せずに）、制御プログラムのみの書換を行うことができる。
【００７９】
従って、制御プログラムの書換（アップデート）時において、書換プログラムを待避する必要が無いので、プログラム格納用メモリ１０ｂとは別に、退避用のメモリを用意する必要がないためその分のコストを低減することが可能である。
また、図７に示すように、ブートアドレス領域が、プログラム格納用メモリ１０ｂのメモリ領域を分断するような位置にある場合であっても、制御プログラムの開発者は、制御プログラムにおける、そのアドレス領域に所定数値を記述するだけで、手軽に書換プログラムを保持した状態で制御プログラムのみを書き換えることができる書換用の制御プログラムを作成することが可能である。また、これにより、ブートアドレス領域が、プログラム格納用メモリのメモリ領域を分断するような場合でも、プログラム格納用メモリを効率良く利用することが可能である。
【００８０】
また、制御プログラムの書換時において、プログラム格納用メモリ１０ｂの特定アドレスに、照合情報及び第１〜第３チェック情報を書き込むようにしたので、書換プログラム側で、これらの情報を用いて、簡易に制御プログラムの書換が正常に終了したか否かを判断することが可能である。
上記実施の形態において、マイクロプロセッサ１０ａは、形態１、２及び５〜１０のいずれか１のプロセッサに対応し、プログラム格納用メモリ１０ｂは、形態１、２、３、５、６、及び７〜１０のいずれか１のプログラム格納用メモリに対応し、プログラム格納用メモリ１０ｂのブートアドレス領域に格納された書換プログラムは、形態１、２及び６〜１０のいずれか１の書換プログラムに対応し、プログラム格納用メモリ１０ｂのブートアドレス領域以外に格納された制御プログラムは、形態１〜１０のいずれか１の制御プログラムに対応する。
【００８１】
また、上記実施の形態において、情報処理装置２０で実行されるダウンローダ及びデータ通信部２０ｄによる各種コマンドの送信処理は、形態１、５及び８のいずれか１の書換指示命令手段に対応し、情報処理装置２０で実行されるダウンローダ及びデータ通信部２０ｄによるプログラムコードの送信処理は、形態１、５及び８のいずれか１の制御プログラム入力手段に対応する。
【００８２】
なお、上記実施の形態においては、プログラム格納用メモリ１０ｂのＢｌｏｃｋ０に格納された照合情報と、書換プログラムの格納されたＢｌｏｃｋ６５のアドレス領域の直前及び直後のＢｌｏｃｋ（６４，６６）に格納された第１及び第２チェック情報並びにＢｌｏｃｋ１２７に格納された第３チェック情報とが一致するか否かによって、制御プログラムの書換が正常に終了したか否かを判定するようにしたが、これに限らず、チェック情報の数や格納位置を適宜変更しても良い。
また、上記実施の形態においては、書換用の制御プログラムにおける、マイクロプロセッサ１０ａのブートアドレス領域に対するコードを全て０ｘＦＦとしているが、これに限らず、書換プログラム側で対応させれば、他の任意の数値にしても良い。
【図面の簡単な説明】
【００８３】
【図１】本発明に係る制御プログラム書換システム１００の概略構成を示すブロック図である。
【図２】デバイス１０の詳細構成を示すブロック図である。
【図３】情報処理装置２０の詳細構成を示すブロック図である。
【図４】情報処理装置２０における、デバイス１０の制御プログラムのアップデート処理を示すフローチャートである。
【図５】電源投入時におけるデバイス１０の書換プログラムの動作処理を示すフローチャートである。
【図６】デバイス１０における書換プログラムの動作処理を示すフローチャートである。
【図７】プログラム格納用メモリ１０ｂのメモリブロックの一例を示す図である。
【符号の説明】
【００８４】
１００…制御プログラム書換システム、１０…デバイス、２０…情報処理装置、１０ａ，２０ａ…マイクロプロセッサ、１０ｂ…プログラム格納用メモリ、１０ｃ，２０ｃ…ワークメモリ、１０ｄ，２０ｄ…データ通信部
【図１】
2008003668.tif 000003
【図２】
2008003668.tif 000004
【図３】
2008003668.tif 000005
【図４】
2008003668.tif 000006
【図５】
2008003668.tif 000007
【図６】
2008003668.tif 000008
【図７】
2008003668.tif 000009