(57)【特許請求の範囲】
【請求項１】
ソフトウェアが記憶されるメモリと、
前記メモリへの書き込み対象のソフトウェアを受け付ける受付部と、
前記受付部が受け付けたソフトウェアを前記メモリに書き込む記録部と、
前記記録部によるソフトウェアの書き込みが正常であるかどうか判断する判断部と、を備え、
前記記録部は、前記メモリにおける前記書き込み対象のソフトウェアの終端にあらかじめ決められた値を書き込み、前記あらかじめ決められた値のアドレスである終端アドレスを前記メモリの複数の特定のアドレスに書き込み、
前記判断部は、前記特定のアドレスのデータが前記メモリの範囲内のアドレスであり、当該データで示される終端アドレスのデータがあらかじめ決められた値である場合に、ソフトウェアの書き込みが正常であると判断し、前記複数の特定のアドレスのデータが一致しない場合に、ソフトウェアの書き込みが正常でないと判断する、ソフトウェア書き換え装置。
【請求項２】
前記判断部は、前記メモリの先頭アドレスにデータが書き込まれており、前記特定のアドレスのデータが前記メモリの範囲内のアドレスであり、当該データで示される終端アドレスのデータがあらかじめ決められた値である場合に、ソフトウェアの書き込みが正常であると判断する、請求項１記載のソフトウェア書き換え装置。
【請求項３】
前記ソフトウェアは、溶接電源の制御に関するソフトウェアである、請求項１または請求項２記載のソフトウェア書き換え装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリにソフトウェアを書き込むソフトウェア書き換え装置に関する。
【背景技術】
【０００２】
近年、組み込みシステムによって機器を動作させることが一般的になってきている。そのような組み込みシステムにおいては、制御ソフトウェアを更新する際に、新たなソフトウェアをフラッシュＲＯＭ等のメモリに書き込むことが行われる。また、そのようなソフトウェアの書き込みにおいて、正常に書き込まれたかどうかをチェックすることも行われている。例えば、先頭に値が書き込まれているか、また終端に正常な値が書き込まれているかを判断することが行われている。
【０００３】
なお、関連する技術として、データの書き込み途中にシステムダウン等が発生し、終端処理が適切に行われていない場合に、ファイルの終端を認識できるようにする技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−２３６３０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来のソフトウェアの書き換えにおいて、終端のアドレスが固定である場合には、書き込み対象のソフトウェアの容量は変わりうるため、想定される最大のアドレスを終端アドレスとすることが行われていた。そのような場合には、ソフトウェアの書き込み時に、その固定の終端アドレスまでのすべての領域にデータを書くことになるため、ソフトウェアの書き込みに非常に時間がかかるという問題があった。例えば、組み込みシステムが溶接電源であり、作業者が１００台の溶接電源のソフトウェアを書き換えなくてはならない場合には、１台あたりの書き換え時間が１分長くなるだけで、全体としては作業時間が１時間４０分長くなることになる。したがって、ソフトウェアの書き込み時間を少しでも短くしたいという要望があった。
【０００６】
また、ソフトウェアの書き込みが不適切であった場合には、そのソフトウェアを実行することによって動作する溶接電源等の装置が想定外の動作を行う可能性があるため、ソフトウェアの書き込みが正常に行われたかどうかを判断したいという要望もあった。
【０００７】
本発明は、上記課題を解決するためになされたものであり、メモリへのソフトウェアの書き込み時間を短縮できると共に、ソフトウェアの書き込みが正常に行われたかどうかを判断することができるソフトウェア書き換え装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明によるソフトウェア書き換え装置は、ソフトウェアが記憶されるメモリと、メモリへの書き込み対象のソフトウェアを受け付ける受付部と、受付部が受け付けたソフトウェアをメモリに書き込む記録部と、記録部によるソフトウェアの書き込みが正常であるかどうか判断する判断部と、を備え、記録部は、メモリにおける書き込み対象のソフトウェアの終端にあらかじめ決められた値を書き込み、あらかじめ決められた値のアドレスである終端アドレスをメモリの特定のアドレスに書き込み、判断部は、特定のアドレスのデータがメモリの範囲内のアドレスであり、データで示される終端アドレスのデータがあらかじめ決められた値である場合に、ソフトウェアの書き込みが正常であると判断する、ものである。
このような構成により、固定の終端アドレスまでデータを書き込む必要がないため、ソフトウェアの書き込みに要する時間を短縮することができる。また、ソフトウェアの書き込みが正常に行われたかどうかを判断することによって、例えば、正常に書き込まれた場合にのみ、そのソフトウェアを実行するようにすることもできる。また、その判断において、特定のアドレスのデータがメモリの範囲内のアドレスであるかどうか判断するため、例えば、そのデータがメモリの範囲外のアドレスである場合に、そのメモリの範囲外のアドレスのデータを読み出そうとすることによって、ＣＰＵ等の実行部が誤動作する可能性を低減することができる。
【０００９】
また、本発明によるソフトウェア書き換え装置では、判断部は、メモリの先頭アドレスにデータが書き込まれており、特定のアドレスのデータがメモリの範囲内のアドレスであり、データで示される終端アドレスのデータがあらかじめ決められた値である場合に、ソフトウェアの書き込みが正常であると判断してもよい。
このような構成により、メモリの先頭アドレスにデータが書き込まれているかどうかも判断するため、より厳密な判断を行うことができる。
【００１０】
また、本発明によるソフトウェア書き換え装置では、記録部は、メモリの複数の特定のアドレスに終端アドレスを書き込み、判断部は、複数の特定のアドレスのデータが一致しない場合に、ソフトウェアの書き込みが正常でないと判断してもよい。
このような構成により、終端アドレスが書き込まれる箇所について冗長化することができ、より厳密な判断を行うことができる。
【００１１】
また、本発明によるソフトウェア書き換え装置では、あらかじめ決められた値は、メモリにおける書き込み対象のソフトウェアの終端の連続している複数のアドレスに書き込まれるものであり、判断部は、終端アドレスを含む連続している複数のアドレスのデータがあらかじめ決められた値でない場合に、ソフトウェアの書き込みが正常でないと判断してもよい。
このような構成により、終端アドレスに対応するあらかじめ決められた値をより長いデータにすることが可能となり、そのあらかじめ決められた値が、偶然、他のデータと一致する可能性を低減させることができる。
【００１２】
また、本発明によるソフトウェア書き換え装置では、ソフトウェアは、溶接電源の制御に関するソフトウェアであってもよい。
このような構成により、溶接電源のソフトウェアを書き換える際に、ソフトウェアの書き込みに要する時間を短縮することができると共に、ソフトウェアが正常に書き込まれたかどうかを判断することができる。そして、例えば、正常に書き込まれた場合にのみ、書き換え後のソフトウェアを実行することによって、溶接電源の安全性を向上させることができる。
【発明の効果】
【００１３】
本発明によるソフトウェア書き換え装置によれば、ソフトウェアの書き込みに要する時間を短縮できる。また、ソフトウェアの書き込みが正常に行われたかどうかを判断するため、例えば、正常に書き込まれた場合にのみ、そのソフトウェアを実行するようにすることもできる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態によるソフトウェア書き換え装置を含む溶接電源の構成を示すブロック図
【図２】同実施の形態による溶接電源の動作を示すフローチャート
【図３】同実施の形態による溶接電源の動作を示すフローチャート
【図４Ａ】同実施の形態におけるアドレスマップの一例を示す図
【図４Ｂ】同実施の形態におけるアドレスマップの一例を示す図
【図４Ｃ】同実施の形態におけるアドレスマップの一例を示す図
【図４Ｄ】同実施の形態におけるアドレスマップの一例を示す図
【図５】同実施の形態におけるソフトウェアの書き込みについて説明するための図
【発明を実施するための形態】
【００１５】
以下、本発明によるソフトウェア書き換え装置について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。本実施の形態によるソフトウェア書き換え装置は、メモリで記憶されているソフトウェアを書き換えるものである。
【００１６】
図１は、本実施の形態による溶接電源１の構成を示すブロック図である。本実施の形態による溶接電源１は、アーク溶接等の溶接を行うための電力を供給する装置であり、ソフトウェア書き換え装置２と、電源１１と、実行部１２とを備える。ソフトウェア書き換え装置２は、メモリ２１と、受付部２２と、記録部２３と、判断部２４とを備えている。
【００１７】
メモリ２１では、ソフトウェア（プログラム）が記憶される。そのソフトウェアは、溶接電源１の制御に関するソフトウェアである。そのソフトウェアに応じて溶接電源１が動作することによって、溶接の制御や処理が実行されることになる。メモリ２１は、例えば、フラッシュＲＯＭ（フラッシュメモリ）であってもよく、その他の不揮発性の半導体メモリであってもよく、または、その他の不揮発性の記録媒体であってもよい。本実施の形態では、メモリ２１が、フラッシュＲＯＭである場合について主に説明する。
【００１８】
受付部２２は、メモリ２１への書き込み対象のソフトウェアを受け付ける。受付部２２は、例えば、所定の記録媒体（例えば、光ディスクや磁気ディスク、ＵＳＢメモリ等の半導体メモリなど）から読み出されたソフトウェアを受け付けてもよく、有線または無線の通信回線を介して送信されたソフトウェアを受信してもよい。なお、受付部２２は、受け付けを行うためのデバイス（例えば、モデムやネットワークカードなど）を含んでもよく、または含まなくてもよい。また、受付部２２は、ハードウェアによって実現されてもよく、または所定のデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
【００１９】
記録部２３は、受付部２２が受け付けたソフトウェアをメモリ２１に書き込む。そのソフトウェアの書き込みにおいて、記録部２３は、メモリ２１における書き込み対象のソフトウェアの終端にあらかじめ決められた値が書き込まれ、そのあらかじめ決められた値のアドレスである終端アドレスがメモリ２１の特定のアドレスに書き込まれるようにするものとする。例えば、図４Ａのアドレスマップで示されるように、書き込み対象のソフトウェアは、先頭アドレス0x00000000から、終端アドレスの直前のアドレス0x000FFFFBまでのうち、特定のアドレス0x00000050以外の領域に書き込まれ、終端アドレス0x000FFFFCには、あらかじめ決められた値0x12345678が書き込まれ、特定のアドレス0x00000050には、その終端アドレス0x000FFFFCが書き込まれてもよい。なお、特定のアドレスは、通常、図４Ａで示されるように、ソフトウェアが書き込まれるメモリ２１の領域における先頭から終端までのいずれかのアドレスであるが、そうでなくてもよい。その特定のアドレスは、固定値であることが好適である。また、終端アドレスに書き込まれるあらかじめ決められた値は、例えば、0x12345678のように、固定値であってもよく、書き込み対象のソフトウェアのチェックサムであってもよく、または、その他の値であってもよい。したがって、「あらかじめ決められた」とは、装置等の設計時や組立時に決められたことであってもよく、または、ソフトウェアの書き込み時に決められたことであってもよい。また、特定のアドレスは、図示しない記録媒体において記憶されていてもよい。また、あらかじめ決められた値が固定値である場合にも、その値が図示しない記録媒体において記憶されていてもよい。また、あらかじめ決められた値がチェックサム等である場合には、その値を決めるルール等が図示しない記録媒体において記憶されていてもよい。そして、記録部２３は、その記録媒体にアクセスすることによって、特定のアドレス等を取得してもよい。なお、記録部２３は、ソフトウェア等を書き込む前に、メモリ２１のデータを消去してもよい。その消去は、メモリ２１の全体に対して行われてもよく、または、そうでなくてもよい。後者の場合には、例えば、記録部２３は、特定のアドレスに格納されている終端アドレスを読み出し、先頭アドレスから、その終端アドレスまでのデータを消去してもよく、または、書き込み対象のソフトウェアに関する終端アドレスまでのデータを消去してもよい。前者の場合には、現在、記憶されているソフトウェアに関するデータが消去されることになり、後者の場合には、書き込み対象のソフトウェアが書き込まれる範囲のデータが消去されることになる。なお、そのデータの消去において、メモリ２１が、ブロック単位でデータを消去する記録媒体である場合には、記録部２３は、消去したいデータを含むすべてのブロックについて消去の処理を行うようにしてもよい。
【００２０】
判断部２４は、記録部２３によるソフトウェアの書き込みが正常であるかどうか判断する。判断部２４は、書き込み対象のソフトウェアが格納される領域における先頭のアドレスにデータが書き込まれており、かつ、特定のアドレスのデータがメモリ２１の範囲内のアドレスであり、かつ、そのデータで示される終端アドレスのデータがあらかじめ決められた値である場合に、ソフトウェアの書き込みが正常であると判断する。したがって、判断部２４は、例えば、書き込み対象のソフトウェアが格納される領域における先頭のアドレスにデータが書き込まれていない場合に、ソフトウェアの書き込みが正常でないと判断してもよい。また、判断部２４は、例えば、特定のアドレスのデータがメモリ２１の範囲内のアドレスでない場合に、ソフトウェアの書き込みが正常でないと判断してもよい。また、判断部２４は、例えば、特定のアドレスのデータで示される終端アドレスのデータがあらかじめ決められた値でない場合に、ソフトウェアの書き込みが正常でないと判断してもよい。
【００２１】
なお、その判断において、判断部２４は、終端アドレスのデータがあらかじめ決められた値であるかどうかを判断する前に、特定のアドレスのデータがメモリ２１の範囲内のアドレスであるかどうかを判断することが好適である。そして、特定のアドレスのデータがメモリ２１の範囲内のアドレスでない場合には、判断部２４は、その特定のアドレスのデータである終端アドレスのデータを読みにいかなくてもよい。そのようにすることで、例えば、ソフトウェアの書き込みが正常に終了しておらず、特定のアドレスのデータが、メモリ２１のアドレス範囲外を示すものである場合に、誤ってその範囲外のデータを読みにいくことを回避でき、誤動作を防止することができる。
【００２２】
また、書き込み対象のソフトウェアが格納される領域における先頭のアドレスは、メモリ２１の先頭アドレスであってもよい。その場合には、書き込み対象のソフトウェアが格納される領域における先頭のアドレスにデータが書き込まれているかどうかの判断は、メモリ２１の先頭アドレスにデータが書き込まれているかどうかの判断となる。本実施の形態では、書き込み対象のソフトウェアが格納される領域における先頭のアドレスは、メモリ２１の先頭アドレスである場合について主に説明する。
【００２３】
また、前述のように、フラッシュＲＯＭ等のメモリ２１にデータを書き込む際には、はじめにデータを消去してから書き込むことになる。したがって、判断部２４は、書き込み対象のソフトウェアが格納される領域における先頭のアドレスのデータが、消去されたデータ（例えば、0xFFFFFFFF）でない場合に、そのアドレスにデータが書き込まれていると判断してもよい。また、書き込み対象のソフトウェアが格納される領域における先頭のアドレスに所定の値が書き込まれると決まっている場合には、判断部２４は、書き込み対象のソフトウェアが格納される領域における先頭のアドレスにデータが書き込まれているかどうかの判断に代えて、そのアドレスに所定の値が書き込まれているかどうかを判断してもよい。
【００２４】
また、判断部２４による判断のタイミングは問わないが、例えば、ソフトウェアの書き込み後に溶接電源１が起動されたタイミングで判断が行われてもよく、ソフトウェアの書き込み後に判断が行われてもよい。なお、溶接電源１の動作時に誤ってメモリ２１のデータを書き換える可能性もあるため、判断部２４は、溶接電源１の起動時（電源投入時）ごとに、その判断を行うようにしてもよい。本実施の形態では、その場合について主に説明する。
【００２５】
電源１１は、溶接に必要な電力を供給するための電源である。その電源１１は、通常、アーク溶接等のための高電圧、高電流を供給する。
実行部１２は、判断部２４による判断結果によって、ソフトウェアが正常に書き込まれたことが示される場合に、メモリ２１に記憶されているソフトウェアを読み出して実行する。その実行部１２は、例えば、ＣＰＵやＭＰＵであってもよい。なお、そのソフトウェアは、溶接電源１の制御に関するソフトウェアであるため、そのソフトウェアが実行されることによって、電源１１に関する制御が行われることになる。
【００２６】
なお、判断部２４は、例えば、ハードウェアによって実現されてもよく、または、ソフトウェアを実行することによって実現されてもよい。後者の場合に、そのソフトウェアを実行するＣＰＵ等は、実行部１２を実現するＣＰＵ等と同じであってもよく、または、そうでなくてもよい。
【００２７】
次に、溶接電源１の動作について図２のフローチャートを用いて説明する。図２のフローチャートは、溶接電源１の電源が投入されてから、電源が落とされるまでの処理を示すフローチャートである。
（ステップＳ１０１）判断部２４は、電源が投入された後に、メモリ２１で記憶されているソフトウェアが、正常に書き込まれたかどうか判断する。なお、この判断の処理の詳細については、図３のフローチャートを用いて後述する。
【００２８】
（ステップＳ１０２）実行部１２は、ステップＳ１０１の判断結果によって、ソフトウェアが正常に書き込まれたことが示されるかどうか判断する。そして、ソフトウェアが正常に書き込まれたことが判断結果によって示される場合には、ステップＳ１０３に進み、そうでない場合には、溶接電源１の起動を終了して電源を落とす。
【００２９】
（ステップＳ１０３）実行部１２は、メモリ２１で記憶されているソフトウェアを読み出して実行する。その結果、溶接電源１が、溶接のための電力を供給する装置として動作することになる。
【００３０】
（ステップＳ１０４）実行部１２は、溶接電源１が外部からの指示等の入力を受け付けたかどうか判断する。そして、受け付けた場合には、ステップＳ１０５に進み、そうでない場合には、ステップＳ１０６に進む。その入力は、例えば、ユーザによって行われてもよく、または、溶接ロボットの制御装置等によって行われてもよい。
【００３１】
（ステップＳ１０５）実行部１２は、受け付けられた入力に応じた処理を行う。そして、ステップＳ１０４に戻る。その処理は、例えば、入力された指示に応じた電圧、電流の出力を行うように電源１１を制御することであってもよい。
【００３２】
（ステップＳ１０６）受付部２２は、書き換え対象のソフトウェアを受け付けたかどうか判断する。そして、受け付けた場合には、ステップＳ１０７に進み、そうでない場合には、ステップＳ１０８に進む。
【００３３】
（ステップＳ１０７）記録部２３は、図５で示されるように、受け付けられたソフトウェアに対して、そのソフトウェアの終端にあらかじめ決められた終端データを付加し、また、特定のアドレスに終端データのアドレスである終端アドレスを付加した記録対象のデータを構成し、その記録対象のデータをメモリ２１に書き込む。なお、図５におけるソフトウェアデータ１、２は、受け付けられたソフトウェアデータが分割されたデータである。その書き込みが終了すると、実行部１２は、溶接電源１を再起動する。そして、ステップＳ１０１に戻る。
【００３４】
（ステップＳ１０８）実行部１２は、溶接電源１の処理を終了するかどうか判断する。そして、処理を終了する場合には、溶接電源１の電源を落とす。一方、処理を終了しない場合には、ステップＳ１０４に戻る。なお、実行部１２は、例えば、溶接電源１の電源を落とす旨の指示をユーザから受け付けた場合に、処理を終了すると判断してもよく、または、所定のエラー等が発生し、処理を継続できなくなった場合に、処理を終了すると判断してもよい。
【００３５】
図３は、図２のフローチャートにおける判断処理（ステップＳ１０１）の詳細を示すフローチャートである。
（ステップＳ２０１）判断部２４は、メモリ２１の先頭アドレスにデータが書き込まれているかどうか判断する。そして、書き込まれている場合には、ステップＳ２０２に進み、そうでない場合には、ステップＳ２０５に進む。
【００３６】
（ステップＳ２０２）判断部２４は、特定のアドレスに格納されているデータを読み出し、そのデータが、メモリ２１のアドレス範囲内であるかどうか判断する。そして、そのデータがメモリ２１のアドレス範囲内である場合には、ステップＳ２０３に進み、そうでない場合には、ステップＳ２０５に進む。
【００３７】
（ステップＳ２０３）判断部２４は、特定のアドレスに格納されているデータで示される終端アドレスに格納されている終端データを読み出し、その終端データが、あらかじめ決められた値であるかどうか判断する。そして、終端データがあらかじめ決められた値である場合には、ステップＳ２０４に進み、そうでない場合には、ステップＳ２０５に進む。
【００３８】
（ステップＳ２０４）判断部２４は、メモリ２１へのソフトウェアの書き込みが正常であると判断する。そして、図２のフローチャートに戻る。
【００３９】
（ステップＳ２０５）判断部２４は、メモリ２１へのソフトウェアの書き込みが正常でないと判断する。そして、図２のフローチャートに戻る。
なお、図２のフローチャートにおける処理の順序は一例であり、ステップＳ２０２の処理が、ステップＳ２０３の処理よりも以前に行われ、同様の結果を得ることができるのであれば、各ステップの順序を変更してもよい。
【００４０】
次に、本実施の形態による溶接電源１の動作について、具体例を用いて説明する。この具体例では、特定のアドレスが0x00000050であり、あらかじめ決められた値（終端データ）が0x12345678であるとする。また、メモリ２１のアドレス範囲は、0x00000000から0x00200000であるとする。
【００４１】
溶接電源１が動作している状態において、ソフトウェアの書き換えを行う作業者が、新しいソフトウェアの記録されているＵＳＢメモリを溶接電源１に装着したとする。すると、受付部２２は、そのことを検知し、そのＵＳＢメモリからソフトウェアを読み出して記録部２３に渡す（ステップＳ１０６）。記録部２３は、ソフトウェアを受け取ると、図５で示されるように、特定のアドレスの位置に所定の格納領域を確保した上で、ソフトウェアデータの終端に、終端データ0x12345678を付加する。そして、その終端データのアドレスである終端アドレスを、特定のアドレスの位置に付加した記録対象のデータを構成する。また、記録部２３は、その記録対象のデータをメモリ２１に書き込む前に、メモリ２１の各アドレスに対応するデータをすべて消去する。具体的には、各データをすべて0xFFFFFFFFにする。その後、記録部２３は、メモリ２１の先頭アドレスから順番に、記録対象のデータを書き込んでいく。その結果、メモリ２１に書き込まれたデータとアドレスとの関係は、図４Ａで示されるようになったとする（ステップＳ１０７）。
【００４２】
次に、実行部１２は、溶接電源１を再起動する。その再起動時に、判断部２４は、ソフトウェアが正常に書き込まれたかどうかの判断を行う（ステップＳ１０１）。具体的には、判断部２４は、メモリ２１の先頭アドレス0x00000000のデータが0xFFFFFFFFであるかどうか判断する（ステップＳ２０１）。この場合には、0x469500CDであり、0xFFFFFFFFではないため、先頭アドレスにデータが書き込まれていることになる。したがって、判断部２４は、特定のアドレス0x00000050に格納されているデータ0x000FFFFCを読み出し、それがメモリ２１のアドレス範囲内であるかどうか判断する（ステップＳ２０２）。この場合には、そのデータ0x000FFFFCが、アドレス範囲0x00000000〜0x00200000に含まれるため、特定のアドレスのデータが、メモリ２１のアドレス範囲内であることになる。したがって、判断部２４は、その終端アドレス0x000FFFFCのデータ0x12345678を読み出し、そのデータがあらかじめ決められた値0x12345678であるかどうか判断する（ステップＳ２０３）。この場合には、その読み出したデータはあらかじめ決められた値であるため、終端アドレスのデータがあらかじめ決められた値であることになる。したがって、判断部２４は、ソフトウェアの書き込みが正常に行われたと判断し、その判断結果を実行部１２に渡す（ステップＳ２０４）。すると、実行部１２は、メモリ２１に書き込まれたソフトウェアを実行し、その結果として、溶接電源１において、溶接のための電力を供給する処理が行われることになる（ステップＳ１０３〜Ｓ１０５）。
【００４３】
なお、例えば、先頭アドレス0x00000000のデータが0xFFFFFFFFである場合、特定のアドレスに格納されている終端アドレスがメモリ２１のアドレス範囲外（0x00000000〜0x00200000の範囲外）である場合、または、終端データが0x12345678以外のデータ（例えば、0x23456789）である場合には、判断部２４は、ソフトウェア書き換えが正常に行われなかったと判断する（ステップＳ２０５）。その場合には、例えば、ソフトウェアの書き換え途中に電源が落ちるなどの何らかの不具合の発生していることが考えられる。
【００４４】
以上のように、本実施の形態によるソフトウェア書き換え装置２によれば、ソフトウェアを書き換える際に、先頭アドレスから終端アドレスまでにデータを書き込めばよいため、終端アドレスが固定である場合と比較して、書き込み時間が短縮される。また、ソフトウェアの書き込みが正常に行われたと判断された場合にのみ、そのソフトウェアを実行することにより、正常に書き込まれたソフトウェアが実行されることになり、溶接電源１が適切に動作することになる。また、その判断において、特定のアドレスのデータである終端アドレスが、メモリ２１の範囲内のアドレスであるかどうかを確認してから、その終端アドレスのデータを読み出すため、ソフトウェアが適切に書き込まれておらず、その終端アドレスがメモリ２１の範囲外のアドレスである場合でも、誤動作が起こらないようにすることができる。また、その特定のアドレスに書き込まれた終端アドレスを用いて、ソフトウェアの終端にあらかじめ決められた値を格納する終端処理が適切に行われたかどうかを確認できるため、上述のように、終端アドレスが固定でなくてもよいことになる。また、上記特許文献１では、ファイルの終端を認識できるようにするため、各レコードに識別符号を付加しているが、本実施の形態によるソフトウェア書き換え装置２では、そのような識別符号を付加する必要がないため、より多くのデータをメモリ２１に書き込むことができるようになる。
【００４５】
なお、本実施の形態では、終端アドレスの格納される特定のアドレスが１個である場合について説明したが、そうでなくてもよい。記録部２３は、メモリ２１の複数の特定のアドレスに終端アドレスを書き込んでもよい。その特定のアドレスの個数は限定されないが、例えば、２個や３個などであってもよい。その場合には、例えば、図４Ｂで示されるように、第１の特定のアドレス0x00000050と、第２の特定のアドレス0x00000200とに終端アドレスが書き込まれてもよい。なお、そのように、複数の特定のアドレスに終端アドレスが書き込まれる場合には、判断部２４は、例えば、その複数の特定のアドレスのデータ（終端アドレス）がすべて一致しており、かつ、書き込み対象のソフトウェアが格納される領域における先頭のアドレスにデータが書き込まれており、かつ、特定のアドレスのデータがメモリ２１の範囲内のアドレスであり、かつ、そのデータで示される終端アドレスのデータがあらかじめ決められた値である場合に、ソフトウェアの書き込みが正常であると判断してもよい。すなわち、判断部２４は、その複数の特定のアドレスのデータが一致しない場合に、ソフトウェアの書き込みが正常でないと判断してもよい。複数の特定のアドレスのデータが一致しない場合とは、複数の特定のアドレスのデータの少なくとも一部が一致しない場合であってもよい。具体的には、第１から第３の特定のアドレスにそれぞれ格納されている第１から第３のデータのうち、第１のデータと第２のデータとは一致するが、第１のデータと第３のデータとは一致しない場合には、判断部２４によって、ソフトウェアの書き込みが正常でないと判断されてもよい。
【００４６】
また、本実施の形態では、あらかじめ決められた値である終端データが、一のアドレスに対応する領域に格納される場合、すなわち、上記具体例では終端データが４バイトである場合について説明したが、そうでなくてもよい。その終端データは、メモリ２１における書き込み対象のソフトウェア終端の連続した複数のアドレスに書き込まれてもよい。すなわち、その終端データは、４バイトを超えるデータ量であってもよい。その場合には、例えば、図４Ｃで示されるように、終端アドレス0x000FFFFCと、その次のアドレス0x000FFFFDとのデータ0x12345678，0x9ABCDEF0が、あらかじめ決められた値（終端データ）であってもよい。すなわち、終端データは、例えば８バイトのデータであってもよい。終端データのデータ量を大きくすることによって、ソフトウェアの書き込みが正常に行われていない場合に、終端アドレスに応じたデータが偶然、あらかじめ決められた値と一致する可能性を低減させることができる。このように、あらかじめ決められた値が、メモリ２１における書き込み対象のソフトウェアの終端の連続している複数のアドレスに書き込まれるものである場合には、判断部２４は、例えば、書き込み対象のソフトウェアが格納される領域における先頭のアドレスにデータが書き込まれており、かつ、特定のアドレスのデータがメモリ２１の範囲内のアドレスであり、かつ、そのデータで示される終端アドレスを含む連続している複数のアドレスのデータが、あらかじめ決められた値である場合に、ソフトウェアの書き込みが正常であると判断してもよい。すなわち、判断部２４は、特定のアドレスに格納されている終端アドレスを含む連続している複数のアドレスのデータが、あらかじめ決められた値でない場合に、ソフトウェアの書き込みが正常でないと判断してもよい。
【００４７】
なお、図４Ｃでは、終端データのアドレスである連続した複数のアドレスの先頭アドレスが、特定のアドレスに格納される場合について示しているが、そうでなくてもよい。例えば、終端データのアドレスである連続した複数のアドレスの後端アドレスが、特定のアドレスに格納されていてもよく、終端データのアドレスである連続した複数のアドレスの先頭アドレスでもなく後端アドレスでもないアドレスが、特定のアドレスに格納されていてもよい。
【００４８】
また、本実施の形態では、判断部２４が、書き込み対象のソフトウェアが格納される領域における先頭のアドレスにデータが書き込まれているかどうかを判断する場合について説明したが、そうでなくてもよい。判断部２４は、その判断を行わなくてもよい。その場合には、判断部２４は、例えば、特定のアドレスのデータがメモリ２１の範囲内のアドレスであり、かつ、そのデータで示される終端アドレスのデータがあらかじめ決められた値である場合に、ソフトウェアの書き込みが正常であると判断してもよい。
【００４９】
また、本実施の形態において、ソフトウェアの書き込み後に、正常に書き込まれたかどうか判断し、正常に書き込まれた場合には、その書き込み対象のソフトウェアそのものを、メモリ２１の別の領域に格納するようにしてもよい。その別の領域に格納されるソフトウェアは、バックアップとして用いられる。したがって、例えば、その後にソフトウェアを書き換えた際に、正常に書き込むことができなかった場合には、そのバックアップ領域に格納されているソフトウェアを用いることができるようになり、少なくとも、溶接電源１がまったく動作しなくなる事態を回避することができる。なお、その後、ソフトウェアが正常に書き換えられた場合には、バックアップ領域のソフトウェアも、その書き換え後のソフトウェアと同じ内容となるように書き換えられることになる。例えば、図４Ｄで示されるように、アドレス0x00000000から0x000FFFFCまでに一連のソフトウェアが正常に書き込まれたと判断部２４によって判断された場合に、記録部２３は、そのソフトウェアを、メモリ２１におけるソフトウェアのバックアップ領域にも書き込むものとする。なお、そのソフトウェアのバックアップ領域においても、特定のアドレスに、バックアップ領域における終端アドレスが書き込まれてもよく、または、そうでなくてもよい。後者の場合には、バックアップ領域の終端アドレスが、バックアップ領域と異なる領域において記憶されていてもよい。また、バックアップ領域を特定できるようにするため、バックアップ領域の先頭アドレスは固定であってもよく、または、その先頭アドレスがバックアップ領域以外の領域に記憶されていてもよい。また、正常に書き込まれたソフトウェアのバックアップは、メモリ２１とは異なる記録媒体に書き込まれてもよい。
【００５０】
また、本実施の形態では、ソフトウェア書き換え装置２が、溶接電源１に含まれる場合について説明したが、そうでなくてもよい。溶接電源１以外の組み込み装置に、ソフトウェア書き換え装置２が含まれていてもよい。その場合であっても、そのソフトウェア書き換え装置２を含む装置は、判断部２４によって、ソフトウェア書き換えが正常に行われたと判断された場合に、メモリ２１に書き込まれたソフトウェアを実行することが好適である。そのソフトウェアの実行は、通常、ソフトウェア書き換え装置２を含む装置の制御や動作等のために行われることになる。
【００５１】
また、上記実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、または、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
【００５２】
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う２個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、または、その情報の受け渡しを行う２個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
【００５３】
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりした情報や、各構成要素が処理で用いる閾値や数式、アドレス等の情報等は、上記説明で明記していなくても、図示しない記録媒体において、一時的に、または長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、または、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、または、図示しない読み出し部が行ってもよい。
【００５４】
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いる閾値やアドレス、各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していなくても、ユーザが適宜、それらの情報を変更できるようにしてもよく、または、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
【００５５】
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、または、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをＣＰＵ等のプログラム実行部が読み出して実行することによって、各構成要素が実現されうる。その実行時に、プログラム実行部は、記憶部や記録媒体にアクセスしながらプログラムを実行してもよい。また、そのプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体（例えば、光ディスクや磁気ディスク、半導体メモリなど）に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。また、そのプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、または分散処理を行ってもよい。
【００５６】
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【００５７】
以上より、本発明によるソフトウェア書き換え装置によれば、メモリに格納されているソフトウェアの書き換えを高速化できるという効果が得られ、例えば、組み込みシステムで用いられるソフトウェアを書き換える装置等として有用である。
【符号の説明】
【００５８】
１  溶接電源
２  ソフトウェア書き換え装置
１１  電源
１２  実行部
２１  メモリ
２２  受付部
２３  記録部
２４  判断部
【図１】
0006401070.tif 000002
【図２】
0006401070.tif 000003
【図３】
0006401070.tif 000004
【図４Ａ】
0006401070.tif 000005
【図４Ｂ】
0006401070.tif 000006
【図４Ｃ】
0006401070.tif 000007
【図４Ｄ】
0006401070.tif 000008
【図５】
0006401070.tif 000009