特開2016-143208(P2016-143208A)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社ダイヘンの特許一覧

<>
  • 特開2016143208-ソフトウェア書き換え装置 図000003
  • 特開2016143208-ソフトウェア書き換え装置 図000004
  • 特開2016143208-ソフトウェア書き換え装置 図000005
  • 特開2016143208-ソフトウェア書き換え装置 図000006
  • 特開2016143208-ソフトウェア書き換え装置 図000007
  • 特開2016143208-ソフトウェア書き換え装置 図000008
  • 特開2016143208-ソフトウェア書き換え装置 図000009
  • 特開2016143208-ソフトウェア書き換え装置 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2016-143208(P2016-143208A)
(43)【公開日】2016年8月8日
(54)【発明の名称】ソフトウェア書き換え装置
(51)【国際特許分類】
   G06F 11/00 20060101AFI20160711BHJP
【FI】
   G06F9/06 630A
【審査請求】未請求
【請求項の数】5
【出願形態】OL
【全頁数】14
(21)【出願番号】特願2015-18066(P2015-18066)
(22)【出願日】2015年2月2日
(71)【出願人】
【識別番号】000000262
【氏名又は名称】株式会社ダイヘン
(74)【代理人】
【識別番号】100115749
【弁理士】
【氏名又は名称】谷川 英和
(74)【代理人】
【識別番号】100121223
【弁理士】
【氏名又は名称】森本 悟道
(72)【発明者】
【氏名】大西 孝典
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AE63
5B376CA39
5B376CA74
5B376CA81
5B376FA11
5B376GA13
(57)【要約】
【課題】組み込みシステムで用いられるソフトウェアの書き換え時間を短縮できなかった。
【解決手段】ソフトウェア書き換え装置2は、メモリ21、ソフトウェアを受け付ける受付部22、受け付けられたソフトウェアをメモリ21に書き込む記録部23、その書き込みが正常かどうか判断する判断部24を備える。記録部23は、メモリ21における書き込み対象のソフトウェアの終端に所定の値を書き込み、その所定の値のアドレスである終端アドレスをメモリ21の特定のアドレスに書き込む。判断部24は、特定のアドレスのデータがメモリ21の範囲内のアドレスであり、そのデータで示される終端アドレスのデータが所定の値である場合に、ソフトウェアの書き込みが正常であると判断する。その結果、終端アドレスが固定値でなくてもよいため、ソフトウェアの書き換えを高速化できる。
【選択図】図1
【特許請求の範囲】
【請求項1】
ソフトウェアが記憶されるメモリと、
前記メモリへの書き込み対象のソフトウェアを受け付ける受付部と、
前記受付部が受け付けたソフトウェアを前記メモリに書き込む記録部と、
前記記録部によるソフトウェアの書き込みが正常であるかどうか判断する判断部と、を備え、
前記記録部は、前記メモリにおける前記書き込み対象のソフトウェアの終端にあらかじめ決められた値を書き込み、前記あらかじめ決められた値のアドレスである終端アドレスを前記メモリの特定のアドレスに書き込み、
前記判断部は、前記特定のアドレスのデータが前記メモリの範囲内のアドレスであり、当該データで示される終端アドレスのデータがあらかじめ決められた値である場合に、ソフトウェアの書き込みが正常であると判断する、ソフトウェア書き換え装置。
【請求項2】
前記判断部は、前記メモリの先頭アドレスにデータが書き込まれており、前記特定のアドレスのデータが前記メモリの範囲内のアドレスであり、当該データで示される終端アドレスのデータがあらかじめ決められた値である場合に、ソフトウェアの書き込みが正常であると判断する、請求項1記載のソフトウェア書き換え装置。
【請求項3】
前記記録部は、前記メモリの複数の特定のアドレスに前記終端アドレスを書き込み、
前記判断部は、前記複数の特定のアドレスのデータが一致しない場合に、ソフトウェアの書き込みが正常でないと判断する、請求項1または請求項2記載のソフトウェア書き換え装置。
【請求項4】
前記あらかじめ決められた値は、前記メモリにおける前記書き込み対象のソフトウェアの終端の連続している複数のアドレスに書き込まれるものであり、
前記判断部は、前記終端アドレスを含む連続している複数のアドレスのデータがあらかじめ決められた値でない場合に、ソフトウェアの書き込みが正常でないと判断する、請求項1から請求項3のいずれか記載のソフトウェア書き換え装置。
【請求項5】
前記ソフトウェアは、溶接電源の制御に関するソフトウェアである、請求項1から請求項4のいずれか記載のソフトウェア書き換え装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリにソフトウェアを書き込むソフトウェア書き換え装置に関する。
【背景技術】
【0002】
近年、組み込みシステムによって機器を動作させることが一般的になってきている。そのような組み込みシステムにおいては、制御ソフトウェアを更新する際に、新たなソフトウェアをフラッシュROM等のメモリに書き込むことが行われる。また、そのようなソフトウェアの書き込みにおいて、正常に書き込まれたかどうかをチェックすることも行われている。例えば、先頭に値が書き込まれているか、また終端に正常な値が書き込まれているかを判断することが行われている。
【0003】
なお、関連する技術として、データの書き込み途中にシステムダウン等が発生し、終端処理が適切に行われていない場合に、ファイルの終端を認識できるようにする技術が知られている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平6−236307号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来のソフトウェアの書き換えにおいて、終端のアドレスが固定である場合には、書き込み対象のソフトウェアの容量は変わりうるため、想定される最大のアドレスを終端アドレスとすることが行われていた。そのような場合には、ソフトウェアの書き込み時に、その固定の終端アドレスまでのすべての領域にデータを書くことになるため、ソフトウェアの書き込みに非常に時間がかかるという問題があった。例えば、組み込みシステムが溶接電源であり、作業者が100台の溶接電源のソフトウェアを書き換えなくてはならない場合には、1台あたりの書き換え時間が1分長くなるだけで、全体としては作業時間が1時間40分長くなることになる。したがって、ソフトウェアの書き込み時間を少しでも短くしたいという要望があった。
【0006】
また、ソフトウェアの書き込みが不適切であった場合には、そのソフトウェアを実行することによって動作する溶接電源等の装置が想定外の動作を行う可能性があるため、ソフトウェアの書き込みが正常に行われたかどうかを判断したいという要望もあった。
【0007】
本発明は、上記課題を解決するためになされたものであり、メモリへのソフトウェアの書き込み時間を短縮できると共に、ソフトウェアの書き込みが正常に行われたかどうかを判断することができるソフトウェア書き換え装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
上記目的を達成するため、本発明によるソフトウェア書き換え装置は、ソフトウェアが記憶されるメモリと、メモリへの書き込み対象のソフトウェアを受け付ける受付部と、受付部が受け付けたソフトウェアをメモリに書き込む記録部と、記録部によるソフトウェアの書き込みが正常であるかどうか判断する判断部と、を備え、記録部は、メモリにおける書き込み対象のソフトウェアの終端にあらかじめ決められた値を書き込み、あらかじめ決められた値のアドレスである終端アドレスをメモリの特定のアドレスに書き込み、判断部は、特定のアドレスのデータがメモリの範囲内のアドレスであり、データで示される終端アドレスのデータがあらかじめ決められた値である場合に、ソフトウェアの書き込みが正常であると判断する、ものである。
このような構成により、固定の終端アドレスまでデータを書き込む必要がないため、ソフトウェアの書き込みに要する時間を短縮することができる。また、ソフトウェアの書き込みが正常に行われたかどうかを判断することによって、例えば、正常に書き込まれた場合にのみ、そのソフトウェアを実行するようにすることもできる。また、その判断において、特定のアドレスのデータがメモリの範囲内のアドレスであるかどうか判断するため、例えば、そのデータがメモリの範囲外のアドレスである場合に、そのメモリの範囲外のアドレスのデータを読み出そうとすることによって、CPU等の実行部が誤動作する可能性を低減することができる。
【0009】
また、本発明によるソフトウェア書き換え装置では、判断部は、メモリの先頭アドレスにデータが書き込まれており、特定のアドレスのデータがメモリの範囲内のアドレスであり、データで示される終端アドレスのデータがあらかじめ決められた値である場合に、ソフトウェアの書き込みが正常であると判断してもよい。
このような構成により、メモリの先頭アドレスにデータが書き込まれているかどうかも判断するため、より厳密な判断を行うことができる。
【0010】
また、本発明によるソフトウェア書き換え装置では、記録部は、メモリの複数の特定のアドレスに終端アドレスを書き込み、判断部は、複数の特定のアドレスのデータが一致しない場合に、ソフトウェアの書き込みが正常でないと判断してもよい。
このような構成により、終端アドレスが書き込まれる箇所について冗長化することができ、より厳密な判断を行うことができる。
【0011】
また、本発明によるソフトウェア書き換え装置では、あらかじめ決められた値は、メモリにおける書き込み対象のソフトウェアの終端の連続している複数のアドレスに書き込まれるものであり、判断部は、終端アドレスを含む連続している複数のアドレスのデータがあらかじめ決められた値でない場合に、ソフトウェアの書き込みが正常でないと判断してもよい。
このような構成により、終端アドレスに対応するあらかじめ決められた値をより長いデータにすることが可能となり、そのあらかじめ決められた値が、偶然、他のデータと一致する可能性を低減させることができる。
【0012】
また、本発明によるソフトウェア書き換え装置では、ソフトウェアは、溶接電源の制御に関するソフトウェアであってもよい。
このような構成により、溶接電源のソフトウェアを書き換える際に、ソフトウェアの書き込みに要する時間を短縮することができると共に、ソフトウェアが正常に書き込まれたかどうかを判断することができる。そして、例えば、正常に書き込まれた場合にのみ、書き換え後のソフトウェアを実行することによって、溶接電源の安全性を向上させることができる。
【発明の効果】
【0013】
本発明によるソフトウェア書き換え装置によれば、ソフトウェアの書き込みに要する時間を短縮できる。また、ソフトウェアの書き込みが正常に行われたかどうかを判断するため、例えば、正常に書き込まれた場合にのみ、そのソフトウェアを実行するようにすることもできる。
【図面の簡単な説明】
【0014】
図1】本発明の実施の形態によるソフトウェア書き換え装置を含む溶接電源の構成を示すブロック図
図2】同実施の形態による溶接電源の動作を示すフローチャート
図3】同実施の形態による溶接電源の動作を示すフローチャート
図4A】同実施の形態におけるアドレスマップの一例を示す図
図4B】同実施の形態におけるアドレスマップの一例を示す図
図4C】同実施の形態におけるアドレスマップの一例を示す図
図4D】同実施の形態におけるアドレスマップの一例を示す図
図5】同実施の形態におけるソフトウェアの書き込みについて説明するための図
【発明を実施するための形態】
【0015】
以下、本発明によるソフトウェア書き換え装置について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。本実施の形態によるソフトウェア書き換え装置は、メモリで記憶されているソフトウェアを書き換えるものである。
【0016】
図1は、本実施の形態による溶接電源1の構成を示すブロック図である。本実施の形態による溶接電源1は、アーク溶接等の溶接を行うための電力を供給する装置であり、ソフトウェア書き換え装置2と、電源11と、実行部12とを備える。ソフトウェア書き換え装置2は、メモリ21と、受付部22と、記録部23と、判断部24とを備えている。
【0017】
メモリ21では、ソフトウェア(プログラム)が記憶される。そのソフトウェアは、溶接電源1の制御に関するソフトウェアである。そのソフトウェアに応じて溶接電源1が動作することによって、溶接の制御や処理が実行されることになる。メモリ21は、例えば、フラッシュROM(フラッシュメモリ)であってもよく、その他の不揮発性の半導体メモリであってもよく、または、その他の不揮発性の記録媒体であってもよい。本実施の形態では、メモリ21が、フラッシュROMである場合について主に説明する。
【0018】
受付部22は、メモリ21への書き込み対象のソフトウェアを受け付ける。受付部22は、例えば、所定の記録媒体(例えば、光ディスクや磁気ディスク、USBメモリ等の半導体メモリなど)から読み出されたソフトウェアを受け付けてもよく、有線または無線の通信回線を介して送信されたソフトウェアを受信してもよい。なお、受付部22は、受け付けを行うためのデバイス(例えば、モデムやネットワークカードなど)を含んでもよく、または含まなくてもよい。また、受付部22は、ハードウェアによって実現されてもよく、または所定のデバイスを駆動するドライバ等のソフトウェアによって実現されてもよい。
【0019】
記録部23は、受付部22が受け付けたソフトウェアをメモリ21に書き込む。そのソフトウェアの書き込みにおいて、記録部23は、メモリ21における書き込み対象のソフトウェアの終端にあらかじめ決められた値が書き込まれ、そのあらかじめ決められた値のアドレスである終端アドレスがメモリ21の特定のアドレスに書き込まれるようにするものとする。例えば、図4Aのアドレスマップで示されるように、書き込み対象のソフトウェアは、先頭アドレス0x00000000から、終端アドレスの直前のアドレス0x000FFFFBまでのうち、特定のアドレス0x00000050以外の領域に書き込まれ、終端アドレス0x000FFFFCには、あらかじめ決められた値0x12345678が書き込まれ、特定のアドレス0x00000050には、その終端アドレス0x000FFFFCが書き込まれてもよい。なお、特定のアドレスは、通常、図4Aで示されるように、ソフトウェアが書き込まれるメモリ21の領域における先頭から終端までのいずれかのアドレスであるが、そうでなくてもよい。その特定のアドレスは、固定値であることが好適である。また、終端アドレスに書き込まれるあらかじめ決められた値は、例えば、0x12345678のように、固定値であってもよく、書き込み対象のソフトウェアのチェックサムであってもよく、または、その他の値であってもよい。したがって、「あらかじめ決められた」とは、装置等の設計時や組立時に決められたことであってもよく、または、ソフトウェアの書き込み時に決められたことであってもよい。また、特定のアドレスは、図示しない記録媒体において記憶されていてもよい。また、あらかじめ決められた値が固定値である場合にも、その値が図示しない記録媒体において記憶されていてもよい。また、あらかじめ決められた値がチェックサム等である場合には、その値を決めるルール等が図示しない記録媒体において記憶されていてもよい。そして、記録部23は、その記録媒体にアクセスすることによって、特定のアドレス等を取得してもよい。なお、記録部23は、ソフトウェア等を書き込む前に、メモリ21のデータを消去してもよい。その消去は、メモリ21の全体に対して行われてもよく、または、そうでなくてもよい。後者の場合には、例えば、記録部23は、特定のアドレスに格納されている終端アドレスを読み出し、先頭アドレスから、その終端アドレスまでのデータを消去してもよく、または、書き込み対象のソフトウェアに関する終端アドレスまでのデータを消去してもよい。前者の場合には、現在、記憶されているソフトウェアに関するデータが消去されることになり、後者の場合には、書き込み対象のソフトウェアが書き込まれる範囲のデータが消去されることになる。なお、そのデータの消去において、メモリ21が、ブロック単位でデータを消去する記録媒体である場合には、記録部23は、消去したいデータを含むすべてのブロックについて消去の処理を行うようにしてもよい。
【0020】
判断部24は、記録部23によるソフトウェアの書き込みが正常であるかどうか判断する。判断部24は、書き込み対象のソフトウェアが格納される領域における先頭のアドレスにデータが書き込まれており、かつ、特定のアドレスのデータがメモリ21の範囲内のアドレスであり、かつ、そのデータで示される終端アドレスのデータがあらかじめ決められた値である場合に、ソフトウェアの書き込みが正常であると判断する。したがって、判断部24は、例えば、書き込み対象のソフトウェアが格納される領域における先頭のアドレスにデータが書き込まれていない場合に、ソフトウェアの書き込みが正常でないと判断してもよい。また、判断部24は、例えば、特定のアドレスのデータがメモリ21の範囲内のアドレスでない場合に、ソフトウェアの書き込みが正常でないと判断してもよい。また、判断部24は、例えば、特定のアドレスのデータで示される終端アドレスのデータがあらかじめ決められた値でない場合に、ソフトウェアの書き込みが正常でないと判断してもよい。
【0021】
なお、その判断において、判断部24は、終端アドレスのデータがあらかじめ決められた値であるかどうかを判断する前に、特定のアドレスのデータがメモリ21の範囲内のアドレスであるかどうかを判断することが好適である。そして、特定のアドレスのデータがメモリ21の範囲内のアドレスでない場合には、判断部24は、その特定のアドレスのデータである終端アドレスのデータを読みにいかなくてもよい。そのようにすることで、例えば、ソフトウェアの書き込みが正常に終了しておらず、特定のアドレスのデータが、メモリ21のアドレス範囲外を示すものである場合に、誤ってその範囲外のデータを読みにいくことを回避でき、誤動作を防止することができる。
【0022】
また、書き込み対象のソフトウェアが格納される領域における先頭のアドレスは、メモリ21の先頭アドレスであってもよい。その場合には、書き込み対象のソフトウェアが格納される領域における先頭のアドレスにデータが書き込まれているかどうかの判断は、メモリ21の先頭アドレスにデータが書き込まれているかどうかの判断となる。本実施の形態では、書き込み対象のソフトウェアが格納される領域における先頭のアドレスは、メモリ21の先頭アドレスである場合について主に説明する。
【0023】
また、前述のように、フラッシュROM等のメモリ21にデータを書き込む際には、はじめにデータを消去してから書き込むことになる。したがって、判断部24は、書き込み対象のソフトウェアが格納される領域における先頭のアドレスのデータが、消去されたデータ(例えば、0xFFFFFFFF)でない場合に、そのアドレスにデータが書き込まれていると判断してもよい。また、書き込み対象のソフトウェアが格納される領域における先頭のアドレスに所定の値が書き込まれると決まっている場合には、判断部24は、書き込み対象のソフトウェアが格納される領域における先頭のアドレスにデータが書き込まれているかどうかの判断に代えて、そのアドレスに所定の値が書き込まれているかどうかを判断してもよい。
【0024】
また、判断部24による判断のタイミングは問わないが、例えば、ソフトウェアの書き込み後に溶接電源1が起動されたタイミングで判断が行われてもよく、ソフトウェアの書き込み後に判断が行われてもよい。なお、溶接電源1の動作時に誤ってメモリ21のデータを書き換える可能性もあるため、判断部24は、溶接電源1の起動時(電源投入時)ごとに、その判断を行うようにしてもよい。本実施の形態では、その場合について主に説明する。
【0025】
電源11は、溶接に必要な電力を供給するための電源である。その電源11は、通常、アーク溶接等のための高電圧、高電流を供給する。
実行部12は、判断部24による判断結果によって、ソフトウェアが正常に書き込まれたことが示される場合に、メモリ21に記憶されているソフトウェアを読み出して実行する。その実行部12は、例えば、CPUやMPUであってもよい。なお、そのソフトウェアは、溶接電源1の制御に関するソフトウェアであるため、そのソフトウェアが実行されることによって、電源11に関する制御が行われることになる。
【0026】
なお、判断部24は、例えば、ハードウェアによって実現されてもよく、または、ソフトウェアを実行することによって実現されてもよい。後者の場合に、そのソフトウェアを実行するCPU等は、実行部12を実現するCPU等と同じであってもよく、または、そうでなくてもよい。
【0027】
次に、溶接電源1の動作について図2のフローチャートを用いて説明する。図2のフローチャートは、溶接電源1の電源が投入されてから、電源が落とされるまでの処理を示すフローチャートである。
(ステップS101)判断部24は、電源が投入された後に、メモリ21で記憶されているソフトウェアが、正常に書き込まれたかどうか判断する。なお、この判断の処理の詳細については、図3のフローチャートを用いて後述する。
【0028】
(ステップS102)実行部12は、ステップS101の判断結果によって、ソフトウェアが正常に書き込まれたことが示されるかどうか判断する。そして、ソフトウェアが正常に書き込まれたことが判断結果によって示される場合には、ステップS103に進み、そうでない場合には、溶接電源1の起動を終了して電源を落とす。
【0029】
(ステップS103)実行部12は、メモリ21で記憶されているソフトウェアを読み出して実行する。その結果、溶接電源1が、溶接のための電力を供給する装置として動作することになる。
【0030】
(ステップS104)実行部12は、溶接電源1が外部からの指示等の入力を受け付けたかどうか判断する。そして、受け付けた場合には、ステップS105に進み、そうでない場合には、ステップS106に進む。その入力は、例えば、ユーザによって行われてもよく、または、溶接ロボットの制御装置等によって行われてもよい。
【0031】
(ステップS105)実行部12は、受け付けられた入力に応じた処理を行う。そして、ステップS104に戻る。その処理は、例えば、入力された指示に応じた電圧、電流の出力を行うように電源11を制御することであってもよい。
【0032】
(ステップS106)受付部22は、書き換え対象のソフトウェアを受け付けたかどうか判断する。そして、受け付けた場合には、ステップS107に進み、そうでない場合には、ステップS108に進む。
【0033】
(ステップS107)記録部23は、図5で示されるように、受け付けられたソフトウェアに対して、そのソフトウェアの終端にあらかじめ決められた終端データを付加し、また、特定のアドレスに終端データのアドレスである終端アドレスを付加した記録対象のデータを構成し、その記録対象のデータをメモリ21に書き込む。なお、図5におけるソフトウェアデータ1、2は、受け付けられたソフトウェアデータが分割されたデータである。その書き込みが終了すると、実行部12は、溶接電源1を再起動する。そして、ステップS101に戻る。
【0034】
(ステップS108)実行部12は、溶接電源1の処理を終了するかどうか判断する。そして、処理を終了する場合には、溶接電源1の電源を落とす。一方、処理を終了しない場合には、ステップS104に戻る。なお、実行部12は、例えば、溶接電源1の電源を落とす旨の指示をユーザから受け付けた場合に、処理を終了すると判断してもよく、または、所定のエラー等が発生し、処理を継続できなくなった場合に、処理を終了すると判断してもよい。
【0035】
図3は、図2のフローチャートにおける判断処理(ステップS101)の詳細を示すフローチャートである。
(ステップS201)判断部24は、メモリ21の先頭アドレスにデータが書き込まれているかどうか判断する。そして、書き込まれている場合には、ステップS202に進み、そうでない場合には、ステップS205に進む。
【0036】
(ステップS202)判断部24は、特定のアドレスに格納されているデータを読み出し、そのデータが、メモリ21のアドレス範囲内であるかどうか判断する。そして、そのデータがメモリ21のアドレス範囲内である場合には、ステップS203に進み、そうでない場合には、ステップS205に進む。
【0037】
(ステップS203)判断部24は、特定のアドレスに格納されているデータで示される終端アドレスに格納されている終端データを読み出し、その終端データが、あらかじめ決められた値であるかどうか判断する。そして、終端データがあらかじめ決められた値である場合には、ステップS204に進み、そうでない場合には、ステップS205に進む。
【0038】
(ステップS204)判断部24は、メモリ21へのソフトウェアの書き込みが正常であると判断する。そして、図2のフローチャートに戻る。
【0039】
(ステップS205)判断部24は、メモリ21へのソフトウェアの書き込みが正常でないと判断する。そして、図2のフローチャートに戻る。
なお、図2のフローチャートにおける処理の順序は一例であり、ステップS202の処理が、ステップS203の処理よりも以前に行われ、同様の結果を得ることができるのであれば、各ステップの順序を変更してもよい。
【0040】
次に、本実施の形態による溶接電源1の動作について、具体例を用いて説明する。この具体例では、特定のアドレスが0x00000050であり、あらかじめ決められた値(終端データ)が0x12345678であるとする。また、メモリ21のアドレス範囲は、0x00000000から0x00200000であるとする。
【0041】
溶接電源1が動作している状態において、ソフトウェアの書き換えを行う作業者が、新しいソフトウェアの記録されているUSBメモリを溶接電源1に装着したとする。すると、受付部22は、そのことを検知し、そのUSBメモリからソフトウェアを読み出して記録部23に渡す(ステップS106)。記録部23は、ソフトウェアを受け取ると、図5で示されるように、特定のアドレスの位置に所定の格納領域を確保した上で、ソフトウェアデータの終端に、終端データ0x12345678を付加する。そして、その終端データのアドレスである終端アドレスを、特定のアドレスの位置に付加した記録対象のデータを構成する。また、記録部23は、その記録対象のデータをメモリ21に書き込む前に、メモリ21の各アドレスに対応するデータをすべて消去する。具体的には、各データをすべて0xFFFFFFFFにする。その後、記録部23は、メモリ21の先頭アドレスから順番に、記録対象のデータを書き込んでいく。その結果、メモリ21に書き込まれたデータとアドレスとの関係は、図4Aで示されるようになったとする(ステップS107)。
【0042】
次に、実行部12は、溶接電源1を再起動する。その再起動時に、判断部24は、ソフトウェアが正常に書き込まれたかどうかの判断を行う(ステップS101)。具体的には、判断部24は、メモリ21の先頭アドレス0x00000000のデータが0xFFFFFFFFであるかどうか判断する(ステップS201)。この場合には、0x469500CDであり、0xFFFFFFFFではないため、先頭アドレスにデータが書き込まれていることになる。したがって、判断部24は、特定のアドレス0x00000050に格納されているデータ0x000FFFFCを読み出し、それがメモリ21のアドレス範囲内であるかどうか判断する(ステップS202)。この場合には、そのデータ0x000FFFFCが、アドレス範囲0x00000000〜0x00200000に含まれるため、特定のアドレスのデータが、メモリ21のアドレス範囲内であることになる。したがって、判断部24は、その終端アドレス0x000FFFFCのデータ0x12345678を読み出し、そのデータがあらかじめ決められた値0x12345678であるかどうか判断する(ステップS203)。この場合には、その読み出したデータはあらかじめ決められた値であるため、終端アドレスのデータがあらかじめ決められた値であることになる。したがって、判断部24は、ソフトウェアの書き込みが正常に行われたと判断し、その判断結果を実行部12に渡す(ステップS204)。すると、実行部12は、メモリ21に書き込まれたソフトウェアを実行し、その結果として、溶接電源1において、溶接のための電力を供給する処理が行われることになる(ステップS103〜S105)。
【0043】
なお、例えば、先頭アドレス0x00000000のデータが0xFFFFFFFFである場合、特定のアドレスに格納されている終端アドレスがメモリ21のアドレス範囲外(0x00000000〜0x00200000の範囲外)である場合、または、終端データが0x12345678以外のデータ(例えば、0x23456789)である場合には、判断部24は、ソフトウェア書き換えが正常に行われなかったと判断する(ステップS205)。その場合には、例えば、ソフトウェアの書き換え途中に電源が落ちるなどの何らかの不具合の発生していることが考えられる。
【0044】
以上のように、本実施の形態によるソフトウェア書き換え装置2によれば、ソフトウェアを書き換える際に、先頭アドレスから終端アドレスまでにデータを書き込めばよいため、終端アドレスが固定である場合と比較して、書き込み時間が短縮される。また、ソフトウェアの書き込みが正常に行われたと判断された場合にのみ、そのソフトウェアを実行することにより、正常に書き込まれたソフトウェアが実行されることになり、溶接電源1が適切に動作することになる。また、その判断において、特定のアドレスのデータである終端アドレスが、メモリ21の範囲内のアドレスであるかどうかを確認してから、その終端アドレスのデータを読み出すため、ソフトウェアが適切に書き込まれておらず、その終端アドレスがメモリ21の範囲外のアドレスである場合でも、誤動作が起こらないようにすることができる。また、その特定のアドレスに書き込まれた終端アドレスを用いて、ソフトウェアの終端にあらかじめ決められた値を格納する終端処理が適切に行われたかどうかを確認できるため、上述のように、終端アドレスが固定でなくてもよいことになる。また、上記特許文献1では、ファイルの終端を認識できるようにするため、各レコードに識別符号を付加しているが、本実施の形態によるソフトウェア書き換え装置2では、そのような識別符号を付加する必要がないため、より多くのデータをメモリ21に書き込むことができるようになる。
【0045】
なお、本実施の形態では、終端アドレスの格納される特定のアドレスが1個である場合について説明したが、そうでなくてもよい。記録部23は、メモリ21の複数の特定のアドレスに終端アドレスを書き込んでもよい。その特定のアドレスの個数は限定されないが、例えば、2個や3個などであってもよい。その場合には、例えば、図4Bで示されるように、第1の特定のアドレス0x00000050と、第2の特定のアドレス0x00000200とに終端アドレスが書き込まれてもよい。なお、そのように、複数の特定のアドレスに終端アドレスが書き込まれる場合には、判断部24は、例えば、その複数の特定のアドレスのデータ(終端アドレス)がすべて一致しており、かつ、書き込み対象のソフトウェアが格納される領域における先頭のアドレスにデータが書き込まれており、かつ、特定のアドレスのデータがメモリ21の範囲内のアドレスであり、かつ、そのデータで示される終端アドレスのデータがあらかじめ決められた値である場合に、ソフトウェアの書き込みが正常であると判断してもよい。すなわち、判断部24は、その複数の特定のアドレスのデータが一致しない場合に、ソフトウェアの書き込みが正常でないと判断してもよい。複数の特定のアドレスのデータが一致しない場合とは、複数の特定のアドレスのデータの少なくとも一部が一致しない場合であってもよい。具体的には、第1から第3の特定のアドレスにそれぞれ格納されている第1から第3のデータのうち、第1のデータと第2のデータとは一致するが、第1のデータと第3のデータとは一致しない場合には、判断部24によって、ソフトウェアの書き込みが正常でないと判断されてもよい。
【0046】
また、本実施の形態では、あらかじめ決められた値である終端データが、一のアドレスに対応する領域に格納される場合、すなわち、上記具体例では終端データが4バイトである場合について説明したが、そうでなくてもよい。その終端データは、メモリ21における書き込み対象のソフトウェア終端の連続した複数のアドレスに書き込まれてもよい。すなわち、その終端データは、4バイトを超えるデータ量であってもよい。その場合には、例えば、図4Cで示されるように、終端アドレス0x000FFFFCと、その次のアドレス0x000FFFFDとのデータ0x12345678,0x9ABCDEF0が、あらかじめ決められた値(終端データ)であってもよい。すなわち、終端データは、例えば8バイトのデータであってもよい。終端データのデータ量を大きくすることによって、ソフトウェアの書き込みが正常に行われていない場合に、終端アドレスに応じたデータが偶然、あらかじめ決められた値と一致する可能性を低減させることができる。このように、あらかじめ決められた値が、メモリ21における書き込み対象のソフトウェアの終端の連続している複数のアドレスに書き込まれるものである場合には、判断部24は、例えば、書き込み対象のソフトウェアが格納される領域における先頭のアドレスにデータが書き込まれており、かつ、特定のアドレスのデータがメモリ21の範囲内のアドレスであり、かつ、そのデータで示される終端アドレスを含む連続している複数のアドレスのデータが、あらかじめ決められた値である場合に、ソフトウェアの書き込みが正常であると判断してもよい。すなわち、判断部24は、特定のアドレスに格納されている終端アドレスを含む連続している複数のアドレスのデータが、あらかじめ決められた値でない場合に、ソフトウェアの書き込みが正常でないと判断してもよい。
【0047】
なお、図4Cでは、終端データのアドレスである連続した複数のアドレスの先頭アドレスが、特定のアドレスに格納される場合について示しているが、そうでなくてもよい。例えば、終端データのアドレスである連続した複数のアドレスの後端アドレスが、特定のアドレスに格納されていてもよく、終端データのアドレスである連続した複数のアドレスの先頭アドレスでもなく後端アドレスでもないアドレスが、特定のアドレスに格納されていてもよい。
【0048】
また、本実施の形態では、判断部24が、書き込み対象のソフトウェアが格納される領域における先頭のアドレスにデータが書き込まれているかどうかを判断する場合について説明したが、そうでなくてもよい。判断部24は、その判断を行わなくてもよい。その場合には、判断部24は、例えば、特定のアドレスのデータがメモリ21の範囲内のアドレスであり、かつ、そのデータで示される終端アドレスのデータがあらかじめ決められた値である場合に、ソフトウェアの書き込みが正常であると判断してもよい。
【0049】
また、本実施の形態において、ソフトウェアの書き込み後に、正常に書き込まれたかどうか判断し、正常に書き込まれた場合には、その書き込み対象のソフトウェアそのものを、メモリ21の別の領域に格納するようにしてもよい。その別の領域に格納されるソフトウェアは、バックアップとして用いられる。したがって、例えば、その後にソフトウェアを書き換えた際に、正常に書き込むことができなかった場合には、そのバックアップ領域に格納されているソフトウェアを用いることができるようになり、少なくとも、溶接電源1がまったく動作しなくなる事態を回避することができる。なお、その後、ソフトウェアが正常に書き換えられた場合には、バックアップ領域のソフトウェアも、その書き換え後のソフトウェアと同じ内容となるように書き換えられることになる。例えば、図4Dで示されるように、アドレス0x00000000から0x000FFFFCまでに一連のソフトウェアが正常に書き込まれたと判断部24によって判断された場合に、記録部23は、そのソフトウェアを、メモリ21におけるソフトウェアのバックアップ領域にも書き込むものとする。なお、そのソフトウェアのバックアップ領域においても、特定のアドレスに、バックアップ領域における終端アドレスが書き込まれてもよく、または、そうでなくてもよい。後者の場合には、バックアップ領域の終端アドレスが、バックアップ領域と異なる領域において記憶されていてもよい。また、バックアップ領域を特定できるようにするため、バックアップ領域の先頭アドレスは固定であってもよく、または、その先頭アドレスがバックアップ領域以外の領域に記憶されていてもよい。また、正常に書き込まれたソフトウェアのバックアップは、メモリ21とは異なる記録媒体に書き込まれてもよい。
【0050】
また、本実施の形態では、ソフトウェア書き換え装置2が、溶接電源1に含まれる場合について説明したが、そうでなくてもよい。溶接電源1以外の組み込み装置に、ソフトウェア書き換え装置2が含まれていてもよい。その場合であっても、そのソフトウェア書き換え装置2を含む装置は、判断部24によって、ソフトウェア書き換えが正常に行われたと判断された場合に、メモリ21に書き込まれたソフトウェアを実行することが好適である。そのソフトウェアの実行は、通常、ソフトウェア書き換え装置2を含む装置の制御や動作等のために行われることになる。
【0051】
また、上記実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、または、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
【0052】
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う2個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、または、その情報の受け渡しを行う2個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
【0053】
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりした情報や、各構成要素が処理で用いる閾値や数式、アドレス等の情報等は、上記説明で明記していなくても、図示しない記録媒体において、一時的に、または長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、または、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、または、図示しない読み出し部が行ってもよい。
【0054】
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いる閾値やアドレス、各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していなくても、ユーザが適宜、それらの情報を変更できるようにしてもよく、または、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
【0055】
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、または、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現されうる。その実行時に、プログラム実行部は、記憶部や記録媒体にアクセスしながらプログラムを実行してもよい。また、そのプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体(例えば、光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。また、そのプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、または分散処理を行ってもよい。
【0056】
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【産業上の利用可能性】
【0057】
以上より、本発明によるソフトウェア書き換え装置によれば、メモリに格納されているソフトウェアの書き換えを高速化できるという効果が得られ、例えば、組み込みシステムで用いられるソフトウェアを書き換える装置等として有用である。
【符号の説明】
【0058】
1 溶接電源
2 ソフトウェア書き換え装置
11 電源
12 実行部
21 メモリ
22 受付部
23 記録部
24 判断部
図1
図2
図3
図4A
図4B
図4C
図4D
図5