JPWO2018179106A1 - プログラム更新装置、プログラム更新方法及びプログラム - Google Patents

プログラム更新装置、プログラム更新方法及びプログラム Download PDF

Info

Publication number
JPWO2018179106A1
JPWO2018179106A1 JP2019508400A JP2019508400A JPWO2018179106A1 JP WO2018179106 A1 JPWO2018179106 A1 JP WO2018179106A1 JP 2019508400 A JP2019508400 A JP 2019508400A JP 2019508400 A JP2019508400 A JP 2019508400A JP WO2018179106 A1 JPWO2018179106 A1 JP WO2018179106A1
Authority
JP
Japan
Prior art keywords
program
writing
code
compressed code
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019508400A
Other languages
English (en)
Other versions
JP6869330B2 (ja
Inventor
貴光 山田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2018179106A1 publication Critical patent/JPWO2018179106A1/ja
Application granted granted Critical
Publication of JP6869330B2 publication Critical patent/JP6869330B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

プログラム更新装置(100)は、サーバと通信することで、記憶部(130)のプログラム格納領域(130p)に記憶されている第1プログラム(410)を第2プログラムに更新する。受信部(111)は、第2プログラムを構成するコードが圧縮されてなる圧縮コードをサーバから順次受信する。第1書込部(112)は、受信部(111)によって受信された圧縮コードをプログラム格納領域(130p)に書き込む。第2書込部(113)は、プログラム格納領域(130p)から順次読み出した圧縮コードを展開してプログラム格納領域(130p)に書き込むことにより、プログラム格納領域(130p)に第2プログラムを書き込む。

Description

本発明は、プログラム更新装置、プログラム更新方法及びプログラムに関する。
プログラムを実行することで動作する組み込み機器が普及している。近年では、組み込み機器がネットワークを介して通信する機能を有し、この機能を利用して動作するケースが多くなっている。例えば、組み込み機器を動作させるためのプログラムを、組み込み機器の通信機能を利用して更新する技術が提案されている(例えば、特許文献1を参照)。
特許文献1には、フラッシュ・メモリのデータを書き換える装置について記載されている。この装置は、外部から入力された更新プログラムを圧縮して、既存のプログラムが記憶されている第1の記憶領域とは異なる第2の記憶領域に書き込む。そして、この装置は、第1の記憶領域に記憶されている既存のプログラムを消去してから、第2の記憶領域に書き込まれた圧縮状態の更新プログラムを展開して第1の記憶領域に書き込む。この装置によれば、第2の記憶領域には、圧縮された更新プログラムが記憶されるため、第2の記憶領域の容量が小さい場合であっても、第1の領域に記憶されるプログラムの更新が可能となる。
特開2003−15704号公報
特許文献1に記載の技術では、プログラムを更新するための専用の第2の記憶領域が必要となる。しかしながら、フラッシュメモリの容量に余裕がないケースに代表されるように、ハードウェアの資源に制限のある組み込み機器では、特許文献1に記載の技術を用いてプログラムを更新することが困難となる。
本発明は、上記の事情に鑑みてなされたもので、プログラムの更新専用の記憶領域を用いることなくプログラムを更新することを目的とする。
上記目的を達成するため、本発明のプログラム更新装置は、サーバと通信することで、記憶手段の特定の領域に記憶されている第1プログラムを第2プログラムに更新するプログラム更新装置であって、第2プログラムを構成するコードが圧縮されてなる圧縮コードをサーバから順次受信する受信手段と、受信手段によって受信された圧縮コードを特定の領域に書き込む第1書込手段と、特定の領域から順次読み出した圧縮コードを展開して特定の領域に書き込むことにより、特定の領域に第2プログラムを書き込む第2書込手段と、を備える。
本発明によれば、第2プログラムを構成するコードが圧縮されてなる圧縮コードが、第1プログラムが記憶されている特定の領域に書き込まれる。そして、圧縮コードが展開されて特定の領域に書き込まれる。このため、プログラムの更新専用の記憶領域を用いることなくプログラムを更新することができる。
プログラム更新システムの構成を示す図 プログラム更新装置の構成を示す図 サーバとプログラム更新装置との間における通信の概要を示す図 プログラム更新装置によって実行される一連の処理を示すフロー図 更新モード処理を示すフロー図 第1領域のモジュールがRAMにロードされた状態を示す図 第1書込処理を示すフロー図 第2領域のモジュールが削除された状態を示す図 RAMに分割コードが格納された状態を示す図 サーバから送信されるデータの構成を示す図 第2領域に圧縮コードが格納された状態を示す図 配置テーブルを示す図 サーバとプログラム更新装置との間における分割コードの伝送を示す図 第2書込処理を示すフロー図 第1領域のモジュールが削除された状態を示す図 展開領域に展開コードが格納された状態を示す図 記憶部に第2プログラムが格納された状態を示す図
以下、本発明の実施の形態を、図面を参照しつつ詳細に説明する。
実施の形態.
図1には、本実施の形態に係るプログラム更新システム1000の構成が示されている。プログラム更新システム1000は、プログラム更新装置100に記憶される第1プログラム410を、サーバ200から配信される第2プログラム420に更新するシステムである。
第1プログラム410は、例えば、通信機器、空調機器、照明機器、調理機器、音響機器及び映像機器を含む家電機器としてプログラム更新装置100を動作させるためのプログラムである。第2プログラム420は、第1プログラム410を改善したものに相当する。なお、第1プログラム410及び第2プログラム420は、いわゆるソフトウェアと同等であってもよいし、プロセッサ110に対する指令の他に、種々のデータ及びいわゆるライブラリを含んでもよい。
図1に示されるように、プログラム更新システム1000は、第1プログラム410を実行するプログラム更新装置100と、第2プログラム420を配信するサーバ200と、を有している。プログラム更新装置100及びサーバ200は、インターネットに代表されるネットワーク300を介して接続される。
プログラム更新装置100は、ネットワーク機器として機能する組み込み機器である。プログラム更新装置100は、第1プログラム410を実行することで、この第1プログラム410を第2プログラム420に更新する。プログラム更新装置100は、CPU(Central Processing Unit)又はMPU(Micro Processing Unit)を含んで構成されてプログラムを実行するプロセッサ110と、いわゆる主記憶装置に相当するRAM(Random Access Memory)120と、いわゆる補助記憶装置に相当する記憶部130と、ネットワーク300を介してサーバ200を含む外部の機器と通信するための通信インタフェース回路140と、を有している。RAM120、記憶部130及び通信インタフェース回路140は、内部バス150を介してプロセッサ110に接続されている。
なお、プログラム更新装置100は、プロセッサ110、RAM120、記憶部130及び通信インタフェース回路140以外の構成要素を有していてもよい。例えば、プログラム更新装置100が広域ネットワークであるネットワーク300と住宅内のLAN(Local Area Network)とを中継する通信機器である場合には、プログラム更新装置100は、LANを介して通信するためのインタフェース回路を有していてもよい。また、プログラム更新装置100が空調機器である場合には、プログラム更新装置100は、空調空気を生成して吹き出すための熱交換器、冷媒配管及び送風機を有していてもよい。このような構成要素は、第1プログラム410を実行するプロセッサ110によって適宜制御される。
サーバ200は、プログラム更新装置100を製造したメーカによって運営されるサーバ装置である。サーバ200を運営するメーカは、例えば、第1プログラム410に「1.0」というバージョン番号を付与し、第2プログラム420に「1.1」というバージョン番号を付与する。
図2には、プログラム更新装置100の機能的な構成が示されている。
プログラム更新装置100は、プロセッサ110が第1プログラム410を実行することにより発揮する種々の機能を有している。プロセッサ110によって発揮される機能には、受信モジュール411を実行することで実現される受信部111と、第1書込モジュール412を実行することで実現される第1書込部112と、第2書込モジュール413を実行することで実現される第2書込部113と、通常処理モジュール414を実行することで実現される通常処理部114と、が含まれる。
ここで、受信モジュール411、第1書込モジュール412、第2書込モジュール413及び通常処理モジュール414はいずれも、第1プログラム410を構成するプログラムコードである。プログラムコードは、例えば、バイナリコード又はオブジェクトコードである。受信モジュール411、第1書込モジュール412及び第2書込モジュール413は、第1プログラム410を第2プログラム420に更新するためのサブプログラム又はアプリケーションである。以下では、受信モジュール411、第1書込モジュール412及び第2書込モジュール413を総称して更新モジュール415という。更新モジュール415は、RAM120にロードされて実行され、通常処理モジュール414は、RAM120にロードされることなく記憶部130上で実行される。
受信部111は、サーバ200からコードを逐次受信して、受信したコードをRAM120に逐次格納する。ただし、サーバ200からは、第2プログラム420を構成するコードが圧縮された状態で送信されるため、受信部111は、圧縮されたコードを受信する。以下では、この圧縮された状態でサーバ200から伝送されるコードを圧縮コードという。なお、本実施の形態に係る圧縮コードは、圧縮されたサブプログラムに相当する。サブプログラムは、プログラムの一部の機能を指す。
第1書込部112は、サーバ200から受信した圧縮コードを記憶部130に逐次書き込む。詳細には、第1書込部112は、圧縮コードを記憶部130のうち後述の第2領域132に書き込む。また、第2書込部113は、記憶部130から圧縮コードを逐次読み出して展開し、展開したコードを記憶部130に逐次書き込むことにより、記憶部130に記憶されている第1プログラム410を第2プログラム420に更新する。詳細には、第2書込部113は、展開したコードを記憶部130のうち後述のプログラム格納領域130pに書き込む。
また、通常処理部114は、プログラムの更新以外の通常の処理を実行する。例えば、プログラム更新装置100が広域ネットワークとLANとを中継する通信機器である場合には、通常処理部114は、パケットの書き換えを含む中継処理を実行する。また、プログラム更新装置100が空調機器である場合には、通常処理部114は、送風機の制御を含む空調処理を実行する。
RAM120には、プロセッサ110が後述のブートプログラム400内の命令を実行することで、更新モジュール415が記憶部130からロードされる。そして、RAM120にロードされた更新モジュール415がプロセッサ110によって実行される。RAM120は、プロセッサ110が機能を発揮するために利用するアプリケーション領域121と、サーバ200から受信したコードを一時的に格納するためのバッファ領域122と、圧縮コードを展開するための展開領域123と、を有している。
記憶部130は、不揮発性メモリであって、本実施の形態ではフラッシュメモリである。記憶部130は、プログラム更新装置100の起動時に実行されるブートプログラム400と、第1プログラム410と、プログラムを更新するか否かを示す更新フラグ501と、記憶部130に配置された圧縮コードのアドレスを示す配置テーブル502と、を記憶する。なお、RAM120にロードさせることなく、フラッシュメモリである記憶部130上でプログラムを実行する場合には、記憶部130にデータを書き込むことができない。このため、第1プログラム410を第2プログラム420に更新するための更新モジュール415は、RAM120上で実行される。
第1プログラム410は、記憶部130の特定の領域であるプログラム格納領域130pに格納される。プログラム格納領域130pに格納されている第1プログラム410の実行により第1プログラム410が第2プログラム420に更新されると、プログラム格納領域130pに格納されている第1プログラム410が第2プログラム420に置き換わることとなる。
プログラム格納領域130pは、更新モジュール415が格納される第1領域131と、第1領域131とは異なる領域であって、通常処理モジュール414が格納される第2領域132と、を有している。プログラム格納領域130pの容量は、第1プログラム410のサイズと同一又は同等である。第2プログラム420のサイズが第1プログラム410より大きい場合を想定して、プログラム格納領域130pの容量を第1プログラム410のサイズより大きくしてもよい。
ここで、領域は、フラッシュメモリのブロックにより構成される領域であってもよいが、これには限定されない。
なお、ブートプログラム400、更新フラグ501及び配置テーブル502は、記憶部130が有する記憶領域のうちプログラム格納領域130pとは異なる領域に格納される。
続いて、プログラム更新システム1000における第2プログラム420の配信の概要について、図3のシーケンス図を用いて説明する。図3には、サーバ200からプログラム更新装置100へ圧縮コードを送信する流れが示されている。
まず、プログラム更新装置100は、プログラムを更新する必要がないときに、通常処理を実行する(ステップS1)。サーバ200は、第2プログラム420を配信する準備が完了すると、プログラムの更新をプログラム更新装置100に要求する(ステップS2)。この要求を受けたプログラム更新装置100は、再起動して(ステップS3)、新たなプログラムの送信をサーバ200に要求する(ステップS4)。
次に、サーバ200は、第2プログラム420を構成するサブプログラムが圧縮されてなる圧縮コードを順次送信して、プログラム更新装置100は、圧縮コードを順次受信する。具体的には、サーバ200は、圧縮コード[1]を送信する(ステップS5)。圧縮コード[1]は、順番に送信される複数の圧縮コードのうち1番目に送信されるコードを意味する。圧縮コードが送信される順番は、サーバ200によって決定されてもよいし、サーバ200とプログラム更新装置100との別途の手続で予め定められてもよい。
プログラム更新装置100は、圧縮コード[1]を受信すると、受信した圧縮コード[1]を記憶部130の第2領域132に格納する(ステップS6)。そして、プログラム更新装置100は、圧縮コード[1]の受信の完了をサーバ200に通知して、次の圧縮コードの送信をサーバ200に要求する(ステップS7)。
プログラム更新装置100からの要求を受けて、サーバ200は、2番目に送信すべき圧縮コード[2]をプログラム更新装置100に送信する(ステップS8)。プログラム更新装置100は、圧縮コード[2]を受信して第2領域132に格納する(ステップS9)。そして、プログラム更新装置100は、圧縮コード[2]の受信の完了をサーバ200に通知して、次の圧縮コードの送信をサーバ200に要求する(ステップS10)。このようにして圧縮コードのダウンロードが繰り返される。
サーバ200が最後に送信すべき圧縮コード[N]を送信し(ステップS11)、プログラム更新装置100が圧縮コード[N]を第2領域132に格納すると(ステップS12)、プログラム更新装置100は、圧縮コード[N]の受信の完了をサーバ200に通知する(ステップS13)。そして、プログラム更新装置100は、記憶部130から読み出した圧縮コードをRAM120に順次展開して、第2プログラム420をプログラム格納領域130pに格納する(ステップS14)。
続いて、プログラム更新装置100によって実行される一連の処理について、図4〜17を用いて説明する。図4には、プログラム更新装置100によって実行される処理が示されている。図4に示される処理は、プログラム更新装置100の電源が投入されることで開始する。
まず、プログラム更新装置100は、更新フラグ501がON状態であるか否かを判定する(ステップS21)。具体的には、ブートプログラム400を実行するプロセッサ110が、記憶部130に記憶されている更新フラグ501を参照して、プログラムを更新すべきか否かを判定する。
更新フラグ501がON状態ではないと判定された場合(ステップS21;No)、プログラム更新装置100は、通常の処理を実行する(ステップS22)。この処理は、図3に示されるステップS1に相当し、通常処理部114によって実行される。
次に、通常処理部114は、サーバ200からのプログラムの更新の要求があるか否かを判定する(ステップS23)。この要求は、図3に示されるステップS2の要求に相当する。更新の要求がないと判定した場合(ステップS23;No)、通常処理部114は、ステップS22以降の処理を繰り返す。
一方、更新の要求があると判定した場合(ステップS23;Yes)、通常処理部114は、更新フラグ501をON状態に設定する(ステップS24)。これにより、プログラム更新装置100は、第1プログラム410を更新すべき状態となる。
次に、通常処理部114は、実行した処理がすべて終了したか否かを判定する(ステップS25)。実行した処理がすべて終了してはいないと判定した場合(ステップS25;No)、通常処理部114は、ステップS25の判定を繰り返し実行して、すべての処理が終了するまで待機する。
実行した処理がすべて終了したと判定した場合(ステップS25;Yes)、プロセッサ110は、再起動の設定をする(ステップS26)。その後、プログラム更新装置100による一連の処理が終了し、プログラム更新装置100が再起動して、再び図4に示される一連の処理が開始する。この再起動は、図3に示されるステップS3に相当する。
ステップS21にて、更新フラグ501がON状態であると判定した場合(ステップS21;Yes)、プログラム更新装置100は、更新モード処理を実行する(ステップS27)。この更新モード処理について、図5を用いて説明する。
図5に示されるように、更新モード処理では、プロセッサ110が、ブートプログラム400の実行により、第1領域131の更新モジュール415をRAM120にロードする(ステップS30)。具体的には、図6に示されるように、受信モジュール411、第1書込モジュール412及び第2書込モジュール413がRAM120にロードされる。これにより、プロセッサ110が受信部111、第1書込部112及び第2書込部113として機能するための準備が完了する。
次に、第1書込処理が、主として受信部111及び第1書込部112によって実行される(ステップS31)。そして、第2書込処理が、主として第2書込部113によって実行される(ステップS32)。その後、プロセッサ110が更新フラグ501をOFF状態に設定する(ステップS33)。これにより、更新モード処理が終了して、プログラムの更新が完了する。
図4に戻り、更新モード処理(ステップS27)が終了すると、プログラム更新装置100は、ステップS22以降の処理を実行する。
続いて、図5に示された第1書込処理(ステップS31)及び第2書込処理(ステップS32)について、順に説明する。
第1書込処理(ステップS31)では、図7に示されるように、第1書込部112が、第2領域132のコードを消去する(ステップS41)。これにより、図8に示されるように、第2領域132に記憶されていた通常処理モジュール414が削除されることとなる。
次に、受信部111は、第2プログラム420の送信をサーバ200に要求する(ステップS42)。この要求は、図3に示されるステップS4に相当する。そして、受信部111は、分割された圧縮コードを受信して、RAM120のバッファ領域122に格納する(ステップS43)。これにより、図9に示されるように、バッファ領域122に分割コード611が格納される。
ここで、サーバ200から送信されるデータの詳細な構成について、図10を用いて説明する。図10に示される送信データ600は、サーバ200から送信されてプログラム更新装置100によって受信されるデータである。送信データ600は、メッセージヘッダ60と、圧縮コード61,62,63と、を有している。
メッセージヘッダ60は、「プログラムの更新要求」を意味するコマンド名、送信データ600のサイズ、及び圧縮コードの総数Nを示す固定長のデータである。また、圧縮コード61〜63それぞれは、ヘッダ601と圧縮されたサブプログラム602とを有している。ヘッダ601は、サブプログラム602の名称と、サブプログラム602の圧縮された状態におけるサイズ及び展開された状態におけるサイズと、記憶部130上に展開されたときのアドレスと、を示す固定長のデータである。圧縮されたサブプログラム602は、可変長のデータである。本実施の形態に係る圧縮コード61〜63それぞれのサブプログラム602は、第2プログラム420を構成するモジュールに対応する。なお、サブプログラム602は、いわゆるアプリケーション又はソフトウェアコンポーネントに対応するコードであってもよい。
また、本実施の形態では、第2プログラム420が格納される記憶部130の構成が、サーバ200を運営する者に対して明らかであるものとする。例えば、記憶部130を備えるプログラム更新装置100を製造したメーカが、第2プログラム420を配信するものとする。このため、ヘッダ601には、圧縮コードが展開されたときの記憶部130におけるアドレスが含まれ得る。
圧縮コード61〜63は可変長のデータであるため、そのサイズが大きくなることもある。このため、圧縮コード61〜63それぞれがサーバ200から送信される際には、適当なサイズに分割される。図10では、圧縮コード61から分割された分割コード611,612,613が一例として示されている。
なお、図10中の分割コード[1−1]は、圧縮コード[1]から分割された1番目のコードを意味し、分割コード[1−2]は、圧縮コード[1]から分割された2番目のコードを意味する。同様に、分割コード[1−K]は、圧縮コード[1]から分割されたK番目のコードを意味する。
図7に戻り、ステップS43に続いて、受信部111は、圧縮コードのヘッダを参照して、1つの圧縮コードを構成する分割コードをすべて受信したか否かを判定する(ステップS44)。ステップS44の判定を否定した場合(ステップS44;No)、受信部111は、ステップS43以降の処理を繰り返す。これにより、図9に示されるように、分割コード612以降のコードがバッファ領域122にアペンドされる。
一方、ステップS44の判定が肯定された場合(ステップS44;Yes)、第1書込部112は、分割コードにより構成される圧縮コードを第2領域132に書き込む(ステップS45)。この圧縮コードの書き込みは、図3に示されるステップS6,S9,S12に相当する。これにより、図11に示されるように、圧縮コード61が第2領域132に格納される。
次に、第1書込部112は、配置テーブル502を生成する(ステップS46)。具体的には、第1書込部112は、図12に示されるように、第2領域132に書き込んだ圧縮コードのアドレス及びサイズと、圧縮コードを展開したときのサイズと、を含むレコードを生成して、テーブルに追加することにより、配置テーブル502を生成する。なお、図12中の番号は、圧縮コードの番号を意味する。例えば、圧縮コード[1]の番号は、「1」であって、サーバ200から送信された順番と等しい番号が圧縮コードに付される。
次に、受信部111は、圧縮コードの受信の完了をサーバ200に通知する(ステップS47)。この通知は、図3に示されるステップS7,S10,S13に相当する。
次に、受信部111は、メッセージヘッダ60(図10参照)に含まれる圧縮コードの総数Nを参照して、圧縮コードをすべて受信したか否かを判定する(ステップS48)。圧縮コードをすべて受信してはいないと判定した場合(ステップS48;No)、受信部111は、次の圧縮コードの送信をサーバ200に要求する(ステップS49)。この要求は、図3に示されるステップS7,S10に相当する。
圧縮コードをすべて受信したと判定された場合(ステップS48;Yes)、第1書込処理が終了し、プログラム更新装置100によって実行される処理は、図5に示される更新モード処理に戻る。
図13には、プログラム更新装置100が第1書込処理を実行する際のサーバ200との間における通信の流れが示されている。図13に示されるように、プログラム更新装置100がプログラムの送信をサーバ200に要求すると(ステップS4)、サーバ200は、圧縮コード[1]の分割コード[1−1]をプログラム更新装置100に送信して(ステップS401)、プログラム更新装置100は、分割コード[1−1]を受信してバッファ領域122の先頭に格納する(ステップS402)。
次に、サーバ200は、圧縮コード[1]の分割コード[1−2]を送信して(ステップS403)、プログラム更新装置100は、分割コード[1−2]を受信してバッファ領域122にアペンドすることで格納する(ステップS404)。このようにして、分割コードの送信とバッファ領域122への格納が繰り返される。そして、サーバ200は、圧縮コード[1]を構成する最後の分割コード[1−K]を送信して(ステップS405)、プログラム更新装置100は、分割コード[1−K]をバッファ領域122に格納する(ステップS406)。
次に、プログラム更新装置100は、バッファ領域122に格納された分割コード[1−1]〜[1−K]を結合することで圧縮コード[1]を生成して、記憶部130の第2領域132に圧縮コード[1]を格納する(ステップS407)。
そして、プログラム更新装置100が次の圧縮コードの送信を要求すると(ステップS7)、サーバ200は、圧縮コード[2]の分割コード[2−1]をプログラム更新装置100に送信して(ステップS411)、プログラム更新装置100は、分割コード[2−1]を受信してバッファ領域122の先頭に格納する(ステップS412)。
なお、図13中のステップS402,S404,S406,S412はそれぞれ、図7中のステップS43に相当する。また、図13中のステップS407は、図7中のステップS45及び図3中のステップS6に相当する。また、図13中の分割コードを送信するステップS401,S403,S405は、図3に示されるステップS5に相当する。
図5に戻り、第1書込処理(ステップS31)が終了すると、第2書込処理(ステップS32)が実行される。第2書込処理(ステップS32)では、図14に示されるように、第2書込部113が、第1領域131のコードを消去する(ステップS51)。これにより、図15に示されるように、第1領域131に記憶されていた更新モジュール415が削除されることとなる。
次に、第2書込部113は、未だ展開していない圧縮コードを第2領域132から1つ選択して読み出す(ステップS52)。ここで、圧縮コードを選択する手法は任意である。第2書込部113は、最初に実行するステップS52では圧縮コード[1]を選択し、次回以降のステップS52では番号の若い圧縮コード[2]を優先して選択してもよい。また、第2書込部113は、他の圧縮コードよりサイズが大きい圧縮コードを優先して選択してもよい。
次に、第2書込部113は、選択した圧縮コードを展開したときのサイズに等しい領域がプログラム格納領域130pに空いているか否かを判定する(ステップS53)。具体的には、第2書込部113は、配置テーブル502を参照することにより、選択した圧縮コードを展開したときのコードが格納される領域を、プログラム格納領域130pのうち、圧縮コードが記憶されている領域とは異なる領域、又は、既に展開した圧縮コードが記憶されている領域に確保できるか否かを判定する。
ステップS53の判定を否定した場合(ステップS53;No)、第2書込部113は、処理をステップS52に移行して、前回のステップS52で選択した圧縮コードとは異なる圧縮コードを1つ選択する。ここで、第2書込部113は、未選択の圧縮コードを優先して選択してもよい。
ステップS53の判定を肯定した場合(ステップS53;Yes)、第2書込部113は、選択した圧縮コードをRAM120の展開領域123上に展開する(ステップS54)。これにより、図16に例示されるように、展開領域123には、圧縮コード61から展開された展開コード701が格納される。
次に、第2書込部113は、展開コードを書き込んだアドレスを追加することで、配置テーブル502を更新する(ステップS56)。
次に、第2書込部113は、第2領域132に格納されていた圧縮コードをすべて展開して第2プログラム420をプログラム格納領域130pに書き込んだか否かを判定する(ステップS57)。第2プログラム420をプログラム格納領域130pに書き込んではいないと判定した場合(ステップS57;No)、第2書込部113は、ステップS52以降の処理を繰り返す。
一方、第2プログラム420をプログラム格納領域130pに書き込んだと判定された場合(ステップS57;Yes)、第2書込処理が終了して、プログラム更新装置100によって実行される処理は、図5に示される更新モード処理に戻る。
図17には、第2書込処理が完了して、第2プログラム420が記憶部130に記憶されている状態が示されている。図17に示されるように、第2プログラム420は、第1プログラム410の受信モジュール411、第1書込モジュール412、第2書込モジュール413及び通常処理モジュール414それぞれに対応する受信モジュール421、第1書込モジュール422、第2書込モジュール423及び通常処理モジュール424を有している。このため、サーバ200から更なるプログラムの更新が要求された場合には、第1プログラム410と同様に、第2プログラム420の実行により、第2プログラム420自体が、第2プログラム420とは異なる他のプログラムに更新されて置き換わることとなる。
なお、圧縮コードから展開領域123に順次展開された展開コードは、第2プログラム420を構成するモジュールに等しい。例えば、展開コード701は、受信モジュール421に等しい。
以上、説明したように、プログラム更新装置100は、記憶手段としての記憶部130と、圧縮コードをサーバ200から順次受信する受信手段としての受信部111と、圧縮コードを第1領域131に書き込む第1書込手段としての第1書込部112と、展開コードをプログラム格納領域130pに書き込むことにより、当該プログラム格納領域130pに第2プログラム420を書き込む第2書込手段としての第2書込部113と、を有していた。
そして、第1書込部112は、圧縮コードをプログラム格納領域130pに書き込んだ。そして、第2書込部113は、プログラム格納領域130pから読み込んだ圧縮コードを展開することで得た展開コードをプログラム格納領域130pに格納した。これにより、プログラム更新装置100は、プログラムの更新専用の記憶領域を用いることなく、プログラム格納領域130pに記憶されている第1プログラム410を第2プログラム420に更新することができる。
また、第1書込部112は、プログラム格納領域130pのうち、通常処理モジュール414が格納されている第2領域132に圧縮コードを書き込んだ。すなわち、第1書込部112は、プログラムの更新に使用しない領域に圧縮コードを書き込んだ。例えば、プログラム更新装置100への電力供給の遮断、或いはネットワーク300における通信途絶が発生すると、第1書込処理が正常に終了することなく中断してしまう。しかしながら、第1書込処理では、更新モード処理に必要な第1領域131のモジュールが変更されることがないため、プログラム更新装置100を再起動することで、容易に更新モード処理を再開して、プログラムを更新することが可能になる。
また、フラッシュメモリは組み込み機器に広く用いられている。そして、第1書込部112は、フラッシュメモリである記憶部130のうち第2領域132のコードを消去して、第2領域132に圧縮コードを書き込んだ。このため、プログラムを更新する組み込み機器を容易に構成することができる。
また、第2書込部113は、1つの圧縮コードを展開する際に、配置テーブル502を参照して、プログラム格納領域130pのうち、他の圧縮コードが記憶されている領域とは異なる領域、又は、既に展開した他の圧縮コードが記憶されている領域に、展開コードを書き込んだ。これにより、未だ展開されていない圧縮コードを破損することなく、すべての圧縮コードを展開することができる。
また、圧縮コードには、圧縮されたサブプログラム602が含まれた(図10参照)。このサブプログラム602は、第2プログラム420を構成するモジュールに等しい。したがって、第2書込処理が中断された場合であっても、中断されるまでに圧縮コードが展開されるため、第2プログラム420の機能をある程度確保することが期待できる。
以上、本発明の実施の形態について説明したが、本発明は上記実施の形態によって限定されるものではない。
上記実施の形態に係る圧縮コードには、圧縮されたサブプログラム602が含まれたが、これには限定されない。例えば、第2プログラム420を適当なサイズに等分したコードを圧縮することで圧縮コードを構成してもよい。
上記実施の形態では、受信部111及び第1書込部112が圧縮コードを逐次受信して、圧縮コードの受信がすべて終了した後に第2書込部113が圧縮コードの読み出し及び展開をする場合を例に説明したが、これには限定されない。例えば、受信部111が圧縮コードを逐次受信する処理の最中に、第1書込部112が第1領域131に圧縮コードを書き込んだり、第2書込部113が第1領域131に展開コードを書き込んだりしてもよい。これにより、更新モード処理の実行時間を短縮することができる。
上記実施の形態では、第1書込部112による圧縮コードの書き込みがすべて終了した後に、第2書込部113が圧縮コードを読み出す場合を例に説明したが、これには限定されない。第1書込部112による圧縮コードの書き込みと、第2書込部113による圧縮コードの読み出し及び展開と、を並行して実行してもよい。これらの処理が並行して実行される場合には、更新モード処理の実行時間を短縮することができる。
上記実施の形態では、第2書込部113が、一の圧縮コードについての読み出し、展開及び書き込みが完了した後に、他の圧縮コードを読み出す場合を例に説明したが、これには限定されない。第2書込部113は、一の圧縮コードについての読み出し及び展開と、他の圧縮コードについての書き込みと、を並行して実行してもよい。これらの処理が並行して実行される場合にも、更新モード処理の実行時間を短縮することができる。
また、上記実施の形態に係る配置テーブル502は、記憶部130に記憶されたが、これには限定されない。例えば、第1書込部112がRAM120上にのみ配置テーブル502を生成して、第2書込部113がこの配置テーブル502を参照してもよい。
また、プログラム更新装置100は、内蔵の記憶部130に記憶される第1プログラム410を更新したが、これには限定されない。プログラム更新装置100は、取り外し可能な外部の記憶装置に記憶されているプログラムを更新してもよい。例えば、複数の組み込み機器を管理するプログラム更新装置100が、サーバ200から配信されるプログラムを受信して、組み込み機器それぞれのプログラムを更新してもよい。
また、プログラム更新装置100は、サーバ200と通信することで第2プログラム420を取得したが、これには限定されない。プログラム更新装置100は、フレキシブルディスク、CD−ROM(Compact Disk Read-Only Memory)、DVD(Digital Versatile Disk)に代表されるコンピュータ読み取り可能な記録媒体に格納して配布された第2プログラム420を取得してもよい。
上記実施の形態に係るプログラム更新装置100の機能は、専用のハードウェアによっても、また、通常のコンピュータシステムによっても実現することができる。
例えば、記憶部130に記憶される第1プログラム410を、コンピュータ読み取り可能な記録媒体に格納して配布し、それらの第1プログラム410をコンピュータにインストールすることにより、上述の処理を実行する装置を構成することができる。
また、第1プログラム410をインターネットに代表される通信ネットワーク上のサーバ装置が有するディスク装置に格納しておき、搬送波に重畳させて、コンピュータにダウンロードするようにしてもよい。
また、通信ネットワークを介して第1プログラム410を転送しながら起動実行することによっても、上述の処理を達成することができる。
さらに、第1プログラム410の全部又は一部をサーバ装置上で実行させ、その処理に関する情報をコンピュータが通信ネットワークを介して送受信しながら第1プログラム410を実行することによっても、上述の処理を達成することができる。
なお、上述の機能を、OS(Operating System)が分担して実現する場合又はOSとアプリケーションとの協働により実現する場合等には、OS以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロードしてもよい。
また、プログラム更新装置100の機能を実現する手段は、ソフトウェアに限られず、その一部又は全部を、回路を含む専用のハードウェアによって実現してもよい。
本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施の形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
本発明は、機器を動作させるためのプログラムの更新に適している。
1000 プログラム更新システム、 100 プログラム更新装置、 110 プロセッサ、 111 受信部、 112 第1書込部、 113 第2書込部、 114 通常処理部、 120 RAM、 121 アプリケーション領域、 122 バッファ領域、 123 展開領域、 130 記憶部、 130p プログラム格納領域、 131 第1領域、 132 第2領域、 140 通信インタフェース回路、 150 内部バス、 200 サーバ、 300 ネットワーク、 400 ブートプログラム、 410 第1プログラム、 411,421 受信モジュール、 412,422 第1書込モジュール、 413,423 第2書込モジュール、 414,424 通常処理モジュール、 415 更新モジュール、 420 第2プログラム、 501 更新フラグ、 502 配置テーブル、 600 送信データ、 60 メッセージヘッダ、 61〜63 圧縮コード、 601 ヘッダ、 602 サブプログラム、 611〜613 分割コード、 701 展開コード。

Claims (5)

  1. サーバと通信することで、記憶手段の特定の領域に記憶されている第1プログラムを第2プログラムに更新するプログラム更新装置であって、
    前記第2プログラムを構成するコードが圧縮されてなる圧縮コードを前記サーバから順次受信する受信手段と、
    前記受信手段によって受信された前記圧縮コードを前記特定の領域に書き込む第1書込手段と、
    前記特定の領域から順次読み出した前記圧縮コードを展開して前記特定の領域に書き込むことにより、前記特定の領域に前記第2プログラムを書き込む第2書込手段と、
    を備えるプログラム更新装置。
  2. 前記記憶手段は、フラッシュメモリであって、
    前記第1プログラムは、プロセッサを前記受信手段、前記第1書込手段及び前記第2書込手段として機能させるための更新モジュールを含み、
    前記第1書込手段は、前記特定の領域のうち前記更新モジュールが記憶されている領域とは異なる領域に前記圧縮コードを書き込む、
    請求項1に記載のプログラム更新装置。
  3. 前記第1書込手段は、書き込んだ前記圧縮コードのアドレスを示すテーブルを生成し、
    前記第2書込手段は、一の前記圧縮コードを展開する際に、前記テーブルを参照して、前記特定の領域のうち、他の前記圧縮コードが記憶されている領域とは異なる領域、又は、既に展開した他の前記圧縮コードが記憶されている領域に、一の前記圧縮コードから展開したコードを書き込む、
    請求項1又は2に記載のプログラム更新装置。
  4. 記憶手段の特定の領域に記憶されている第1プログラムを第2プログラムに更新するプログラム更新方法であって、
    前記第2プログラムを構成するコードが圧縮されてなる圧縮コードを前記特定の領域に順次書き込む第1書込ステップと、
    前記特定の領域から順次読み出した前記圧縮コードを展開して前記特定の領域に書き込むことにより、前記特定の領域に前記第2プログラムを書き込む第2書込ステップと、
    を含むプログラム更新方法。
  5. 記憶手段の特定の領域に記憶されているプログラムであって、コンピュータを、
    他のプログラムを構成するコードが圧縮されてなる圧縮コードをサーバから順次受信する受信手段、
    前記受信手段によって受信された前記圧縮コードを前記特定の領域に書き込む第1書込手段、
    前記特定の領域から順次読み出した前記圧縮コードを展開して前記特定の領域に書き込むことにより、前記特定の領域に前記他のプログラムを書き込む第2書込手段、
    として機能させるためのプログラム。
JP2019508400A 2017-03-28 2017-03-28 プログラム更新装置、プログラム更新方法及びプログラム Active JP6869330B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/012735 WO2018179106A1 (ja) 2017-03-28 2017-03-28 プログラム更新装置、プログラム更新方法及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2018179106A1 true JPWO2018179106A1 (ja) 2019-11-07
JP6869330B2 JP6869330B2 (ja) 2021-05-12

Family

ID=63674563

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019508400A Active JP6869330B2 (ja) 2017-03-28 2017-03-28 プログラム更新装置、プログラム更新方法及びプログラム

Country Status (2)

Country Link
JP (1) JP6869330B2 (ja)
WO (1) WO2018179106A1 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03102426A (ja) * 1989-09-16 1991-04-26 Fujitsu Ltd アドレス変換機構によるrom制御方式
JP2003157204A (ja) * 2001-11-20 2003-05-30 Canon Inc データ書き換え装置及びデータ書き換え方法並びに記憶媒体
JP2005258562A (ja) * 2004-03-09 2005-09-22 Matsushita Electric Ind Co Ltd データ更新装置及びデータ更新方法
JP2011141696A (ja) * 2010-01-06 2011-07-21 Canon Inc 情報処理装置及びその制御方法
JP2012243257A (ja) * 2011-05-24 2012-12-10 Denso Corp 電子制御装置
JP2014115927A (ja) * 2012-12-12 2014-06-26 Sharp Corp プログラム更新装置、方法、プログラム、及び記憶媒体

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03102426A (ja) * 1989-09-16 1991-04-26 Fujitsu Ltd アドレス変換機構によるrom制御方式
JP2003157204A (ja) * 2001-11-20 2003-05-30 Canon Inc データ書き換え装置及びデータ書き換え方法並びに記憶媒体
JP2005258562A (ja) * 2004-03-09 2005-09-22 Matsushita Electric Ind Co Ltd データ更新装置及びデータ更新方法
JP2011141696A (ja) * 2010-01-06 2011-07-21 Canon Inc 情報処理装置及びその制御方法
JP2012243257A (ja) * 2011-05-24 2012-12-10 Denso Corp 電子制御装置
JP2014115927A (ja) * 2012-12-12 2014-06-26 Sharp Corp プログラム更新装置、方法、プログラム、及び記憶媒体

Also Published As

Publication number Publication date
WO2018179106A1 (ja) 2018-10-04
JP6869330B2 (ja) 2021-05-12

Similar Documents

Publication Publication Date Title
JP2009544095A (ja) Ota可能な携帯端末のプログラム更新システム及び方法
JP2011113435A (ja) データ配信装置、データ配信方法および情報処理装置
WO2007020735A1 (ja) 競合解決装置
JPWO2006011343A1 (ja) 競合解決装置
JP5445669B2 (ja) マルチコアシステムおよび起動方法
CN111290773B (zh) 系统升级方法、设备及可读存储介质
WO2019207729A1 (ja) 産業用コンピュータ、産業用コンピュータシステム、オペレーティングシステム更新方法及びプログラム
JP2009020886A (ja) Otaプログラミングのためのシステム及び方法
CN109343862B (zh) 应用的资源数据的调度方法及装置
CN110580167A (zh) 一种系统升级方法、智能设备及服务器
JP2006268377A (ja) プログラム起動制御装置及びプログラム起動制御方法
CN108304144B (zh) 数据写入、读取方法与系统、数据读写系统
JP6869330B2 (ja) プログラム更新装置、プログラム更新方法及びプログラム
JPWO2014061486A1 (ja) 情報処理装置、情報処理方法、およびプログラム
US20160306548A1 (en) A method for increasing burning speed of a system firmware
JP2007026318A (ja) 携帯電話機、プログラム作成方式、プログラム更新方式、プログラム作成方法及びプログラム更新方法
US6636964B1 (en) Method and apparatus for loading an object-oriented operating system by providing an initial execution environment and migrating to a core execution environment thereafter
JP7101808B2 (ja) 機器制御システムおよびサーバ
JP2007122555A (ja) 情報処理装置
CN116932241A (zh) 一种服务启动方法及相关装置
JPWO2018167821A1 (ja) 通信装置、サーバ、通信システム、通信方法及びプログラム
JP2011164759A (ja) Biosアップデート方法、biosアップデート装置及びbiosアップデートプログラム
CN112083944A (zh) Linux设备的系统升级装置及方法
CN111901430A (zh) 一种配置智能音箱内容的方法、系统、设备和存储介质
JP2018185615A (ja) 電子機器、方法、及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190703

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190703

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200623

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200811

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201001

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210316

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210413

R150 Certificate of patent or registration of utility model

Ref document number: 6869330

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250