Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP5658200B2 - 通信装置および起動プログラムコード選択方法 - Google Patents
[go: Go Back, main page]

JP5658200B2 - 通信装置および起動プログラムコード選択方法 - Google Patents

通信装置および起動プログラムコード選択方法 Download PDF

Info

Publication number
JP5658200B2
JP5658200B2 JP2012137661A JP2012137661A JP5658200B2 JP 5658200 B2 JP5658200 B2 JP 5658200B2 JP 2012137661 A JP2012137661 A JP 2012137661A JP 2012137661 A JP2012137661 A JP 2012137661A JP 5658200 B2 JP5658200 B2 JP 5658200B2
Authority
JP
Japan
Prior art keywords
program code
memory
memory area
stored
control unit
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.)
Active
Application number
JP2012137661A
Other languages
English (en)
Other versions
JP2014003472A (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.)
NEC Platforms Ltd
Original Assignee
NEC Platforms Ltd
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 NEC Platforms Ltd filed Critical NEC Platforms Ltd
Priority to JP2012137661A priority Critical patent/JP5658200B2/ja
Publication of JP2014003472A publication Critical patent/JP2014003472A/ja
Application granted granted Critical
Publication of JP5658200B2 publication Critical patent/JP5658200B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Telephone Function (AREA)

Description

本発明は、複数の起動プログラムコードを有する通信装置および起動プログラムコード選択方法に関する。
近年、通信機能を有する通信装置においては、通信装置を動作させるためのプログラムコードのバージョンアップを行うために、プログラムコードを外部のサーバなどからダウンロードできるようにしているものが多くなってきている。ここで、通信装置とは、携帯電話機やPHS(Personal Handyphone System:ピーエッチエス)端末あるいはスマートフォンなどの移動体通信端末を指すものとする。或いは、通信装置は、通信機能を有するタブレット型端末や、通信機能を有するパーソナルコンピュータなど、であってもよい。
そして、プログラムコードのバージョンアップを確実に行わせるため、通信装置の内部に、プログラムコードを格納するメモリを2面備えているものも多くなってきている(例えば、特許文献1参照。)。
上述した特許文献1「ソフトウェア更新方法および移動端末装置」には以下の記載がなされている。
すなわち、移動端末装置に、本体プログラムコード#1、#2を保持するメモリ領域を2面設ける。本体プログラムコードのバージョンアップ等のためのプログラムコード更新時には、1面の本体プログラムコードを更新対象としてプログラムコード更新処理を実行する。この更新が失敗した時には、他面の本体プログラムコードを用いて移動端末装置の動作を行わせることができる。また、他面の本体プログラムコードを更新対象として、プログラムコード更新を再度実行することができる。このことにより、本体プログラムコードを移動端末装置の外部に退避することなく、プログラムコードの更新処理を行うことができる、としている。また、プログラムコード更新処理の失敗時にも、他面の本体プログラムコードを用いて移動端末装置の動作を行わせることができるため、移動端末装置の使用が長時間制限されるようなことにはならない、としている。
特開2007−189332号公報(第7〜11頁、図1〜10)
上述した特許文献1に記載の手法においては、プログラムコードの更新が失敗した時には、更新を行わない他面の本体プログラムコードを用いて移動端末装置の動作を行わせることが出来るようになっている。しかし、プログラムコードの更新が失敗した場合であって、かつ、更新の失敗を検出できなかった場合には、以下のように動作してしまう、という課題を有している。すなわち、更新が失敗したにも拘わらず失敗を検出できていないため、プログラムコードは正常に更新されたものと見なし、このプログラムコードを使用して、移動端末装置を起動させようと動作してしまう、という課題を有している。つまり、正常でないプログラムコードを使用して移動端末装置を起動させようと動作し、正常に起動できず、結果的には起動の繰り返しに陥ってしまう、という課題を有している。
なお、プログラムコードの更新が失敗した場合で、かつ、更新の失敗を検出できない場合とは、以下のような状況において起こり得るものである。すなわち、通常、更新したプログラムコードの正当性は、データの信頼性を検査するために算出した値であるところのチェックサムや、CRC(Cyclic Redundancy Check:巡回冗長検査)などの誤り検出データを用いて確認するようにしている。ところが、更新したプログラムコードに不正なコードが紛れ込んでいる場合であっても、誤り検出データは、正常なプログラムコードにおいて算出されたデータと同じである、といった場合も起こり得るものである。このような場合には、不正プログラムコードが紛れ込んでいることを検出することは出来ない。そして、不正プログラムコードが紛れ込んでいるプログラムコードを、正常なプログラムコードであると見なし、その結果、起動の失敗を繰り返すこととなってしまう。
本発明は上述した課題を解決するためになされたものである。従って、本発明の目的は、正常でないプログラムコードを使用して装置を起動させようとした場合であっても、そのプログラムコードが正常でないことを検出でき、元の正常なプログラムコードによって起動させることを可能とする、通信装置および起動プログラムコード選択方法、を提供することにある。
本発明の通信装置は、プログラムコードを格納する複数のメモリ領域を有する第1の不揮発性メモリを備えている。また、前記複数のメモリ領域のプログラムコードでの起動の失敗回数を前記メモリ領域のそれぞれに対応して格納する複数のカウンタを有する第2の不揮発性メモリを備えている。さらに、前記複数のメモリ領域の何れかのプログラムコードを展開する動作用メモリと、制御部を備えている。前記制御部は、前記複数のメモリ領域の何れかのプログラムコードを運用の為のプログラムコードとして選択する。次に、前記運用の為のプログラムコードを前記動作用メモリに展開して動作させることにより装置の起動を行う。ここで、前記運用の為のプログラムコードでの起動が失敗した場合その失敗回数を、前記運用の為のプログラムコードを格納していたメモリ領域に対応する前記複数の何れかのカウンタに格納する。そして、前記何れかのカウンタに格納された失敗回数が閾値を超えた場合に前記運用のためのプログラムコードを格納していたメモリ領域以外の何れかのメモリ領域のプログラムコードを運用の為のプログラムコードとして選択する。またさらに、外部から受信するデータを前記制御部に送出すると共に、前記制御部から出力されるデータを外部へ送信する通信部を備えている。
本発明の起動プログラムコード選択方法は、複数のメモリ領域の何れかのプログラムコードを運用の為のプログラムコードとして選択し、前記運用の為のプログラムコードを動作用メモリに展開して動作させることにより装置の起動を行う。そして、前記運用の為のプログラムコードでの起動が失敗した場合その失敗回数を、前記運用の為のプログラムコードを格納していたメモリ領域に対応する複数の何れかのカウンタに格納する。ここで、前記何れかのカウンタに格納された失敗回数が閾値を超えた場合に前記運用のためのプログラムコードを格納していたメモリ領域以外の何れかのメモリ領域のプログラムコードを運用の為のプログラムコードとして選択する、ようになっている。
本発明によれば、正常でないプログラムコードを使用して装置を起動させようとした場合であっても、そのプログラムコードが正常でないことを検出でき、元の正常なプログラムコードによって起動させることが可能となる。
本発明の通信装置の第1の実施形態を示すブロック図である。 第1の実施形態の動作について説明するフローチャートである。 本発明の通信装置の第2の実施形態を示すブロック図である。 第2の実施形態の動作について説明する第1のフローチャートである。 第2の実施形態の動作について説明する第2のフローチャートである。 本発明の通信装置の第3の実施形態を示すブロック図である。 第3の実施形態の動作について説明するフローチャートである。 本発明の通信装置の第4の実施形態を示すブロック図である。 第4の実施形態の動作について説明するフローチャートである。
次に、本発明の実施形態について図面を参照して説明する。
[第1の実施形態]
図1は、本発明の通信装置の第1の実施形態を示すブロック図である。
なお、本実施形態における通信装置とは、携帯電話機やPHS端末、或いは、スマートフォンなどの移動体通信端末を指すものとする。或いは、通信装置は、通信機能を有するタブレット型端末や、通信機能を有するパーソナルコンピュータなど、であってもよい。
図1に示す通信装置100は、通信部10、不揮発性メモリ20、不揮発性メモリ30、動作用メモリ40、制御部50を備えている。
通信部10は、通信装置100の外部との通信を行う部分であり、制御部50から出力される音声やテキスト或いは映像などのデータを外部へ送信し、外部から受信するデータを制御部50に送出する。通信部10は、無線によって外部との通信を行うものであってもよいし、有線によって外部との通信を行うものであってもよい。
不揮発性メモリ20は、通信装置100を動作させるためのプログラムコードを格納するメモリである。そして、不揮発性メモリ20は2つのメモリ領域、すなわち、#1メモリ領域21と#2メモリ領域22、を有している。#1メモリ領域21には通信装置100を動作させるための第1のプログラムコード、すなわち、#1プログラムコード、が格納される。また、#2メモリ領域22には通信装置100を動作させるための第2のプログラムコード、すなわち、#2プログラムコード、が格納される。なお、不揮発性メモリ20は、図示しないブートローダ(boot loader)も格納しているものとする。ブートローダは、周知のように、通信装置100の電源投入後に、#1メモリ領域21或いは#2メモリ領域22の何れかのプログラムコードを動作用メモリ40に読み込むためのプログラムである。
不揮発性メモリ20は、メモリの内容を書き換え可能で、かつ、電源を切ってもメモリ内のデータが消えない半導体メモリであるところのフラッシュメモリ(flash memory)で構成されるとよい。
本実施形態においては、#1プログラムコードを格納する#1メモリ領域21を、運用面とし、#2プログラムコードを格納する#2メモリ領域22を、退避面とするものとする。なお、運用面のプログラムコードは、通信装置100を起動させる際、優先的に動作用メモリ40に展開されるようにしている。そして、運用面のプログラムコードでの起動が失敗した場合には、退避面のプログラムコードで通信装置100を起動させるようになっている。つまり、通信装置100の電源投入後には、優先的に運用面のプログラムコードで通信装置100の起動を行い、運用面のプログラムコードでの起動が失敗した場合には、退避面のプログラムコードで通信装置100の起動を行わせるようにしている。
不揮発性メモリ30は、回数をカウントして記憶する2つのカウンタ、すなわち、#1カウンタ31と#2カウンタ32、を格納するメモリである。#1カウンタ31は、#1メモリ領域21の#1プログラムコードで通信装置100の起動を行い、その起動が失敗した場合の失敗回数を記憶する。また、#2カウンタ32は、#2メモリ領域22の#2プログラムコードで通信装置100の起動を行い、その起動が失敗した場合の失敗回数を記憶する。
動作用メモリ40は、通信装置100を動作させるプログラムコードを記憶するメモリである。そして、動作用メモリ40に記憶されるプログラムコードを実行することにより、通信装置100の動作が行われるようになっている。なお、動作用メモリ40に記憶されるプログラムコードは、#1メモリ領域21の#1プログラムコードか、或いは、#2メモリ領域22の#2プログラムコードの何れか一方のプログラムコードである。なお、動作用メモリ40は、メモリの内容を書き換え可能であるが、電源を切った場合にはメモリ内のデータが失われるRAM(random access memory:ラム)で構成される。
制御部50は、通信装置100全体の動作制御を行い、CPU(central processing unit:中央処理装置)を備えている。特に、制御部50は、通信装置100の電源投入時に、不揮発性メモリ20内の運用面に格納されている#1プログラムコードを動作用メモリ40に展開し記憶させる。そして、動作用メモリ40に記憶されたプログラムコードを動作させることにより、通信装置100の起動を行う。通信装置100の起動が成功した場合には、そのまま、通信装置100の動作を継続させる。通信装置100の起動が失敗した場合には、その失敗回数を不揮発性メモリ30の#1カウンタ31に記憶させる。次に、再度、運用面に格納されている#1プログラムコードを動作用メモリ40に展開し記憶させ、通信装置100の起動を行う。ここでも通信装置100の起動が失敗した場合には、その失敗回数を不揮発性メモリ30の#1カウンタ31に記憶させる。そして、#1カウンタ31に記憶された失敗回数が、予め定めておいた閾値を超えた場合には、不揮発性メモリ20内の退避面に格納されている#2プログラムコードを動作用メモリ40に展開し記憶させるよう動作する。
次に、図2を参照して、本実施形態の動作について説明する。
図2は、第1の実施形態の動作について説明するフローチャートである。
なお、本実施形態においては、上述したように、#1プログラムコードを格納する#1メモリ領域21を、運用面とし、#2プログラムコードを格納する#2メモリ領域22を、退避面とするものとする。そして、#1メモリ領域21には、通信装置100の外部のサーバなどからダウンロードしたプログラムコードが、#1プログラムコードとして格納されているものとする。また、#2メモリ領域22には、#1プログラムコードでの通信装置100の起動が失敗した場合に、通信装置100を確実に起動させ得る緊急用のプログラムコードが、#2プログラムコードとして格納されているものとする。さらに、#1プログラムコードでの起動の失敗回数を記憶する#1カウンタ31、及び、#2プログラムコードでの起動の失敗回数を記憶する#2カウンタ32、の内容は、共に「0」であるものとする。
図2において、図1に示した通信装置100の電源が投入されると(図2のステップS1)、通信装置100の制御部50は以下のように動作する。
すなわち、制御部50は、不揮発性メモリ30に記憶されている起動の失敗回数について、運用面からチェックを行う。つまり、#1カウンタ31に記憶されている起動の失敗回数が、予め定めておいた閾値(例えば、「2」であるとする)を超えているか否かの判定を行う(ステップS2)。
起動の失敗回数が閾値を超えてはいない場合(ステップS2でNo)、#1カウンタ31の内容を「1」だけインクリメントする(ステップS3)。そして、運用面の#1プログラムコードを、動作用メモリ40に展開し記憶させる(ステップS4)。次に、#1プログラムコードの動作用メモリ40への展開が成功したか否かの判定を行う(ステップS5)。展開が成功したか否かの判定は、不揮発性メモリ20のブートローダが正常に終了した場合に成功したものとし、ブートローダが正常に終了しなかった場合には不成功と判定するものとする。
展開が不成功であった場合(ステップS5でNo)、ステップS2に戻り、#1カウンタ31に記憶されている起動の失敗回数が、予め定めておいた閾値を超えているか否かの判定を再度行うよう動作する。
展開が成功した場合(ステップS5でYes)、動作用メモリ40に展開したプログラムコードで、通信装置100の起動処理を行う(ステップS6)。そして、通信装置100の起動が成功したか否かの判定を行う(ステップS7)。起動が成功したか否かの判定は、通信装置100が、起動後に最初に行うべき動作を開始した場合に起動が成功したものと判定するようにすればよい。起動後に最初に行うべき動作とは、例えば、通信装置100がメニュー画面を表示する、といった動作のことである。
起動が成功しなかった場合(ステップS7でNo)、ステップS2に戻り、#1カウンタ31に記憶されている起動の失敗回数が、予め定めておいた閾値を超えているか否かの判定を再度行うよう動作する。
起動が成功した場合(ステップS7でYes)、#1カウンタ31の内容を「0」に戻し(ステップS8)、通信装置100の動作をそのまま継続させることにより、通信装置100に通信機能を提供させるよう動作させる(ステップS9)。
なお、本実施形態においては、上述したように、展開が不成功であった場合(ステップS5でNo)や起動が成功しなかった場合(ステップS7でNo)には、ステップS2に戻るようにしている。これは、#1プログラムコードが何らかの理由により不正なプログラムコードになっていることを示しており、通信装置100を正常に起動させることができない場合を示すものである。そして、ステップS2以降の動作を繰り返すことにより、#1カウンタ31の値は、いつか閾値を超えるようになる。#1カウンタ31の値が閾値を超えた場合には、制御部50は、運用面の#1プログラムコードによる通信装置100の正常な起動に失敗したものと見なすよう動作する。そして、制御部50は、後述するように、退避面の#2プログラムコードによる通信装置100の起動に切り替えるよう動作するようになる。
図2に戻り、#1カウンタ31に記憶されている起動の失敗回数が、予め定めておいた閾値を超えている場合(ステップS2でYes)、退避面での起動の失敗回数を示す#2カウンタ32のチェックを行う。すなわち、#2カウンタに記憶されている起動の失敗回数が、予め定めておいた閾値を超えているか否かの判定を行う(ステップS12)。
起動の失敗回数が閾値を超えている場合(ステップS12でYes)、制御部50は動作を終了し、通信装置100の起動を行わない。この場合は、運用面と退避面のプログラムコードが共に不正なプログラムコードであったことを示している。
起動の失敗回数が閾値を超えてはいない場合(ステップS12でNo)、#2カウンタ32の内容を「1」だけインクリメントする(ステップS13)。そして、退避面の#2プログラムコードを、動作用メモリ40に展開し記憶させる(ステップS14)。次に、#2プログラムコードの動作用メモリ40への展開が成功したか否かの判定を行う(ステップS15)。
展開が不成功であった場合(ステップS15でNo)、ステップS12に戻り、#2カウンタ32に記憶されている起動の失敗回数が、予め定めておいた閾値を超えているか否かの判定を再度行うよう動作する。
展開が成功した場合(ステップS15でYes)、動作用メモリ40に展開したプログラムコードで、通信装置100の起動処理を行う(ステップS16)。そして、通信装置100の起動が成功したか否かの判定を行う(ステップS17)。
起動が成功しなかった場合(ステップS17でNo)、ステップS12に戻り、#2カウンタ32に記憶されている起動の失敗回数が、予め定めておいた閾値を超えているか否かの判定を再度行うよう動作する。
起動が成功した場合(ステップS17でYes)、#2カウンタ32の内容を「0」に戻し(ステップS18)、通信装置100の動作をそのまま継続させることにより、通信装置100に通信機能を提供させるよう動作させる(ステップS19)。
以上説明したように、第1の実施形態においては、制御部50は、運用面の#1プログラムコードで通信装置100が起動するか否かの監視を行っている。そして、#1プログラムコードでの通信装置100の起動が失敗した場合は、退避面の#2プログラムコードで通信装置100を起動させるよう切り替えるようになっている。従って、退避面に緊急用のプログラムコードを格納しておくことで、通信装置100を確実に起動させることが出来る。
以上、本発明の第1の実施形態の動作について説明した。
尚、上述した実施形態においては、通信装置100の不揮発性メモリ20は、2つのメモリ領域(#1メモリ領域21、#2メモリ領域22)を有する、として説明したが、これを以下のように変更してもよい。
すなわち、不揮発性メモリ20は複数のメモリ領域、すなわち、#1メモリ領域、#2メモリ領域、・・・、#nメモリ領域、を有するものとする。そして、複数のメモリ領域の各々には、通信装置100を動作させるためのプログラムコード、すなわち、#1プログラムコード、#2プログラムコード、・・・、#nプログラムコード、が格納される。ここで、#1プログラムコードを格納する#1メモリ領域を、運用面とする。そして、#2プログラムコードを格納する#2メモリ領域を第1優先の退避面、#3プログラムコードを格納する#3メモリ領域を第2優先の退避面、とする(以下同様)。
この変更に伴い、不揮発性メモリ30は、複数のカウンタ、すなわち、#1カウンタ、#2カウンタ、・・・、#nカウンタ、を格納するように変更する。ここで、複数のカウンタ(#1カウンタ、#2カウンタ、・・・、#nカウンタ)の各々は、複数のメモリ領域(#1メモリ領域、#2メモリ領域、・・・、#nメモリ領域)の各々に対応しているものとする。
そして、通信装置100の制御部50は、通信装置100を起動する際、以下のように動作する。
すなわち、制御部50は、運用面の#1プログラムコードで通信装置100が起動するか否かの監視を行っている。そして、#1プログラムコードでの通信装置100の起動が失敗した場合は、第1優先の退避面の#2プログラムコードで通信装置100を起動させるよう切り替える。この時さらに、制御部50は、第1優先の退避面の#2プログラムコードで通信装置100が起動するか否かの監視を行う。そして、#2プログラムコードでの通信装置100の起動が失敗した場合は、第2優先の退避面の#3プログラムコードで通信装置100を起動させるよう切り替える。以下同様に動作するようにする。
ここで、第1優先の退避面に、第1の緊急用のプログラムコードを格納し、第2優先の退避面に、第2の緊急用のプログラムコードを格納(以下同様)しておく。このようにすれば、複数の緊急用のプログラムコードで通信装置100の起動を行うことが出来るため、通信装置100を、より一層確実に起動させることが出来る。
以上説明したように、本実施形態の通信装置100は、プログラムコードを格納する複数のメモリ領域(#1メモリ領域21、#2メモリ領域22、・・・)を有する第1の不揮発性メモリ(不揮発性メモリ20)を備えている。また、前記複数のメモリ領域のプログラムコードでの起動の失敗回数を前記メモリ領域のそれぞれに対応して格納する複数のカウンタ(#1カウンタ31、#2カウンタ32、・・・)を有する第2の不揮発性メモリ(不揮発性メモリ30)を備えている。さらに、前記複数のメモリ領域の何れかのプログラムコードを展開する動作用メモリ(動作用メモリ40)と、制御部(制御部50)を備えている。そして、制御部は、前記複数のメモリ領域の何れかのプログラムコードを運用の為のプログラムコードとして選択し、前記運用の為のプログラムコードを前記動作用メモリに展開して動作させることにより装置の起動を行う。ここで、前記運用の為のプログラムコードでの起動が失敗した場合その失敗回数を、前記運用の為のプログラムコードに対応する前記複数の何れかのカウンタに格納する。そして、前記何れかのカウンタに格納された失敗回数が閾値を超えた場合に前記運用のためのプログラムコードを格納していたメモリ領域以外のメモリ領域のプログラムコードを運用の為のプログラムコードとして選択する。またさらに、外部から受信するデータを前記制御部に送出すると共に、前記制御部から出力されるデータを外部へ送信する通信部を備えている。
従って、本実施形態によれば、正常でないプログラムコードを使用して装置を起動させようとした場合であっても、そのプログラムコードが正常でないことを検出でき、元の正常なプログラムコードによって起動させることが可能となる。
[第2の実施形態]
次に、図1に示した第1の実施形態の変形例としての本発明による第2の実施形態について説明する。
第2の実施形態における通信装置は、第1の実施形態においては#1メモリ領域21に固定的であった運用面を、#1メモリ領域21或いは#2メモリ領域22の何れか一方に選択できるようにした点でのみ、第1の実施形態と異なるものである。
図3は、本発明の通信装置の第2の実施形態を示すブロック図である。図3は、図1に示した通信装置100の不揮発性メモリ30に、運用面情報記憶部33を追加した点で第1の実施形態と異なっている。従って、図3において、図1の構成要素に対応するものは同一の参照数字または符号を付し、その説明を極力省略するものとする。
図3に示す通信装置100−2は、図1と同様に、通信部10、不揮発性メモリ20、不揮発性メモリ30−2、動作用メモリ40、制御部50−2を備えている。
通信部10、不揮発性メモリ20、動作用メモリ40は、第1の実施形態と同様であるため、その説明を省略する。
不揮発性メモリ30−2は、#1カウンタ31と#2カウンタ32に加え、運用面情報記憶部33を格納している。
#1カウンタ31と#2カウンタ32は、第1の実施形態と同様であるため、その説明を省略する。
運用面情報記憶部33は、不揮発性メモリ20の#1メモリ領域21と#2メモリ領域22の何れを運用面とするか、を定める情報を記憶する。例えば、#1メモリ領域21を運用面とする場合には、運用面情報記憶部33には#1メモリ領域21が記憶される。また、#2メモリ領域22を運用面とする場合には、運用面情報記憶部33には#2メモリ領域22が記憶される。運用面情報記憶部33に記憶されないメモリ領域は退避面であるものとして扱われるようにしている。
制御部50−2は、通信装置100−2全体の動作制御を行い、CPUを備えている。特に、制御部50−2は、第1の実施形態の制御部50の動作に加え、通信装置100−2の電源投入時に、運用面情報記憶部33を参照して、運用面が#1メモリ領域21或いは#2メモリ領域22の何れであるかを判定する。そして、運用面に格納されているプログラムコードを動作用メモリ40に展開し記憶させるよう動作する。
次に、図4、図5を参照して、第2の実施形態の動作について説明する。
図4は、第2の実施形態の動作について説明する第1のフローチャートである。
なお、図4は、第2の実施形態の通信装置100−2が、外部のサーバからバージョンアップのためのプログラムコードをダウンロードし、#1メモリ領域21或いは#2メモリ領域22の何れかに格納する際の動作を示すものである。ここで、不揮発性メモリ30−2の運用面情報記憶部33には、#1メモリ領域21と#2メモリ領域22の何れを運用面とするかを定める情報が記憶されているものとする。
図4において、通信装置100−2は動作中であり、外部のサーバからバージョンアップのためのプログラムコードのダウンロードを開始したものとする。通信装置100−2の制御部50−2は、先ず、運用面情報記憶部33を参照し、運用面が#1メモリ領域21になっているか否かの判定を行う(図4のステップS21)。
運用面が#1メモリ領域21になっている場合(ステップS21でYes)、制御部50−2は、外部のサーバからバージョンアップ用プログラムコードをダウンロードし、運用面ではない退避面(#2メモリ領域22)へ格納する(ステップS22)。そして、運用面を#2メモリ領域22へ変更する(ステップS23)。すなわち、制御部50−2は、運用面情報記憶部33に#2メモリ領域22を記憶する。そして、ダウンロード処理を終了する。
一方、運用面が#1メモリ領域21になっていない場合(ステップS21でNo)、運用面は#2メモリ領域22である。そこで、制御部50−2は、外部のサーバからバージョンアップ用プログラムコードをダウンロードし、運用面ではない退避面(#1メモリ領域21)へ格納する(ステップS25)。そして、運用面を#1メモリ領域21へ変更する(ステップS26)。すなわち、制御部50−2は、運用面情報記憶部33に#1メモリ領域21を記憶する。そして、ダウンロード処理を終了する。
次に、図5を参照して、通信装置100−2の起動時の処理について説明する。
図5は、第2の実施形態の動作について説明する第2のフローチャートである。
図5において、図3に示した通信装置100−2の電源が投入されると(図5のステップS31)、通信装置100−2の制御部50−2は以下のように動作する。
すなわち、制御部50−2は、運用面情報記憶部33を参照し、運用面が#1メモリ領域21になっているか否かの判定を行う(図5のステップS31−1)。
運用面が#1メモリ領域21になっている場合(ステップS31−1でYes)、制御部50−2は、#1カウンタ31に記憶されている起動の失敗回数が、予め定めておいた閾値を超えているか否かの判定を行う(ステップS32)。
起動の失敗回数が閾値を超えてはいない場合(ステップS32でNo)、制御部50−2は、第1の実施形態と同様に動作する。すなわち、制御部50−2は、#1カウンタ31の内容を「1」だけインクリメントする(ステップS33)。そして、運用面の#1プログラムコードを、動作用メモリ40に展開し記憶させる(ステップS34)。次に、#1プログラムコードの動作用メモリ40への展開が成功したか否かの判定を行う(ステップS35)。
展開が不成功であった場合(ステップS35でNo)、ステップS32に戻り、#1カウンタ31に記憶されている起動の失敗回数が、予め定めておいた閾値を超えているか否かの判定を再度行うよう動作する。
展開が成功した場合(ステップS35でYes)、動作用メモリ40に展開したプログラムコードで、通信装置100−2の起動処理を行う(ステップS36)。そして、通信装置100−2の起動が成功したか否かの判定を行う(ステップS37)。
起動が成功しなかった場合(ステップS37でNo)、ステップS32に戻り、#1カウンタ31に記憶されている起動の失敗回数が、予め定めておいた閾値を超えているか否かの判定を再度行うよう動作する。
起動が成功した場合(ステップS37でYes)、#1カウンタ31の内容を「0」に戻し(ステップS38)、通信装置100−2の動作をそのまま継続させることにより、通信装置100−2に通信機能を提供させるよう動作させる(ステップS39)。
#1カウンタ31に記憶されている起動の失敗回数が、予め定めておいた閾値を超えている場合(ステップS32でYes)、制御部50−2は、運用面を#2メモリ領域へ変更する(ステップS40)。すなわち、制御部50−2は、運用面情報記憶部33に#2メモリ領域22を記憶させる。そして、後述するステップS53へ進む。
運用面が#1メモリ領域21になっていない場合(ステップS31−1でNo)、運用面は#2メモリ領域22であるため、制御部50−2は、#2カウンタ32に記憶されている起動の失敗回数が、予め定めておいた閾値を超えているか否かの判定を行う(ステップS52)。
起動の失敗回数が閾値を超えてはいない場合(ステップS52でNo)、制御部50−2は、第1の実施形態と同様に動作する。すなわち、制御部50−2は、#2カウンタ32の内容を「1」だけインクリメントする(ステップS53)。そして、運用面の#2プログラムコードを、動作用メモリ40に展開し記憶させる(ステップS54)。次に、#2プログラムコードの動作用メモリ40への展開が成功したか否かの判定を行う(ステップS55)。
展開が不成功であった場合(ステップS55でNo)、ステップS52に戻り、#2カウンタ32に記憶されている起動の失敗回数が、予め定めておいた閾値を超えているか否かの判定を再度行うよう動作する。
展開が成功した場合(ステップS55でYes)、動作用メモリ40に展開したプログラムコードで、通信装置100−2の起動処理を行う(ステップS56)。そして、通信装置100−2の起動が成功したか否かの判定を行う(ステップS57)。
起動が成功しなかった場合(ステップS57でNo)、ステップS52に戻り、#2カウンタ32に記憶されている起動の失敗回数が、予め定めておいた閾値を超えているか否かの判定を再度行うよう動作する。
起動が成功した場合(ステップS57でYes)、#2カウンタ32の内容を「0」に戻し(ステップS58)、通信装置100−2の動作をそのまま継続させることにより、通信装置100−2に通信機能を提供させるよう動作させる(ステップS59)。
#2カウンタ32に記憶されている起動の失敗回数が、予め定めておいた閾値を超えている場合(ステップS52でYes)、制御部50−2は、運用面を#1メモリ領域へ変更する(ステップS60)。すなわち、制御部50−2は、運用面情報記憶部33に#1メモリ領域21を記憶させる。そして、ステップS33へ進む。
以上説明したように、第2の実施形態においては、制御部50−2は、運用面のプログラムコードで通信装置100−2が起動するか否かの監視を行っている。そして、運用面のプログラムコードでの通信装置100−2の起動が失敗した場合は、運用面を、それまでの退避面へ切り替えるようになっている。従って、退避面に、バージョンアップ前まで正常に動作していたプログラムコードを格納しておくことで、通信装置100−2を確実に起動させることが出来る。
以上、本発明の第2の実施形態の動作について説明した。
前述したように、本発明の第2の実施形態は、図1に示した第1の実施形態の通信装置100の不揮発性メモリ30に、運用面情報記憶部33を追加した点だけが異なるものである。従って、以下において第2の実施形態に特有の箇所に関してのみ説明するものとする。
以上説明したように、本実施形態の通信装置100−2は、外部との通信を行う通信部(通信部10)を備えている。また、プログラムコードを格納する第1および第2のメモリ領域(#1メモリ領域21、#2メモリ領域22)を有する第1の不揮発性メモリ(不揮発性メモリ20)を備えている。さらに、前記第1および第2のメモリ領域のプログラムコードでの起動の失敗回数を前記メモリ領域のそれぞれに対応して格納する第1および第2のカウンタ(#1カウンタ31、#2カウンタ32)を有する第2の不揮発性メモリ(不揮発性メモリ30−2)を備えている。またさらに、前記第1或いは第2のメモリ領域の何れか一方のプログラムコードを展開する動作用メモリ(動作用メモリ40)と、制御部(制御部50−2)を備えている。さらにまた、第2の不揮発性メモリは、さらに、第1或いは第2のメモリ領域の何れのプログラムコードを、運用の為のプログラムコードとするかを定める運用面情報記憶部を有している。
そして、前記制御部は、前記運用面情報記憶部に記憶されているメモリ領域から運用の為のプログラムコードを前記動作用メモリに展開して動作させることにより装置の起動を行う。ここで、前記運用の為のプログラムコードでの起動が失敗した場合その失敗回数を、前記運用の為のプログラムコードに対応する前記第1或いは第2の何れか一方のカウンタに格納する。そして、前記何れか一方のカウンタに格納された失敗回数が閾値を超えた場合に他方のメモリ領域のプログラムコードを運用の為のプログラムコードとして選択する、よう動作する。
このことにより、運用の為のプログラムコードを、第1或いは第2のメモリ領域の何れかから選択して動作用メモリに展開することが可能となり、かつ、運用の為のプログラムコードを有するメモリ領域を変えることが可能となる。そして、バージョンアップの直前まで正常に動作していたプログラムコードを有するメモリ領域を退避面とし、運用面のメモリ領域に、バージョンアップした新たなプログラムコードを格納させることができる。つまり、運用面のメモリ領域にバージョンアップした新たなプログラムコードを格納した場合であっても、退避面のメモリ領域には、バージョンアップの直前まで正常に動作していたプログラムコードを格納することができる。
従って、本実施形態によれば、バージョンアップした新たなプログラムコードが正常に動作しない場合であっても、バージョンアップの直前まで正常に動作していたプログラムコードで通信装置を起動させることが可能となる。
[第3の実施形態]
次に、図1に示した第1の実施形態の変形例としての本発明による第3の実施形態について説明する。
図6は、本発明の通信装置の第3の実施形態を示すブロック図である。図6は、図1に示した通信装置100の制御部50に、タイマ60を追加した点でのみ、第1の実施形態と異なるものである。従って、図6において、図1の構成要素に対応するものは同一の参照数字または符号を付し、その説明を極力省略するものとする。
図6に示す通信装置100−3は、通信部10、不揮発性メモリ20、不揮発性メモリ30、動作用メモリ40、制御部50−3、タイマ60を備えている。
通信部10、不揮発性メモリ20、不揮発性メモリ30、動作用メモリ40は、第1の実施形態と同様であるため、その説明を省略する。
タイマ60は、計測スタート時からの経過時間を計測する。
制御部50−3は、通信装置100−3全体の動作制御を行い、CPUを備えている。特に、制御部50−3は、第1の実施形態の制御部50の動作に加え、通信装置100−3の電源投入時からの経過時間をタイマ60で計測する。そして、計測した経過時間が、予め指定しておいた指定値を超えたかを判定する。指定値を超えた場合、動作用メモリ40に展開するプログラムコードを運用面から退避面に切り替えるよう動作する。
次に、第3の実施形態の動作について説明する。
図7は、第3の実施形態の動作について説明するフローチャートである。
上述したように、第3の実施形態においては、制御部50−3は、通信装置100−3の電源投入時からの経過時間をタイマ60で計測する。そして、計測した経過時間が、予め指定しておいた指定値を超えたかを判定する。指定値を超えた場合、動作用メモリ40に展開するプログラムコードを運用面から退避面に切り替えるよう動作する点でのみ、第1の実施形態と異なっている。従って、図7において、第1の実施形態の動作の図2の構成要素に対応するものは同一の参照数字または符号を付し、その説明を極力省略するものとする。
図7において、通信装置100−3の電源が投入されると(図7のステップS1)、通信装置100−3の制御部50−3は以下のように動作する。
すなわち、制御部50−3は、タイマ60による計測をスタートさせる(ステップS1−2)。そして、タイマ60の値が、予め指定しておいた指定値(例えば、「60秒」であるとする)を超えたかの判定を行う(ステップS1−3)。
タイマ60の値が、予め指定しておいた指定値を超えていない場合(ステップS1−3でNo)、制御部50−3は、第1の実施形態で説明したと同様に、不揮発性メモリ30に記憶されている起動の失敗回数について、運用面からチェックを行う。つまり、#1カウンタ31に記憶されている起動の失敗回数が、予め定めておいた閾値を超えているか否かの判定を行う(ステップS2)。そして、その後は、第1の実施形態と同様の動作を行う。従って、図7のステップS3からステップS9までの動作については、以下のように説明を簡略化する。
すなわち、図7のステップS3からステップS7まで動作し、動作用メモリ40への#1プログラムコードの展開が成功し(ステップS5でYes)、かつ、動作用メモリ40のプログラムコードでの起動が成功した場合(ステップS7でYes)、以下のように動作する。つまり、第1の実施形態と同様に、制御部50−3は、通信装置100−3の動作をそのまま継続させることにより、通信装置100−3に通信機能を提供させるよう動作させる(ステップS9)。
一方、ステップS3からステップS7までの動作中に、動作用メモリ40への#1プログラムコードの展開が不成功であった場合(ステップS5でNo)、或いは、動作用メモリ40のプログラムコードでの起動が不成功であった場合(ステップS7でNo)、ステップS1−3に戻る。そして、タイマ60の値が、予め指定しておいた指定値を超えたかの判定を再度行うよう動作する。
タイマ60の値が、予め指定しておいた指定値を超えている場合(ステップS1−3でYes)、制御部50−3は、第1の実施形態で説明したと同様に、不揮発性メモリ30に記憶されている起動の失敗回数について、退避面でのチェックを行う。つまり、#2カウンタ32に記憶されている起動の失敗回数が、予め定めておいた閾値を超えているか否かの判定を行う(ステップS12)。そして、その後は、第1の実施形態と同様の動作を行う。従って、図7のステップS13からステップS19までの動作については説明を省略するものとする。
なお、図7においては、不揮発性メモリ30の#1カウンタ31及び#2カウンタ32に記憶されている起動の失敗回数をチェックしながら、動作するものとして説明した。しかし、起動の失敗回数のチェックは行わないようにしてもよい。このようにすれば、通信装置100−3の電源投入時からの経過時間が、予め指定しておいた指定値を超えた場合にだけ、動作用メモリ40に展開するプログラムコードを、運用面から退避面に切り替えるようになる。
上述したように、本実施形態においては、タイマ60の値が、予め指定しておいた指定値を超えた場合、運用面から退避面に切り替え、退避面のプログラムコードでの起動を行わせるよう動作する。
従って、本実施形態によれば、タイマ60の値が、予め指定しておいた指定値を超えた場合、運用面から退避面に切り替え、退避面のプログラムコードでの起動を行わせるようになる。
以上、本発明の第3の実施形態の動作について説明した。
前述したように、本発明の第3の実施形態の通信装置100−3の制御部50−3は、通信装置100−3の電源投入時からの経過時間をタイマ60で計測する。そして、計測した経過時間が、予め指定しておいた指定値を超えたかを判定する。指定値を超えた場合、動作用メモリ40に展開するプログラムコードを運用面から退避面に切り替えるよう動作する点でのみ、第1の実施形態と異なっている。従って、以下において第3の実施形態に特有の箇所に関してのみ説明するものとする。
以上説明したように、本実施形態の通信装置100−3は、外部との通信を行う通信部(通信部10)を備えている。また、プログラムコードを格納する第1および第2のメモリ領域(#1メモリ領域21、#2メモリ領域22)を有する第1の不揮発性メモリ(不揮発性メモリ20)を備えている。さらに、前記第1および第2のメモリ領域のプログラムコードでの起動の失敗回数を前記メモリ領域のそれぞれに対応して格納する第1および第2のカウンタ(#1カウンタ31、#2カウンタ32)を有する第2の不揮発性メモリ(不揮発性メモリ30−2)を備えている。またさらに、前記第1或いは第2のメモリ領域の何れか一方のプログラムコードを展開する動作用メモリ(動作用メモリ40)と、制御部(制御部50−3)と、タイマ(タイマ60)を備えている。
そして、前記制御部は、前記第1或いは第2のメモリ領域の何れか一方のプログラムコードを運用の為のプログラムコードとして選択すると共に、前記通信装置の電源投入時からの経過時間を前記タイマで計測する。次に、前記経過時間が予め指定しておいた指定値を超えたかを判定し、指定値を超えた場合に他方のメモリ領域のプログラムコードを運用の為のプログラムコードとして選択する。
従って、本実施形態によれば、一方のメモリ領域のプログラムコードでの起動が、指定値で示される一定時間の間不可能となった場合、他方のメモリ領域のプログラムコードで装置を起動させることが可能となる。
[第4の実施形態]
次に、図1に示した第1の実施形態の変形例としての本発明による第4の実施形態について説明する。
図8は、本発明の通信装置の第4の実施形態を示すブロック図である。図8は、図1に示した通信装置100の制御部50に、RTC(Real-Time Clock:リアルタイムクロック)70を追加している。また、不揮発性メモリ30には、バージョンアップ時刻記憶部34を追加している。そして、第4の実施形態は、前記した点でのみ、第1の実施形態と異なるものである。従って、図8において、図1の構成要素に対応するものは同一の参照数字または符号を付し、その説明を極力省略するものとする。
図8に示す通信装置100−4は、通信部10、不揮発性メモリ20、不揮発性メモリ30−4、動作用メモリ40、制御部50−4、RTC70を備えている。
通信部10、不揮発性メモリ20、動作用メモリ40は、第1の実施形態と同様であるため、その説明を省略する。
不揮発性メモリ30−4は、#1カウンタ31と#2カウンタ32に加え、バージョンアップ時刻記憶部34を格納している。
#1カウンタ31と#2カウンタ32は、第1の実施形態と同様であるため、その説明を省略する。
バージョンアップ時刻記憶部34は、#1メモリ領域21或いは#2メモリ領域22のプログラムコードを、外部のサーバなどからダウンロードしたプログラムコードでバージョンアップした時刻、を記憶する。
RTC70は、通信装置100−4の時計であり、通信装置100−4の電源が切られていても現在時刻を刻み続けるようになっている。
制御部50−4は、通信装置100−4全体の動作制御を行い、CPUを備えている。特に、制御部50−4は、第1の実施形態の制御部50の動作に加え、通信装置100−4のプログラムコードをバージョンアップした際の時刻を、バージョンアップ時刻記憶部34に記憶させる。そして、通信装置100−4の起動を、運用面のプログラムコードで行う。ここで、運用面のプログラムコードでの通信装置100−4の起動が不成功であった場合、RTC70の現在時刻を参照する。RTC70の現在時刻が、バージョンアップ時刻記憶部34に記憶されている時刻から、予め指定した時間が経過している場合、制御部50−4は、退避面のプログラムコードによる通信装置100−4の起動に切り替えるよう動作する。
次に、第4の実施形態の動作について説明する。
なお、通信装置100−4の不揮発性メモリ20の運用面(#1メモリ領域21であるものとする)には、外部のサーバから、バージョンアップのためのプログラムコードがダウンロードされているものとする。そして、不揮発性メモリ30のバージョンアップ時刻記憶部34には、バージョンアップのためのプログラムコードをダウンロードした時刻が記憶されているものとする。
図9は、第4の実施形態の動作について説明するフローチャートである。
上述したように、第4の実施形態においては、制御部50−4は、通信装置100−4の起動を、運用面のプログラムコードで行う。ここで、運用面のプログラムコードでの通信装置100−4の起動が不成功であった場合、RTC70の現在時刻を参照する。RTC70の現在時刻が、バージョンアップ時刻記憶部34に記憶されている時刻から、予め指定した時間が経過している場合、制御部50−4は、退避面のプログラムコードによる通信装置100−4の起動に切り替えるよう動作する点でのみ、第1の実施形態と異なっている。従って、図9において、第1の実施形態の動作の図2の構成要素に対応するものは同一の参照数字または符号を付し、その説明を極力省略するものとする。
図9において、通信装置100−4の電源が投入されると(図9のステップS1)、通信装置100−4の制御部50−4は以下のように動作する。
すなわち、制御部50−4は、RTC70の現在時刻を参照する。RTC70の現在時刻が、バージョンアップ時刻記憶部34に記憶されている時刻から、予め指定した時間(例えば、「24時間」であるとする)が経過しているかの判定を行う(ステップS1−5)。
予め指定した時間が経過していない場合(ステップS1−5でNo)、制御部50−4は、第1の実施形態で説明したと同様に、不揮発性メモリ30に記憶されている起動の失敗回数について、運用面からチェックを行う。つまり、#1カウンタ31に記憶されている起動の失敗回数が、予め定めておいた閾値を超えているか否かの判定を行う(ステップS2)。そして、その後は、第1の実施形態と同様の動作を行う。従って、図9のステップS3からステップS9までの動作については、以下のように説明を簡略化する。
すなわち、図9のステップS3からステップS7まで動作し、動作用メモリ40への#1プログラムコードの展開が成功し(ステップS5でYes)、かつ、動作用メモリ40のプログラムコードでの起動が成功した場合(ステップS7でYes)、以下のように動作する。つまり、第1の実施形態と同様に、制御部50−4は、通信装置100−4の動作をそのまま継続させることにより、通信装置100−4に通信機能を提供させるよう動作させる(ステップS9)。
一方、ステップS3からステップS7までの動作中に、動作用メモリ40への#1プログラムコードの展開が不成功であった場合(ステップS5でNo)、或いは、動作用メモリ40のプログラムコードでの起動が不成功であった場合(ステップS7でNo)、ステップS1−5に戻る。そして、RTC70の現在時刻が、バージョンアップ時刻記憶部34に記憶されている時刻から、予め指定した時間が経過しているかの判定を再度行うよう動作する。RTC70の現在時刻が、バージョンアップ時刻記憶部34に記憶されている時刻から、予め指定した時間が経過している場合(ステップS1−5でYes)、制御部50−4は、第1の実施形態で説明したと同様の動作を行う。すなわち、制御部50−4は、不揮発性メモリ30に記憶されている起動の失敗回数について、退避面でのチェックを行う。つまり、#2カウンタ32に記憶されている起動の失敗回数が、予め定めておいた閾値を超えているか否かの判定を行う(ステップS12)。そして、その後は、第1の実施形態と同様の動作を行う。従って、図9のステップS13からステップS19までの動作については説明を省略するものとする。
なお、図9においては、不揮発性メモリ30の#1カウンタ31及び#2カウンタ32に記憶されている起動の失敗回数をチェックしながら、動作するものとして説明した。しかし、起動の失敗回数のチェックは行わないようにしてもよい。このようにすれば、通信装置100−4の現在時刻が、バージョンアップ時刻記憶部34に記憶されている時刻から、予め指定した時間が経過している場合にだけ、動作用メモリ40に展開するプログラムコードを、運用面から退避面に切り替えるようになる。
上述したように、本実施形態においては、RTC70の現在時刻が、バージョンアップ時刻記憶部34に記憶されている時刻から、予め指定した時間が経過している場合、運用面から退避面に切り替え、退避面のプログラムコードでの起動を行わせるよう動作する。
従って、本実施形態によれば、RTC70の現在時刻が、バージョンアップ時刻記憶部34に記憶されている時刻から、予め指定した時間が経過している場合、運用面から退避面に切り替え、退避面のプログラムコードでの起動を行わせるようになる。
以上、本発明の第4の実施形態の動作について説明した。
前述したように、本発明の第4の実施形態の通信装置100−4の制御部50−4は、RTC70の現在時刻が、バージョンアップ時刻記憶部34に記憶されている時刻から、予め指定した時間が経過しているかの判定を行う。予め指定した時間が経過している場合、制御部50−4は、動作用メモリ40に展開するプログラムコードを運用面から退避面に切り替え、退避面のプログラムコードでの起動を行わせるよう動作する点でのみ、第1の実施形態と異なっている。従って、以下において第4の実施形態に特有の箇所に関してのみ説明するものとする。
以上説明したように、本実施形態の通信装置100−4は、外部との通信を行う通信部(通信部10)を備えている。また、プログラムコードを格納する第1および第2のメモリ領域(#1メモリ領域21、#2メモリ領域22)を有する第1の不揮発性メモリ(不揮発性メモリ20)を備えている。さらに、前記第1および第2のメモリ領域のプログラムコードでの起動の失敗回数を前記メモリ領域のそれぞれに対応して格納する第1および第2のカウンタ(#1カウンタ31、#2カウンタ32)を有する第2の不揮発性メモリ(不揮発性メモリ30−2)を備えている。またさらに、前記第1或いは第2のメモリ領域の何れか一方のプログラムコードを展開する動作用メモリ(動作用メモリ40)と、制御部(制御部50−4)と、リアルタイムクロック(RTC70)を備えている。
そして、前記制御部は、前記第1或いは第2のメモリ領域の何れか一方のプログラムコードを運用の為のプログラムコードとして選択すると共に、前記リアルタイムクロックの現在時刻を参照する。そして、前記リアルタイムクロックの現在時刻が、バージョンアップ時刻から予め指定した時間が経過しているかを判定する。指定した時間が経過している場合、他方のメモリ領域のプログラムコードを運用の為のプログラムコードとして選択する。
従って、本実施形態によれば、一方のメモリ領域のプログラムコードでの起動が、バージョンアップ時刻から予め指定した時間不可能となった場合、他方のメモリ領域のプログラムコードで装置を起動させることが可能となる。
10 通信部
20 不揮発性メモリ
21 #1メモリ領域
22 #2メモリ領域
30 不揮発性メモリ
31 #1カウンタ
32 #2カウンタ
33 運用面情報記憶部
34 バージョンアップ時刻記憶部
40 動作用メモリ
50 制御部
60 タイマ
70 RTC
100 通信装置

Claims (4)

  1. プログラムコードを格納する複数のメモリ領域を有する第1の不揮発性メモリと、
    前記複数のメモリ領域のプログラムコードでの起動の失敗回数を前記メモリ領域のそれぞれに対応して格納する複数のカウンタを有する第2の不揮発性メモリと、
    前記複数のメモリ領域の何れかのプログラムコードを展開する動作用メモリと、
    前記複数のメモリ領域の何れかのプログラムコードを運用の為のプログラムコードとして選択し、前記運用の為のプログラムコードを前記動作用メモリに展開して動作させることにより装置の起動を行い、前記運用の為のプログラムコードでの起動が失敗した場合その失敗回数を、前記運用の為のプログラムコードを格納していたメモリ領域に対応する前記複数の何れかのカウンタに格納し、前記何れかのカウンタに格納された失敗回数が閾値を超えた場合に前記運用のためのプログラムコードを格納していたメモリ領域以外の何れかのメモリ領域のプログラムコードを運用の為のプログラムコードとして選択する制御部と、
    外部から受信するデータを前記制御部に送出すると共に、前記制御部から出力されるデータを外部へ送信する通信部と、
    タイマと
    を備え、
    前記制御部は、前記複数のメモリ領域の何れかのプログラムコードを運用の為のプログラムコードとして選択すると共に、前記通信装置の電源投入時からの経過時間を前記タイマで計測し、前記経過時間が予め指定しておいた指定値を超えたかを判定し、指定値を超えた場合に前記運用のためのプログラムコードを格納していたメモリ領域以外の何れかのメモリ領域のプログラムコードを運用の為のプログラムコードとして選択する、
    ことを特徴とする通信装置。
  2. プログラムコードを格納する複数のメモリ領域を有する第1の不揮発性メモリと、
    前記複数のメモリ領域のプログラムコードでの起動の失敗回数を前記メモリ領域のそれぞれに対応して格納する複数のカウンタを有する第2の不揮発性メモリと、
    前記複数のメモリ領域の何れかのプログラムコードを展開する動作用メモリと、
    前記複数のメモリ領域の何れかのプログラムコードを運用の為のプログラムコードとして選択し、前記運用の為のプログラムコードを前記動作用メモリに展開して動作させることにより装置の起動を行い、前記運用の為のプログラムコードでの起動が失敗した場合その失敗回数を、前記運用の為のプログラムコードを格納していたメモリ領域に対応する前記複数の何れかのカウンタに格納し、前記何れかのカウンタに格納された失敗回数が閾値を超えた場合に前記運用のためのプログラムコードを格納していたメモリ領域以外の何れかのメモリ領域のプログラムコードを運用の為のプログラムコードとして選択する制御部と、
    外部から受信するデータを前記制御部に送出すると共に、前記制御部から出力されるデータを外部へ送信する通信部と、
    リアルタイムクロック
    を備え、
    前記制御部は、前記複数のメモリ領域の何れか一方のプログラムコードを運用の為のプログラムコードとして選択すると共に、前記リアルタイムクロックの現在時刻を参照し、前記リアルタイムクロックの現在時刻が、前記運用の為のプログラムコードをバージョンアップした時刻から予め指定した時間が経過しているかを判定し、指定した時間が経過している場合、前記運用のためのプログラムコードを格納していたメモリ領域以外の何れかのメモリ領域のプログラムコードを運用の為のプログラムコードとして選択する、
    ことを特徴とする通信装置。
  3. 複数のメモリ領域の何れかのプログラムコードを運用の為のプログラムコードとして選択し、
    前記運用の為のプログラムコードを動作用メモリに展開して動作させることにより装置の起動を行い、
    前記運用の為のプログラムコードでの起動が失敗した場合その失敗回数を、前記運用の為のプログラムコードを格納していたメモリ領域に対応する複数の何れかのカウンタに格納し、
    前記何れかのカウンタに格納された失敗回数が閾値を超えた場合に前記運用のためのプログラムコードを格納していたメモリ領域以外の何れかのメモリ領域のプログラムコードを運用の為のプログラムコードとして選択し、
    前記複数のメモリ領域の何れかのプログラムコードを運用の為のプログラムコードとして選択すると共に、前記装置の電源投入時からの経過時間を計測し、
    前記経過時間が予め指定しておいた指定値を超えたかを判定し、
    指定値を超えた場合に前記運用のためのプログラムコードを格納していたメモリ領域以外の何れかのメモリ領域のプログラムコードを運用の為のプログラムコードとして選択する、
    ことを特徴とする起動プログラムコード選択方法。
  4. 複数のメモリ領域の何れかのプログラムコードを運用の為のプログラムコードとして選択し、
    前記運用の為のプログラムコードを動作用メモリに展開して動作させることにより装置の起動を行い、
    前記運用の為のプログラムコードでの起動が失敗した場合その失敗回数を、前記運用の為のプログラムコードを格納していたメモリ領域に対応する複数の何れかのカウンタに格納し、
    前記何れかのカウンタに格納された失敗回数が閾値を超えた場合に前記運用のためのプログラムコードを格納していたメモリ領域以外の何れかのメモリ領域のプログラムコードを運用の為のプログラムコードとして選択し、
    前記複数のメモリ領域の何れかのプログラムコードを運用の為のプログラムコードとして選択すると共に、前記装置の現在時刻を参照し、
    前記現在時刻が、前記運用の為のプログラムコードをバージョンアップした時刻から予め指定した時間が経過しているかを判定し、
    指定した時間が経過している場合、前記運用のためのプログラムコードを格納していたメモリ領域以外の何れかのメモリ領域のプログラムコードを運用の為のプログラムコードとして選択する、
    ことを特徴とする起動プログラムコード選択方法。
JP2012137661A 2012-06-19 2012-06-19 通信装置および起動プログラムコード選択方法 Active JP5658200B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012137661A JP5658200B2 (ja) 2012-06-19 2012-06-19 通信装置および起動プログラムコード選択方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012137661A JP5658200B2 (ja) 2012-06-19 2012-06-19 通信装置および起動プログラムコード選択方法

Publications (2)

Publication Number Publication Date
JP2014003472A JP2014003472A (ja) 2014-01-09
JP5658200B2 true JP5658200B2 (ja) 2015-01-21

Family

ID=50036255

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012137661A Active JP5658200B2 (ja) 2012-06-19 2012-06-19 通信装置および起動プログラムコード選択方法

Country Status (1)

Country Link
JP (1) JP5658200B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017183387A1 (ja) 2016-04-18 2017-10-26 オリンパス株式会社 電池駆動型医療装置
WO2020032122A1 (ja) * 2018-08-10 2020-02-13 株式会社デンソー 電子制御装置、車両用電子制御システム、書換えの実行制御方法、書換えの実行制御プログラム及び諸元データのデータ構造
JPWO2023182334A1 (ja) * 2022-03-25 2023-09-28

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005222366A (ja) * 2004-02-06 2005-08-18 Nippon Telegr & Teleph Corp <Ntt> 自動復帰方法/プログラム/プログラム記録媒体、処理装置

Also Published As

Publication number Publication date
JP2014003472A (ja) 2014-01-09

Similar Documents

Publication Publication Date Title
JP6585072B2 (ja) 不揮発性メモリ又はセキュア素子へのデータの読み込みを安全に行うこと
JP2002333990A (ja) プログラム更新装置およびプログラム更新方法
CN101610499A (zh) 无线数据卡的升级方法和系统
CN104636171A (zh) 升级的方法、装置及移动终端
US11106450B2 (en) Information extraction apparatus, and automatic firmware update system and method for embedded system
KR20130142073A (ko) 모바일 메모리 카드를 사용하여 모바일폰 운영체제를 부팅시키는 방법 및 단말
JP5658200B2 (ja) 通信装置および起動プログラムコード選択方法
WO2018024198A1 (zh) 机顶盒的应用程序升级方法、系统及机顶盒
JP2001331327A (ja) 電子機器
JP5167936B2 (ja) 情報処理装置
CN110908722B (zh) 应用于操作系统启动的方法、装置、电子设备及存储介质
CN119597538A (zh) 系统更新方法、装置、电子设备及存储介质
JP2012212415A (ja) 無線基地局装置
JP2010079382A (ja) ソフトウエア更新方法
CN115951920A (zh) 移动设备升级方法、装置、存储单元和移动设备
CN111078303A (zh) 一种优化uefi引导开机启动的方法及装置
WO2020043361A1 (en) Installing application program code on a vehicle control system
JP2007122151A (ja) ブート制御装置およびブート制御方法
CN110069272A (zh) 逻辑文件升级的方法和电子设备
CN115373715A (zh) 设备刷机异常的救砖方法、装置、设备及可读存储介质
KR101386464B1 (ko) 이동단말기에서 터치패널의 응용 프로그램 다운로드 장치및 방법
JP5002900B2 (ja) 制御装置とそのプログラム、及び、プログラムダウンロード方法
JP2018197993A (ja) 端末装置、サーバ装置、端末装置の制御プログラム、サーバ装置の制御方法、およびシステム
KR100588199B1 (ko) 휴대 단말기에서 프로그램 다운로드 실패시 이의 복구방법 및 이를 적용한 휴대 단말기
JP2005128613A (ja) 画像形成装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131018

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140409

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140415

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140605

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20140725

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141127

R150 Certificate of patent or registration of utility model

Ref document number: 5658200

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150