JP6042025B2 - ソフトウェア搭載機器及びソフトウェア更新方法 - Google Patents
ソフトウェア搭載機器及びソフトウェア更新方法 Download PDFInfo
- Publication number
- JP6042025B2 JP6042025B2 JP2016504868A JP2016504868A JP6042025B2 JP 6042025 B2 JP6042025 B2 JP 6042025B2 JP 2016504868 A JP2016504868 A JP 2016504868A JP 2016504868 A JP2016504868 A JP 2016504868A JP 6042025 B2 JP6042025 B2 JP 6042025B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- software
- execution instruction
- update
- instruction sequence
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Description
本発明は、ソフトウェア搭載機器におけるソフトウェア更新方法に関する。
インターネットなどの通信手段を通じてソフトウェアをダウンロード及び更新可能な情報機器において、機器の動作を継続しつつ、ソフトウェアの更新を同時に行うことが求められている。
このような要求に対して、修正プログラムを含むすべての更新プログラムを格納する領域をあらかじめ確保する方法が提案されている。
この方法では、現行のプログラムを実行したまま、更新プログラムをあらかじめ確保しておいた領域にダウンロードしている。そして、ダウンロードが終了した後に現行プログラムから更新プログラムへの置き換えを行っている。
特許文献1では、複数OS(Operating System)が同一のH/W上で動作する環境下において、それぞれのOSのソフトウェアの更新の際に実行される処理内容が等しい処理を並列に実行される時間が短くなるよう、実行順序を調整する手法が提案されている。
特許文献2では、機器の使用及び非使用時を判断する手段を保有し、非使用時に自動的にソフトウェアをサーバからダウンロードする手法について提案されている。
特許文献3では、通常の通電状態でありアプリケーションが実行可能な通常状態と、消費電力を制限するとともにアプリケーションの実行を伴わないスタンバイ状態の切り替えを可能とし、そのスタンバイ状態においてアプリケーションのダウンロードを行う手法が提案されている。
従来のソフトウェア搭載機器では、更新対象となるプログラムと同等の空き記憶領域を用意しておく必要がある。従来のソフトウェア搭載機器では、更新の通知を受けた後、更新プログラムを前記空き記憶領域に、ダウンロードする。そして、ダウンロード完了後に既存プログラムから更新プログラムに切り替えを行っている。
そのため、従来のソフトウェア搭載機器では、ソフトウェアの更新規模に応じた記憶領域が別途必要となり、記憶領域のコストが増大するという課題があった。
この発明は、上記のような課題を解消するためになされたもので、機器に接続されたデバイスを制御する第1のプログラム及び、前記第1のプログラムよりプログラムの大きさが小さく、前記第1のプログラムの複数の機能のうち、一部の機能を含む第2のプログラムが記憶された記憶部と、前記記憶部と接続され前記第1のプログラムの更新要求を受け付けた場合に、前記第1のプログラムの実行を停止し、前記第1のプログラムを上書き更新するとともに、前記第1のプログラムの更新中に、前記第2のプログラムの前記一部の機能を実行する制御部とを有することを特徴とするソフトウェア搭載機器を提供する。
本発明は、少ない記憶領域でソフトウェアの更新ができる。
実施の形態1.
図1は、本実施の形態におけるシステム構成図である。本実施の形態におけるシステムは、ソフトウェア搭載機器1、ソフトウェア配信サーバ2、ネットワーク3で構成される。ソフトウェア搭載機器1は、白物家電などの組込み機器やパソコンなどであり、ネットワークを通じてソフトウェアのダウンロード及びダウンロードしたソフトウェアへの更新を行う。ソフトウェア配信サーバ2は、ネットワークを通じてソフトウェア搭載機器1に対して、更新プログラム(ソフトウェア)を配信する機能を有する。ネットワーク3は、インターネットなどの通信手段である。ネットワーク3は無線であっても有線であってもよい。
図1は、本実施の形態におけるシステム構成図である。本実施の形態におけるシステムは、ソフトウェア搭載機器1、ソフトウェア配信サーバ2、ネットワーク3で構成される。ソフトウェア搭載機器1は、白物家電などの組込み機器やパソコンなどであり、ネットワークを通じてソフトウェアのダウンロード及びダウンロードしたソフトウェアへの更新を行う。ソフトウェア配信サーバ2は、ネットワークを通じてソフトウェア搭載機器1に対して、更新プログラム(ソフトウェア)を配信する機能を有する。ネットワーク3は、インターネットなどの通信手段である。ネットワーク3は無線であっても有線であってもよい。
図2は、本実施の形態における、ソフトウェア搭載機器1のハードウェア構成図である。図2において、ソフトウェア搭載機器1は、CPU10(Central Processor Unit)、ROM11(Read Only Memory)、RAM12(Random Access Memory)に加え、通信モジュール13、デバイス14、LED(Light Emitting Diode)15、電子ブザー16、タイマー17、電源スィッチ18などの複数のハードウェアを備えている。
ROM11は、プログラム命令列や固定データを格納する領域を提供する。フラッシュメモリなどが相当し、書き込まれたプログラム内容を書き換えることが可能である。
RAM12は、プログラムが使用するデータを保存及び参照するための作業領域を提供する。
RAM12は、プログラムが使用するデータを保存及び参照するための作業領域を提供する。
通信モジュール13は、インターネットなどのネットワークインフラを通じて通信機器同士でデータの送受信を行う。
デバイス14は、ソフトウェア搭載機器1が有するデバイスである。デバイスの一例として、冷蔵庫のファンやコンプレッサ、エアコンのファンやルーバーなどを動作させるために用いられる、ステッピングモーターやPWM(Pulse Width Modulation)モーターなどが挙げられる。なお、図2のソフトウェア搭載機器1ではデバイス14を一つしか記載していないが、複数のデバイスで構成されていてもよい。
LED15は、点灯、点滅などの光のパターン出力によってユーザに機器の動作状況などを通知する半導体素子である。
電子ブザー16は、電子音の鳴動によって、ユーザに機器の動作状況を通知する機器である。
タイマー17は、時刻の他、プログラム命令が実行されるタイミングや、デバイス14に対する出力タイミングなどを計測する。
電源スイッチ18は、ソフトウェア搭載機器1の電源を操作するためのボタンで、そのスイッチの搭載場所は本体付属及びリモコンなどでも構わない。
図3は、本実施の形態における、ソフトウェア搭載機器1上で動作するソフトウェアの全体構成図である。これらのソフトウェアはROM11、若しくはRAM12に記憶され、制御部であるCPU10により実行される。図3において、メインプログラム(第1のプログラム)100は、ソフトウェア搭載機器1の製品としての機能を特徴づけるプログラムであり、普段はこのメインプログラム100が、ソフトウェア搭載機器1に接続されているデバイスの制御を行っている。
サブプログラム200は、メインプログラム100に対する更新要求が発生したとき、メインプログラム100の代わりにデバイスの制御を実行する命令を有しており、メインプログラム100の更新に係るソフトウェアモジュールを備えている。
プログラム切り換え部300は、メインプログラム100に対する更新要求をソフトウェア配信サーバ2等の外部から受け取った、または、更新要求の問い合わせを外部に対して行い、その結果、更新要求を受取ったとき、サブプログラム200に対し、更新を指示するプログラムである。また、プログラム切り換え部300は、メインプログラム100に対する更新が完了した後、サブプログラム200で実行しているデバイスの制御を終了し、更新プログラムに置き換えられたメインプログラム100にデバイスの制御を戻す機能を持っている。
まず、メインプログラム100の詳細について説明する。OS110は、メインプログラム100を動作させるための基本ソフトウェアである。このOS110上で動作するアプリケーション、アプリa(120a)、アプリb(120b)、アプリn(120n)は、ソフトウェア搭載機器1のそれぞれの機能を実装したプログラムである。また、OS100に組み込まれているドライバa(130a)、ドライバb(130b)、ドライバm(130m)は、デバイスドライバであり、ソフトウェア搭載機器1が有するハードウェア(デバイス)を制御するためのプログラムである。
次にサブプログラム200の詳細について述べる。スケジューリング部210は、プログラム切り換え部300からの動作指示を受け付ける。動作指示には2種類あり、一つ目はメインプログラム100の動作状況を調べる解析指示である。二つ目はメインプログラム100の内容を更新プログラムで置き換える更新作業及び更新作業中のメインプログラム100に代わってデバイスの制御を実行する、更新実行指示である。
解析指示を受けたときスケジューリング部210を呼び出す。呼び出された解析部220は、メインプログラム100の実行命令を収集し、収集した実行命令の列(実行命令列)から実行命令の周期性をパターン判定する。解析部220はこのパターン判定により、CPU10が周期的に実行する命令群を抽出し、周期実行命令列として、格納領域230に記憶する。解析部220は、解析終了後、プログラム切り換え部300に完了を通知する。
格納領域230は、解析部220で抽出した周期実行命令列を保存するための領域(記憶部)であり、サブプログラム200により、領域確保されたROM11、RAM12上の記憶領域である。
次に、メインプログラム100の更新に関するモジュールについて説明する。スケジューリング部210は更新実行指示を受けたときに実行部240と更新部250を呼び出す。実行部240は、予めメインプログラム100のソフトウェア動作から抽出し、格納領域230に保存しておいた周期プログラム(第2のプログラム)を実行するモジュールである。一方、更新部250は、実行部240でメインプログラム100のソフトウェア動作から抽出された周期プログラムが実行されている間、通信モジュール13を介し、ソフトウェア配信サーバ2から更新プログラムを受信し、メインプログラム100の書き換え更新を行うモジュールである。
次にプログラム切り換え部300の詳細について説明する。プログラム切り換え部300は、メインプログラム100とサブプログラム200に起動または停止の指示を出すプログラムである。プログラム切り換え部300は、ソフトウェア搭載機器1が起動されると最初に呼び出され、CPU10にメインプログラム100を実行させる。
図4は、プログラム切り換え部300内部のソフトウェア構成を表す図である。図4において、更新要求受信部310は、ソフトウェア配信サーバ2がソフトウェア搭載機器1に対して、更新プログラムの配信前に送信する更新要求を受信する。この受信は図2の通信モジュール13を介して行われる。更新要求受信部310は、更新要求を受信すると、プログラム起動停止部320を介して、サブプログラム200に対し、解析指示を送る。プログラム起動停止部320は、メインプログラム100及びサブプログラム200に対し、動作の指示を送る。
解析指示を受信したサブプログラム200は、メインプログラム100の解析を実行し、解析が終了すると解析完了通知を返信する。この解析完了通知を受信した周期タイミング同期部330は、プログラム起動停止部320を介して、メインプログラム100に停止の指示を送り、サブプログラム200に更新実行指示を送る。
更新実行指示を受けたサブプログラム200は、メインプログラム100の更新処理を実行し、更新が終了すると更新完了の通知を、更新完了受信部340へ送信する。この通知を受信した更新完了受信部340は、プログラム起動停止部320を介して、サブプログラム200に停止の指示を送り、メインプログラム100に実行指示を送る。なお、プログラム切り換え部300は、起動直後にメインプログラム100を起動するようになっているため、ソフトウェア搭載機器1をリブートすることで、メインプログラム100を起動させることが可能である。
次に図5を用いて、本実施の形態1における全体処理の動作について説明する。ここでは、ソフトウェア搭載機器1がデバイスの制御を実行中に、ソフトウェア配信サーバ2からソフトウェア更新通知があった場合を例に説明する。
本実施の形態において、ソフトウェア配信サーバ2は、メインプログラム100の更新プログラムを、外部(図示せず)から入手するものとする。入手方法は別のネットワークから受信してもよいし、外部記憶装置や媒体を介して、入手してもよい。
また、ソフトウェア配信サーバ2は、ソフトウェア搭載機器1で用いられているメインプログラム100のバージョンを管理しており、更新プログラムを入手すると、比較を行い、更新が必要であると判断した場合のみ、更新要求をソフトウェア機器1に送るものとする。
なお、ソフトウェア配信サーバ2は、受け取った更新プログラムを全てソフトウェア搭載機器1に送るようにし、ソフトウェア搭載機器1が更新の要否を判定してもよい。
このほかにも、ソフトウェア搭載機器1が更新プログラムの有無を問い合わせし、更新プログラムが存在した場合にのみ、ソフトウェア配信サーバ2が更新要求を送ってもよい。
このほかにも、ソフトウェア搭載機器1が更新プログラムの有無を問い合わせし、更新プログラムが存在した場合にのみ、ソフトウェア配信サーバ2が更新要求を送ってもよい。
まず、更新要求受信部310が、ソフトウェア配信サーバ2からソフトウェアの更新要求を受取る(S101)。次に更新要求受信部310は、プログラム起動停止部320を介して、サブプログラム200に対し、メインプログラム100の動作状況を調べる解析指示を送る。
サブプログラム200に対し、解析指示を送る方法として、プログラム起動停止部320から解析指示だと判断できる引数とともにスケジューリング部210を呼び出してもよい。また、プログラム起動停止部320とスケジューリング部210とで共通にアクセスできるメモリ領域を用意しておき、スケジューリング部210はこの領域をポーリングし、プログラム起動停止部320はこの領域の値を変更することにより、サブプログラム200に対し、解析指示を送ってもよい。
解析指示を受け取ったスケジューリング部210は、解析部220を呼び出す。解析部220ではメインプログラム100の解析を行う。解析を行うにあたり、解析部220は、メインプログラム100で動作している実行命令の記録を行う(S102)。
メインプログラム100で動作している実行命令の情報を入手するには、CPU10のプログラムカウンタレジスタから、マシン語が格納されているメモリを参照する方法や、メインプログラム100で動作するアプリケーション(120a〜120n)及びOS110の実行命令をメモリ上の領域若しくはログファイルにマシン語を出力させ、それを参照する方法がある。
解析部220は、記録した実行命令の列(実行命令列)を解析し、実行命令列の中から周期実行命令列を抽出し、格納領域230に格納する(S103)。図6及び図7を用いて実行命令列の解析について説明する。
図6は本実施の形態における周期実行命令列の抽出の例を表した図である。以下、周期的に実行される命令を検出して、更新処理中に実行する命令を抽出する方法を説明するが、この発明はこれに限定されることなく、予め定められた機能に対応する命令を検出して、命令を抽出する方法を用いてもよい。例えば、メインプログラム100における特定範囲を示すアドレスをROM11に予め記憶、若しくは、配信サーバ2からソフトウェア搭載機器1が入手して、命令を特定し、抽出することもできる。
図6において、実行命令610a〜610mは、CPU10が実行するメインプログラム100のマシン語である。図6では、実行時刻に沿って左から順に実行される様子を示している。なお、複数の実行命令をまとめたものを実行命令列と呼ぶ。図6の例だと、実行命令610a〜610mをまとめたものを実行命令列610と呼ぶ。周期実行命令列620は、実行命令列610(実行命令610a〜610m)を解析した結果、周期的に繰り返されている実行命令列である。
実行命令をメインプログラム100から収集する方法としては、メインプログラム100で動作するアプリケーション(120a〜120n)が実行している命令をログに出力するようにし、それを解析部220が参照してもよい。また、OS110が実行している命令をログに出力、それを解析部220が参照してもよい。
解析部220は、収集した実行命令の記録を行い、解析を行う。図6に示すように、A、B、C、D、A、B、C、D、A、B、C、D、A、のように、ある一定の期間、同一の繰返しパターンが連続して検出された場合、例えばこの場合だと、A、B、C、Dを周期実行命令列620として抽出を行う。その後、解析部220は、抽出された周期実行命令列620を、格納領域230に格納する。
解析の対象とする一定の期間及び繰り返しパターンの数は、ソフトウェア搭載機器1で実行される全てのアプリケーション(120a〜120n)がどの程度周期的に動作するのかによるため、予め統計的に調査した、例えば期間100ミリ秒、パターン数5回などの値を予め与えられている条件として用いる。
なお、周期性を判定するためのパターン抽出アルゴリズムについては、自然情報処理などで用いられるパターン認識アルゴリズムなどのアルゴリズムを利用しても構わない。
図7に実行命令の例を示す。収集データ701は、解析部220が収集した実行命令の集まりであり、解析データ702は、解析部220が収集データ701に対し解析を行った後に抽出された周期実行命令列を示す。
収集データ701及び解析データ702の左の列は、実行命令を識別するための実行IDである。なお、図7の実行命令の欄には、理解しやすくするため、アセンブリ言語(ニーモニック)で表記したが、実際にはマシン語が代入されている。
例えば、収集データ701のように、同じ実行命令が繰り返し連続で発生している場合、解析部220は、実行ID0x3502から実行ID0x3505の間と、実行ID0x3506から実行ID0x350Bの間を周期実行命令列として抽出する。
周期実行命令列が抽出できなかった場合(S104:NO)、実行命令の記録(S102)を再度行う。図5には示していないが、実行命令の記録(S102)の繰り返しを行う際、すぐに繰返し行うのではなく、しばらく待機してから実行してもよい。しばらく待機する時間は、予め定めておいても良いし、更新プログラムとともに送られてきた値を用いるようにしてもよい。
周期実行命令列の抽出(S103)ができた場合(S104:YES)、解析部220は、解析の完了通知をプログラム切り換え部300に送る。解析の完了通知を受けた周期タイミング同期部330はメインプログラム100からサブプログラム200への切り換えを行う。まず、周期タイミング同期部330は、解析部220から受けた周期実行命令列の情報を基に、メインプログラム100から周期実行命令列に実行位置の切り換えを行うためのタイミングを算出する(S105)。
タイミングを算出する方法として、次の方法がある。解析部220が、解析の完了通知として、若しくは解析の完了通知の他に、周期実行命令列の最初の実行命令の実行IDと、その最初の実行命令がメインプログラム100で実行された時刻と、周期実行命令列が実行されるのにかかる周期時間を送るようにする。なお、この方法を用いる場合には、解析部220で、メインプログラム100の実行命令を収集する際、その時刻も記録しておく必要がある。
周期タイミング同期部330は、現在の時刻(例えばt1)とメインプログラム100で最後に実行された時刻(t0)及び、周期実行命令列が実行されるのにかかる周期時間(tc)から、次に実行される周期実行命令列の最初の実行命令の予測時刻(tn)を計算する。そして、周期タイミング同期部330は、予測時刻(tn)に、メインプログラム100からサブプログラム200への切り換えを行う。(S106)。
図8にメインプログラム100からサブプログラム200への切り換えの例を示す。図8の例だと、周期実行命令列620のAが、メインプログラム100で最後に実行された時刻t0に周期時間tc加算したtnで、メインプログラム100の実行を停止し、代わりにサブプログラム200に周期実行命令列620の実行指示を出している。
周期タイミング同期部330が、メインプログラム100からサブプログラム200への切り換えを行うにあたり、プログラム起動停止部320を用いる方法がある。プログラム起動停止部320は、メインプログラム100に対し、停止の動作指示を送る。
停止の動作指示を送る方法は、メインプログラム100側に予め停止の指示を受け取るためのアプリケーションを用意しておき、プログラム起動停止部320から呼び出すようにしてもよいし、プログラム切り換え部300とメインプログラム100とで共通にアクセスできるメモリ領域を用意しておき、プログラム起動停止部320はこの領域の値を変更することにより、メインプログラム100に対し、停止の動作指示を送ってもよい。
そして、サブプログラム200に対し、プログラム起動停止部320は、更新実行指示をスケジューリング部210に送る。
更新実行指示を受け取ったスケジューリング部210は、実行部240と更新部250を同時に実行する。一方の実行部240は、格納領域230を参照し、周期実行命令列の実行を開始する。なお、実行部240は周期実行命令列の実行を繰返し実行し続ける。
もう一方の更新部250は、通信モジュール13を介して更新プログラムをダウンロードし、メインプログラム100の上書き更新を行う(S107)。更新を行っている間、ソフトウェア搭載機器1が必要とする一部の処理を実行部240で実行する事により、更新プログラムのために新たなメモリを必要とせず、直接メインプログラム100に更新プログラムをダウンロードすることが可能となる。
更新部250は、更新プログラムのダウンロードが完了したのち、完了通知をプログラム切り換え部300に送る(S108)。
完了通知を受けたプログラム切り換え部300は、機器の停止を行い(S109)、ソフトウェア搭載機器1の再起動を行う(S110)。なお、ソフトウェア搭載機器1に接続されているデバイス14によっては、例えば、起動時に時間を要するデバイスなどの場合、デバイス14の動作が一旦途切れてしまうため、プログラム切り換え部300が自動的に再起動を行わず、手動で電源スィッチ18を操作することで再起動のタイミングを調整するようにしてもよい。
ソフトウェア搭載機器1が再起動したのち、プログラム切り換え部300は、更新されたメインプログラム100を起動する(S111)。
上記のような構成にする事により、メインプログラム100が有する複数の機能のうち、更新中においても実行が必要な一部機能に絞ってプログラムの一部を記憶装置に複製し、使用する。そのため、複製されたプログラムは、サイズがメインプログラム100に比べて小さくなり、ソフトウェアの更新に必要な保存領域の容量を節約することができる。また、デバイス14に対する動作を継続しつつ、更新作業を行うことが可能となる。
なお、本実施の形態では、ソフトウェア配信サーバ2からソフトウェアの更新要求を受けた後に、解析部220が周期実行命令列の抽出を行ったが、更新要求を受ける前から周期実行命令列の抽出を行っておいてもよい。また、解析部220で周期実行命令列の抽出を行わず、メインプログラム100を更新している間、ソフトウェア搭載機器1がデバイス14を制御するのに必要な周期実行命令列を予め格納領域230に格納しておいてもよい。その際、周期タイミング同期手段330がメインプログラム100に停止の指示を送るタイミングも併せて格納領域230に格納しておく。
ソフトウェア搭載機器1がデバイス14を制御するのに必要な周期実行命令列は、工場出荷時に格納領域230に入れておいてもよいし、後から書き込めるようにしてもよい。また、更新部250がソフトウェア配信サーバ2から受け取る更新プログラムと一緒に受け取り、格納領域230に格納してもよい。
ソフトウェア搭載機器1がデバイス14を制御するのに必要な周期実行命令列は、工場出荷時に格納領域230に入れておいてもよいし、後から書き込めるようにしてもよい。また、更新部250がソフトウェア配信サーバ2から受け取る更新プログラムと一緒に受け取り、格納領域230に格納してもよい。
実施の形態2.
本実施の形態では、繰返し動作する処理を抽出するために、機器に接続されているデバイス14の動作を参照した場合について説明する。
本実施の形態では、繰返し動作する処理を抽出するために、機器に接続されているデバイス14の動作を参照した場合について説明する。
図9は、本実施の形態における、ソフトウェア搭載機器1上で動作するソフトウェアの全体構成図である。
図9において、周期出力解析部920はメインプログラム100のデバイスドライバの動作を監視するソフトウェアであり、その実行順序とタイミングからその周期性を判別し、周期出力パターン抽出し、同様の周期出力を実行できる周期実行命令列を格納領域230に格納するものである。
図9において、図3と同一の符号は、同一または相当する部分を表しており、周期出力解析部920以外については、実施の形態1で用いた図3で記載したものと同じ動作をする。
次に図10を用いて、本実施の形態2における全体動作について説明する。実施の形態1のときと同様、ソフトウェア搭載機器1が実行中に、ソフトウェア配信サーバ2からソフトウェア更新通知があった場合を例に説明する。
本実施の形態2における動作については、実施の形態1で述べた手順と同じであり、以下に実施の形態1で説明した動作との差異についてのみ説明する。
更新要求受信部310は、メインプログラム100の動作状況を調べる解析指示を送る。なお、この指示は、プログラム起動停止部320からスケジューリング部210を呼び出すことで解析指示を送ることにより、実現することもできるし、また、プログラム起動停止部320とスケジューリング部210とで共通にアクセスできるメモリ領域を用意しておき、スケジューリング部210はこの領域をポーリングし、プログラム起動停止部320はこの領域の値を変更することにより、サブプログラム200に対し、解析指示を送ることにより、実現することもできる。
出力の解析指示を受け取ったスケジューリング部210は、周期出力解析部920を呼び出し実行する。周期出力解析部920ではメインプログラム100の解析を行う。解析を行うにあたり、周期出力解析部920は、メインプログラム100で動作しているデバイスドライバ(ドライバa〜ドライバm)を監視し、それらの実行順序(出力命令)とその実行時刻の記録を行う(S202)。
出力命令の情報を入手するには、デバイスの制御を行うためのデバイスレジスタが割り振られているメモリ領域をポーリングして参照する方法や、デバイスへの制御を行う際に割込みを発生させるようにデバイスドライバを設計しておき、それを周期出力解析部920で受け取る方法がある。
なお、周期出力の記録先は、周期出力解析部920が一時的に用意したRAM12上のメモリ領域でも、格納領域230でも良い。
周期出力解析部920は、記録した周期出力を解析し、予め用意しておいた、実行命令列一覧の中から同様の周期出力を実行できる実行命令列を抽出し、周期実行命令列として、格納領域230に格納する(S203)。周期実行命令列については、実施の形態1と同じである。
なお、予め用意しておいた実行命令列は一つだけとし、これを繰り返し実行する周期実行命令列としてもよい。繰り返し実行する際には、実行命令列への引数として、時刻、書き込むメモリのアドレス、書き込む値、値を書き込んでおく時間を渡してもよい。図11を用いて周期出力の解析について説明する。
なお、予め用意しておいた実行命令列は一つだけとし、これを繰り返し実行する周期実行命令列としてもよい。繰り返し実行する際には、実行命令列への引数として、時刻、書き込むメモリのアドレス、書き込む値、値を書き込んでおく時間を渡してもよい。図11を用いて周期出力の解析について説明する。
図11は本実施の形態における周期出力パターンの抽出の例を表した図である。図11において、デバイス出力記録1110a〜1110iは、デバイス14に対する出力パターンとその実行時刻の記録である。図11では、実行時刻に沿って左から順に実行される様子を示している。周期出力パターン1120は、デバイス出力記録1110a〜1110iを解析した結果、周期的に繰り返されている出力パターンである。実行命令列一覧1130は、特定の出力パターンを実行するための実行命令列の一覧である。予めどのような出力命令が行われるのかを調べておき、同様の出力を行う実行命令列を用意しておく。図11では、出力パターンαの場合の実行命令列f_E、出力パターンβの場合の実行命令列f_F、出力パターンγの場合の実行命令列f_G、出力パターンΔの場合の実行命令列f_Hの例を示す。
例えば、デバイス14としてモーターXとモーターYがあったとし、モーターXに対し1を出力すると言う状態がaミリ秒(これを出力パターンαとする)、モーターXに対し2を出力すると言う状態がbミリ秒(これを出力パターンβとする)、モーターYに対し3を出力すると言う状態がcミリ秒(これを出力パターンγとする)、出力パターンα、出力パターンβ、出力パターンγ、出力パターンα、出力パターンβ、出力パターンγ、のように、ある一定の期間、同一の繰返し出力パターンが連続して検出された場合(図11のデバイス出力記録の例)出力パターンα、出力パターンβ、出力パターンγを周期出力パターン1120として抽出を行う。
周期出力解析部920は、実行命令列一覧1130を参照することにより、抽出された周期出力パターン1120を実行する為の周期実行命令列の組合せ1140を作成する。その後、周期出力解析部920は、周期実行命令の組合せ1140を、格納領域230に格納する。
なお、解析の対象とする一定の期間及び繰り返し出力パターンの数は、ソフトウェア搭載機器1で実行される全てのデバイスドライバがどの程度周期的に動作するのかによるため、予め統計的に調査した結果、例えば期間100ミリ秒、出力パターン数5回などの値を与えられている条件として用いる。
なお、周期性を判定するためのパターン抽出アルゴリズムについては、自然情報処理などで用いられるパターン認識アルゴリズムなどのアルゴリズムを利用しても構わない。
また、デバイスに対するアクセス時間は、デバイスの状況(温度や湿度などの環境や、経年劣化)によって変動する場合がある。このため、例えば、上記の例であればα、β、γと言う出力パターンが守られていれば、それぞれの実行期間に対し、多少の増減があっても許容するものとする。許容の範囲は、ソフトウェア搭載機器1に接続されているデバイスによるため、予め統計的に調査した結果、例えば増減1%以内などの値が与えられている条件として用いる。
図10の処理フローの説明に戻り、周期出力パターンが特定できなかった場合(S204:NO)、メインプログラム100で動作しているデバイスドライバ(ドライバa〜ドライバm)を監視し、それらの実行順序(出力命令)とその実行時刻の記録(S202)を再度行う。図10には示していないが、実行順序と実行時刻の記録(S202)の繰り返しを行う際、すぐに繰返し行うのではなく、しばらく待機してから実行してもよい。しばらく待機する時間は、予め定めておいても良いし、更新プログラムとともに送られてきた値を用いるようにしてもよい。
周期出力パターンの特定(S203)ができた場合(S204:YES)、周期出力解析部920は、解析の完了通知をプログラム切り換え部300に送る。解析の完了通知を受けた周期タイミング同期部330はメインプログラム100からサブプログラム200への切り換えを行う。まず、周期タイミング同期部330は、周期出力解析部920から受けた周期出力パターンの情報を基に、メインプログラム100から実行部240に実行の切り換えを行うためのタイミングを算出する(S205)。
タイミングを算出する方法として、次の方法がある。周期出力解析部920が、解析の完了通知として、若しくは解析の完了通知の他に、周期実行命令列の組合せ1140の最初の実行命令列の実行IDと、その最初の実行命令列に相当するデバイス14の出力がメインプログラム100で実行された時刻と、周期実行命令列が実行されるのにかかる周期時間を送るようにする。なお、この方法を用いる場合には、周期出力解析部920で、メインプログラム100の出力パターンを収集する際、その時刻も記録しておく必要がある。
タイミングを算出する方法として、次の方法がある。周期出力解析部920が、解析の完了通知として、若しくは解析の完了通知の他に、周期実行命令列の組合せ1140の最初の実行命令列の実行IDと、その最初の実行命令列に相当するデバイス14の出力がメインプログラム100で実行された時刻と、周期実行命令列が実行されるのにかかる周期時間を送るようにする。なお、この方法を用いる場合には、周期出力解析部920で、メインプログラム100の出力パターンを収集する際、その時刻も記録しておく必要がある。
周期タイミング同期部330は、現在の時刻(例えばt1)とメインプログラム100で最後に出力パターンが出力された時刻(t0)及び、周期実行命令列の組合せ1140が実行されるのにかかる周期時間(tc)から、次に実行される周期実行命令列の最初の実行命令の予測時刻(tn)を計算する。そして、周期タイミング同期部330は、予測時刻(tn)に、メインプログラム100からサブプログラム200への切り換えを行う。(S206)。
図12にメインプログラム100からサブプログラム200への切り換えの例を示す。図12の例だと、周期出力パターン1120のαが、メインプログラム100で最後に実行された時刻t0に周期時間tc加算したtnで、メインプログラム100の実行を停止し、代わりにサブプログラム200に周期実行命令列の組合せ1140の実行指示を出している。
周期タイミング同期部330が、メインプログラム100からサブプログラム200への切り換えを行うにあたり、プログラム起動停止部320を用いる方法がある。プログラム起動停止部320は、メインプログラム100に対し、停止の動作指示を送る。
停止の動作指示を送る方法は、メインプログラム100側に予め停止の指示を受け取るためのアプリケーションを用意しておき、プログラム起動停止部320から呼び出すようにしてもよいし、プログラム切り換え部300とメインプログラム100とで共通にアクセスできるメモリ領域を用意しておき、プログラム起動停止部320はこの領域の値を変更することにより、メインプログラム100に対し、停止の動作指示を送ってもよい。
そして、サブプログラム200に対し、プログラム起動停止部320は、更新実行指示をスケジューリング部210に送る。
この指示を受け取ったスケジューリング部210は、実行部240と更新部250を同時に実行する。実行部240は、格納領域230を参照し、周期実行命令列の実行を開始する。なお、実行部240は周期実行命令列の実行を繰返し実行し続ける。
以降の処理については、実施の形態1で述べた手順と同じである。
上記のような構成にする事により、ソフトウェアの更新に必要な保存領域の容量を節約することができる。また、デバイスに対する動作を継続しつつ、更新作業を行うことが可能となる。
なお、本実施の形態では、ソフトウェア配信サーバ2からソフトウェアの更新要求を受けた後に、周期出力解析部920が周期出力パターンの抽出を行ったが、更新要求を受ける前から周期出力パターンの抽出を行っておいてもよい。
実施の形態3.
本実施の形態では、解析部220が解析した周期実行命令列620に対し、無処理期間を解析し、予めユーザが静的に用意した拡張処理プログラムを挿入した場合について説明する。
ユーザが静的に予め用意した拡張処理プログラムを挿入することで、周期実行命令列620を実行中に拡張処理プログラムを実行することが可能である。
例えばリモコンなどの外部割込の受付やLEDの点滅プログラムを拡張処理プログラムとして静的に用意しておけば、周期実行命令列620を実行中にリモコンの受付処理やLEDの点滅処理を行うことができる。
本実施の形態では、解析部220が解析した周期実行命令列620に対し、無処理期間を解析し、予めユーザが静的に用意した拡張処理プログラムを挿入した場合について説明する。
ユーザが静的に予め用意した拡張処理プログラムを挿入することで、周期実行命令列620を実行中に拡張処理プログラムを実行することが可能である。
例えばリモコンなどの外部割込の受付やLEDの点滅プログラムを拡張処理プログラムとして静的に用意しておけば、周期実行命令列620を実行中にリモコンの受付処理やLEDの点滅処理を行うことができる。
図13は、本実施の形態における、ソフトウェア搭載機器1上で動作するソフトウェアの全体構成図である。
図13において、拡張処理格納領域2040は、ユーザが静的に予め用意した拡張処理プログラムである。拡張処理プログラムは、周期実行命令列620を実行中に、更に実行したいプログラムであり、前述したリモコンなどの外部割込の受付やLEDの点滅プログラムなどであってもよい。なお、拡張処理格納領域2040に用意する拡張処理プログラムは、外部記憶装置や通信モジュールを介して入手できるようにしてもよい。
図13において、無処理期間抽出部2010は格納領域230に格納された周期実行命令列から無処理が連続して続く期間(無処理期間)を抽出し、無処理期間格納領域2020に格納するものである。
なお、本実施の形態では、無処理期間格納領域2020および拡張処理格納領域2040を格納領域230とは別の構成としたが、無処理期間格納領域2020および拡張処理格納領域2040に格納された内容を、格納領域230に格納した構成であっても良い。
なお、本実施の形態では、無処理期間格納領域2020および拡張処理格納領域2040を格納領域230とは別の構成としたが、無処理期間格納領域2020および拡張処理格納領域2040に格納された内容を、格納領域230に格納した構成であっても良い。
図13において、拡張処理分割挿入部2030は、無処理期間格納領域2020から無処理期間を参照し、拡張処理格納領域2040に格納された拡張処理命令列を無処理期間長で分割し、その分割数だけ周期実行命令列を複製し、複製したそれぞれの周期実行命令列に対して、分割した拡張処理命令列をその無処理期間部分に複製し、それらの拡張処理命令列を1つの周期実行命令列として格納領域230に格納するものである。
図13において、図3と同一の符号は、同一または相当する部分を表しており、無処理期間抽出部2010、無処理期間格納領域2020、拡張処理分割挿入部2030、拡張処理格納領域2040以外については、実施の形態1で用いた図3で記載したものと同じ動作をする。
次に図14を用いて、本実施の形態3における全体動作について説明する。実施の形態1のときと同様、ソフトウェア搭載機器1が実行中に、ソフトウェア配信サーバ2からソフトウェア更新通知があった場合を例に説明する。
本実施の形態3における動作については、実施の形態1で述べた手順と同じであり、以下に実施の形態1で説明した動作との差異についてのみ説明する。
無処理期間抽出部2010は、格納領域230に格納された周期実行命令列に対して無処理期間の抽出を行うものである。
無処理期間とは、アセンブラでのNOP(No OPeration)命令など、CPUが計算処理やレジスタにアクセスを行っていないような状況が続く期間のことを指す。
無処理期間抽出部2010は、この無処理期間の情報を無処理期間格納領域2020に格納する(S301)。以上の処理により、周期実行命令列において、どのタイミングで無処理なのかが分かる。
無処理期間抽出部2010は、無処理期間の情報を無処理期間格納領域2020に格納したのち、拡張処理分割挿入部2030を呼ぶ。
無処理期間とは、アセンブラでのNOP(No OPeration)命令など、CPUが計算処理やレジスタにアクセスを行っていないような状況が続く期間のことを指す。
無処理期間抽出部2010は、この無処理期間の情報を無処理期間格納領域2020に格納する(S301)。以上の処理により、周期実行命令列において、どのタイミングで無処理なのかが分かる。
無処理期間抽出部2010は、無処理期間の情報を無処理期間格納領域2020に格納したのち、拡張処理分割挿入部2030を呼ぶ。
拡張処理分割挿入部2030は、拡張処理格納領域2030に格納された拡張処理プログラムを、上記周期実行命令列の無処理期間にコピーし、新たな周期実行命令列として格納領域230に格納するものである(S302)。
更新部250は、更新プログラムのダウンロードが完了したのち、格納領域230に格納されている周期実行命令列を確認し、割込処理に外部割込処理があるかどうか判断する(S303)。判断する方法は、直接周期実行命令列の内部を確認しても良いし、拡張処理分割挿入部2030が、周期実行命令列を更新する際、その旨を示す情報を格納領域230の一部に格納しても良い。
例えば、リモコンなどの外部割込により周期実行を中断して再起動したい場合、外部割込信号を受信する処理を拡張処理として定義する。
更新部250は、外部割込信号を受信した場合(S304:YES)、更新プログラムのダウンロード完了通知をプログラム切り替え部300へ送り、プログラム切り替え部300は機器の停止を行い、再起動を実施する。
外部割込信号を受信しない場合(S304:NO)、更新部250は、外部割込み信号を受け付けるまで待機する。なお、図示していないが、更新部250はこのままでは外部割込み信号を受け付けるまで待機し続けてしまうため、予め設定しておいた時間が経過した場合、自動的にS108へ処理を進めるようにしてもよい。
例えば、リモコンなどの外部割込により周期実行を中断して再起動したい場合、外部割込信号を受信する処理を拡張処理として定義する。
更新部250は、外部割込信号を受信した場合(S304:YES)、更新プログラムのダウンロード完了通知をプログラム切り替え部300へ送り、プログラム切り替え部300は機器の停止を行い、再起動を実施する。
外部割込信号を受信しない場合(S304:NO)、更新部250は、外部割込み信号を受け付けるまで待機する。なお、図示していないが、更新部250はこのままでは外部割込み信号を受け付けるまで待機し続けてしまうため、予め設定しておいた時間が経過した場合、自動的にS108へ処理を進めるようにしてもよい。
図15と図16は本実施の形態の無処理期間抽出部2010における無処理期間の抽出と、無処理期間への拡張処理の追加の例を表した図である。
図15において、実行命令列2110a〜2110mは、メインプログラム100の実行命令を収集した実行命令列で、周期的に2110c、2110gおよび2110kのようにNOPが現れている例である。
繰り返しのパターンを抽出する方法は実施の形態1と同様で、抽出した周期実行命令列を第1の周期実行命令列2120とする。第1の周期実行命令列2120にはNOP2120nopが含まれる。
図15において、実行命令列2110a〜2110mは、メインプログラム100の実行命令を収集した実行命令列で、周期的に2110c、2110gおよび2110kのようにNOPが現れている例である。
繰り返しのパターンを抽出する方法は実施の形態1と同様で、抽出した周期実行命令列を第1の周期実行命令列2120とする。第1の周期実行命令列2120にはNOP2120nopが含まれる。
図16を用いて、無処理期間抽出部2010が無処理期間を抽出し、拡張処理を格納する際の詳細を説明する。本実施の形態では、拡張処理格納領域2040に格納された拡張処理として、命令長がtoptの拡張処理2130があった場合を例とする。
無処理期間抽出部2010は抽出した周期実行命令列2120から連続したNOP処理の連続期間2120nopを抽出し、無処理期間格納領域2020に格納する。
無処理期間抽出部2010は抽出した周期実行命令列2120から連続したNOP処理の連続期間2120nopを抽出し、無処理期間格納領域2020に格納する。
次に、拡張処理分割挿入部2030は、拡張処理格納領域2040に格納された拡張処理2130を参照し、無処理期間2120nopとその命令長を比較する。
このとき、無処理期間2020nopの命令長tnopよりも拡張処理2130の命令長toptが長い場合、拡張処理2130をtnopで時分割する。
例えば、時分割した拡張処理をそれぞれ拡張処理2131(拡1)、拡張処理2132(拡2)として保存したとする。
このとき、無処理期間2020nopの命令長tnopよりも拡張処理2130の命令長toptが長い場合、拡張処理2130をtnopで時分割する。
例えば、時分割した拡張処理をそれぞれ拡張処理2131(拡1)、拡張処理2132(拡2)として保存したとする。
次に、拡張処理分割挿入部2030は、周期実行命令列2120を複製して上記時分割数分(この場合2つ分)用意し、周期実行命令列2141、周期実行命令列2142を作成する。
そして、それぞれの周期実行命令列の無処理期間2120nopに対して、拡張処理2131、拡張処理2132を複製する。なお、周期実行命令列2141の無処理期間2120nopと拡張処理2131は処理時間が同一のため、ちょうどあてはまるが、周期実行命令列2141の無処理期間2120nopと拡張処理2132は処理時間が一致しないため、図の例では、NOP2133が余る。
そして、それぞれの周期実行命令列の無処理期間2120nopに対して、拡張処理2131、拡張処理2132を複製する。なお、周期実行命令列2141の無処理期間2120nopと拡張処理2131は処理時間が同一のため、ちょうどあてはまるが、周期実行命令列2141の無処理期間2120nopと拡張処理2132は処理時間が一致しないため、図の例では、NOP2133が余る。
次に、拡張処理分割挿入部2030は、複製した周期実行命令列を連結し、格納領域230に保存する。本実施の形態の例では、周期実行命令列2141と周期実行命令列2142を連結し、一つの周期実行命令列2150を生成し、格納領域230に保存する。
以降の処理については、実施の形態1で述べた手順と同じである。
なお、無処理期間の抽出を行うためのパターン抽出アルゴリズムについては、自然情報処理などで用いられるパターン認識アルゴリズムなどのアルゴリズムを利用しても構わない。
また、拡張処理には、ユーザの任意のプログラムを格納しても構わない。例えば、LEDを点滅させるプログラムであれば、更新プログラムのダウンロード中に製品に付随のLEDを点滅させることが可能である。
例えば、リモコンの割込を受信し、再起動(リセットベクタにジャンプする)プログラムであれば、更新プログラムのダウンロード完了後に、リモコンの信号を受信し、周期実行をユーザのタイミングで停止し、再起動することが可能である。
例えば、リモコンの割込を受信し、再起動(リセットベクタにジャンプする)プログラムであれば、更新プログラムのダウンロード完了後に、リモコンの信号を受信し、周期実行をユーザのタイミングで停止し、再起動することが可能である。
なお、拡張処理はユーザの任意のプログラムでよいが、OSのシステムコールや既存ライブラリ呼出など、OSや既存ライブラリに依存したプログラムであってはならない。なぜなら、周期処理は周期実行命令列のみから成り立つものであり、OSなどの処理を含まないためである。
上記のような構成にする事により、ソフトウェアの更新に必要な保存領域の容量を節約することができる。また、デバイスに対する動作を継続しつつ、更新作業を行うことが可能となる。また、ソフトウェアの更新中に事前に用意した任意のプログラムを実行することが可能である。
なお、上記の説明では、格納領域230を記憶部としたが、メインプログラム100、サブプログラム200、プログラム切り替え部300を記憶する領域も合わせて記憶部としても良い。
なお、上記の説明では、格納領域230を記憶部としたが、メインプログラム100、サブプログラム200、プログラム切り替え部300を記憶する領域も合わせて記憶部としても良い。
1 ソフトウェア搭載機器、2 ソフトウェア配信サーバ、3 ネットワーク、10 CPU、11 ROM、12 RAM、13 通信モジュール、14 デバイス、15 LED、16 電子ブザー、17 タイマー、18 電源スィッチ、100 メインプログラム、110 OS、120a〜120n アプリケーション、130a〜130m デバイスドライバ、200 サブプログラム、210 スケジューリング部、220 解析部、230 格納領域、240 実行部、250 更新部、300 プログラム切り換え部、310 更新要求受信部、320 プログラム起動停止部、330 周期タイミング同期部、340 更新完了受信部、610a〜610m 実行命令列、620 周期実行命令列、701 解析部220が収集した実行命令列を示す表、702 解析部220が解析を行った後に抽出された周期実行命令列を示す表、920 周期出力解析部、1110a〜1110i デバイス出力記録、1120 周期出力パターン、1130 実行命令列一覧、1140 周期実行命令列の組合せ、2010 無処理期間抽出部、2020 無処理期間格納領域、2030 拡張処理分割挿入部、2040 拡張処理格納領域、2110a〜2110h 実行命令列、2120nop 無処理期間、2130 拡張処理命令列、2131 拡張処理命令列、2132 拡張処理命令列、2133 NOP、2141 周期実行命令列、2142 周期実行命令列、2150 周期実行命令列。
Claims (5)
- 機器に接続されたデバイスを制御する第1のプログラム及び、前記第1のプログラムよりプログラムの大きさが小さく、前記第1のプログラムの複数の機能のうち、一部の機能を含む第2のプログラムが記憶された記憶部と、
前記記憶部と接続され前記第1のプログラムの更新要求を受け付けた場合に、前記第1のプログラムの実行を停止し、前記第1のプログラムを上書き更新するとともに、前記第1のプログラムの更新中に、前記第2のプログラムの前記一部の機能を実行する制御部と
を備え、
前記制御部は、前記第1のプログラムがデバイスを制御するために実行している命令を参照し、繰り返し実行される命令を周期実行命令列として抽出するとともに、抽出した周期実行命令列を前記第2のプログラムとして前記記憶部に記憶するソフトウェア搭載機器。 - 機器に接続されたデバイスを制御する第1のプログラム及び、前記第1のプログラムよりプログラムの大きさが小さく、前記第1のプログラムの複数の機能のうち、一部の機能を含む第2のプログラムが記憶された記憶部と、
前記記憶部と接続され前記第1のプログラムの更新要求を受け付けた場合に、前記第1のプログラムの実行を停止し、前記第1のプログラムを上書き更新するとともに、前記第1のプログラムの更新中に、前記第2のプログラムの前記一部の機能を実行する制御部と
を備え、
前記制御部は、前記デバイスに対し、繰り返し行われている動作を検出し、繰り返し動作する処理に対応する複数の命令を周期実行命令列として抽出するとともに、抽出した周期実行命令列を前記第2のプログラムとして前記記憶部に記憶するソフトウェア搭載機器。 - 前記制御部は、前記周期実行命令列に対し、処理が行われていない無処理期間を抽出するとともに、更新中に実行したい拡張処理を前記無処理期間へ挿入する請求項1に記載のソフトウェア搭載機器。
- 前記制御部は、前記拡張処理を分割して複数の前記無処理期間へ挿入する請求項3に記載のソフトウェア搭載機器。
- 制御部と記憶部とを備えた機器と、前記機器とネットワークを介して接続されたソフトウェア配信サーバとを有するシステムのソフトウェア更新方法において、
前記ソフトウェア配信サーバが、前記機器に接続されたデバイスを制御する第1のプログラムに対する更新要求を送信するステップと、
前記制御部により前記第1のプログラムが更新されている間に、前記制御部が、前記デバイスの一部の制御のみを継続するための周期実行命令列を抽出し、前記記憶部に記憶するステップと、
前記制御部が前記更新要求を受け付けた場合に、前記制御部が前記第1のプログラムの実行を停止するとともに、前記周期実行命令列を実行するステップと、
前記ソフトウェア配信サーバが、前記制御部により前記周期実行命令列を実行している前記機器へ、前記第1のプログラムの更新プログラムを送信するステップと、
前記更新プログラムのダウンロード終了後、前記制御部が前記周期実行命令列の実行を停止し、前記更新プログラムに置き換えられた前記第1のプログラムを実行するステップとを備えたソフトウェア更新方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014036463 | 2014-02-27 | ||
JP2014036463 | 2014-02-27 | ||
PCT/JP2014/005658 WO2015128914A1 (ja) | 2014-02-27 | 2014-11-11 | ソフトウェア搭載機器及びソフトウェア更新方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6042025B2 true JP6042025B2 (ja) | 2016-12-14 |
JPWO2015128914A1 JPWO2015128914A1 (ja) | 2017-03-30 |
Family
ID=54008288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016504868A Expired - Fee Related JP6042025B2 (ja) | 2014-02-27 | 2014-11-11 | ソフトウェア搭載機器及びソフトウェア更新方法 |
Country Status (4)
Country | Link |
---|---|
JP (1) | JP6042025B2 (ja) |
CN (1) | CN106030539A (ja) |
TW (1) | TW201533664A (ja) |
WO (1) | WO2015128914A1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017169044A (ja) * | 2016-03-16 | 2017-09-21 | 日本電気株式会社 | 設定装置、通信システム、通信装置の設定更新方法及びプログラム |
JP2018081543A (ja) * | 2016-11-17 | 2018-05-24 | セイコーエプソン株式会社 | 表示装置、頭部装着型表示装置、表示装置の制御方法、及び、プログラム |
JP6723941B2 (ja) * | 2017-02-15 | 2020-07-15 | 株式会社デンソーテン | 制御装置および制御プログラム更新方法 |
US20240126528A1 (en) * | 2019-10-18 | 2024-04-18 | Hitachi Astemo, Ltd. | Redundant system and load drive control device |
CN111026425A (zh) * | 2019-12-11 | 2020-04-17 | 腾讯科技(深圳)有限公司 | 服务更新方法、装置、服务器及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000132401A (ja) * | 1998-10-27 | 2000-05-12 | Matsushita Electric Ind Co Ltd | 車載用制御装置 |
JP2008158801A (ja) * | 2006-12-22 | 2008-07-10 | Matsushita Electric Works Ltd | 認証装置及び認証システム |
JP2009265923A (ja) * | 2008-04-24 | 2009-11-12 | Mitsubishi Electric Corp | ソフトウェア書き換え装置及びソフトウェア書き換え方法及びソフトウェア書き換えプログラム |
JP2010125925A (ja) * | 2008-11-26 | 2010-06-10 | Toyota Motor Corp | ソフトウェア管理装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4243571B2 (ja) * | 2003-08-05 | 2009-03-25 | パナソニック株式会社 | 放送受信装置 |
CN103064797B (zh) * | 2012-12-21 | 2016-06-29 | 华为技术有限公司 | 数据处理方法和虚拟机管理平台 |
-
2014
- 2014-11-11 WO PCT/JP2014/005658 patent/WO2015128914A1/ja active Application Filing
- 2014-11-11 JP JP2016504868A patent/JP6042025B2/ja not_active Expired - Fee Related
- 2014-11-11 CN CN201480075765.XA patent/CN106030539A/zh active Pending
- 2014-11-14 TW TW103139501A patent/TW201533664A/zh unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000132401A (ja) * | 1998-10-27 | 2000-05-12 | Matsushita Electric Ind Co Ltd | 車載用制御装置 |
JP2008158801A (ja) * | 2006-12-22 | 2008-07-10 | Matsushita Electric Works Ltd | 認証装置及び認証システム |
JP2009265923A (ja) * | 2008-04-24 | 2009-11-12 | Mitsubishi Electric Corp | ソフトウェア書き換え装置及びソフトウェア書き換え方法及びソフトウェア書き換えプログラム |
JP2010125925A (ja) * | 2008-11-26 | 2010-06-10 | Toyota Motor Corp | ソフトウェア管理装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2015128914A1 (ja) | 2015-09-03 |
JPWO2015128914A1 (ja) | 2017-03-30 |
CN106030539A (zh) | 2016-10-12 |
WO2015128914A9 (ja) | 2016-06-23 |
TW201533664A (zh) | 2015-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6042025B2 (ja) | ソフトウェア搭載機器及びソフトウェア更新方法 | |
US8136097B2 (en) | Thread debugging device, thread debugging method and information storage medium | |
CN106648863B (zh) | 一种安卓应用安装包、应用目标进程保活方法及*** | |
US8914785B2 (en) | Providing virtual appliance system firmware images | |
JP2017157004A5 (ja) | ||
US10776129B2 (en) | Method and apparatus for controlling a startup bootstrap program of an intelligent TV set | |
WO2007080931A1 (ja) | デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム | |
US9189293B2 (en) | Computer, virtualization mechanism, and scheduling method | |
TWI530789B (zh) | 遠端管理式電腦系統的平穩帶外電源控制方法和系統 | |
KR20110106716A (ko) | 프로그램 컴파일러, 설치 장치, 및 설치 방법 | |
WO2019207729A1 (ja) | 産業用コンピュータ、産業用コンピュータシステム、オペレーティングシステム更新方法及びプログラム | |
WO2018123456A1 (ja) | プログラマブルコントローラ、管理装置および制御システム | |
CN115237647A (zh) | 固件异常修复方法、装置、电子设备及计算机存储介质 | |
JP2004338883A (ja) | エレベーターの制御装置 | |
CN114327574A (zh) | 一种差分升级方法、电子设备及存储介质 | |
US10761512B2 (en) | Numerical controller | |
CN109558167A (zh) | 管理电气切换设备的电子计算机的嵌入式软件模块的方法 | |
JP6652374B2 (ja) | 制御装置、制御方法および制御プログラム | |
CN114780234A (zh) | 一种实现boot和应用程序分离的方法、装置及相关组件 | |
KR102434126B1 (ko) | Plc 프로그램 처리 장치 | |
JP2017162135A (ja) | 情報処理装置、デバッグシステムおよびスタックオーバフロー検出方法 | |
CN113678101A (zh) | 信息处理装置、移动体以及信息处理方法 | |
JP2008204013A (ja) | スレッド動作異常検知方法、マルチスレッドシステム | |
JP2004272629A (ja) | プログラマブルコントローラ用機器並びにプログラマブルコントローラ用機器におけるプログラム更新方法並びにプログラム起動方法 | |
JP2004310646A (ja) | システム機能拡張方法及び装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160921 |
|
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: 20161011 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20161108 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6042025 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |