JP5094531B2 - ソフトウェア書き換え装置及びソフトウェア書き換え方法及びソフトウェア書き換えプログラム - Google Patents

ソフトウェア書き換え装置及びソフトウェア書き換え方法及びソフトウェア書き換えプログラム Download PDF

Info

Publication number
JP5094531B2
JP5094531B2 JP2008114340A JP2008114340A JP5094531B2 JP 5094531 B2 JP5094531 B2 JP 5094531B2 JP 2008114340 A JP2008114340 A JP 2008114340A JP 2008114340 A JP2008114340 A JP 2008114340A JP 5094531 B2 JP5094531 B2 JP 5094531B2
Authority
JP
Japan
Prior art keywords
program
execution code
update
rewriting
storage device
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.)
Expired - Fee Related
Application number
JP2008114340A
Other languages
English (en)
Other versions
JP2009265923A (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
Priority to JP2008114340A priority Critical patent/JP5094531B2/ja
Publication of JP2009265923A publication Critical patent/JP2009265923A/ja
Application granted granted Critical
Publication of JP5094531B2 publication Critical patent/JP5094531B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、ソフトウェア書き換え装置及びソフトウェア書き換え方法及びソフトウェア書き換えプログラムに関するものである。
情報処理用の記憶装置の1つとしてフラッシュメモリがあり、携帯電話などの組み込み機器に使われている。フラッシュメモリには、一般にNOR型フラッシュメモリとNAND型フラッシュメモリの2種類がある。NOR型フラッシュメモリでは、XIP(eXecute・In・Place)という技術により、フラッシュメモリ上のデータやコードにランダムにアクセスできる上、フラッシュメモリ上でコードをそのまま実行できる。一方、NAND型フラッシュメモリでは、フラッシュメモリ上のコードをRAM(Random・Access・Memory)にロードして実行しなければならない。そのため、RAMの容量がNAND型フラッシュメモリよりも小さいと、必要に応じてコードをRAMにロードする仮想記憶(デマンドページング)の技術を使う必要がある。しかしながら、一般に同じ容量であれば、NAND型フラッシュメモリの方がNOR型フラッシュメモリよりもコストが安くなる。
従来技術では、ソフトウェアの更新を実行する場合、フラッシュメモリを2重にもつことによって、コードの実行中であってもフラッシュメモリ上のソフトウェアを書き換えていた(例えば、特許文献1参照)。
フラッシュメモリが電池で動作する組み込み機器に使われている場合、コードの実行中には電池が消耗するため、コードの実行中にソフトウェアの更新を実行していると電池が切れる可能性がある。従来技術では、そのような事態が発生すると、フェールセーフ機能によって、復旧後引き続きソフトウェアの更新を実行していた(例えば、特許文献2及び3参照)。
特開平7−200306号公報 特開2005−78502号公報 特開2005−215841号公報
ソフトウェアの更新を実行する場合、NOR型フラッシュメモリでは、従来技術のようにフラッシュメモリを2重化していなければ、コードの実行中にフラッシュメモリ上のソフトウェアを書き換えることは困難であった。しかしながら、フラッシュメモリを2重化することは、コストに厳しい組み込み機器では適用しにくいという課題があった。
一方、NAND型フラッシュメモリでは、コードをRAM上にコピーして実行するため、コードの実行中にフラッシュメモリ上のソフトウェアを書き換えることができる。しかしながら、NAND型フラッシュメモリでは、必要に応じてコードをRAMにロードするため、書き換え中のコードをRAMにロードするような事態が発生すると、従来技術では対処できないという課題があった。
一般にPC(パーソナルコンピュータ)などのソフトウェアの更新においても、多くの場合、アプリケーションを停止するようにユーザに指示したり、ファームウェアの更新方法を限定したり、あるいは、実行中のソフトウェアの更新が可能であっても、機能を制限したりする上に、ハードディスクの容量に余裕があるか、2重にメモリをもっていなければならない。
本発明は、例えば、メモリを2重化することなく、プログラムの実行コード又はプログラムが利用するデータを当該プログラムの実行中に書き換えられるようにすることを目的とする。
本発明の一の態様に係るソフトウェア書き換え装置は、
プログラムの実行コードを記憶する第1記憶装置と、プログラムの実行コードがロードされる記憶領域を有する第2記憶装置と、プログラムの実行コードを実行する処理装置とを具備するソフトウェア書き換え装置において、
前記第1記憶装置に記憶されたプログラムの実行コードを前記第2記憶装置の記憶領域にロードして前記処理装置により実行するプログラム呼び出し部と、
前記第1記憶装置に記憶されたプログラムの実行コードを更新するプログラム書き換え部とを備え、
前記プログラム呼び出し部は、前記プログラム書き換え部によるプログラムの実行コードの更新が開始してから終了するまで、当該プログラムの更新前の実行コードを前記第2記憶装置の記憶領域に常駐させておくことを特徴とする。
本発明の一の態様によれば、プログラムの実行コードを記憶する第1記憶装置と、プログラムの実行コードがロードされる記憶領域を有する第2記憶装置とを具備するソフトウェア書き換え装置において、プログラム呼び出し部が、プログラム書き換え部による第1記憶装置に記憶されたプログラムの実行コードの更新が開始してから終了するまで、当該プログラムの更新前の実行コードを第2記憶装置の記憶領域に常駐させておくことにより、例えば、メモリを2重化することなく、プログラムの実行コードを当該プログラムの実行中に書き換えることが可能となる。
以下、本発明の実施の形態について、図を用いて説明する。
実施の形態1.
図1は、本実施の形態に係る組み込み機器101の構成を示すブロック図である。
図1において、組み込み機器101は、組み込み型の情報処理機器であり、CPU102(中央処理装置)、NAND型フラッシュメモリ103、RAM104(Random・Access・Memory)、各種I/Oデバイス類や通信モジュール105を備える。
CPU102は、プログラムの実行コードを実行する処理装置の一例である。CPU102は、バス106を介して、NAND型フラッシュメモリ103、RAM104、各種I/Oデバイス類や通信モジュール105と接続され、これらのハードウェアデバイスを制御する。
NAND型フラッシュメモリ103は、プログラムの実行コードやプログラムが利用するデータ(以下、「利用データ」という)を記憶する第1記憶装置の一例である。NAND型フラッシュメモリ103は不揮発性記憶装置の一種であり、HDD(ハードディスクドライブ)など、他の種類の不揮発性記憶装置に置き換えても、後述する組み込み機器101の動作は本実施の形態と同様である。本実施の形態では、組み込み機器101として、携帯電話など、小型でコストを抑えた情報処理機器を想定しているため、NAND型フラッシュメモリ103には、ユーザが利用する領域(後述するユーザ利用領域)以外では2重にプログラムを記憶するなどの余裕はないものとする。
RAM104は、プログラムの実行コードや利用データがロードされる記憶領域を有する第2記憶装置の一例である。RAM104は、揮発性記憶装置の一種である。本実施の形態では、NAND型フラッシュメモリ103の容量に比べて、RAM104の容量が小さいものとする。
各種I/Oデバイス類や通信モジュール105は、例えば、LCD(液晶ディスプレイ)などの表示デバイス、入力操作のためのキーデバイス、あるいは、無線通信のための無線通信モジュールなどである。
NAND型フラッシュメモリ103、あるいは、不図示のROM(Read・Only・Memory)には、オペレーティングシステム(OS)が記憶されている。また、NAND型フラッシュメモリ103には、プログラム群、データ群が記憶されている。プログラム群のプログラムは、CPU102、オペレーティングシステムにより実行される。プログラム群には、本実施の形態において更新の対象となるプログラムのほか、本実施の形態の説明において「〜部」として説明する機能を実行するプログラム(後述するソフトウェア書き換えプログラム)が記憶される。各プログラムは、CPU102により読み出され実行される。また、データ群には、本実施の形態において更新の対象となる利用データのほか、各プログラムの処理結果(例えば複数の実行コードやデータ同士の比較結果)などがデータとして記憶される。各データは、CPU102によりRAM104に読み出され、抽出・検索・参照・比較・演算・計算・制御・出力・印刷・表示などのCPU102の処理(動作)に用いられる。
本実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、不図示のROMに記憶されたファームウェアで実現されていても構わない。あるいは、ソフトウェアのみ、あるいは、素子・デバイス・基板・配線などのハードウェアとソフトウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラム(後述するソフトウェア書き換えプログラム)として、NAND型フラッシュメモリ103、あるいは、不図示のROMなどの記録媒体に記憶される。このプログラムはCPU102により読み出され、CPU102により実行される。即ち、このプログラムは、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、本実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
図2は、本実施の形態に係るソフトウェア書き換え機能を有するソフトウェアのメモリ上の配置を示す図である。
NAND型フラッシュメモリ103は、ユーザのデータが配置されるユーザ利用領域201、DLL(動的リンクライブラリ)が配置されるDLL領域202、プログラムの実行コードや利用データが配置される実行コード/データ領域203、ソフトウェア書き換えプログラム204が配置される領域の各領域からなる。
ユーザ利用領域201は、ユーザがメールや写真などのファイル、即ち、ユーザデータを保存するために利用する領域である。
DLL領域202は、RAM104にロードして実行するモジュールのうち、動的にリンクして動作させるモジュール、即ち、DLLを格納する領域である。
実行コード/データ領域203は、RAM104にそのままロードして実行できる実行コードや、RAM104にそのままロードして処理できる利用データを格納する領域である。本実施の形態では、RAM104の容量がNAND型フラッシュメモリ103の容量よりも小さく、NAND型フラッシュメモリ103からRAM104へ実行コードなどを全てコピーすることはできない。そのため、仮想記憶(デマンドページング)の技術が利用される。具体的には、NAND型フラッシュメモリ103におけるデータの書き込みや読み取りの単位であるページごとに、必要に応じて実行コードや利用データがRAM104にロードされる。
本実施の形態において、実行コード/データ領域203には複数のプログラムの実行コードが記憶され、各プログラムは優先プログラムと非優先プログラムに分類されているものとする。優先プログラムは、優先度が高く設定されたプログラムであり、非優先プログラムは、それ以外のプログラムである。優先プログラムとしては、例えば、警察(110番)や消防(119番)への電話、即ち、緊急呼を発信するプログラムなど、緊急性、あるいは、重要性の高いプログラムが挙げられる。
ソフトウェア書き換えプログラム204は、ソフトウェア書き換え機能として、例えば、実行コード/データ領域203に格納されている実行コードや利用データを書き換える機能を有するソフトウェアである。ソフトウェア書き換えプログラム204は、同様に、DLL領域202に格納されているDLLを書き換える機能を有していてもよい。
図3は、組み込み機器101の内部で実現されるソフトウェア書き換え装置300の構成を示すブロック図である。
ソフトウェア書き換え装置300は、プログラム書き換え部301、プログラム管理部302、プログラム呼び出し部303、機器状態管理部304を備える。以下では、組み込み機器101のCPU102、NAND型フラッシュメモリ103、RAM104もソフトウェア書き換え装置300の一部として考える。
プログラム書き換え部301は、ソフトウェア書き換えプログラム204が有するソフトウェア書き換え機能としてRAM104上で実行され、NAND型フラッシュメモリ103を書き換える不揮発記憶書き換え機能を有する。例えば、プログラム書き換え部301は、NAND型フラッシュメモリ103の実行コード/データ領域203に記憶されたプログラムの実行コードや利用データを更新する。本実施の形態では、プログラム書き換え部301は、ページごとに、実行コードや利用データを更新するものとする。
プログラム管理部302は、ある機能の呼び出しが要求されたときに、状態に応じて、その機能の呼び出しの可否を判断し、不可と判断した場合は、その機能を呼び出さずにエラーを返す、といった処理をする実行プログラム管理機能を有する。
プログラム呼び出し部303は、ソフトウェアの書き換え中に当該ソフトウェアの動作を保証するために、必要な実行コードなどをRAM104上に貼り付け、決して消さないようにするRAM貼り付け機能を有する。例えば、プログラム呼び出し部303は、NAND型フラッシュメモリ103の実行コード/データ領域203に記憶されたプログラムの実行コードをRAM104の記憶領域にロードしてCPU102により実行する。プログラム呼び出し部303は、プログラム書き換え部301によるプログラムの実行コードの更新が開始してから終了するまで、当該プログラムの更新前の実行コードをRAM104の記憶領域に常駐させておき、当該プログラムの実行コードが更新中であっても、必要に応じて更新前の実行コードを実行することができる。同様に、プログラム呼び出し部303は、NAND型フラッシュメモリ103の実行コード/データ領域203に記憶された利用データをRAM104の記憶領域にロードしてCPU102により実行するプログラムに利用させる。プログラム呼び出し部303は、プログラム書き換え部301による利用データの更新が開始してから終了するまで、当該プログラムの更新前の実行コードをRAM104の記憶領域に常駐させておき、当該利用データが更新中であっても、必要に応じて更新前の利用データを利用することができる。本実施の形態では、プログラム呼び出し部303は、ページごとに、実行コードや利用データをRAM104の記憶領域にロードするものとする。
機器状態管理部304は、実行コードなどの書き換え完了後に、書き換えが成功したかどうかなどの状況を判断する機器状態管理機能を有する。例えば、機器状態管理部304は、プログラム書き換え部301によるプログラムの実行コードの更新が終了した後、NAND型フラッシュメモリ103に記憶されているプログラムの実行コードとRAM104の記憶領域にロードされている当該プログラムの実行コードとを比較し、当該比較結果に基づいて、組み込み機器101の再起動の要否を判断する。
以下では、組み込み機器101(具体的には、ソフトウェア書き換え装置300)の動作について、フローチャートを用いて説明する。
図4は、ソフトウェア書き換え装置300の動作を示すフローチャートである。
ステップS401でプログラムの実行コードの更新要求が発行されると(即ち、プログラム書き換え部301によりプログラムの実行コードの更新が開始されるときに)、ステップS402で、プログラム管理部302は、当該プログラムが優先プログラムであるかどうか確認する。ステップS402で優先プログラムの場合、ステップS403で、プログラム管理部302は、プログラム呼び出し部303が当該プログラムの更新前の実行コードを既に実行中かどうか確認する。ステップS403でプログラム呼び出し部303が当該更新前の実行コードを既に実行していた場合、ステップS404で、プログラム管理部302は、プログラム呼び出し部303による当該更新前の実行コードの実行とプログラム書き換え部301による当該プログラムの実行コードの更新との両方が終了するまで、当該更新前の実行コードをRAM104の記憶領域に常駐させておくように、プログラム呼び出し部303を制御する。一方、ステップS403でプログラム呼び出し部303が当該更新前の実行コードを実行していなかった場合、ステップS405で、プログラム管理部302は、プログラム呼び出し部303が当該更新前の実行コードを既にRAM104の記憶領域にロードしているかどうか確認する。ステップS405でプログラム呼び出し部303が当該更新前の実行コードを既にRAM104の記憶領域にロードしていた場合、ステップS406で、プログラム管理部302は、プログラム書き換え部301による当該プログラムの実行コードの更新が終了するまで、当該更新前の実行コードをRAM104の記憶領域に常駐させておくように、プログラム呼び出し部303を制御する。ステップS405でプログラム呼び出し部303が当該更新前の実行コードを未だRAM104の記憶領域にロードしていなかった場合、ステップS407で、プログラム管理部302は、プログラム書き換え部301による当該プログラムの実行コードの更新が開始する前に、当該更新前の実行コードをRAM104の記憶領域にロードしておくように、プログラム呼び出し部303を制御する。そして、ステップS407からステップS406に進む。
なお、ステップS404、S406、S407において、プログラム書き換え部301によるプログラムの実行コードの更新が終了する前に、RAM104の記憶領域にロードされている当該更新前の実行コードの実行要求が新たに発行された場合、プログラム管理部302は、プログラム書き換え部301によるプログラムの実行コードの更新が終了しても、プログラム呼び出し部303による当該更新前の実行コードの実行が終了するまで、当該更新前の実行コードをRAM104の記憶領域に常駐させておくように、プログラム呼び出し部303を制御する。プログラム管理部302は、プログラム呼び出し部303による当該更新前の実行コードの実行とプログラム書き換え部301によるプログラムの実行コードの更新との両方が終了した時点、又は、プログラム呼び出し部303により当該更新前の実行コードが実行中でない状態においてプログラム書き換え部301によるプログラムの実行コードの更新が終了した時点で、プログラム呼び出し部303に当該更新前の実行コードをRAM104の記憶領域から削除させる。
ステップS402で非優先プログラムの場合、ステップS408で、プログラム管理部302は、プログラム呼び出し部303が当該プログラムの更新前の実行コードを既に実行中かどうか確認する。ステップS408でプログラム呼び出し部303が当該更新前の実行コードを既に実行していた場合、ステップS409で、プログラム管理部302は、プログラム呼び出し部303による当該更新前の実行コードの実行が終了するまで、プログラム書き換え部301による当該プログラムの実行コードの更新を禁止する。一方、ステップS408でプログラム呼び出し部303が当該更新前の実行コードを実行していなかった場合、ステップS410で、プログラム管理部302は、プログラム呼び出し部303が当該更新前の実行コードを既にRAM104の記憶領域にロードしているかどうか確認する。ステップS410でプログラム呼び出し部303が当該更新前の実行コードを既にRAM104の記憶領域にロードしていた場合、ステップS411で、プログラム管理部302は、プログラム呼び出し部303に当該更新前の実行コードをRAM104の記憶領域から削除させる。そして、ステップS412で、プログラム管理部302は、プログラム書き換え部301によるプログラムの実行コードの更新が開始してから終了するまで、プログラム呼び出し部303による当該プログラムの実行コードのロードを禁止する。ステップS410でプログラム呼び出し部303が当該更新前の実行コードを未だRAM104の記憶領域にロードしていなかった場合も、ステップS412で、プログラム管理部302は、プログラム書き換え部301によるプログラムの実行コードの更新が開始してから終了するまで、プログラム呼び出し部303による当該プログラムの実行コードのロードを禁止する。
以上、図4を用いて、ソフトウェア書き換え装置300が実行コードを更新する際に行う処理について説明したが、実行コードの代わりに利用データを更新する際も、ソフトウェア書き換え装置300は上記と同様の処理を行う。
図5は、プログラム書き換え部301の動作の詳細な例を示すフローチャートである。
まず、プログラム書き換え部301は、他の緊急呼などのアプリケーションが動作していないかの確認をステップS501で行う。そのようなアプリケーションが動作している場合は、プログラム管理部302からアプリケーションが動作していることを示すメッセージが送られてくるため、プログラム書き換え部301は、そのメッセージの有無で判断する。
中断要求がある場合には、プログラム書き換え部301は、ステップS507でメッセージ待ちとし、メッセージが到着した場合には、ステップS508で再開のメッセージかどうかを確認し、再開であればステップS502へ移る。再開メッセージでなければ、ステップS507でメッセージ待ちへ移る。
ステップS502では、プログラム書き換え部301は、更新データを1ページ分準備する。更新データとして、プログラム書き換え部301は、そのまま書き換えイメージをネットワーク経由でダウンロードしていてもよいし、外部機器からダウンロードしてもよい。携帯電話などでは旧版と新版の差分データをダウンロードすることが多いが、プログラム書き換え部301は、このような差分データを展開し、書き換えるべきデータを用意してもよい。ステップS503で、プログラム書き換え部301は、機器状態管理部304に対して、あるページの書き換えを開始するという情報を送る。この情報に対する応答を待って、ステップS504で、プログラム書き換え部301は、更新データの書き込みを行う。書き込みが完了したら、ステップS505で、プログラム書き換え部301は、書き込み終了情報を機器状態管理部304に送信し、その応答を待って、次の書き込みページがあるかないかを判断する。ステップS506で、書き込みが完了したページが最後のぺージであった場合には、処理を終了する。まだ書き込みの対象となるページがある場合には、ステップS501から処理を繰り返す。
図5に示したフローの中で、既に緊急的に他のアプリケーションが起動されて古い実行コードが動いているときに新しい実行コードをRAM104にロードすると、新旧コードが混じった状態で動作するという事態が生じ、動作が不安定になると考えられる。このような事態を防ぐために、プログラム管理部302の実行プログラム管理機能、プログラム呼び出し部303のRAM貼り付け機能がある。これらの機能による処理のフローに関しては図6、図7、図8を用いて説明する。
電池が抜かれたり、アプリケーションが他のアプリケーションの起動で中断しているときに、そのアプリケーションが動作することにより電池がなくなり、低電圧状態になったりした場合に、異常状態で終わることがある。このような状態を管理するために、機器状態管理部304の機器状態管理機能がある。この機能による処理のフローに関しては図9を用いて説明する。
図6は、プログラム管理部302の構成を示すブロック図である。
実行プログラム管理メイン機能601は、図7に示す実行プログラム管理機能の主なフローを処理するメイン機能である。リソース管理表602は、RAM104の記憶領域などのリソースを管理するためのテーブルデータである。状態遷移表603は、状態ごとに、各種機能を呼び出したり、割り込みが入ったりした場合に、それを受け付けるのか、拒絶するのか、その結果どの状態に遷移するのかということを記述したテーブルデータである。現在状態管理表604は、現在の状態が、例えば、書き換え中の状態、待ち受け中の状態、アプリケーション実行中の状態などのいずれかを管理しているテーブルデータである。例えば、図5に示したステップS503の処理の結果としては、現在の状態が書き換え中の状態であることが現在状態管理表604に記録されることになる。また、図5に示したステップS505の処理の結果としては、現在の状態が書き換え完了後の状態であることが現在状態管理表604に記録されることになる。実行プログラム管理メイン機能601は、RAM104上で動作し、リソース管理表602、現在状態管理表604は、RAM104上で生成され、状態遷移表603は、RAM104上に読み出されて利用されるため、これらは組み込み機器101の電源が切れると全て消えることとなる。ただし、状態遷移表603は、NAND型フラッシュメモリ103などの不揮発性メモリに予め記憶され、そこから読み出されるものであるため、状態遷移表603の元のデータまで消えてしまうわけではない。
図7は、プログラム管理部302の動作の詳細な例を示すフローチャートである。
プログラム管理部302の実行プログラム管理機能は、組み込み機器101の電源が投入されると初期化のフェーズで立ち上がる。まず、プログラム管理部302は、RAM104上のリソース管理表602をステップS701で初期化する。次にステップS702で、プログラム管理部302は、状態遷移表を読み込む。次にステップS703で、プログラム管理部302は、現在状態管理表604を初期化する。このとき、プログラム管理部302は、図5のステップS503、S505で送られる情報に基づいて機器状態管理部304がNAND型フラッシュメモリ103などの不揮発性メモリに書き込む情報(後述する)を読み込み、読み込んだ情報にてソフトウェアの書き換え中の状態であることが示されていた場合には、現在の状態を書き換え中の状態として設定する。通常は、最初は何も動作していない状態なので、現在の状態は待ち受け中の状態として設定する。
次に、プログラム管理部302は、フェールセーフ状態かどうかをステップS704で確認する。フェールセーフ状態かどうかは、ステップS703で現在の状態を書き換え中の状態として設定したかどうかによって決まる。ステップS703で現在の状態を書き換え中の状態として設定した場合には、フェールセーフ状態であるため、ステップS705で、プログラム管理部302は、フェールセーフ機能を呼び出し、図5に示した処理フローを再開する。ステップS703で現在の状態を待ち受け中の状態として設定した場合には、フェールセーフ状態ではないため、ステップS706で、プログラム管理部302は、UI(ユーザインタフェース)メニューを通常の形式で構成する。即ち、プログラム管理部302は、UIメニューの中で呼び出してはならない機能をグレーアウトするなどの制限を設けることなく、通常の状態のUIメニューを生成する。
次に、プログラム管理部302は、アプリケーションの起動や外部からのトリガーなどのイベント待ちをステップS707で行う。外部からのトリガーやUIメニューの操作などによるイベントや要求が発生すると、ソフトウェアの書き換え機能の呼び出し要求以外の場合には、ステップS708で、プログラム管理部302は、要求された機能が呼び出し可能であるかどうか確認する。プログラム管理部302は、現在の状態に応じて、状態遷移表603を確認し、当該機能が起動できない場合は、ステップS709で起動を拒絶して、イベント待ちのため、再びステップS707に移る。通常起動できないようなアプリケーションはUIメニューからは選択できなくなっているため、外部のイベントなどの場合が該当する。ステップS708で要求された機能が起動可能だった場合、プログラム管理部302は、ステップS712で状態を変更して、ステップS713で当該機能を実行し、イベント待ちのため、再びステップS707に移る。
ステップS707でソフトウェアの書き換え機能の呼び出し要求であった場合には、ステップS710へ移り、プログラム管理部302は、状態遷移表603を確認する。書き換え機能が起動不可の場合は、ステップS711で起動を拒絶し、イベント待ちのため、再びステップS707に移る。ステップS710で書き換え機能が起動可能だった場合、プログラム管理部302は、ステップS714で現在の状態を変更した後、ステップS715でUIメニューからの呼び出しを制限する機能をグレーアウトするなどして、選択できない状態に変更した上で当該書き換え機能(図5に示した処理フロー)を実行し、イベント待ちのため、再びステップS707に移る。
図8は、プログラム呼び出し部303の動作の詳細な例を示すフローチャートである。
図8に示した各処理は、図5に示したステップS501の前に予め実行されていることが望ましい。
ステップS801で、プログラム呼び出し部303は、必要なメモリの確保を行う。必要なメモリ量は、必要な機能を仕様上決めた時点で決まり、パラメータとして実行コード中のデータとして保持される。このパラメータの値に基づき、プログラム呼び出し部303は、リソース管理表602で管理されているメモリリソースとして、RAM104の記憶領域を確保する。ステップS802で、プログラム呼び出し部303は、ステップS801で確保した記憶領域に必要機能をロードする。
ステップS803で、プログラム呼び出し部303は、OSの機能を利用してRAM104の常駐領域を宣言する。つまり、プログラム呼び出し部303は、デマンドページングの対象外とする記憶領域を設定する。その結果、常駐領域に実行コードをロードすることで、その実行コードが常にRAM104上に存在することになり、その実行コードを含んでいたソフトウェアの書き換え中でもソフトウェアが動作可能となる。
ステップS804で、プログラム呼び出し部303は、メッセージ待ちになる。ステップS805で、プログラム呼び出し部303は、ソフトウェアの書き換え終了のメッセージを受け取ったかどうか確認する。書き換えが終了していなければ、ステップS804で、プログラム呼び出し部303は、再びメッセージ待ちになる。書き換えが終了していれば、ステップS806で、プログラム呼び出し部303は、常駐領域としていた記憶領域を元の状態に戻して(即ち、その記憶領域にロードされているページをその記憶領域から削除することを禁止していた状態から、禁止しない状態に戻して)終了する。
図9は、機器状態管理部304の動作の詳細な例を示すフローチャートである。
機器状態管理部304の機器状態管理機能はメッセージで呼び出される。そのため、最初にステップS901で、機器状態管理部304は、メッセージ待ちになる。ステップS902、S903、S904、S905で、機器状態管理部304は、各メッセージを受け取る。例えば、ステップS902では、図5に示した処理フローの開始時にプログラム書き換え部301から送られるソフトウェア書き換え開始情報をメッセージとして受け取る。また、例えば、ステップS903では、図5に示したステップS503でプログラム書き換え部301から送られる書き込み開始情報をメッセージとして受け取る。また、例えば、ステップS904では、図5に示したステップS505でプログラム書き換え部301から送られる書き込み終了情報をメッセージとして受け取る。また、例えば、ステップS905では、図5に示した処理フローの終了時にプログラム書き換え部301から送られるソフトウェア書き換え終了情報をメッセージとして受け取る。
ステップS906、S907で、機器状態管理部304は、メッセージの内容に応じて遷移した状態を、NAND型フラッシュメモリ103などの不揮発性メモリに書き込み、RAM104上の現在状態管理表604も修正する。組み込み機器101の電源断があった場合、ここで不揮発性メモリに書き込んでおいた情報を参照することで、ソフトウェアの書き換え中に組み込み機器101の電源が落ちたのか、その場合はどのページを書き換え中だったのか、あるいは、書き換え前だったのか、あるいは、書き換え終了後だったのかという情報を、起動時に知ることができ、図5に示したステップS501からの処理で前回の続きを行うことが可能となる。
また、ソフトウェア書き換え終了後には、ステップS908で、機器状態管理部304は、現状ロードされているRAM104上のロードイメージとNAND型フラッシュメモリ103上のデータをバイナリ比較する。両者に違いがなければ、ステップS909で、機器状態管理部304は、組み込み機器101の再起動が不要であると判断する。一方、両者に違いがあれば、ステップS909で、機器状態管理部304は、組み込み機器101の再起動が必要であると判断する。そして、ステップS910で、組み込み機器101を再起動させる。なお、再起動が必要かどうかは、そもそも、ソフトウェアの更新データを作成した時点で静的にわかるものであるため、更新データにそのための情報を含めておけば、当該情報に基づいて機器状態管理部304が判断することもできる。そのような情報がない場合、機器状態管理部304は、DLL部分のみの修正であれば、再起動が不要であると判断し、それ以外は再起動を要すると判断しても構わない。
ソフトウェア書き換え装置300が、上記のような処理をすることによって、組み込み機器101において、プログラムやデータ全体の容量に対してRAM104の容量が小さい場合でも、必要最低限のサービスを実行可能な状態でソフトウェアの書き換えができるという効果がある。携帯電話などの場合には、110番や119番などの緊急電話が常に使えなければならないという要請があるため、このような効果を奏することは特に重要である。
以上、本実施の形態で説明したソフトウェア書き換え装置は、
不揮発記憶装置から実行コードをRAMに読み出してから実行するタイプの不揮発記憶装置を保持し、不揮発記憶装置の容量よりRAMの容量が小さく、必要に応じてコードをRAMにロードして実行する方式の組み込み機器に内蔵され、
不揮発記憶装置上の実行コードを組み込み機器の動作中に書き換える不揮発記憶書き換え機能と、
実行コードの書き換え中は、一部の実行コードを実行されないように保証する実行プログラム管理機能と、
書き換え中も実行できる実行コードがRAM上に存在することを保証するRAM貼り付け機能と、
実行コードの書き換え完了後に組み込み機器の書き換え状態を管理する機器状態管理機能とを保持することを特徴とする。
上記不揮発記憶書き換え機能は、書き換え中に停止のメッセージを受け取ると、書き換えを一旦中断し、再開のメッセージを受け取ると再開する機能を保持することを特徴とする。
上記不揮発記憶書き換え機能は、書き換え中に電源断など中断のメッセージを受け取ることなく終了した場合に、次回電源オン時に再開することができるフェールセーフ機能を保持することを特徴とする。
上記実行プログラム管理機能は、例えば実行コードの書き換えモードと通常モードといった実行コードの書き換えに関して複数の状態を管理することを特徴とする。
上記ソフトウェア書き換え装置は、実行コードの書き換えモード中には、一部の機能以外操作できないようにUIを制限したり、他の機能からの呼び出しを制限したりすることができることを特徴とする。
上記RAM貼り付け機能は、例えば110番発信や119番発信などの緊急呼など、実行コードの書き換え中も必ず動作することを保証する必要がある機能に関して実行コードの書き換えの影響を受けないように、該当する機能の情報に基づいて、プログラム起動時にRAMに存在することが保証される領域に実行コードをロードすることを特徴とする。
上記貼り付け機能は、例えば110番発信や119番発信などの緊急呼など、実行コードの書き換え中も必ず動作することを保証する必要がある機能に関して実行コードの書き換えの影響を受けないように、該当する機能の情報に基づいて、書き換えモードへの移行時にRAMに存在することが保証される領域に実行コードをロードすることを特徴とする。
上記機器状態管理機能は、実行コードの書き換え処理が完了した後、RAM上の実行コードと不揮発記憶装置上の実行コードの整合が取れている場合には、再起動せずにそのまま組み込み機器を動作させることを特徴とする。
上記機器状態管理機能は、実行コードの書き換え処理が完了した後、RAM上の実行コードと不揮発記憶装置上の実行コードの整合が取れていない場合には、再起動することを特徴とする。
上記機器状態管理機能は、ソフトウェアの書き換えのためのデータの情報に基づき、再起動が必要かどうかを判断し、再起動が必要なら再起動し、不要なら再起動しないことを特徴とする。
また、本実施の形態で説明したソフトウェア書き換え装置は、
不揮発記憶装置からデータをRAMに読み出してから利用するタイプの不揮発記憶装置を保持し、不揮発記憶装置の容量よりRAMの容量が小さく、必要に応じてデータをRAMにロードして実行する方式の組み込み機器に内蔵され、
不揮発記憶装置上のデータを組み込み機器の動作中に書き換える不揮発記憶書き換え機能と、
データの書き換え中は、一部のデータを読み込まれないように保証する実行プログラム管理機能と、
書き換え中も利用できるデータがRAM上に存在することを保証するRAM貼り付け機能と、
利用データの書き換え完了後に組み込み機器の書き換え状態を管理する機器状態管理機能とを保持することを特徴とする。
上記不揮発記憶書き換え機能は、書き換え中に停止のメッセージを受け取ると、書き換えを一旦中断し、再開のメッセージを受け取ると再開する機能を保持することを特徴とする。
上記不揮発記憶書き換え機能は、書き換え中に電源断など中断のメッセージを受け取ることなく終了した場合に、次回電源オン時に再開することができるフェールセーフ機能を保持することを特徴とする。
上記実行プログラム管理機能は、例えば利用データの書き換えモードと通常モードといった利用データの書き換えに関して複数の状態を管理することを特徴とする。
上記ソフトウェア書き換え装置は、利用データの書き換えモード中には、一部の機能以外操作できないようにUIを制限したり、他の機能からの呼び出しを制限したりすることができることを特徴とする。
上記RAM貼り付け機能は、例えば110番発信や119番発信などの緊急呼など、利用データの書き換え中も必ず動作することを保証する必要がある機能に関して利用データの書き換えの影響を受けないように、該当する機能の情報に基づいて、プログラム起動時にRAMに存在することが保証される領域に利用データをロードすることを特徴とする。
上記貼り付け機能は、例えば110番発信や119番発信などの緊急呼など、利用データの書き換え中も必ず動作することを保証する必要がある機能に関して利用データの書き換えの影響を受けないように、該当する機能の情報に基づいて、書き換えモードへの移行時にRAMに存在することが保証される領域に利用データをロードすることを特徴とする。
上記機器状態管理機能は、利用データの書き換え処理が完了した後、RAM上の利用データと不揮発記憶装置上の利用データの整合が取れている場合には、再起動せずにそのまま組み込み機器を動作させることを特徴とする。
上記機器状態管理機能は、利用データの書き換え処理が完了した後、RAM上の利用データと不揮発記憶装置上の利用データの整合が取れていない場合には、再起動することを特徴とする。
上記機器状態管理機能は、ソフトウェアの書き換えのためのデータの情報に基づき、再起動が必要かどうかを判断し、再起動が必要なら再起動し、不要なら再起動しないことを特徴とする。
実施の形態1に係る組み込み機器の構成を示すブロック図である。 実施の形態1に係るソフトウェア書き換えプログラムのメモリ上の配置を示す図である。 実施の形態1に係るソフトウェア書き換え装置の構成を示すブロック図である。 実施の形態1に係るソフトウェア書き換え装置の動作を示すフローチャートである。 実施の形態1に係るソフトウェア書き換え装置のプログラム書き換え部の動作を示すフローチャートである。 実施の形態1に係るソフトウェア書き換え装置のプログラム管理部の構成を示すブロック図である。 実施の形態1に係るソフトウェア書き換え装置のプログラム管理部の動作を示すフローチャートである。 実施の形態1に係るソフトウェア書き換え装置のプログラム呼び出し部の動作を示すフローチャートである。 実施の形態1に係るソフトウェア書き換え装置の機器状態管理部の動作を示すフローチャートである。
符号の説明
101 組み込み機器、102 CPU、103 NAND型フラッシュメモリ、104 RAM、105 各種I/Oデバイス類や通信モジュール、106 バス、201 ユーザ利用領域、202 DLL領域、203 実行コード/データ領域、204 ソフトウェア書き換えプログラム、300 ソフトウェア書き換え装置、301 プログラム書き換え部、302 プログラム管理部、303 プログラム呼び出し部、304 機器状態管理部、601 実行プログラム管理メイン機能、602 リソース管理表、603 状態遷移表、604 現在状態管理表。

Claims (11)

  1. 優先度が高く設定された優先プログラムと優先プログラム以外の非優先プログラムとに分類される複数のプログラムの実行コードを記憶する第1記憶装置と、プログラムの実行コードがロードされる記憶領域を有する第2記憶装置と、プログラムの実行コードを実行する処理装置とを具備するソフトウェア書き換え装置において、
    前記第1記憶装置に記憶されたプログラムの実行コードを前記第2記憶装置の記憶領域にロードして前記処理装置により実行するプログラム呼び出し部と、
    前記第1記憶装置に記憶されたプログラムの実行コードを更新するプログラム書き換え部とを備え、
    前記プログラム呼び出し部は、前記プログラム書き換え部によプログラムの実行コードの更新が開始されるときに、当該プログラムの更新前の実行コードを既に実行しており、かつ、当該プログラムが優先プログラムであった場合、当該更新前の実行コードの実行と前記プログラム書き換え部による当該プログラムの実行コードの更新との両方が終了するまで、当該更新前の実行コードを前記第2記憶装置の記憶領域に常駐させておき、
    前記ソフトウェア書き換え装置は、さらに、
    前記プログラム書き換え部によりプログラムの実行コードの更新が開始されるときに、前記プログラム呼び出し部により当該プログラムの更新前の実行コードが既に実行されており、かつ、当該プログラムが非優先プログラムであった場合、前記プログラム呼び出し部による当該更新前の実行コードの実行が終了するまで、前記プログラム書き換え部による当該プログラムの実行コードの更新を禁止するプログラム管理部を備えることを特徴とするソフトウェア書き換え装置。
  2. 優先度が高く設定された優先プログラムと優先プログラム以外の非優先プログラムとに分類される複数のプログラムの実行コードを記憶する第1記憶装置と、プログラムの実行コードがロードされる記憶領域を有する第2記憶装置と、プログラムの実行コードを実行する処理装置とを具備するソフトウェア書き換え装置において、
    前記第1記憶装置に記憶されたプログラムの実行コードを前記第2記憶装置の記憶領域にロードして前記処理装置により実行するプログラム呼び出し部と、
    前記第1記憶装置に記憶されたプログラムの実行コードを更新するプログラム書き換え部とを備え、
    前記プログラム呼び出し部は、前記プログラム書き換え部によプログラムの実行コードの更新が開始されるときに、当該プログラムの更新前の実行コードを未だ実行していないが既に前記第2記憶装置の記憶領域にロードしており、かつ、当該プログラムが優先プログラムであった場合、前記プログラム書き換え部による当該プログラムの実行コードの更新が終了するまで、当該更新前の実行コードを前記第2記憶装置の記憶領域に常駐させておき、
    前記ソフトウェア書き換え装置は、さらに、
    前記プログラム書き換え部によりプログラムの実行コードの更新が開始されるときに、前記プログラム呼び出し部により当該プログラムの更新前の実行コードが未だ実行されていないが既に前記第2記憶装置の記憶領域にロードされており、かつ、当該プログラムが非優先プログラムであった場合、前記プログラム呼び出し部に当該更新前の実行コードを前記第2記憶装置の記憶領域から削除させ、前記プログラム書き換え部による当該プログラムの実行コードの更新が開始してから終了するまで、前記プログラム呼び出し部による当該プログラムの実行コードのロードを禁止するプログラム管理部を備えることを特徴とするソフトウェア書き換え装置。
  3. 優先度が高く設定された優先プログラムと優先プログラム以外の非優先プログラムとに分類される複数のプログラムの実行コードを記憶する第1記憶装置と、プログラムの実行コードがロードされる記憶領域を有する第2記憶装置と、プログラムの実行コードを実行する処理装置とを具備するソフトウェア書き換え装置において、
    前記第1記憶装置に記憶されたプログラムの実行コードを前記第2記憶装置の記憶領域にロードして前記処理装置により実行するプログラム呼び出し部と、
    前記第1記憶装置に記憶されたプログラムの実行コードを更新するプログラム書き換え部とを備え、
    前記プログラム呼び出し部は、前記プログラム書き換え部によプログラムの実行コードの更新が開始されるときに、当該プログラムの更新前の実行コードを未だ前記第2記憶装置の記憶領域にロードしておらず、かつ、当該プログラムが優先プログラムであった場合、前記プログラム書き換え部による当該プログラムの実行コードの更新が開始する前に、当該更新前の実行コードを前記第2記憶装置の記憶領域にロードし、前記プログラム書き換え部による当該プログラムの実行コードの更新が開始してから終了するまで、当該更新前の実行コードを前記第2記憶装置の記憶領域に常駐させておき、
    前記ソフトウェア書き換え装置は、さらに、
    前記プログラム書き換え部によりプログラムの実行コードの更新が開始されるときに、前記プログラム呼び出し部により当該プログラムの更新前の実行コードが未だ前記第2記憶装置の記憶領域にロードされておらず、かつ、当該プログラムが非優先プログラムであった場合、前記プログラム書き換え部による当該プログラムの実行コードの更新が開始してから終了するまで、前記プログラム呼び出し部による当該プログラムの実行コードのロードを禁止するプログラム管理部を備えることを特徴とするソフトウェア書き換え装置。
  4. 前記ソフトウェア書き換え装置は、組み込み機器に内蔵され、さらに、
    前記プログラム書き換え部によるプログラムの実行コードの更新が終了した後、前記第1記憶装置に記憶されているプログラムの実行コードと前記第2記憶装置の記憶領域にロードされている当該プログラムの実行コードとを比較し、当該比較結果に基づいて、前記組み込み機器の再起動の要否を判断する機器状態管理部を備えることを特徴とする請求項1からまでのいずれかに記載のソフトウェア書き換え装置。
  5. 前記第1記憶装置は、不揮発性記憶装置であり、
    前記第2記憶装置は、前記第1記憶装置より容量が小さい揮発性記憶装置であることを特徴とする請求項1からまでのいずれかに記載のソフトウェア書き換え装置。
  6. 優先度が高く設定された優先プログラムと優先プログラム以外の非優先プログラムとに分類される複数のプログラムの実行コードを記憶する第1記憶装置と、プログラムの実行コードがロードされる記憶領域を有する第2記憶装置と、プログラムの実行コードを実行する処理装置とを具備するソフトウェア書き換え装置を用いるソフトウェア書き換え方法において、
    前記ソフトウェア書き換え装置のプログラム呼び出し部が、前記第1記憶装置に記憶されたプログラムの実行コードを前記第2記憶装置の記憶領域にロードして前記処理装置により実行する第1ステップと、
    前記ソフトウェア書き換え装置のプログラム書き換え部が、前記第1記憶装置に記憶されたプログラムの実行コードを更新する第2ステップとを備え、
    前記第1ステップでは、前記ソフトウェア書き換え装置のプログラム呼び出し部が、前記第2ステッププログラムの実行コードの更新が開始されるときに、当該プログラムの更新前の実行コードを既に実行しており、かつ、当該プログラムが優先プログラムであった場合、当該更新前の実行コードの実行と前記第2ステップにおける当該プログラムの実行コードの更新との両方が終了するまで、当該更新前の実行コードを前記第2記憶装置の記憶領域に常駐させておき、
    前記ソフトウェア書き換え方法は、さらに、
    前記ソフトウェア書き換え装置のプログラム管理部が、前記第2ステップでプログラムの実行コードの更新が開始されるときに、前記第1ステップで当該プログラムの更新前の実行コードが既に実行されており、かつ、当該プログラムが非優先プログラムであった場合、前記第1ステップにおける当該更新前の実行コードの実行が終了するまで、前記第2ステップにおける当該プログラムの実行コードの更新を禁止する第3ステップを備えることを特徴とするソフトウェア書き換え方法。
  7. 優先度が高く設定された優先プログラムと優先プログラム以外の非優先プログラムとに分類される複数のプログラムの実行コードを記憶する第1記憶装置と、プログラムの実行コードがロードされる記憶領域を有する第2記憶装置と、プログラムの実行コードを実行する処理装置とを具備するソフトウェア書き換え装置を用いるソフトウェア書き換え方法において、
    前記ソフトウェア書き換え装置のプログラム呼び出し部が、前記第1記憶装置に記憶されたプログラムの実行コードを前記第2記憶装置の記憶領域にロードして前記処理装置により実行する第1ステップと、
    前記ソフトウェア書き換え装置のプログラム書き換え部が、前記第1記憶装置に記憶されたプログラムの実行コードを更新する第2ステップとを備え、
    前記第1ステップでは、前記ソフトウェア書き換え装置のプログラム呼び出し部が、前記第2ステッププログラムの実行コードの更新が開始されるときに、当該プログラムの更新前の実行コードを未だ実行していないが既に前記第2記憶装置の記憶領域にロードしており、かつ、当該プログラムが優先プログラムであった場合、前記第2ステップにおける当該プログラムの実行コードの更新が終了するまで、当該更新前の実行コードを前記第2記憶装置の記憶領域に常駐させておき、
    前記ソフトウェア書き換え方法は、さらに、
    前記ソフトウェア書き換え装置のプログラム管理部が、前記第2ステップでプログラムの実行コードの更新が開始されるときに、前記第1ステップで当該プログラムの更新前の実行コードが未だ実行されていないが既に前記第2記憶装置の記憶領域にロードされており、かつ、当該プログラムが非優先プログラムであった場合、前記ソフトウェア書き換え装置のプログラム呼び出し部に当該更新前の実行コードを前記第2記憶装置の記憶領域から削除させ、前記第2ステップにおける当該プログラムの実行コードの更新が開始してから終了するまで、前記第1ステップにおける当該プログラムの実行コードのロードを禁止する第3ステップを備えることを特徴とするソフトウェア書き換え方法。
  8. 優先度が高く設定された優先プログラムと優先プログラム以外の非優先プログラムとに分類される複数のプログラムの実行コードを記憶する第1記憶装置と、プログラムの実行コードがロードされる記憶領域を有する第2記憶装置と、プログラムの実行コードを実行する処理装置とを具備するソフトウェア書き換え装置を用いるソフトウェア書き換え方法において、
    前記ソフトウェア書き換え装置のプログラム呼び出し部が、前記第1記憶装置に記憶されたプログラムの実行コードを前記第2記憶装置の記憶領域にロードして前記処理装置により実行する第1ステップと、
    前記ソフトウェア書き換え装置のプログラム書き換え部が、前記第1記憶装置に記憶されたプログラムの実行コードを更新する第2ステップとを備え、
    前記第1ステップでは、前記ソフトウェア書き換え装置のプログラム呼び出し部が、前記第2ステッププログラムの実行コードの更新が開始されるときに、当該プログラムの更新前の実行コードを未だ前記第2記憶装置の記憶領域にロードしておらず、かつ、当該プログラムが優先プログラムであった場合、前記第2ステップにおける当該プログラムの実行コードの更新が開始する前に、当該更新前の実行コードを前記第2記憶装置の記憶領域にロードし、前記第2ステップにおける当該プログラムの実行コードの更新が開始してから終了するまで、当該更新前の実行コードを前記第2記憶装置の記憶領域に常駐させておき、
    前記ソフトウェア書き換え方法は、さらに、
    前記ソフトウェア書き換え装置のプログラム管理部が、前記第2ステップでプログラムの実行コードの更新が開始されるときに、前記第1ステップで当該プログラムの更新前の実行コードが未だ前記第2記憶装置の記憶領域にロードされておらず、かつ、当該プログラムが非優先プログラムであった場合、前記第2ステップにおける当該プログラムの実行コードの更新が開始してから終了するまで、前記第1ステップにおける当該プログラムの実行コードのロードを禁止する第3ステップを備えることを特徴とするソフトウェア書き換え方法。
  9. 優先度が高く設定された優先プログラムと優先プログラム以外の非優先プログラムとに分類される複数のプログラムの実行コードを記憶する第1記憶装置と、プログラムの実行コードがロードされる記憶領域を有する第2記憶装置と、プログラムの実行コードを実行する処理装置とを具備するコンピュータにより実行されるソフトウェア書き換えプログラムにおいて、
    前記第1記憶装置に記憶されたプログラムの実行コードを前記第2記憶装置の記憶領域にロードして前記処理装置により実行するプログラム呼び出し処理と、
    前記第1記憶装置に記憶されたプログラムの実行コードを更新するプログラム書き換え処理とをコンピュータに実行させ、
    前記プログラム呼び出し処理は、前記プログラム書き換え処理によプログラムの実行コードの更新が開始されるときに、当該プログラムの更新前の実行コードを既に実行しており、かつ、当該プログラムが優先プログラムであった場合、当該更新前の実行コードの実行と前記プログラム書き換え処理による当該プログラムの実行コードの更新との両方が終了するまで、当該更新前の実行コードを前記第2記憶装置の記憶領域に常駐させておき、
    前記ソフトウェア書き換えプログラムは、さらに、
    前記プログラム書き換え処理によりプログラムの実行コードの更新が開始されるときに、前記プログラム呼び出し処理により当該プログラムの更新前の実行コードが既に実行されており、かつ、当該プログラムが非優先プログラムであった場合、前記プログラム呼び出し処理による当該更新前の実行コードの実行が終了するまで、前記プログラム書き換え処理による当該プログラムの実行コードの更新を禁止するプログラム管理処理をコンピュータに実行させることを特徴とするソフトウェア書き換えプログラム。
  10. 優先度が高く設定された優先プログラムと優先プログラム以外の非優先プログラムとに分類される複数のプログラムの実行コードを記憶する第1記憶装置と、プログラムの実行コードがロードされる記憶領域を有する第2記憶装置と、プログラムの実行コードを実行する処理装置とを具備するコンピュータにより実行されるソフトウェア書き換えプログラムにおいて、
    前記第1記憶装置に記憶されたプログラムの実行コードを前記第2記憶装置の記憶領域にロードして前記処理装置により実行するプログラム呼び出し処理と、
    前記第1記憶装置に記憶されたプログラムの実行コードを更新するプログラム書き換え処理とをコンピュータに実行させ、
    前記プログラム呼び出し処理は、前記プログラム書き換え処理によプログラムの実行コードの更新が開始されるときに、当該プログラムの更新前の実行コードを未だ実行していないが既に前記第2記憶装置の記憶領域にロードしており、かつ、当該プログラムが優先プログラムであった場合、前記プログラム書き換え処理による当該プログラムの実行コードの更新が終了するまで、当該更新前の実行コードを前記第2記憶装置の記憶領域に常駐させておき、
    前記ソフトウェア書き換えプログラムは、さらに、
    前記プログラム書き換え処理によりプログラムの実行コードの更新が開始されるときに、前記プログラム呼び出し処理により当該プログラムの更新前の実行コードが未だ実行されていないが既に前記第2記憶装置の記憶領域にロードされており、かつ、当該プログラムが非優先プログラムであった場合、前記プログラム呼び出し処理に当該更新前の実行コードを前記第2記憶装置の記憶領域から削除させ、前記プログラム書き換え処理による当該プログラムの実行コードの更新が開始してから終了するまで、前記プログラム呼び出し処理による当該プログラムの実行コードのロードを禁止するプログラム管理処理をコンピュータに実行させることを特徴とするソフトウェア書き換えプログラム。
  11. 優先度が高く設定された優先プログラムと優先プログラム以外の非優先プログラムとに分類される複数のプログラムの実行コードを記憶する第1記憶装置と、プログラムの実行コードがロードされる記憶領域を有する第2記憶装置と、プログラムの実行コードを実行する処理装置とを具備するコンピュータにより実行されるソフトウェア書き換えプログラムにおいて、
    前記第1記憶装置に記憶されたプログラムの実行コードを前記第2記憶装置の記憶領域にロードして前記処理装置により実行するプログラム呼び出し処理と、
    前記第1記憶装置に記憶されたプログラムの実行コードを更新するプログラム書き換え処理とをコンピュータに実行させ、
    前記プログラム呼び出し処理は、前記プログラム書き換え処理によプログラムの実行コードの更新が開始されるときに、当該プログラムの更新前の実行コードを未だ前記第2記憶装置の記憶領域にロードしておらず、かつ、当該プログラムが優先プログラムであった場合、前記プログラム書き換え処理による当該プログラムの実行コードの更新が開始する前に、当該更新前の実行コードを前記第2記憶装置の記憶領域にロードし、前記プログラム書き換え処理による当該プログラムの実行コードの更新が開始してから終了するまで、当該更新前の実行コードを前記第2記憶装置の記憶領域に常駐させておき、
    前記ソフトウェア書き換えプログラムは、さらに、
    前記プログラム書き換え処理によりプログラムの実行コードの更新が開始されるときに、前記プログラム呼び出し処理により当該プログラムの更新前の実行コードが未だ前記第2記憶装置の記憶領域にロードされておらず、かつ、当該プログラムが非優先プログラムであった場合、前記プログラム書き換え処理による当該プログラムの実行コードの更新が開始してから終了するまで、前記プログラム呼び出し処理による当該プログラムの実行コードのロードを禁止するプログラム管理処理をコンピュータに実行させることを特徴とするソフトウェア書き換えプログラム。
JP2008114340A 2008-04-24 2008-04-24 ソフトウェア書き換え装置及びソフトウェア書き換え方法及びソフトウェア書き換えプログラム Expired - Fee Related JP5094531B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008114340A JP5094531B2 (ja) 2008-04-24 2008-04-24 ソフトウェア書き換え装置及びソフトウェア書き換え方法及びソフトウェア書き換えプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008114340A JP5094531B2 (ja) 2008-04-24 2008-04-24 ソフトウェア書き換え装置及びソフトウェア書き換え方法及びソフトウェア書き換えプログラム

Publications (2)

Publication Number Publication Date
JP2009265923A JP2009265923A (ja) 2009-11-12
JP5094531B2 true JP5094531B2 (ja) 2012-12-12

Family

ID=41391706

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008114340A Expired - Fee Related JP5094531B2 (ja) 2008-04-24 2008-04-24 ソフトウェア書き換え装置及びソフトウェア書き換え方法及びソフトウェア書き換えプログラム

Country Status (1)

Country Link
JP (1) JP5094531B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015128914A1 (ja) * 2014-02-27 2015-09-03 三菱電機株式会社 ソフトウェア搭載機器及びソフトウェア更新方法
JP6596455B2 (ja) * 2017-02-22 2019-10-23 日立オートモティブシステムズ株式会社 自動車用電子制御装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63298528A (ja) * 1987-05-29 1988-12-06 Fujitsu Ltd プログラムのオンライン修正制御方式
JPH05165624A (ja) * 1991-12-13 1993-07-02 Hitachi Ltd 常駐モジュールの修正方式
JP2004110610A (ja) * 2002-09-20 2004-04-08 Hitachi Kokusai Electric Inc リモートメンテナンス方式
JP2006072982A (ja) * 2004-08-03 2006-03-16 Matsushita Electric Ind Co Ltd データ処理装置およびファームウェアの更新方法

Also Published As

Publication number Publication date
JP2009265923A (ja) 2009-11-12

Similar Documents

Publication Publication Date Title
US9747000B2 (en) Launching applications on an electronic device
JP5113700B2 (ja) ファームウェア更新装置及び方法
KR101636870B1 (ko) 최소 부트 이미지의 생성 방법 및 장치
JP2006011818A (ja) 携帯可能電子装置及び携帯可能電子装置の制御方法
JP2016162022A (ja) 情報処理装置およびメモリー管理プログラム
JP2006268377A (ja) プログラム起動制御装置及びプログラム起動制御方法
JP5166211B2 (ja) 不揮発性メモリを主記憶に用いた装置
JP5094531B2 (ja) ソフトウェア書き換え装置及びソフトウェア書き換え方法及びソフトウェア書き換えプログラム
WO2019159715A1 (ja) 車両制御装置およびプログラム更新システム
JP2017228010A (ja) ストレージ制御手段、ストレージ制御手段を有する情報処理装置、ストレージ制御方法及びそのプログラム
JP2003216511A (ja) 不揮発性メモリ装置、データ更新方法、データ更新プログラム及びそのプログラムが記録されたコンピュータ読み取り可能な記録媒体
CN105511904B (zh) 一种自动更新快捷窗口的方法及装置
JPH09282169A (ja) 入出力データ管理方式
KR102123701B1 (ko) 네트워크 부트 시스템
KR20060088654A (ko) 이동통신 단말기의 데이터 복구 시스템 및 방법
JP2019016169A (ja) 情報処理装置及びプログラム
JP6676791B2 (ja) 情報処理装置
JP5317182B2 (ja) Pos端末、モジュールアップデート方法およびモジュールアップデートプログラム
JP5158883B2 (ja) ファームウェア更新方法及びファームウェア更新装置
US7702890B2 (en) Information processing apparatus and program
JP2006126987A (ja) 画像処理装置
JP2011192139A (ja) 情報端末装置
JP2005346403A (ja) 情報処理装置及び情報処理システム
JP6873772B2 (ja) 情報処理装置、情報処理装置の制御方法及びアプリケーション管理方法
JP2020017315A (ja) 制御方法およびそれを利用した通信装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110103

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120626

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120627

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120720

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: 20120821

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120918

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150928

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees