(54)【発明の名称】センサコントローラ、センサコントローラを備えたセンサデバイス、センサデバイスが搭載された電子機器およびアプリケーションソフトウェアの復旧方法
【課題】 タッチ入力デバイス側に搭載されたメモリに保持するアプリケーションソフトウェアを更新するようにし、不都合が生じた場合には、タッチ入力デバイス側で復旧できるようにする。
【解決手段】 CPU311は、起動時に起動プログラムを起動し、アプリケーションの起動状態を確認する。当該起動状態がアプリケーションソフトウェアの起動が2回目以降の起動であることを示し、かつ、当該アプリケーションソフトウェアによりタッチ入力が正常に処理されていないことを示す場合に、起動プログラムを実行しているCPU311は、起動プログラムに替えて復旧プログラムを実行して、復旧処理を行う。
請求項1から請求項7のいずれかに記載のセンサコントローラに対して、指示体による接触入力を受けるタッチセンサが接続されてなるセンサデバイスが搭載されて構成される電子機器。
【発明を実施するための形態】
【0022】
以下、図を参照しながら、この発明の装置、方法の実施の形態について説明する。
【0023】
[タブレット型情報端末1の構成]
[タブレット型情報端末1の外観の一例]
図1は、この実施の形態のタブレット型情報端末1の外観の一例を示す図である。タブレット型情報端末1は、その前面から、例えばLCD(Liquid Crystal Display)などの表示デバイス200の比較的に大きな表示画面200Dが露呈する構成を有する。表示画面200Dの裏部には、表示画面200D上のどの位置を指し示した場合にもその指示位置が検出できるように、表示画面200Dの全面に対応するように設けられたタッチセンサ部を有する入力デバイス(タッチ入力デバイス)300が搭載されている。また、タブレット型情報端末1の筐体内部には、表示デバイス200や入力デバイス300が接続され、種々の情報処理を行う情報処理装置部100が設けられている。
【0024】
このように、タブレット型情報端末1は、入力デバイス300が唯一の入力デバイス(入力装置)である情報処理装置である。タブレット型情報端末1において、表示画面200D上で、ユーザの指やペン型座標指示器などの指示体により位置指示操作がされたとする。この場合、表示画面200Dの裏部に設けられた入力デバイス300のタッチセンサ部からの検出出力に基づいて、入力デバイス300が備えるCPU(Central Processing Unit)が、表示画面200Dでの指示位置を特定する。当該CPUで特定された指示位置を示す情報は、情報処理装置部100に供給され、これに応じた処理を行うことができるようになっている。
【0025】
[タブレット型情報端末1の全体構成の一例]
図2は、この実施の形態のタブレット型情報端末1の全体構成の一例を説明するためのブロック図である。タブレット型情報端末1は、情報処理装置部100に対して、I/O(input/output)ポート110を介して表示デバイス200が、I/Oポート120を介して入力装置としての入力デバイス300が接続されて構成されている。なお、情報処理装置部100は、タブレット型情報端末1の全体を制御し、タッチ入力デバイスにとってホスト装置部として機能する部分である。
【0026】
情報処理装置部100は、送受信アンテナ101Aが接続された無線通信部101と、CPU102と、RAM(Random Access Memory)103と、不揮発性メモリ104とが、バス105を通じて接続されて構成されている。
【0027】
送受信アンテナ101Aが接続された無線通信部101は、例えば近隣の基地局を通じてインターネットに接続する機能を実現する。CPU102は、種々のプログラムを実行し、情報処理装置部100の各部と情報処理装置部100に対して接続された表示デバイス200、入力デバイス300を制御する。
【0028】
RAM103は、処理の途中結果を一時記憶するなど、主に作業領域として用いられる。不揮発性メモリ104は、CPU102で実行される種々のプログラム、機能アップのために提供されたプログラム、種々の設定情報など、電源が落とされても保持しておくべき情報を記憶保持する。なお、入力デバイス300のアプリケーションソフトウェアを更新するための更新制御ソフトウェアや入力デバイス300用の新たなアプリケーションソフトウェアなども不揮発性メモリ104に記憶保持される。
【0029】
なお、情報処理装置部100は、入力デバイス300用のアプリケーションの更新制御ソフトウェアや入力デバイス300用の新たなアプリケーションを、送受信アンテナ101A及び無線通信部101を通じて、例えば、インターネット上の所定のサーバから取得できるようになっている。
【0030】
I/Oポート110、120は、I2C(Inter-Integrated Circuit)やUSB(Universal Serial Bus)などの所定の通信方式に合致した入出力ポートである。I/Oポート110は、情報処理装置部100と表示デバイス200との間のデータの送受を可能にし、I/Oポート120は、情報処理装置部100と入力デバイス300との間のデータの送受を可能にする。
【0031】
表示デバイス200は、例えば、LCD(Liquid Crystal Display)や有機EL(Organic Electro-Luminescence)ディスプレイなどの薄型の表示部(表示素子)である。入力デバイス300は、コントローラ310とタッチセンサ部320とを含む。コントローラ310は、CPU、不揮発性メモリを備えたマイクロプロセッサである。タッチセンサ部320は、静電容量方式(あるいは電磁誘導方式)などの種々の方式の入力センサである。入力デバイス300は、ユーザの指などによるタッチセンサ部320上の接触位置を、コントローラ310を用いて検出し、接触位置等の入力データを情報処理装置部100に供給する。情報処理装置部100は、入力デバイス300からの入力データを処理するドライバなどを備え、入力デバイス300からの座標位置に応じた処理を行う。
【0032】
[入力デバイス300のコントローラ310の構成例]
図3は、入力デバイス300のコントローラ310の構成例を説明するためのブロック図である。
図3に示すように、CPU311と、RAM312と、不揮発性メモリ313とがバス314を通じて接続されて構成されている。また、バス314に対しては、I/Oポート120と、タッチセンサ部320とが接続される。CPU311は、ファームウェアを実行して入力デバイス300をタブレット型情報端末1の入力装置として機能するように各部を制御する。RAM312は、処理の途中結果を一時記憶するなど、主に作業領域として用いられる。不揮発性メモリ313は、電源が落とされても記憶しておく必要のあるファームウェアなどを記憶保持する。
【0033】
この実施の形態において、入力デバイス300で用いられるファームウェアは大きく分けると、アプリケーションソフトウェアと、アプリケーションソフトウェアを機能させるための起動プログラム群とからなる。
【0034】
アプリケーションソフトウェアは、入力デバイス300をタブレット型情報端末1の入力装置として機能させるためのものであり、タッチ処理プログラムと通信処理等プログラムを含む。
【0035】
タッチ処理プログラムは、タッチセンサ部320からの検出出力に基づいて、タッチセンサ部上のユーザによるタッチ位置を特定する処理を行う。通信処理等プログラムは、特定されたタッチセンサ部320上のタッチ位置を示す座標情報を情報処理装置部100に送信したり、情報処理装置部100からの制御信号を受信して処理したりするものである。以下においては、説明を簡単にするため、タッチ処理プログラムと通信処理等プログラムを含むアプリケーションソフトウェアを単にアプリケーションと記載する。
【0036】
起動プログラム群には、起動プログラム、更新プログラム、復旧プログラムがある。起動プログラムは、電源立ち上げ時にアプリケーションの起動状態を確認したり、アプリケーションを起動したりする。更新プログラムは、情報処理装置部100と通信して、新しいアプリケーションの更新処理を行う。具体的に更新プログラムは、古いアプリケーションのバックアップ、新しいアプリケーションの所定領域への書き込みなどを行う。復旧プログラムは、新しいアプリケーションが正常に動作しなかった場合に、古いアプリケーションを起動対象とする復旧処理を行う。
【0037】
起動プログラム、更新プログラム、復旧プログラムは、上述もしたように、アプリケーションを適切に機能させるための基本的なプログラムであり、これらのプログラムは通常更新されることはない。これに対してアプリケーションは、入力デバイス300の機能を向上させるなどのために更新される場合がある。具体的には、入力デバイス300の指示位置の検出感度を向上させたり、指示位置の検出範囲を拡大したりするなどのために、アプリケーションは適宜のタイミングで情報処理装置部100から更新される。
【0038】
図3に示すように、入力デバイス300のコントローラ310に搭載された不揮発性メモリ313の記憶領域には、起動プログラム群格納領域31とユーザ領域32とが設けられている。また、不揮発性メモリ313には、更新前の古いアプリケーションを退避させておくアプリケーションバックアップ領域33が設けられている。この実施の形態において、不揮発性メモリ313は、例えば、4つのページに区分として3つのデータ記憶領域を有する。起動プログラム群格納領域31は第1の区分の第1ページに、ユーザ領域32は第2区分の第2ページに、アプリケーションバックアップ領域33は退避領域である第3の区分(第3ページ、第4ページ)に作成される。そして、ページ単位に情報の消去が可能な構成になっている。
【0039】
起動プログラム群格納領域31は、起動プログラム領域31A、更新プログラム領域31B、復旧プログラム領域31Cを有する。起動プログラム群格納領域31には、アプリケーションの起動、更新、復旧といった基本的な機能を実現するプログラムであるために、通常は更新されることのないプログラムである、起動プログラム、更新プログラム、復旧プログラムが格納される。すなわち、起動プログラム群格納領域31に格納されている各プログラムは、タブレット型情報端末1が一般使用者(エンドユーザ)の手元にある状態では更新されることのないものである。
【0040】
これに対して、ユーザ領域32は、アプリケーション領域32A、起動フラグ領域32B、更新確定フラグ領域32Cなどを有する。アプリケーション領域32Aには、上述もしたように、入力デバイス300の機能を向上させるために、タブレット型情報端末1が一般使用者(エンドユーザ)の手元にある状態でも適宜のタイミングで更新されることのある実行対象のアプリケーションが格納される。アプリケーションは、上述もしたように、タッチ処理プログラムや通信処理等プログラムを含むものである。
【0041】
起動フラグ領域32Bには、アプリケーション領域32Aに格納されているアプリケーションの起動が1回目か2回目以降かのいずれかを示す情報が、CPU311で実行される更新プログラムによって書き込まれる。更新プログラムが、アプリケーション領域32Aに格納されているアプリケーションを最初に起動した場合に、当該アプリケーションは既に起動されたものであること(2回目以降の起動であること)を示す情報が書き込まれる。
【0042】
更新確定フラグ領域32Cには、現在起動対象となっているアプリケーション領域32Aに格納されているアプリケーションによりタッチ入力が正常に処理されたか否かを示す情報が、当該アプリケーションが起動され、正常動作が確認できたときに書き込まれる。すなわち、アプリケーションの更新処理を行った後、新たなアプリケーションが正常に動作していることが確認できたとする。この場合に、CPU311で実行された更新プログラムの機能により、更新確定フラグ領域32Cにアプリケーションが正常に機能したことが確認できたことを次回に(起動時に参照できるように履歴として)示す情報が書き込まれる。
【0043】
アプリケーションバックアップ領域33には、アプリケーション領域32Aに格納するアプリケーションを新アプリケーションに更新する場合に、アプリケーション領域32Aに格納されているそれまで用いられていた旧アプリケーションを退避する。この旧アプリケーションのバックアップ処理は、CPU311で実行される更新プログラムの機能により行われる。
【0044】
このように、この実施の形態の入力デバイス300は、ファームウェアを自装置内に保持するために、入力デバイス300の機能向上などを目的として、少なくともアプリケーションを更新する必要が生じる場合がある。アプリケーションの更新を行う場合、更新処理が途中で失敗したり、更新したアプリケーション自体に不具合があり正常に機能しなかったりする可能性もある。特に、アプリケーションに含まれる通信処理等プログラムに不具合がある場合には、実際に通信に用いるプログラムのライブラリを保護される領域に有していたとしても、そのプログラムを起動すること自体ができなくなる。従って、情報処理装置部100との通信もできなくなるため、情報処理装置部100からの復旧処理もできない状態となり、ファームウェアを復旧する手段が無くなる。
【0045】
又、単純に、タッチ入力デバイス側で復旧処理の要否を示す1ビットのフラグをタッチデバイス内のメモリに設けたとしても、情報処理装置部からでは復旧処理が必要であるときにこの1ビットの情報を要に変更することができない従って、起動時に復旧処理が必要であるか否かを自己で判定させるための情報は、単純な1ビットの要否フラグ(2つの状態)示すことができない。
【0046】
そこで、この実施の形態の入力デバイス300においては、起動プログラム、更新プログラム、復旧プログラムの機能により、アプリケーションの入力デバイス300内での復旧を可能にしている。又、これらのプログラムにより、タッチ入力デバイス側で復旧が必要であるか否かの判定を可能とする起動状態の情報を示すため、起動フラグ領域32Bの情報と更新確定フラグ領域32Cの情報との2つのフラグが用いられる。
図4は、起動フラグ領域32Bの情報と、更新確定フラグ領域32Cの情報との利用態様を説明するための図である。
【0047】
起動フラグ領域32Bに書き込まれる情報と、更新確定フラグ領域32Cに書き込まれる情報とは、種々の態様とすることができる。起動フラグ領域32Bには、例えば、起動済みの場合には「オン」、未起動の場合には「オフ」とするフラグ情報を書き込む態様とすることができる。また、更新確定フラグ領域32Cには、例えば、正常に機能している場合には「オン」、異常の場合には「オフ」とするフラグ情報を書き込む態様とすることができる。
【0048】
図4に示した例では、説明を簡単にするため、起動フラグ領域32Bと更新確定フラグ領域32Cとには、上述したように「オン」あるいは「オフ」のフラグ情報が書き込まれるものとして説明する。ユーザ領域32のアプリケーション領域32Aに新アプリケーションが格納されただけの状態のときには、起動フラグ領域32Bの起動フラグと更新確定フラグ領域32Cの更新確定フラグとは、いずれも「オフ」(消去状態、状態(c))の状態になっている。
【0049】
CPU311により実行された起動プログラムが、アプリケーション領域32Aに格納されたアプリケーションを最初に実行した場合には、起動プログラムの機能により起動フラグ領域32Bの起動フラグは「オン」にされる。また、更新プログラムにより実行されたアプリケーションが正常に動作していることが確認された場合には、CPU311により実行された更新プログラムの機能により更新確定フラグ領域32Cの更新確定フラグは「オン」にされる。
【0050】
このため、起動プログラムを実行したCPU311は、起動時において、まず、ユーザ領域32の起動フラグ領域32Bと更新確定フラグ領域32Cの情報を参照する。
【0051】
(a)起動時に、起動フラグが「オン」で、更新確定フラグが「オン」の場合(第3の状態)には、アプリケーション領域32Aに格納されているアプリケーションは2回目以降の起動であり、しかも正常に動作している状態であることを示している。この場合、起動プログラムを実行したCPU311は、起動プログラムの機能により、アプリケーション領域32Aに格納されたアプリケーションを実行する通常の動作を行う(
図4(a))。
【0052】
(b)起動時に、起動フラグが「オン」で、更新確定フラグが「オフ」の場合には、アプリケーション領域32Aに格納されているアプリケーションソフトウェアは2回目以降の起動であるが、当該アプリケーションソフトウェアは前回起動されたときに正常に動作しなかった状態(第2の状態)であることを示している。この場合、起動プログラムを実行しているCPU311は、起動プログラムに替えて復旧プログラム呼び出して実行する。復旧プログラムを実行したCPU311は、アプリケーション領域32Aに格納されている正常に動作しなかった新アプリケーションに替えて、後述するようにアプリケーションバックアップ領域33に退避してある旧アプリケーションを復旧して起動できるようにする一連の復旧処理を行う(
図4(b))。
【0053】
(c)起動フラグが「オフ」で更新確定フラグが「オフ」の場合(第1の状態)には、アプリケーション領域32Aに格納されているアプリケーションがまだ1回も動作していない状態にあることを示している。この場合、起動プログラムを実行したCPU311は、当該起動プログラムの機能によりアプリケーション領域32Aに格納されているアプリケーションを読み出して実行し、起動フラグ領域32Bの起動フラグを「オン」にする動作を行う(
図4(c))。
【0054】
このように起動状態の情報として、上記第1の状態、第2の状態、第3の状態の3つの状態を起動プログラムが起動時に識別できるようにする情報を起動プログラムが起動時にアクセス可能な位置に保持する。
【0055】
なお、起動フラグが「オフ」で、更新確定フラグが「オン」という第4の状態(
図4(d))は、更新プログラムや起動プログラムの機能から考えると発生し得ない状態であるので、通常はこの場合の処理を決めておく必要はない。しかし、当該状態が発生した場合には、何らかの障害が発生していると考えられる。そこで、
図4(d)の状態のときには、起動フラグ領域32Bと更新確定フラグ領域32Cとをクリアーした上で、アプリケーション領域32Aに格納されているアプリケーションを起動させるといった処理を行わせるようにしてもよい。この
図4(d)の場合のイレギュラー処理は、CPU311で実行される例えば起動プログラムの機能により行うようにすればよい。
【0056】
このように、この実施の形態の入力デバイス300は、ファームウェアを自装置内の不揮発性メモリ313内に保持させる構成のものである。このため、不揮発性メモリ313に保持させているファームウェアに含まれるアプリケーションを更新することにより発生する不具合に対処する必要がある。そこで、
図3を用いて説明したように、旧アプリケーションをアプリケーションバックアップ領域33に退避させておく構成を有する。
【0057】
さらに、更新した新アプリケーションに不具合が発生したか否かを更新プログラムが判別するための情報が格納される起動フラグ領域32Bと更新確定フラグ領域32Cとを備えている。起動プログラムは、起動直後(電源立ち上げ時)に、起動フラグ領域32Bと更新確定フラグ領域32Cとの格納情報を確認し、起動対象のアプリケーションソフトウェアが正常に動作していないことが確認できた場合には、復旧プログラムを実行して、起動対象のアプリケーションを旧アプリケーションに変更できるようにしている。
【0058】
[入力デバイス300のアプリケーションの更新処理]
次に、この実施の形態の入力デバイス300のアプリケーションの更新処理について、
図5〜
図9を用いて説明する。
図2を用いて説明したように、タブレット型情報端末1の情報処理装置部(端末本体部)のCPU102では、種々のプログラムが動作しており、その中で不揮発性メモリ104に格納されたアプリケーションソフトウェアの更新制御ソフトウェアが動作する。この更新制御ソフトウェアが機能して、入力デバイス300のアプリケーションの更新処理が行われる。
【0059】
以下においては、入力デバイス300に保持し、入力デバイス300で実行されるアプリケーションの更新を行って、更新したアプリケーションが正常に動作する場合と、正常に動作しない場合とに分けてアプリケーションの更新処理の全体について説明する。
【0060】
[アプリケーションの更新処理(新アプリケーションが正常に動作する場合)]
まず、入力デバイス300で実行されるアプリケーションの更新を行って、更新したアプリケーション(新アプリケーション)が正常に動作する場合について説明する。
図5、
図6は、タブレット型情報端末1で入力デバイス300のアプリケーションの更新処理が行われる場合の処理の流れを示す図である。
図5、
図6に示すように、点線の左側が情報処理装置部100側で実行される更新制御ソフトウェアによる制御の流れを示し、点線の右側が入力デバイス300で実行される起動プログラム群やアプリケーションによる制御の流れを示している。
【0061】
なお、この明細書において起動プログラム群とは、起動プログラムの他、更新プログラムや復旧プログラムをも含む意味である。また、
図7は、
図5、
図6の処理が行われる場合の不揮発性メモリ313の状態を示す図である。また、入力デバイス300は正常に動作可能な状態になっているものとする。すなわち、入力デバイス300には、
図7(A)に示すように、既に正常に起動しているアプリケーションを含むファームウェアが搭載されており、起動フラグと更新確定フラグは共に「オン」になっているものとする。
【0062】
タブレット型情報端末1に電源が投入されると、表示デバイス200や入力デバイス300にも電源が供給される。入力デバイス300では、CPU311により起動プログラム群格納領域31に格納されている起動プログラムを呼び出し(ステップS1)、起動プログラムを実行する(ステップS2)。CPU311は、起動プログラムの機能により、ユーザ領域32の起動フラグ領域32Bと更新確定フラグ領域32Cのフラグ情報を確認し、アプリケーション領域32Aのアプリケーションを呼び出して(ステップS3)、当該アプリケーションを実行する(ステップS4)。
【0063】
すなわち、
図7(A)において、点線で囲んで示したように、まず、CPU311において起動プログラムが実行され、当該起動プログラムに機能により、CPU311においてアプリケーションを実行する。上述もしたように、現時点の実行対象のアプリケーションは正常に動作しているものであり、起動フラグも更新確定フラグも共に「オン」になっているので、起動プログラムを実行したCPU311は、アプリケーションを実行するのである。これにより、
図7(A)において2重線で囲んで示したように、アプリケーションを実行したCPU311が制御の主体となる。
【0064】
この後、情報処理装置部100のCPU102でアプリケーションの更新制御ソフトウェアが実行され、入力デバイス300のアプリケーションの更新コマンドが、入力デバイス300に送信されてきたとする(ステップS5)。なお、この例においては、初めてアプリケーションの更新が行われる場合であり、
図7(A)に示すように、CPU311においてアプリケーションが実行された時点においては、アプリケーションバックアップ領域33には、何も格納されていない状態であるものとする。
【0065】
情報処理装置部100のCPU102で実行された更新制御ソフトウェアからの更新開始コマンドは、入力デバイス300のアプリケーションを実行しているCPU311により受信される。アプリケーションを実行しているCPU311は、更新開始コマンドに応じて、起動プログラム群格納領域31に格納されている更新プログラムを呼び出して(ステップS6)、CPU311で当該更新プログラムを実行する(ステップS7)。
【0066】
CPU311で実行される更新プログラムは、アプリケーションを更新するために、情報処理装置部100との間で通信を行えるようにする通信処理機能を備えるものである。更新プログラムを実行したCPU311は、
図7(B)に示すように、アプリケーション領域32Aに格納されているアプリケーション(旧アプリケーション)を、アプリケーションバックアップ領域33に退避させる(ステップS8)。この後、更新プログラムを実行したCPU311は、
図7(C)に示すように、ユーザ領域32に記憶されている情報を全て消去する(ステップS9)。
【0067】
ユーザ領域32を消去した後においては、情報処理装置部100から更新データ、すなわち、新アプリケーションが提供される(ステップS10)。更新プログラムを実行しているCPU311は、当該新アプリケーションを受信し、
図7(D)に示すように、アプリケーション起動対象領域であるアプリケーション領域32Aに新アプリケーションを書き込む(ステップS11)。このステップS11までの処理が完了した状態では、起動フラグ領域32Bの更新フラグと更新確定フラグ領域32Cの更新確定フラグとは、いずれも「オフ」の状態になっている。
【0068】
情報処理装置部100からは、更新データ(新アプリケーション)の提供が完了すると、リセットコマンド(ソフトウェアリセット)が送信されて来る(ステップS12)。リセットコマンドを受信したCPU11は、更新プログラムに替えて、起動プログラム群格納領域31から起動プログラムを呼び出して(ステップS13)、当該起動プログラムを実行する(ステップS14)。
【0069】
起動プログラムを実行したCPU311は、起動フラグと更新確定フラグとが共に「オフ」の状態であるので、起動対象の新アプリケーションは最初の起動(初回起動)であると判別する。この場合、起動プログラムを実行したCPU311は、新アプリケーションを呼び出して(ステップS15)、新アプリケーションを実行するようにすると共に(ステップS16)、起動フラグ領域32Bの起動フラグを「オン」にする(ステップS17)。ここでは、新アプリケーションの起動と起動フラグを「オン」にする処理を一連の処理として説明したが、まず、起動フラグを「オン」にした後に、新アプリケーションを実行するようにしてももちろんよい。
【0070】
このように、リセットコマンド受信後においては、
図7(E)において点線で囲んで示したように、まず、起動プログラムがCPU311で起動される。この後、起動プログラムの機能により、アプリケーションが読み出されてCPU311で実行され、
図7(E)において実線の2重線で囲んで示したように、アプリケーションを実行したCPU311が制御の主体となる。
【0071】
この後、CPU311で実行された新アプリケーションによって機能するようにされた入力デバイス300を通じて、使用者(ユーザ)からのタッチ操作(Tc1)を受け付ける。入力デバイス300では、CPU311で実行された新アプリケーションが機能してタッチ入力処理を実行し(ステップS18)、使用者によるタッチ位置を検出して、これを操作情報としてI/Oポート120を通じて情報処理装置部100に供給する(ステップS19)。
【0072】
情報処理装置部100で実行されている更新制御ソフトウェアは、入力デバイス300からの情報に基づき、入力デバイス300が正常に動作したことを確認する処理を行う(ステップS20)。正常動作が確認できたときには、情報処理装置部100で実行されている更新制御ソフトウェアは、更新確定コマンドを形成し、これをI/Oポート120を通じて入力デバイス300に提供する(ステップS21)。
【0073】
新アプリケーションを実行しているCPU311は、情報処理装置部100からの更新確定コマンドを受信すると、新アプリケーションに替えて、起動プログラム群格納領域31の更新プログラムを呼び出して(ステップS22)、実行する(ステップS23)。更新プログラムを実行したCPU311は、
図7(F)に示すように、更新確定フラグ領域32Cの更新確定フラグを「オン」にする(ステップS24)。
【0074】
この後、更新確定コマンドを送信した情報処理装置部100からは、リセットコマンド(ソフトウェアリセット)が送信されて来る(ステップS25)。このため、リセットコマンドを受信したCPU11は、
図5のステップS1〜ステップS4に示したように、CPU311で実行される起動プログラムの機能により、新アプリケーションが呼び出され実行されることになる。この場合には、正常に動作することが確認された新アプリケーションを実行することができる。
【0075】
このように、入力デバイス300のアプリケーションを更新することにより、更新前のアプリケーション(旧アプリケーション)から更新後のアプリケーション(新アプリケーション)に変わっても、新アプリケーションが正常に機能したとする。この場合には、新アプリケーションに応じて機能する入力デバイス300が、タブレット型情報端末1の入力装置として適切に機能することになる。
【0076】
そして、更新した新アプリケーションが正常に機能した場合、起動フラグと更新確定フラグとは共に「オン」となり、起動した新アプリケーションが正常に動作していることが示されるので、アプリケーションの復旧処理は必要ないと判別できる。これに対して、起動フラグが「オン」で、更新確定フラグが「オフ」の場合には、更新した新アプリケーションを起動したにもかかわらず、正常に動作していないことが示されるので、アプリケーションの復旧処理が必要であると判別可能となる。
【0077】
[アプリケーションの更新処理(新アプリケーションが正常に動作しない場合)]
次に、入力デバイス300で実行されるアプリケーションの更新を行って、更新したアプリケーション(新アプリケーション)が正常に動作しない場合について説明する。
図8は、タブレット型情報端末1で入力デバイス300のアプリケーションの更新処理が行われる場合の処理の流れを示す図である。この
図8もまた、
図5、
図6に示した場合と同様に、点線の左側が情報処理装置部100側で実行されるアプリケーションの更新制御ソフトウェアによる制御の流れを示し、点線の右側が入力デバイス300で実行される起動プログラム群やアプリケーションによる制御の流れを示している。また、
図9は、
図8の処理が行われる場合の不揮発性メモリ313の状態を示す図である。
【0078】
アプリケーションを更新し、新アプリケーションが正常に動作するか否かは、新アプリケーションをアプリケーション領域32Aに書き込んで実際に実行してみないと分からない。このため、更新前のアプリケーション(新アプリケーション)が不具合を有するものであっても、
図8に示すように、
図5、
図6に示したステップS1〜ステップS17の各処理は、
図5、
図6を用いて説明したように行われる。従って、
図5、
図6に示したステップS1〜ステップS17までの処理により、入力デバイス300の不揮発性メモリ313の状態は、
図7(E)に示し、また、
図9(E)にも示す状態となる。
図7(E)と
図9(E)とは不揮発性メモリ313の同じ状態を示している。
【0079】
すなわち、
図5、
図6の場合と同様にステップS1〜ステップS17までの処理により、更新前のアプリケーション(旧アプリケーション)はアプリケーションバックアップ領域33に退避された状態となる(
図9(E))。また、更新後のアプリケーション(新アプリケーション)はアプリケーション領域32Aに格納された状態となる(
図9(E))。
【0080】
さらに、アプリケーション領域32Aに格納された新アプリケーションが、起動プログラムを実行しているCPU311により呼び出されて実行される。すなわち、新アプリケーションがCPU311で実行され、新アプリケーションを起動したことを示す情報が起動プログラムにより起動フラグ領域32Bに格納された状態となる(
図9(E))。
【0081】
アプリケーション領域32Aに格納された新アプリケーションがCPU311で実行されることにより、
図9(G)において2重線で囲んで示したように、制御の主体が新アプリケーションソフトウェアを実行したCPU311に移行する。この後、
図9(G)において、網掛けをして示したように、新アプリケーションに異常があり、CPU311で実行された新アプリケーションがCPU311上で動作し続けるが、正常な動作ができなくなったとする(ステップS31)。この場合、使用者からのタッチ操作も受け付けられず、タッチ操作(Tc2)は不可となる。
【0082】
従って、入力デバイス300からはアプリケーションソフトウェアの機能により検出される操作情報が情報処理装置部100に送信されない。また、情報処理装置部100から更新確定コマンドが送信されて来ることもないので、
図9(G)に示すように、更新確定フラグ領域32Cに、新アプリケーションが正常に動作したことを示す情報も更新されない。
【0083】
情報処理装置部100のCPU102により実行されている更新制御ソフトウェアは、予め決められた所定時間内に、アプリケーションを更新した入力デバイス300から操作情報を受信することができないためにタイムアウトとなる(ステップS32)。そこで、更新制御ソフトウェアは、ファームウェアの再起動を指示するリセットコマンドを、I/Oポート120を通じて入力デバイス300に送信する(ステップS33)。しかし、本来は機能しているべき新アプリケーションが機能していないので、当該リセットコマンドはエラーとなり、起動プログラムを通じて新アプリケーションを再起動させることができない。
【0084】
このため、情報処理装置部100のCPU102により実行されている更新制御ソフトウェアは処理を中断させることになる(ステップS34)。この場合、入力デバイス300が正常に機能しないため、入力デバイス300が唯一の入力装置あるタブレット型情報端末1は全く操作できなくなる。
【0085】
そこで、タブレット型情報端末1のユーザは、入力デバイス300の再起動を試みる。例えば、タブレット型情報端末1の主電源断/再投入操作(ハードリセット)(Tc3)を行う。電源が再投入されたタブレット型情報端末1では、情報処理装置部100、表示デバイス200、入力デバイス300の電源が投入される。この場合、入力デバイス300では、CPU311により、起動プログラム群格納領域31の起動プログラムが呼び出され(ステップS35)、CPU311により実行される(ステップS36)。
【0086】
これにより、起動プログラムを実行したCPU311は、起動状態として、ユーザ領域32の起動フラグ領域32Bの起動フラグと更新確定フラグ領域32Cの更新確定フラグとを参照し、アプリケーションが実行可能か(復旧処理が必要か)を判別する。この時点の不揮発性メモリ313の状態は、
図9(H)に示す状態となる。CPU311で起動プログラムが実行されていることを除けば、
図9(G)に示した状態と同じである。
【0087】
すなわち、ユーザ領域32の起動フラグ領域32Bの起動フラグは「オン」であるが、更新確定フラグ領域32Cの更新確定フラグは「オフ」である。この状態は、
図4に示した(b)に対応する状態であり、アプリケーションの復旧処理を実行する必要があると判別できる。このため、起動プログラムが実行されているCPU311は、復旧プログラムを呼び出し(ステップS37)、復旧プログラムを実行して(ステップS38)、アプリケーションの復旧処理を行う。
【0088】
これにより、
図9(I)において、2重線で囲んで示したように、復旧プログラムを実行したCPU311が制御の主体となる。復旧プログラムを実行したCPU311は、
図9(I)に示したように、アプリケーションバックアップ領域33に退避(バックアップ)してある更新前のアプリケーション(旧アプリケーション)を、ユーザ領域32のアプリケーション領域32Aに書き込む。当該旧アプリケーションは、正常に動作していた実績のあるものである。次に、復旧プログラムを実行したCPU311は、起動フラグ領域32Bの起動フラグと更新確定フラグ領域32Cの更新確定フラグとを共に「オン」にする。
【0089】
この後、復旧プログラムを実行しているCPU311は、
図9(J)に示すように、アプリケーション領域32Aに戻した(復旧した)旧アプリケーションを呼び出して(ステップS39)、実行する(ステップS40)。これにより、タブレット型情報端末1の入力デバイス300は、正常に動作していた旧アプリケーションによりタッチ入力処理を行うことができ、タブレット型情報端末1の入力装置として正常に機能する。
【0090】
このようにして、更新後のアプリケーション(新アプリケーション)に不具合があり、正常に動作しない場合であっても、入力デバイス300のCPU311は、復旧プログラムを実行することにより、自発的にアプリケーションの復旧処理を行い、タブレット型情報端末1が全く機能しなくなる状態を回避できる。
【0091】
[アプリケーションの更新未完了の場合]
上述した実施の形態では、正常に更新が完了した新アプリケーションに不具合があって新アプリケーションが正常に機能しなかった場合について説明した。しかし、新アプリケーションが正常に機能しないのは、新アプリケーションの全部がアプリケーション領域32Aに書き込まれなかった場合にも発生する。例えば、新アプリケーションのアプリケーション領域32Aへの書き込み処理中に、タブレット型情報端末1の主電源が何らかの原因で落ちてしまった場合には、新アプリケーションのアプリケーション領域32Aへの書き込みが完了しない状態となってしまう。この場合にも新アプリケーションは正常に機能しない。
【0092】
そこで、起動プログラムを実行しているCPU311は、起動プログラムの機能により、アプリケーションのアプリケーション領域32Aの書き込みの状態を判別する。起動プログラムを実行しているCPU311が、アプリケーションのアプリケーション領域32Aへの書き込みが不完全であると判別した時には、CPU311は起動プログラムに替えて復旧プログラムを実行し、上述したアプリケーションの復旧処理を行う。この後、CPU311は、起動プログラムを実行してアプリケーションの起動処理を行う。これにより、アプリケーションのアプリケーション領域32Aの書き込みが不完全である場合についても、入力デバイス300が機能しなくなる状態を回避できる。
【0093】
図10は、アプリケーションのアプリケーション領域32Aへの書き込みが不完全か否かを判別する手法の一例について説明するための図である。
図10に示すように、ユーザ領域32のアプリケーション領域32Aには、アプリケーション領域32Aの先頭(上端部)〜末尾(下端部)に向って、アプリケーションが書き込まれる。なお、アプリケーションの書き込み前には、アプリケーション領域32Aの全体が初期化された状態になっている。
【0094】
アプリケーション領域32Aにアプリケーションを書き込む場合、
図10(A)に示すように、最初に、アプリケーション領域32Aの先頭部分に予め決められた特定のデータ列を書き込んだ後にアプリケーションを書き込む。そして、アプリケーションの全部を正常に書き込み終えた場合に、起動プログラムは、アプリケーション領域32Aの末尾部分に先頭部分に書き込んだ特定のデータ列をコピーする。
【0095】
このようにしておけば、アプリケーション領域32Aの先頭部分と末尾部分に同じ特定のデータ列が存在するか否かに応じて、アプリケーションがアプリケーション領域32Aに適切に書き込まれたか否かを判別できる。すなわち、
図10(B)に示すように、ユーザ領域32には、何のデータも書き込まれていない状態から、アプリケーション領域32Aにアプリケーションを書き込む処理を開始し、
図10(C)に示すように、アプリケーションの書き込みが途中で中断してしまったとする。この場合には、アプリケーション領域32Aの末尾部分には、同先頭部分と同じ特定のデータ列は存在しないので、アプリケーションはアプリケーション領域32Aに正常に書き込まれていないと判別できる。
【0096】
これに対して、
図10(B)に示すように、ユーザ領域32には、何のデータも書き込まれていない状態から、アプリケーション領域32Aにアプリケーションを書き込む処理を開始し、
図10(D)に示すように、アプリケーションの書き込みが最後まで終了したとする。この場合には、アプリケーション領域32Aの先頭部分と末尾部分には同じ特定のデータ列が存在するので、アプリケーションは正常に書き込まれたと判別できる。そして、
図10(C)の状態にあるときには、アプリケーションバックアップ領域33に格納されてアプリケーションを、アプリケーション領域32Aに復旧する処理を行うことになる。
【0097】
これにより、更新後のアプリケーション(新アプリケーション)が、アプリケーション領域32Aに正常に書き込まれなかったときにも、これを入力デバイス300側で自動的に復旧できる。
【0098】
なお、
図10を用いて説明したアプリケーションのアプリケーション領域32Aへの書き込みが正常に終了したか否かの判別の仕方はあくまでも一例である。例えば、最終アドレスが消去状態ではなく、データが書き込まれているか否かによりアプリケーションの書き込みが完了しているか否かを簡易的に判別する手法を用いることもできる。また、新アプリケーションの書き込み前と書き込み後のいわゆるチェックサムを用いて、新アプリケーションの書き込みの正確性をチェックする方式を用いてもよい。この他にも、冗長検査、パリティチェック、ハミングコードチェック、CRC(Cyclic Redundancy Check)などの従来からの誤り検出の手法や、これらの改良手法、あるいは新たに考案されたチェック方式などを用いることももちろん可能である。
【0099】
[アプリケーションの起動処理(復旧処理を含む)]
次に、この実施の形態の入力デバイス300のCPU311で実行される起動プログラムと復旧プログラムにより行われるアプリケーションの起動処理(復旧処理を含む)について、
図11のフローチャートを参照して説明する。
【0100】
図11は、入力デバイス300のCPU311により実行される起動プログラムと復旧プログラムにより行われるアプリケーションの起動処理(復旧処理を含む)を説明するためのフローチャートである。この
図11に示すフローチャートは、
図5〜
図9を用いて説明した処理の内、アプリケーションの更新処理部分を除き、アプリケーションを起動させる場合の処理に特化して表したものである。
【0101】
すなわち、電源が投入するようにされたタブレット型情報端末1の入力デバイス300のCPU311は、
図11に示す処理を行なう。電源が投入された入力デバイス300においては、CPU311が起動プログラムを実行し、不揮発性メモリ313のアプリケーション領域32Aに、アプリケーションが正常に書き込まれているか否かを判別する(ステップS101)。このステップS101の処理は、起動プログラムの機能により、例えば、
図10を用いて説明方法やその他のチェック方法を用いて、アプリケーションの全てが正常にアプリケーション領域32Aに記録されているか否かを確認する処理である。
【0102】
ステップS101の判別処理において、アプリケーション領域32Aにアプリケーションが正常に書き込まれていると判別したときには、CPU311は、アプリケーションの更新が確定された状態か否かを判別する(ステップS102)。このステップS102の処理は、起動プログラムの機能により、起動フラグ領域32Bの起動フラグと更新確定フラグ領域32Cの更新確定フラグとが共に「オン」になっているか否かを判別する処理である。
【0103】
ステップS102の判別処理において、起動フラグと更新確定フラグとが共に「オン」となっており(即ち、起動状態が第3の状態(a)であり)、アプリケーションの更新が確定した状態にあると判別したとする。この場合、起動プログラムを実行しているCPU311は、アプリケーション領域32Aに格納されているアプリケーションをCPU311おいて起動させ(ステップS103)、
図11に示す処理を終了させる。このステップS103の処理により、起動プログラムが実行されていたCPU311から、アプリケーションが起動されたCPU311が制御を行うことになり、入力デバイス300がタブレット型情報端末1の入力装置として機能する。
【0104】
また、ステップS102の判別処理において、アプリケーションの更新が確定した状態にはないと判別したとする。この場合、起動プログラムを実行しているCPU311は、アプリケーション領域32Aのアプリケーションは、今回が初回起動か否かを判別する(ステップS104)。すなわち、ステップS104の判別処理は、更新されたアプリケーションが、更新後において1回も起動されていないものか否かを判別する処理である。具体的にステップS104では、起動フラグ領域32Bの起動フラグと更新確定フラグ領域32Cの更新確定フラグとが共に「オフ」になっているか否か(即ち、起動状態が第1の状態(c)であるか否か)を確認する処理である。
【0105】
ステップS104の判別処理において、起動フラグと更新確定フラグとが共に「オフ」となっており、アプリケーション領域32Aのアプリケーションは今回が初回起動(1回も起動されていないもの)であると判別したとする。この場合、起動プログラムを実行しているCPU311は、起動フラグ領域32Bの起動フラグを「オン」にする(ステップS105)。この後、起動プログラムを実行しているCPU311は、アプリケーション領域32Aに格納されているアプリケーションを起動させる(ステップS106)。
【0106】
このステップS103の処理により、起動プログラムが実行されていたCPU311から、アプリケーションが起動されたCPU311が制御を行うことになり、入力デバイス300がタブレット型情報端末1の入力装置として機能する。なお、このステップS106においては、起動させたアプリケーションが正常に動作した場合には、上述もしたように、CPU311において実行される更新プログラムにより、更新確定フラグが「オン」にされる。また、起動させたアプリケーションが正常に動作しながった場合には、上述もしたように、更新確定フラグは「オン」にされないので、電源の再立ち上げによるハードウエアリセットにより、アプリケーションの復旧処理が行われることになる。
【0107】
また、ステップS101の判別処理において、起動プログラムを実行しているCPU311が、アプリケーション領域32Aにアプリケーションが正常に書き込まれていないと判別したとする。この場合、CPU311は復旧プログラムを実行し、アプリケーションの復旧処理を行う(ステップS107)。同様に、ステップS104の判別処理において、起動プログラムを実行しているCPU311が、アプリケーション領域32Aのアプリケーションは起動済みのものであると判別したとする。この場合にも、CPU311は復旧プログラムを実行し、アプリケーションの復旧処理を行う(ステップS107)。
【0108】
ステップS107において、復旧プログラムを実行したCPU311は、(1)アプリケーションバックアップ領域33に退避した旧アプリケーションを、アプリケーション領域32Aに格納し直す。更に、復旧プログラムを実行したCPU311は、(2)起動フラグ領域32Bの起動フラグを「オン」にし、更新確定フラグ領域32Cの更新確定フラグを「オン」にする。
【0109】
この後、例えば、情報処理装置部100から提供されるリセットコマンドに応じて、入力デバイス300のCPU311は、起動プログラムを実行し、復旧した旧アプリケーションを起動させることになる。この場合の起動処理は、上述したステップS103のアプリケーションの起動処理の場合と同様の処理となる。
【0110】
このように、入力デバイス300においては、自機が入力装置として機能するためのアプリケーションを自機の不揮発性メモリ313内に保持させている。この保持されるアプリケーションは、更新の対象となり、更新が正常に終了しなかったり、更新されたアプリケーションが正常に機能しなかったりする場合がある。
【0111】
しかし、入力デバイス300のCPU311は、起動プログラムの機能により、正常に動作したアプリケーションだけを実行する。そして、入力デバイス300のCPU311は、アプリケーションの更新処理やアプリケーション自体に不具合が生じた場合には、起動プログラムや復旧プログラムの機能により、CPU311が自発的にアプリケーションを復旧させることができる。この復旧処理は、タブレット型情報端末1の電源断と再投入を行ういわゆるハードリセット操作を契機として行うことができる。
【0112】
[変形例等]
なお、上述したように、アプリケーションは、タッチ処理プログラムと通信処理等プログラムとを含む。そして、上述した実施の形態では、通信処理等プログラムに不具合が生じて情報処理装置部100からの復旧が不能な場合にも、電源のオン/オフ(ハードリセット)を契機として、入力デバイス300のCPU311がアプリケーションの復旧を行うものとして説明した。しかし、これに限るものではない。
【0113】
例えば、アプリケーションの内、タッチ処理プログラムに不具合があり、タッチ位置の検出が不能になっているが、通信処理等プログラムは正常に機能しているとする。この場合には、
図8のステップS33において、情報処理装置部100から提供されるリセットコマンドを適切に受信できる。このため、タイムアウトによるリセットコマンドを受信した場合、CPU311は、起動プログラムを呼び出して実行するように、
図8のステップS35からの処理を行なうようにすることができる。
【0114】
この場合には、タブレット型情報端末1の電源のオン/オフといったいわゆるハードリセットを、復旧処理に繋がる起動プログラムの実行の契機としなくてもよい。すなわち、
図8のステップS33のリセットコマンド(ソフトリセット)を復旧処理に繋がる起動プログラムの実行の契機とすることができる。
【0115】
また、上述した実施の形態では、起動プログラムを実行したCPU311は、ユーザ領域32のアプリケーション領域32Aに格納されているアプリケーションを実行するものとして説明した。このため、アプリケーションの復旧処理は、アプリケーションバックアップ領域33に退避した、旧アプリケーションをアプリケーション領域32Aに書き戻す処理を含むものとした。しかし、これに限るものではない。
【0116】
アプリケーションがいわゆるアドレス依存のないものであり、入力デバイス300のCPU311が、アドレス依存のないプログラムを実行可能なものである場合には、復旧処理としてCPU311が、アプリケーションバックアップ領域33の旧アプリケーションを直接に実行するようにしてもよい。この場合には、旧アプリケーションをアプリケーション領域32Aに書き戻す処理を行う必要がなくなる。
【0117】
また、上述した実施の形態では、起動プログラムと更新プログラムと復旧プログラムとは、不揮発性メモリ313の更新対象とはならない起動プログラム群格納領域31に格納されているものとして説明したが、これに限るものではない。起動プログラムと更新プログラムと復旧プログラムとは、更新対象とはならないものであるので、入力デバイス300内に設けられる、いわゆるマスクROMに記録しておくようにしてもよい。
【0118】
また、
図11の説明では、第1の状態〜第3の状態の起動状態をS102とS104の順に判定するとしたが、この順は逆順であってもよいし1回の判定で行うものであってもよい。