(57)【要約】【課題】  タッチ入力デバイス側に搭載されたメモリに保持するアプリケーションソフトウェアを更新するようにし、不都合が生じた場合には、タッチ入力デバイス側で復旧できるようにする。【解決手段】  ＣＰＵ３１１は、起動時に起動プログラムを起動し、アプリケーションの起動状態を確認する。当該起動状態がアプリケーションソフトウェアの起動が２回目以降の起動であることを示し、かつ、当該アプリケーションソフトウェアによりタッチ入力が正常に処理されていないことを示す場合に、起動プログラムを実行しているＣＰＵ３１１は、起動プログラムに替えて復旧プログラムを実行して、復旧処理を行う。【選択図】図３
2015146102.tif 000002
【特許請求の範囲】
【請求項１】
計算機に対し入力情報を与えるセンサデバイスの制御に用いるセンサコントローラであって、
タッチ入力を受け付けて処理するためのアプリケーションソフトウェア、
起動時に前記アプリケーションソフトウェアの起動状態を確認する起動プログラム、
前記アプリケーションソフトウェアの復旧処理を行う復旧プログラム、
前記起動状態を示す情報、
を保持する不揮発性メモリと、
起動時に、前記起動プログラムを起動し、
前記起動状態が前記アプリケーションソフトウェアの起動が２回目以降の起動であることを示し、かつ、過去の起動時に前記アプリケーションソフトウェアによりタッチ入力が正常に処理されていないことを示す場合に、前記復旧プログラムを実行するプロセッサと
を含むセンサコントローラ。
【請求項２】
請求項１に記載のセンサコントローラであって、
前記不揮発性メモリは、前記起動状態として、前記アプリケーションソフトウェアの起動が１回目か２回目以降のいずれかを示す起動フラグ、及び、過去の起動時に前記アプリケーションソフトウェアによりタッチ入力が正常に処理されたか否かを示す更新確定フラグを記憶することを特徴とするセンサコントローラ。
【請求項３】
請求項１に記載のセンサコントローラであって、
前記起動プログラムと前記復旧プログラムとは、前記不揮発性メモリの更新対象にならない領域に格納されていることを特徴とするセンサコントローラ。
【請求項４】
請求項１に記載のセンサコントローラであって、
前記不揮発性メモリには、前記起動プログラムと前記復旧プログラムと前記アプリケーションソフトウェアに加えて、新たなアプリケーションソフトウェアの提供を受けて、アプリケーションソフトウェアの更新処理を行う更新プログラムが記憶されることを特徴とするセンサコントローラ。
【請求項５】
請求項３に記載のセンサコントローラであって、
前記起動プログラムと前記復旧プログラムと前記更新プログラムとは、前記不揮発性メモリの更新対象にならない領域に格納されていることを特徴とするセンサコントローラ。
【請求項６】
請求項１に記載のセンサコントローラであって、
前記不揮発性メモリの所定領域には、過去に正常に動作していた旧アプリケーションソフトウェアが保持されており、
前記プロセッサは、前記復旧プログラムの機能により、前記復旧処理として、前記所定領域に保持されている、前記旧アプリケーションソフトウェアを起動対象となるようにし、前記起動状態を、アプリケーションソフトウェアの起動が２回目以降の起動であることを示し、かつ、アプリケーションソフトウェアによりタッチ入力が正常に処理されたことを示す状態にする
ことを特徴とするセンサコントローラ。
【請求項７】
請求項１に記載のセンサコントローラであって、
前記不揮発性メモリの所定領域には、過去に正常に動作していた旧アプリケーションソフトウェアが保持されており、
前記プロセッサは、前記起動プログラムの機能により、前記不揮発性メモリのアプリケーション起動対象領域に格納された前記アプリケーションソフトウェアを実行するようにしており、
前記プロセッサは、前記復旧プログラムの機能により、前記復旧処理として、前記所定領域に保持されている、過去に正常に動作していた前記旧アプリケーションソフトウェアを、前記アプリケーション起動対象領域に移行すると共に、前記起動状態を、前記アプリケーションソフトウェアの起動が２回目以降の起動であることを示し、かつ、過去の起動時に前記アプリケーションソフトウェアによりタッチ入力が正常に処理されたことを示す状態にする
ことを特徴とするセンサコントローラ。
【請求項８】
請求項１から請求項７のいずれかに記載のセンサコントローラに対して、指示体による接触入力を受けるタッチセンサが接続されてなるセンサデバイス。
【請求項９】
請求項１から請求項７のいずれかに記載のセンサコントローラに対して、指示体による接触入力を受けるタッチセンサが接続されてなるセンサデバイスが搭載されて構成される電子機器。
【請求項１０】
計算機に対し入力情報を与えるセンサデバイスの制御に用いるセンサコントローラであって、
前記計算機に対して前記入力情報を与えるアプリケーションソフトウェア、
前記アプリケーションソフトウェアの起動状態を判定する起動プログラム、
前記アプリケーションソフトウェアを復旧する復旧処理を行う復旧プログラム、
前記起動状態として、
前記アプリケーションソフトウェアの起動が１回目である第１の状態、
前記アプリケーションソフトウェアの起動が２回目以降であって、かつ、
前回の起動において正常動作をしたことを示す情報が存在しない第２の状態、
前記アプリケーションソフトウェア起動が２回目以降であって、かつ、
以前の起動において正常動作をしたことを示す情報が存在する第３の状態、
の３つの状態のいずれのいずれの状態であるかを区別する情報、
を保持する不揮発性メモリと、
起動時に前記起動プログラムを起動して前記判定を実行し、
前記起動状態が第２の状態を示す場合に前記復旧プログラムを実行する、
プロセッサと、
を含む、センサコントローラ。
【請求項１１】
前記不揮発性メモリは、更に、前記アプリケーションプログラムを更新する更新プログラムを含み、
前記プロセッサは、
前記更新プログラムの実行時に、
前記起動状態を前記第１の状態に設定する
請求１０記載のセンサコントローラ。
【請求項１２】
前記プロセッサは、
前記計算機に対して前記入力情報を与えるアプリケーションソフトウェアの消去にともない、前記状態情報を前記第１の状態に変更する
請求項１１に記載のセンサコントローラ。
【請求項１３】
前記プロセッサは、
前記起動時に、前記起動状態が前記第１の状態である場合に前記アプリケーションソフトウェアプログラムを実行し、
前記入力情報に対する応答を前記計算機より受信したことにより前記アプリケーションソフトウェアが正常動作したことを検出した場合に、前記起動状態を前記第１の状態から前記第３の状態に変更する、
請求項１１記載のセンサコントローラ。
【請求項１４】
前記復旧処理プログラムは、前記復旧処理にともない、前記第２の状態を前記第３の状態に変更する、
請求項１０記載のセンサコントローラ。
【請求項１５】
前記第１の状態、前記第２状態、及び前記第３状態の３つの状態は、前記更新プログラムの実行にともない前記第１の状態に変更される２つのフラグで表される、
請求項１１記載のセンサコントローラ。
【請求項１６】
前記第３状態は、前記第１の状態を経由せずには前記第２の状態には変更できず、前記第１の状態にのみ変更可能な状態である
請求項１５に記載のセンサコントローラ。
【請求項１７】
計算機に対し入力情報を与えるセンサデバイスの制御に用いるセンサコントローラにおけるアプリケーションソフトウェア復旧方法であって、
前記センサコントローラは、タッチ入力を受け付けて処理するためのアプリケーションソフトウェア、電源立ち上げ時に前記アプリケーションソフトウェアの起動状態を確認する起動プログラム、前記アプリケーションソフトウェアの復旧処理を行う復旧プログラム、及び、前記起動状態として、前記アプリケーションソフトウェアの起動が１回目か２回目以降のいずれかを示す起動フラグ、及び、過去の起動時に前記アプリケーションソフトウェアによりタッチ入力が正常に処理されたか否かを示す更新確定フラグ、を記憶する不揮発性メモリと、
前記起動プログラムと、前記復旧プログラムと、前記アプリケーションソフトウェアを実行するプロセッサとを備えており、
前記プロセッサが、
電源立ち上げ時に、前記起動プログラムを起動する起動工程と、
前記起動プログラムの機能により、前記起動状態を確認する確認工程と、
前記起動プログラムの機能により、前記確認工程での確認結果が、前記アプリケーションソフトウェアの起動が２回目以降の起動であることを示し、かつ、過去の起動時に前記アプリケーションソフトウェアによりタッチ入力が正常に処理されていないことを示す場合に、前記復旧プログラムを実行する復旧工程と
を有することを特徴とするアプリケーションソフトウェア復旧方法。
【請求項１８】
請求項１７に記載のアプリケーションソフトウェア復旧方法であって、
前記不揮発性メモリの所定領域には、過去に正常に動作していた旧アプリケーションソフトウェアが保持されており、
前記復旧工程においては、前記復旧プログラムの機能により、前記復旧処理として、前記所定領域に保持されている、前記旧アプリケーションソフトウェアを起動対象となるようにし、前記起動状態を、アプリケーションソフトウェアの起動が２回目以降の起動であることを示し、かつ、アプリケーションソフトウェアによりタッチ入力が正常に処理されたことを示す状態にする
ことを特徴とするアプリケーションソフトウェア復旧方法。
【請求項１９】
請求項１７に記載のアプリケーションソフトウェア復旧方法であって、
前記不揮発性メモリの所定領域には、過去に正常に動作していた旧アプリケーションソフトウェアが保持されており、
前記プロセッサは、前記起動プログラムの機能により、前記不揮発性メモリのアプリケーション起動対象領域に格納された前記アプリケーションソフトウェアを実行するようにしており、
前記復旧工程においては、前記復旧プログラムの機能により、前記復旧処理として、前記所定領域に保持されている、過去に正常に動作していた前記旧アプリケーションソフトウェアを、前記アプリケーション起動対象領域に移行すると共に、前記起動状態を、前記アプリケーションソフトウェアの起動が２回目以降の起動であることを示し、かつ、過去の起動時に前記アプリケーションソフトウェアによりタッチ入力が正常に処理されたことを示す状態にする
ことを特徴とするアプリケーションソフトウェア復旧方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、電子機器の入力手段として用いられるタッチ入力デバイスのアプリケーションソフトウェアの復旧処理あるいは復旧の要否判定を、タッチ入力デバイス側で適切に行えるようにする装置、方法に関する。
【背景技術】
【０００２】
昨今、スマートフォンなどと呼ばれる高機能携帯電話端末や電子ブックリーダなどの小型端末に限らず、従来のパーソナルコンピュータの位置付けとなる機器においてもタッチ入力デバイス一体型の機器が多く見られる。従来のパーソナルコンピュータの位置付けとなるタッチ入力デバイス一体型の機器は、タブレットＰＣ（ＰＣは、Personal Computerの略称。）などと呼ばれて広く普及してきている。これらのタッチ入力デバイス一体型の機器では、タッチ入力によりすべての操作を行うことが想定されており、タッチ入力デバイスの代替入力手段が用意されていないことが多い。
【０００３】
昨今のタッチ入力デバイスは、従来のマウスやキーボードのような単純な入力デバイスと違い、比較的高度な内部処理が行われ、デバイス自体が多くの機能を有している。従って、内部処理のためのいわゆるファームウェアを、後から更新する機能を持たせている場合が多い。そしてユーザの利便性のために、タッチ入力デバイスを情報処理装置（端末機器）に組み込んだ状態のままで、更新することができるようにしているものが多くある。
【０００４】
情報処理装置に組み込んだ状態のままでタッチ入力デバイスのファームウェアを更新する際、正常に更新され、タッチ入力デバイスが新しいファームウェアにより正しく動作すれば、何の問題もなく操作を継続することができる。しかしながら、当該ファームウェアの更新を失敗したり、不具合が内在しているファームウェアを更新したりしてしまうと、タッチ入力デバイスが動作しなくなる場合がある。
【０００５】
そしてこれが、前述のようなタッチ入力デバイスを唯一の入力手段とする機器であった場合には、ユーザは何の操作もできなくなってしまう。この場合、タッチ入力デバイスのファームウェアを元の状態に戻すことすらできないということになる。これを回避するため、ファームウェアの更新処理が中断しないように十分注意する。更新用の新たなファームウェアが正しく動作するものであることを十分に確認する。といった対策がとられるが、タッチ入力デバイスが動作しなくなる可能性を完全に排除することは困難である。
【０００６】
特許文献１には、タッチ入力デバイス用のファームウェアの更新後に当該タッチ入力デバイスが制御できなくなることで、どのような操作も受け付けなくなってしまう事態を回避することのできる情報処理装置に関する発明が開示されている。
【０００７】
特許文献１に開示された情報処理装置に搭載されたタッチ入力デバイスは、タッチパネル２１と、ＣＰＵ２２と、揮発性メモリ２３とを備えている。当該情報処理装置に電源が投入されるごとに、情報処理装置のデータ処理部が、データ処理部のＲＯＭ１３に保持しているタッチ入力デバイス用のファームウェアを、バス４を通じた通信によりタッチ入力デバイスに供給する。当該タッチ入力デバイス用のファームウェアは、タッチ入力デバイスのＣＰＵ２２により揮発性メモリ２３に書き込まれた後、これがＣＰＵ２２により実行され、当該タッチ入力デバイスが機能する構成になっている。
【０００８】
特許文献１に記載の発明の情報処理装置の場合には、タッチ入力デバイス用のファームウェアを更新する場合、新たなファームウェアに加えて、古いファームウェアも情報処理装置のデータ処理部１０のＲＯＭ１３に保持しておく。新たなファームウェアをタッチ入力デバイスで実行させ、正常なデータが所定時間内にタッチ入力デバイスからデータ処理部１０に返信されてこない場合、データ処理部１０がＲＯＭ１３の正常に動作していた古いファームウェアをタッチ入力デバイスに対して通信を介して提供し、通信を用いて再起動する。このようにすることで、タッチ入力デバイスが動作しなくなることを回避できるようにしている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１３−３７５７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述したように、特許文献１に記載の情報処理装置の場合、タッチ入力デバイス用のファームウェアは、情報処理装置のデータ処理部のＲＯＭ１３に存在している。このため、電源の投入の都度、データ処理部からタッチ入力デバイスに当該ファームウェアを提供する構成になっている。従って、タッチ入力デバイス用のファームウェアを更新する機能や復元する機能は、タッチ入力デバイス側の機能ではなく、情報処理装置のデータ処理部の機能として実現される。すなわち、タッチ入力デバイス用のファームウェアについての更新機能や復元機能は、データ処理部とタッチ入力デバイスを含んだ情報処理装置全体のシステムとして初めて機能する構成になっている。
【００１１】
しかし、情報処理装置に対して電源を投入する都度、情報処理装置のデータ処理部からタッチ入力デバイスに対してファームウェアを提供していたのでは、その分の時間が電源の立ち上げの都度必要になり、立ち上がりに時間が掛かりる原因になる。このため、タッチ入力デバイス側に搭載されているメモリにタッチ入力デバイス用のファームウェアを保持させておくことが考えられる。
【００１２】
このような場合における、タッチ入力デバイス側に搭載されているメモリに保持するタッチ入力デバイス用のファームウェアの更新について考える。タッチ入力デバイス用のファームウェアの更新自体は、情報処理装置のデータ処理部からの制御により行うことが可能である。しかし、当該ファームウェアのタッチ入力デバイス側のメモリへの書き込みが途中で失敗したり、タッチ入力デバイス側のメモリに書き込まれた新たなファームウェアに不具合があったりするために、タッチ入力デバイスが機能しなくなってしまったとする。
【００１３】
タッチ入力デバイス用のファームウェアには、データ処理部との間で通信を行って、データ処理部から提供される情報を揮発性メモリに書き込む処理を行う通信処理等ソフトウェアも含まれる。この通信処理等ソフトウェアが適切に書き込まれなかったり、通信処理等ソフトウェアを呼び出すアプリケーションソフトウェアに不具合が合ったりした場合には、情報処理装置側のデータ処理部から通信を介してタッチ入力デバイスを制御すること自体が不能になる。
【００１４】
このような場合、特許文献１に開示された発明では、データ処理部から新しいファームウェアに替えて古いファームウェアに戻すといった処理自体が不能になる。そこで、専用の装置を用いてタッチ入力デバイスに搭載されているメモリに、古いファームウェアを記録し直すといった特殊な対応が必要になってしまい、タッチ入力デバイスの迅速な復旧ができないという問題を生じさせてしまう。
【００１５】
以上のことに鑑み、この発明は、タッチ入力デバイス側に搭載されたメモリに保持するアプリケーションソフトウェアに更新処理により不具合が生じた場合に、情報処理装置からの指示によらずとも、タッチ入力デバイス側の判定により復旧処理を実行できるようにすることを目的とする。
【課題を解決するための手段】
【００１６】
上記課題を解決するため、請求項１に記載の発明のセンサコントローラは、
計算機に対し入力情報を与えるセンサデバイスの制御に用いるセンサコントローラであって、
タッチ入力を受け付けて処理するためのアプリケーションソフトウェア、
起動時に前記アプリケーションソフトウェアの起動状態を確認する起動プログラム、
前記アプリケーションソフトウェアの復旧処理を行う復旧プログラム、
前記起動状態を示す情報、
を保持する不揮発性メモリと、
起動時に、前記起動プログラムを起動し、
前記起動状態が前記アプリケーションソフトウェアの起動が２回目以降の起動であることを示し、かつ、過去の起動時に前記アプリケーションソフトウェアによりタッチ入力が正常に処理されていないことを示す場合に、前記復旧プログラムを実行するプロセッサと
を含むことを特徴とする。
【００１７】
この請求項１に記載の発明のセンサコントローラによれば、当該センサコントローラは、不揮発性メモリと、プロセッサとを備えている。不揮発性メモリには、ファームウェアと、起動状態を示す情報とを保持する。ファームウェアは、少なくとも、（１）タッチ入力を受け付けて処理するためのアプリケーションソフトウェアと、（２）電源立ち上げ時にアプリケーションソフトウェアの起動状態を確認する起動プログラムと、（３）アプリケーションソフトウェアの復旧処理を行う復旧プログラムとを含む。また、起動状態は、（Ａ）アプリケーションソフトウェアの起動が２回目以降か否か、（Ｂ）過去の起動時にアプリケーションソフトウェアによりタッチ入力が正常に処理されたか否かを示す情報を含む。
【００１８】
プロセッサは、電源立ち上げ時に、起動プログラムを起動し、起動プログラムの機能により、アプリケーションソフトウェアの起動状態を確認する。この起動状態が、アプリケーションソフトウェアの起動が２回目以降の起動であることを示し、かつ、過去の起動時に当該アプリケーションソフトウェアによりタッチ入力が正常に処理されていないことを示す場合に、プロセッサは復旧プログラムにより、アプリケーションソフトウェアの復旧処理を実行する。
【００１９】
このように、電源投入時に起動プログラムを実行したプロセッサが、不揮発性メモリのアプリケーションの起動状態を確認し、アプリケーションプログラムの復旧が必要か否かを判別できる。そして、復旧が必要と判別したときには、復旧プログラムを実行したプロセッサが、アプリケーションソフトウェアの復旧処理を行う。従って、アプリケーションソフトウェアの復旧をセンサコントローラ自身が行うことが可能となる。
【発明の効果】
【００２０】
この発明によれば、タッチ入力デバイス側に搭載されたメモリに保持するアプリケーションソフトウェアに更新処理により不具合が生じた場合には、情報処理装置からの指示によらずとも、タッチ入力デバイス側の判定により復旧処理を実行できる。
【図面の簡単な説明】
【００２１】
【図１】タブレット型情報端末１の外観の一例を示す図である。
【図２】タブレット型情報端末１の全体構成の一例を説明するためのブロック図である。
【図３】入力デバイス３００のコントローラ３１０の構成例を説明するためのブロック図である。
【図４】起動フラグ領域３２Ｂの情報と、更新確定フラグ領域３２Ｃの情報との利用態様を説明するための図である。
【図５】タブレット型情報端末１で入力デバイス３００のアプリケーションの更新処理が行われる場合の処理の流れを示す図である。
【図６】図５に続く処理の流れを示す図である。
【図７】図５、図６の処理が行われる場合の不揮発性メモリ３１３の状態を示す図である。
【図８】タブレット型情報端末１で入力デバイス３００のアプリケーションの更新処理が行われる場合の処理の流れを示す図である。
【図９】図８の処理が行われる場合の不揮発性メモリ３１３の状態を示す図である。
【図１０】アプリケーションのユーザ領域３２の該当領域への書き込みが不完全か否かを判別する手法の一例について説明するための図である。
【図１１】ＣＰＵ３１１により実行されるアプリケーションの起動処理（アプリケーションの復旧処理を含む）を説明するためのフローチャートである。
【発明を実施するための形態】
【００２２】
以下、図を参照しながら、この発明の装置、方法の実施の形態について説明する。  
【００２３】
［タブレット型情報端末１の構成］
［タブレット型情報端末１の外観の一例］
図１は、この実施の形態のタブレット型情報端末１の外観の一例を示す図である。タブレット型情報端末１は、その前面から、例えばＬＣＤ（Liquid Crystal Display）などの表示デバイス２００の比較的に大きな表示画面２００Ｄが露呈する構成を有する。表示画面２００Ｄの裏部には、表示画面２００Ｄ上のどの位置を指し示した場合にもその指示位置が検出できるように、表示画面２００Ｄの全面に対応するように設けられたタッチセンサ部を有する入力デバイス（タッチ入力デバイス）３００が搭載されている。また、タブレット型情報端末１の筐体内部には、表示デバイス２００や入力デバイス３００が接続され、種々の情報処理を行う情報処理装置部１００が設けられている。
【００２４】
このように、タブレット型情報端末１は、入力デバイス３００が唯一の入力デバイス（入力装置）である情報処理装置である。タブレット型情報端末１において、表示画面２００Ｄ上で、ユーザの指やペン型座標指示器などの指示体により位置指示操作がされたとする。この場合、表示画面２００Ｄの裏部に設けられた入力デバイス３００のタッチセンサ部からの検出出力に基づいて、入力デバイス３００が備えるＣＰＵ（Central Processing Unit）が、表示画面２００Ｄでの指示位置を特定する。当該ＣＰＵで特定された指示位置を示す情報は、情報処理装置部１００に供給され、これに応じた処理を行うことができるようになっている。
【００２５】
［タブレット型情報端末１の全体構成の一例］
図２は、この実施の形態のタブレット型情報端末１の全体構成の一例を説明するためのブロック図である。タブレット型情報端末１は、情報処理装置部１００に対して、Ｉ／Ｏ（input/output）ポート１１０を介して表示デバイス２００が、Ｉ／Ｏポート１２０を介して入力装置としての入力デバイス３００が接続されて構成されている。なお、情報処理装置部１００は、タブレット型情報端末１の全体を制御し、タッチ入力デバイスにとってホスト装置部として機能する部分である。
【００２６】
情報処理装置部１００は、送受信アンテナ１０１Ａが接続された無線通信部１０１と、ＣＰＵ１０２と、ＲＡＭ（Random Access Memory）１０３と、不揮発性メモリ１０４とが、バス１０５を通じて接続されて構成されている。
【００２７】
送受信アンテナ１０１Ａが接続された無線通信部１０１は、例えば近隣の基地局を通じてインターネットに接続する機能を実現する。ＣＰＵ１０２は、種々のプログラムを実行し、情報処理装置部１００の各部と情報処理装置部１００に対して接続された表示デバイス２００、入力デバイス３００を制御する。
【００２８】
ＲＡＭ１０３は、処理の途中結果を一時記憶するなど、主に作業領域として用いられる。不揮発性メモリ１０４は、ＣＰＵ１０２で実行される種々のプログラム、機能アップのために提供されたプログラム、種々の設定情報など、電源が落とされても保持しておくべき情報を記憶保持する。なお、入力デバイス３００のアプリケーションソフトウェアを更新するための更新制御ソフトウェアや入力デバイス３００用の新たなアプリケーションソフトウェアなども不揮発性メモリ１０４に記憶保持される。
【００２９】
なお、情報処理装置部１００は、入力デバイス３００用のアプリケーションの更新制御ソフトウェアや入力デバイス３００用の新たなアプリケーションを、送受信アンテナ１０１Ａ及び無線通信部１０１を通じて、例えば、インターネット上の所定のサーバから取得できるようになっている。
【００３０】
Ｉ／Ｏポート１１０、１２０は、Ｉ２Ｃ（Inter-Integrated Circuit）やＵＳＢ（Universal Serial Bus）などの所定の通信方式に合致した入出力ポートである。Ｉ／Ｏポート１１０は、情報処理装置部１００と表示デバイス２００との間のデータの送受を可能にし、Ｉ／Ｏポート１２０は、情報処理装置部１００と入力デバイス３００との間のデータの送受を可能にする。
【００３１】
表示デバイス２００は、例えば、ＬＣＤ（Liquid Crystal Display）や有機ＥＬ（Organic Electro-Luminescence）ディスプレイなどの薄型の表示部（表示素子）である。入力デバイス３００は、コントローラ３１０とタッチセンサ部３２０とを含む。コントローラ３１０は、ＣＰＵ、不揮発性メモリを備えたマイクロプロセッサである。タッチセンサ部３２０は、静電容量方式（あるいは電磁誘導方式）などの種々の方式の入力センサである。入力デバイス３００は、ユーザの指などによるタッチセンサ部３２０上の接触位置を、コントローラ３１０を用いて検出し、接触位置等の入力データを情報処理装置部１００に供給する。情報処理装置部１００は、入力デバイス３００からの入力データを処理するドライバなどを備え、入力デバイス３００からの座標位置に応じた処理を行う。
【００３２】
［入力デバイス３００のコントローラ３１０の構成例］
図３は、入力デバイス３００のコントローラ３１０の構成例を説明するためのブロック図である。図３に示すように、ＣＰＵ３１１と、ＲＡＭ３１２と、不揮発性メモリ３１３とがバス３１４を通じて接続されて構成されている。また、バス３１４に対しては、Ｉ／Ｏポート１２０と、タッチセンサ部３２０とが接続される。ＣＰＵ３１１は、ファームウェアを実行して入力デバイス３００をタブレット型情報端末１の入力装置として機能するように各部を制御する。ＲＡＭ３１２は、処理の途中結果を一時記憶するなど、主に作業領域として用いられる。不揮発性メモリ３１３は、電源が落とされても記憶しておく必要のあるファームウェアなどを記憶保持する。
【００３３】
この実施の形態において、入力デバイス３００で用いられるファームウェアは大きく分けると、アプリケーションソフトウェアと、アプリケーションソフトウェアを機能させるための起動プログラム群とからなる。
【００３４】
アプリケーションソフトウェアは、入力デバイス３００をタブレット型情報端末１の入力装置として機能させるためのものであり、タッチ処理プログラムと通信処理等プログラムを含む。
【００３５】
タッチ処理プログラムは、タッチセンサ部３２０からの検出出力に基づいて、タッチセンサ部上のユーザによるタッチ位置を特定する処理を行う。通信処理等プログラムは、特定されたタッチセンサ部３２０上のタッチ位置を示す座標情報を情報処理装置部１００に送信したり、情報処理装置部１００からの制御信号を受信して処理したりするものである。以下においては、説明を簡単にするため、タッチ処理プログラムと通信処理等プログラムを含むアプリケーションソフトウェアを単にアプリケーションと記載する。
【００３６】
起動プログラム群には、起動プログラム、更新プログラム、復旧プログラムがある。起動プログラムは、電源立ち上げ時にアプリケーションの起動状態を確認したり、アプリケーションを起動したりする。更新プログラムは、情報処理装置部１００と通信して、新しいアプリケーションの更新処理を行う。具体的に更新プログラムは、古いアプリケーションのバックアップ、新しいアプリケーションの所定領域への書き込みなどを行う。復旧プログラムは、新しいアプリケーションが正常に動作しなかった場合に、古いアプリケーションを起動対象とする復旧処理を行う。
【００３７】
起動プログラム、更新プログラム、復旧プログラムは、上述もしたように、アプリケーションを適切に機能させるための基本的なプログラムであり、これらのプログラムは通常更新されることはない。これに対してアプリケーションは、入力デバイス３００の機能を向上させるなどのために更新される場合がある。具体的には、入力デバイス３００の指示位置の検出感度を向上させたり、指示位置の検出範囲を拡大したりするなどのために、アプリケーションは適宜のタイミングで情報処理装置部１００から更新される。
【００３８】
図３に示すように、入力デバイス３００のコントローラ３１０に搭載された不揮発性メモリ３１３の記憶領域には、起動プログラム群格納領域３１とユーザ領域３２とが設けられている。また、不揮発性メモリ３１３には、更新前の古いアプリケーションを退避させておくアプリケーションバックアップ領域３３が設けられている。この実施の形態において、不揮発性メモリ３１３は、例えば、４つのページに区分として３つのデータ記憶領域を有する。起動プログラム群格納領域３１は第１の区分の第１ページに、ユーザ領域３２は第２区分の第２ページに、アプリケーションバックアップ領域３３は退避領域である第３の区分（第３ページ、第４ページ）に作成される。そして、ページ単位に情報の消去が可能な構成になっている。
【００３９】
起動プログラム群格納領域３１は、起動プログラム領域３１Ａ、更新プログラム領域３１Ｂ、復旧プログラム領域３１Ｃを有する。起動プログラム群格納領域３１には、アプリケーションの起動、更新、復旧といった基本的な機能を実現するプログラムであるために、通常は更新されることのないプログラムである、起動プログラム、更新プログラム、復旧プログラムが格納される。すなわち、起動プログラム群格納領域３１に格納されている各プログラムは、タブレット型情報端末１が一般使用者（エンドユーザ）の手元にある状態では更新されることのないものである。
【００４０】
これに対して、ユーザ領域３２は、アプリケーション領域３２Ａ、起動フラグ領域３２Ｂ、更新確定フラグ領域３２Ｃなどを有する。アプリケーション領域３２Ａには、上述もしたように、入力デバイス３００の機能を向上させるために、タブレット型情報端末１が一般使用者（エンドユーザ）の手元にある状態でも適宜のタイミングで更新されることのある実行対象のアプリケーションが格納される。アプリケーションは、上述もしたように、タッチ処理プログラムや通信処理等プログラムを含むものである。
【００４１】
起動フラグ領域３２Ｂには、アプリケーション領域３２Ａに格納されているアプリケーションの起動が１回目か２回目以降かのいずれかを示す情報が、ＣＰＵ３１１で実行される更新プログラムによって書き込まれる。更新プログラムが、アプリケーション領域３２Ａに格納されているアプリケーションを最初に起動した場合に、当該アプリケーションは既に起動されたものであること（２回目以降の起動であること）を示す情報が書き込まれる。
【００４２】
更新確定フラグ領域３２Ｃには、現在起動対象となっているアプリケーション領域３２Ａに格納されているアプリケーションによりタッチ入力が正常に処理されたか否かを示す情報が、当該アプリケーションが起動され、正常動作が確認できたときに書き込まれる。すなわち、アプリケーションの更新処理を行った後、新たなアプリケーションが正常に動作していることが確認できたとする。この場合に、ＣＰＵ３１１で実行された更新プログラムの機能により、更新確定フラグ領域３２Ｃにアプリケーションが正常に機能したことが確認できたことを次回に（起動時に参照できるように履歴として）示す情報が書き込まれる。
【００４３】
アプリケーションバックアップ領域３３には、アプリケーション領域３２Ａに格納するアプリケーションを新アプリケーションに更新する場合に、アプリケーション領域３２Ａに格納されているそれまで用いられていた旧アプリケーションを退避する。この旧アプリケーションのバックアップ処理は、ＣＰＵ３１１で実行される更新プログラムの機能により行われる。
【００４４】
このように、この実施の形態の入力デバイス３００は、ファームウェアを自装置内に保持するために、入力デバイス３００の機能向上などを目的として、少なくともアプリケーションを更新する必要が生じる場合がある。アプリケーションの更新を行う場合、更新処理が途中で失敗したり、更新したアプリケーション自体に不具合があり正常に機能しなかったりする可能性もある。特に、アプリケーションに含まれる通信処理等プログラムに不具合がある場合には、実際に通信に用いるプログラムのライブラリを保護される領域に有していたとしても、そのプログラムを起動すること自体ができなくなる。従って、情報処理装置部１００との通信もできなくなるため、情報処理装置部１００からの復旧処理もできない状態となり、ファームウェアを復旧する手段が無くなる。
【００４５】
又、単純に、タッチ入力デバイス側で復旧処理の要否を示す１ビットのフラグをタッチデバイス内のメモリに設けたとしても、情報処理装置部からでは復旧処理が必要であるときにこの１ビットの情報を要に変更することができない従って、起動時に復旧処理が必要であるか否かを自己で判定させるための情報は、単純な１ビットの要否フラグ（２つの状態）示すことができない。
【００４６】
そこで、この実施の形態の入力デバイス３００においては、起動プログラム、更新プログラム、復旧プログラムの機能により、アプリケーションの入力デバイス３００内での復旧を可能にしている。又、これらのプログラムにより、タッチ入力デバイス側で復旧が必要であるか否かの判定を可能とする起動状態の情報を示すため、起動フラグ領域３２Ｂの情報と更新確定フラグ領域３２Ｃの情報との２つのフラグが用いられる。図４は、起動フラグ領域３２Ｂの情報と、更新確定フラグ領域３２Ｃの情報との利用態様を説明するための図である。
【００４７】
起動フラグ領域３２Ｂに書き込まれる情報と、更新確定フラグ領域３２Ｃに書き込まれる情報とは、種々の態様とすることができる。起動フラグ領域３２Ｂには、例えば、起動済みの場合には「オン」、未起動の場合には「オフ」とするフラグ情報を書き込む態様とすることができる。また、更新確定フラグ領域３２Ｃには、例えば、正常に機能している場合には「オン」、異常の場合には「オフ」とするフラグ情報を書き込む態様とすることができる。
【００４８】
図４に示した例では、説明を簡単にするため、起動フラグ領域３２Ｂと更新確定フラグ領域３２Ｃとには、上述したように「オン」あるいは「オフ」のフラグ情報が書き込まれるものとして説明する。ユーザ領域３２のアプリケーション領域３２Ａに新アプリケーションが格納されただけの状態のときには、起動フラグ領域３２Ｂの起動フラグと更新確定フラグ領域３２Ｃの更新確定フラグとは、いずれも「オフ」（消去状態、状態（ｃ））の状態になっている。
【００４９】
ＣＰＵ３１１により実行された起動プログラムが、アプリケーション領域３２Ａに格納されたアプリケーションを最初に実行した場合には、起動プログラムの機能により起動フラグ領域３２Ｂの起動フラグは「オン」にされる。また、更新プログラムにより実行されたアプリケーションが正常に動作していることが確認された場合には、ＣＰＵ３１１により実行された更新プログラムの機能により更新確定フラグ領域３２Ｃの更新確定フラグは「オン」にされる。
【００５０】
このため、起動プログラムを実行したＣＰＵ３１１は、起動時において、まず、ユーザ領域３２の起動フラグ領域３２Ｂと更新確定フラグ領域３２Ｃの情報を参照する。
【００５１】
（ａ）起動時に、起動フラグが「オン」で、更新確定フラグが「オン」の場合（第３の状態）には、アプリケーション領域３２Ａに格納されているアプリケーションは２回目以降の起動であり、しかも正常に動作している状態であることを示している。この場合、起動プログラムを実行したＣＰＵ３１１は、起動プログラムの機能により、アプリケーション領域３２Ａに格納されたアプリケーションを実行する通常の動作を行う（図４（ａ））。
【００５２】
（ｂ）起動時に、起動フラグが「オン」で、更新確定フラグが「オフ」の場合には、アプリケーション領域３２Ａに格納されているアプリケーションソフトウェアは２回目以降の起動であるが、当該アプリケーションソフトウェアは前回起動されたときに正常に動作しなかった状態（第２の状態）であることを示している。この場合、起動プログラムを実行しているＣＰＵ３１１は、起動プログラムに替えて復旧プログラム呼び出して実行する。復旧プログラムを実行したＣＰＵ３１１は、アプリケーション領域３２Ａに格納されている正常に動作しなかった新アプリケーションに替えて、後述するようにアプリケーションバックアップ領域３３に退避してある旧アプリケーションを復旧して起動できるようにする一連の復旧処理を行う（図４（ｂ））。
【００５３】
（ｃ）起動フラグが「オフ」で更新確定フラグが「オフ」の場合（第１の状態）には、アプリケーション領域３２Ａに格納されているアプリケーションがまだ１回も動作していない状態にあることを示している。この場合、起動プログラムを実行したＣＰＵ３１１は、当該起動プログラムの機能によりアプリケーション領域３２Ａに格納されているアプリケーションを読み出して実行し、起動フラグ領域３２Ｂの起動フラグを「オン」にする動作を行う（図４（ｃ））。
【００５４】
このように起動状態の情報として、上記第１の状態、第２の状態、第３の状態の３つの状態を起動プログラムが起動時に識別できるようにする情報を起動プログラムが起動時にアクセス可能な位置に保持する。
【００５５】
なお、起動フラグが「オフ」で、更新確定フラグが「オン」という第４の状態（図４（ｄ））は、更新プログラムや起動プログラムの機能から考えると発生し得ない状態であるので、通常はこの場合の処理を決めておく必要はない。しかし、当該状態が発生した場合には、何らかの障害が発生していると考えられる。そこで、図４（ｄ）の状態のときには、起動フラグ領域３２Ｂと更新確定フラグ領域３２Ｃとをクリアーした上で、アプリケーション領域３２Ａに格納されているアプリケーションを起動させるといった処理を行わせるようにしてもよい。この図４（ｄ）の場合のイレギュラー処理は、ＣＰＵ３１１で実行される例えば起動プログラムの機能により行うようにすればよい。
【００５６】
このように、この実施の形態の入力デバイス３００は、ファームウェアを自装置内の不揮発性メモリ３１３内に保持させる構成のものである。このため、不揮発性メモリ３１３に保持させているファームウェアに含まれるアプリケーションを更新することにより発生する不具合に対処する必要がある。そこで、図３を用いて説明したように、旧アプリケーションをアプリケーションバックアップ領域３３に退避させておく構成を有する。
【００５７】
さらに、更新した新アプリケーションに不具合が発生したか否かを更新プログラムが判別するための情報が格納される起動フラグ領域３２Ｂと更新確定フラグ領域３２Ｃとを備えている。起動プログラムは、起動直後（電源立ち上げ時）に、起動フラグ領域３２Ｂと更新確定フラグ領域３２Ｃとの格納情報を確認し、起動対象のアプリケーションソフトウェアが正常に動作していないことが確認できた場合には、復旧プログラムを実行して、起動対象のアプリケーションを旧アプリケーションに変更できるようにしている。
【００５８】
［入力デバイス３００のアプリケーションの更新処理］
次に、この実施の形態の入力デバイス３００のアプリケーションの更新処理について、図５〜図９を用いて説明する。図２を用いて説明したように、タブレット型情報端末１の情報処理装置部（端末本体部）のＣＰＵ１０２では、種々のプログラムが動作しており、その中で不揮発性メモリ１０４に格納されたアプリケーションソフトウェアの更新制御ソフトウェアが動作する。この更新制御ソフトウェアが機能して、入力デバイス３００のアプリケーションの更新処理が行われる。
【００５９】
以下においては、入力デバイス３００に保持し、入力デバイス３００で実行されるアプリケーションの更新を行って、更新したアプリケーションが正常に動作する場合と、正常に動作しない場合とに分けてアプリケーションの更新処理の全体について説明する。
【００６０】
［アプリケーションの更新処理（新アプリケーションが正常に動作する場合）］
まず、入力デバイス３００で実行されるアプリケーションの更新を行って、更新したアプリケーション（新アプリケーション）が正常に動作する場合について説明する。図５、図６は、タブレット型情報端末１で入力デバイス３００のアプリケーションの更新処理が行われる場合の処理の流れを示す図である。図５、図６に示すように、点線の左側が情報処理装置部１００側で実行される更新制御ソフトウェアによる制御の流れを示し、点線の右側が入力デバイス３００で実行される起動プログラム群やアプリケーションによる制御の流れを示している。
【００６１】
なお、この明細書において起動プログラム群とは、起動プログラムの他、更新プログラムや復旧プログラムをも含む意味である。また、図７は、図５、図６の処理が行われる場合の不揮発性メモリ３１３の状態を示す図である。また、入力デバイス３００は正常に動作可能な状態になっているものとする。すなわち、入力デバイス３００には、図７（Ａ）に示すように、既に正常に起動しているアプリケーションを含むファームウェアが搭載されており、起動フラグと更新確定フラグは共に「オン」になっているものとする。
【００６２】
タブレット型情報端末１に電源が投入されると、表示デバイス２００や入力デバイス３００にも電源が供給される。入力デバイス３００では、ＣＰＵ３１１により起動プログラム群格納領域３１に格納されている起動プログラムを呼び出し（ステップＳ１）、起動プログラムを実行する（ステップＳ２）。ＣＰＵ３１１は、起動プログラムの機能により、ユーザ領域３２の起動フラグ領域３２Ｂと更新確定フラグ領域３２Ｃのフラグ情報を確認し、アプリケーション領域３２Ａのアプリケーションを呼び出して（ステップＳ３）、当該アプリケーションを実行する（ステップＳ４）。
【００６３】
すなわち、図７（Ａ）において、点線で囲んで示したように、まず、ＣＰＵ３１１において起動プログラムが実行され、当該起動プログラムに機能により、ＣＰＵ３１１においてアプリケーションを実行する。上述もしたように、現時点の実行対象のアプリケーションは正常に動作しているものであり、起動フラグも更新確定フラグも共に「オン」になっているので、起動プログラムを実行したＣＰＵ３１１は、アプリケーションを実行するのである。これにより、図７（Ａ）において２重線で囲んで示したように、アプリケーションを実行したＣＰＵ３１１が制御の主体となる。
【００６４】
この後、情報処理装置部１００のＣＰＵ１０２でアプリケーションの更新制御ソフトウェアが実行され、入力デバイス３００のアプリケーションの更新コマンドが、入力デバイス３００に送信されてきたとする（ステップＳ５）。なお、この例においては、初めてアプリケーションの更新が行われる場合であり、図７（Ａ）に示すように、ＣＰＵ３１１においてアプリケーションが実行された時点においては、アプリケーションバックアップ領域３３には、何も格納されていない状態であるものとする。
【００６５】
情報処理装置部１００のＣＰＵ１０２で実行された更新制御ソフトウェアからの更新開始コマンドは、入力デバイス３００のアプリケーションを実行しているＣＰＵ３１１により受信される。アプリケーションを実行しているＣＰＵ３１１は、更新開始コマンドに応じて、起動プログラム群格納領域３１に格納されている更新プログラムを呼び出して（ステップＳ６）、ＣＰＵ３１１で当該更新プログラムを実行する（ステップＳ７）。
【００６６】
ＣＰＵ３１１で実行される更新プログラムは、アプリケーションを更新するために、情報処理装置部１００との間で通信を行えるようにする通信処理機能を備えるものである。更新プログラムを実行したＣＰＵ３１１は、図７（Ｂ）に示すように、アプリケーション領域３２Ａに格納されているアプリケーション（旧アプリケーション）を、アプリケーションバックアップ領域３３に退避させる（ステップＳ８）。この後、更新プログラムを実行したＣＰＵ３１１は、図７（Ｃ）に示すように、ユーザ領域３２に記憶されている情報を全て消去する（ステップＳ９）。
【００６７】
ユーザ領域３２を消去した後においては、情報処理装置部１００から更新データ、すなわち、新アプリケーションが提供される（ステップＳ１０）。更新プログラムを実行しているＣＰＵ３１１は、当該新アプリケーションを受信し、図７（Ｄ）に示すように、アプリケーション起動対象領域であるアプリケーション領域３２Ａに新アプリケーションを書き込む（ステップＳ１１）。このステップＳ１１までの処理が完了した状態では、起動フラグ領域３２Ｂの更新フラグと更新確定フラグ領域３２Ｃの更新確定フラグとは、いずれも「オフ」の状態になっている。
【００６８】
情報処理装置部１００からは、更新データ（新アプリケーション）の提供が完了すると、リセットコマンド（ソフトウェアリセット）が送信されて来る（ステップＳ１２）。リセットコマンドを受信したＣＰＵ１１は、更新プログラムに替えて、起動プログラム群格納領域３１から起動プログラムを呼び出して（ステップＳ１３）、当該起動プログラムを実行する（ステップＳ１４）。
【００６９】
起動プログラムを実行したＣＰＵ３１１は、起動フラグと更新確定フラグとが共に「オフ」の状態であるので、起動対象の新アプリケーションは最初の起動（初回起動）であると判別する。この場合、起動プログラムを実行したＣＰＵ３１１は、新アプリケーションを呼び出して（ステップＳ１５）、新アプリケーションを実行するようにすると共に（ステップＳ１６）、起動フラグ領域３２Ｂの起動フラグを「オン」にする（ステップＳ１７）。ここでは、新アプリケーションの起動と起動フラグを「オン」にする処理を一連の処理として説明したが、まず、起動フラグを「オン」にした後に、新アプリケーションを実行するようにしてももちろんよい。
【００７０】
このように、リセットコマンド受信後においては、図７（Ｅ）において点線で囲んで示したように、まず、起動プログラムがＣＰＵ３１１で起動される。この後、起動プログラムの機能により、アプリケーションが読み出されてＣＰＵ３１１で実行され、図７（Ｅ）において実線の２重線で囲んで示したように、アプリケーションを実行したＣＰＵ３１１が制御の主体となる。
【００７１】
この後、ＣＰＵ３１１で実行された新アプリケーションによって機能するようにされた入力デバイス３００を通じて、使用者（ユーザ）からのタッチ操作（Ｔｃ１）を受け付ける。入力デバイス３００では、ＣＰＵ３１１で実行された新アプリケーションが機能してタッチ入力処理を実行し（ステップＳ１８）、使用者によるタッチ位置を検出して、これを操作情報としてＩ／Ｏポート１２０を通じて情報処理装置部１００に供給する（ステップＳ１９）。
【００７２】
情報処理装置部１００で実行されている更新制御ソフトウェアは、入力デバイス３００からの情報に基づき、入力デバイス３００が正常に動作したことを確認する処理を行う（ステップＳ２０）。正常動作が確認できたときには、情報処理装置部１００で実行されている更新制御ソフトウェアは、更新確定コマンドを形成し、これをＩ／Ｏポート１２０を通じて入力デバイス３００に提供する（ステップＳ２１）。
【００７３】
新アプリケーションを実行しているＣＰＵ３１１は、情報処理装置部１００からの更新確定コマンドを受信すると、新アプリケーションに替えて、起動プログラム群格納領域３１の更新プログラムを呼び出して（ステップＳ２２）、実行する（ステップＳ２３）。更新プログラムを実行したＣＰＵ３１１は、図７（Ｆ）に示すように、更新確定フラグ領域３２Ｃの更新確定フラグを「オン」にする（ステップＳ２４）。
【００７４】
この後、更新確定コマンドを送信した情報処理装置部１００からは、リセットコマンド（ソフトウェアリセット）が送信されて来る（ステップＳ２５）。このため、リセットコマンドを受信したＣＰＵ１１は、図５のステップＳ１〜ステップＳ４に示したように、ＣＰＵ３１１で実行される起動プログラムの機能により、新アプリケーションが呼び出され実行されることになる。この場合には、正常に動作することが確認された新アプリケーションを実行することができる。
【００７５】
このように、入力デバイス３００のアプリケーションを更新することにより、更新前のアプリケーション（旧アプリケーション）から更新後のアプリケーション（新アプリケーション）に変わっても、新アプリケーションが正常に機能したとする。この場合には、新アプリケーションに応じて機能する入力デバイス３００が、タブレット型情報端末１の入力装置として適切に機能することになる。
【００７６】
そして、更新した新アプリケーションが正常に機能した場合、起動フラグと更新確定フラグとは共に「オン」となり、起動した新アプリケーションが正常に動作していることが示されるので、アプリケーションの復旧処理は必要ないと判別できる。これに対して、起動フラグが「オン」で、更新確定フラグが「オフ」の場合には、更新した新アプリケーションを起動したにもかかわらず、正常に動作していないことが示されるので、アプリケーションの復旧処理が必要であると判別可能となる。
【００７７】
［アプリケーションの更新処理（新アプリケーションが正常に動作しない場合）］
次に、入力デバイス３００で実行されるアプリケーションの更新を行って、更新したアプリケーション（新アプリケーション）が正常に動作しない場合について説明する。図８は、タブレット型情報端末１で入力デバイス３００のアプリケーションの更新処理が行われる場合の処理の流れを示す図である。この図８もまた、図５、図６に示した場合と同様に、点線の左側が情報処理装置部１００側で実行されるアプリケーションの更新制御ソフトウェアによる制御の流れを示し、点線の右側が入力デバイス３００で実行される起動プログラム群やアプリケーションによる制御の流れを示している。また、図９は、図８の処理が行われる場合の不揮発性メモリ３１３の状態を示す図である。
【００７８】
アプリケーションを更新し、新アプリケーションが正常に動作するか否かは、新アプリケーションをアプリケーション領域３２Ａに書き込んで実際に実行してみないと分からない。このため、更新前のアプリケーション（新アプリケーション）が不具合を有するものであっても、図８に示すように、図５、図６に示したステップＳ１〜ステップＳ１７の各処理は、図５、図６を用いて説明したように行われる。従って、図５、図６に示したステップＳ１〜ステップＳ１７までの処理により、入力デバイス３００の不揮発性メモリ３１３の状態は、図７（Ｅ）に示し、また、図９（Ｅ）にも示す状態となる。図７（Ｅ）と図９（Ｅ）とは不揮発性メモリ３１３の同じ状態を示している。
【００７９】
すなわち、図５、図６の場合と同様にステップＳ１〜ステップＳ１７までの処理により、更新前のアプリケーション（旧アプリケーション）はアプリケーションバックアップ領域３３に退避された状態となる（図９（Ｅ））。また、更新後のアプリケーション（新アプリケーション）はアプリケーション領域３２Ａに格納された状態となる（図９（Ｅ））。
【００８０】
さらに、アプリケーション領域３２Ａに格納された新アプリケーションが、起動プログラムを実行しているＣＰＵ３１１により呼び出されて実行される。すなわち、新アプリケーションがＣＰＵ３１１で実行され、新アプリケーションを起動したことを示す情報が起動プログラムにより起動フラグ領域３２Ｂに格納された状態となる（図９（Ｅ））。
【００８１】
アプリケーション領域３２Ａに格納された新アプリケーションがＣＰＵ３１１で実行されることにより、図９（Ｇ）において２重線で囲んで示したように、制御の主体が新アプリケーションソフトウェアを実行したＣＰＵ３１１に移行する。この後、図９（Ｇ）において、網掛けをして示したように、新アプリケーションに異常があり、ＣＰＵ３１１で実行された新アプリケーションがＣＰＵ３１１上で動作し続けるが、正常な動作ができなくなったとする（ステップＳ３１）。この場合、使用者からのタッチ操作も受け付けられず、タッチ操作（Ｔｃ２）は不可となる。
【００８２】
従って、入力デバイス３００からはアプリケーションソフトウェアの機能により検出される操作情報が情報処理装置部１００に送信されない。また、情報処理装置部１００から更新確定コマンドが送信されて来ることもないので、図９（Ｇ）に示すように、更新確定フラグ領域３２Ｃに、新アプリケーションが正常に動作したことを示す情報も更新されない。
【００８３】
情報処理装置部１００のＣＰＵ１０２により実行されている更新制御ソフトウェアは、予め決められた所定時間内に、アプリケーションを更新した入力デバイス３００から操作情報を受信することができないためにタイムアウトとなる（ステップＳ３２）。そこで、更新制御ソフトウェアは、ファームウェアの再起動を指示するリセットコマンドを、Ｉ／Ｏポート１２０を通じて入力デバイス３００に送信する（ステップＳ３３）。しかし、本来は機能しているべき新アプリケーションが機能していないので、当該リセットコマンドはエラーとなり、起動プログラムを通じて新アプリケーションを再起動させることができない。
【００８４】
このため、情報処理装置部１００のＣＰＵ１０２により実行されている更新制御ソフトウェアは処理を中断させることになる（ステップＳ３４）。この場合、入力デバイス３００が正常に機能しないため、入力デバイス３００が唯一の入力装置あるタブレット型情報端末１は全く操作できなくなる。
【００８５】
そこで、タブレット型情報端末１のユーザは、入力デバイス３００の再起動を試みる。例えば、タブレット型情報端末１の主電源断／再投入操作（ハードリセット）（Ｔｃ３）を行う。電源が再投入されたタブレット型情報端末１では、情報処理装置部１００、表示デバイス２００、入力デバイス３００の電源が投入される。この場合、入力デバイス３００では、ＣＰＵ３１１により、起動プログラム群格納領域３１の起動プログラムが呼び出され（ステップＳ３５）、ＣＰＵ３１１により実行される（ステップＳ３６）。
【００８６】
これにより、起動プログラムを実行したＣＰＵ３１１は、起動状態として、ユーザ領域３２の起動フラグ領域３２Ｂの起動フラグと更新確定フラグ領域３２Ｃの更新確定フラグとを参照し、アプリケーションが実行可能か（復旧処理が必要か）を判別する。この時点の不揮発性メモリ３１３の状態は、図９（Ｈ）に示す状態となる。ＣＰＵ３１１で起動プログラムが実行されていることを除けば、図９（Ｇ）に示した状態と同じである。
【００８７】
すなわち、ユーザ領域３２の起動フラグ領域３２Ｂの起動フラグは「オン」であるが、更新確定フラグ領域３２Ｃの更新確定フラグは「オフ」である。この状態は、図４に示した（ｂ）に対応する状態であり、アプリケーションの復旧処理を実行する必要があると判別できる。このため、起動プログラムが実行されているＣＰＵ３１１は、復旧プログラムを呼び出し（ステップＳ３７）、復旧プログラムを実行して（ステップＳ３８）、アプリケーションの復旧処理を行う。
【００８８】
これにより、図９（Ｉ）において、２重線で囲んで示したように、復旧プログラムを実行したＣＰＵ３１１が制御の主体となる。復旧プログラムを実行したＣＰＵ３１１は、図９（Ｉ）に示したように、アプリケーションバックアップ領域３３に退避（バックアップ）してある更新前のアプリケーション（旧アプリケーション）を、ユーザ領域３２のアプリケーション領域３２Ａに書き込む。当該旧アプリケーションは、正常に動作していた実績のあるものである。次に、復旧プログラムを実行したＣＰＵ３１１は、起動フラグ領域３２Ｂの起動フラグと更新確定フラグ領域３２Ｃの更新確定フラグとを共に「オン」にする。
【００８９】
この後、復旧プログラムを実行しているＣＰＵ３１１は、図９（Ｊ）に示すように、アプリケーション領域３２Ａに戻した（復旧した）旧アプリケーションを呼び出して（ステップＳ３９）、実行する（ステップＳ４０）。これにより、タブレット型情報端末１の入力デバイス３００は、正常に動作していた旧アプリケーションによりタッチ入力処理を行うことができ、タブレット型情報端末１の入力装置として正常に機能する。
【００９０】
このようにして、更新後のアプリケーション（新アプリケーション）に不具合があり、正常に動作しない場合であっても、入力デバイス３００のＣＰＵ３１１は、復旧プログラムを実行することにより、自発的にアプリケーションの復旧処理を行い、タブレット型情報端末１が全く機能しなくなる状態を回避できる。
【００９１】
［アプリケーションの更新未完了の場合］
上述した実施の形態では、正常に更新が完了した新アプリケーションに不具合があって新アプリケーションが正常に機能しなかった場合について説明した。しかし、新アプリケーションが正常に機能しないのは、新アプリケーションの全部がアプリケーション領域３２Ａに書き込まれなかった場合にも発生する。例えば、新アプリケーションのアプリケーション領域３２Ａへの書き込み処理中に、タブレット型情報端末１の主電源が何らかの原因で落ちてしまった場合には、新アプリケーションのアプリケーション領域３２Ａへの書き込みが完了しない状態となってしまう。この場合にも新アプリケーションは正常に機能しない。
【００９２】
そこで、起動プログラムを実行しているＣＰＵ３１１は、起動プログラムの機能により、アプリケーションのアプリケーション領域３２Ａの書き込みの状態を判別する。起動プログラムを実行しているＣＰＵ３１１が、アプリケーションのアプリケーション領域３２Ａへの書き込みが不完全であると判別した時には、ＣＰＵ３１１は起動プログラムに替えて復旧プログラムを実行し、上述したアプリケーションの復旧処理を行う。この後、ＣＰＵ３１１は、起動プログラムを実行してアプリケーションの起動処理を行う。これにより、アプリケーションのアプリケーション領域３２Ａの書き込みが不完全である場合についても、入力デバイス３００が機能しなくなる状態を回避できる。
【００９３】
図１０は、アプリケーションのアプリケーション領域３２Ａへの書き込みが不完全か否かを判別する手法の一例について説明するための図である。図１０に示すように、ユーザ領域３２のアプリケーション領域３２Ａには、アプリケーション領域３２Ａの先頭（上端部）〜末尾（下端部）に向って、アプリケーションが書き込まれる。なお、アプリケーションの書き込み前には、アプリケーション領域３２Ａの全体が初期化された状態になっている。
【００９４】
アプリケーション領域３２Ａにアプリケーションを書き込む場合、図１０（Ａ）に示すように、最初に、アプリケーション領域３２Ａの先頭部分に予め決められた特定のデータ列を書き込んだ後にアプリケーションを書き込む。そして、アプリケーションの全部を正常に書き込み終えた場合に、起動プログラムは、アプリケーション領域３２Ａの末尾部分に先頭部分に書き込んだ特定のデータ列をコピーする。
【００９５】
このようにしておけば、アプリケーション領域３２Ａの先頭部分と末尾部分に同じ特定のデータ列が存在するか否かに応じて、アプリケーションがアプリケーション領域３２Ａに適切に書き込まれたか否かを判別できる。すなわち、図１０（Ｂ）に示すように、ユーザ領域３２には、何のデータも書き込まれていない状態から、アプリケーション領域３２Ａにアプリケーションを書き込む処理を開始し、図１０（Ｃ）に示すように、アプリケーションの書き込みが途中で中断してしまったとする。この場合には、アプリケーション領域３２Ａの末尾部分には、同先頭部分と同じ特定のデータ列は存在しないので、アプリケーションはアプリケーション領域３２Ａに正常に書き込まれていないと判別できる。
【００９６】
これに対して、図１０（Ｂ）に示すように、ユーザ領域３２には、何のデータも書き込まれていない状態から、アプリケーション領域３２Ａにアプリケーションを書き込む処理を開始し、図１０（Ｄ）に示すように、アプリケーションの書き込みが最後まで終了したとする。この場合には、アプリケーション領域３２Ａの先頭部分と末尾部分には同じ特定のデータ列が存在するので、アプリケーションは正常に書き込まれたと判別できる。そして、図１０（Ｃ）の状態にあるときには、アプリケーションバックアップ領域３３に格納されてアプリケーションを、アプリケーション領域３２Ａに復旧する処理を行うことになる。
【００９７】
これにより、更新後のアプリケーション（新アプリケーション）が、アプリケーション領域３２Ａに正常に書き込まれなかったときにも、これを入力デバイス３００側で自動的に復旧できる。
【００９８】
なお、図１０を用いて説明したアプリケーションのアプリケーション領域３２Ａへの書き込みが正常に終了したか否かの判別の仕方はあくまでも一例である。例えば、最終アドレスが消去状態ではなく、データが書き込まれているか否かによりアプリケーションの書き込みが完了しているか否かを簡易的に判別する手法を用いることもできる。また、新アプリケーションの書き込み前と書き込み後のいわゆるチェックサムを用いて、新アプリケーションの書き込みの正確性をチェックする方式を用いてもよい。この他にも、冗長検査、パリティチェック、ハミングコードチェック、ＣＲＣ（Cyclic Redundancy Check）などの従来からの誤り検出の手法や、これらの改良手法、あるいは新たに考案されたチェック方式などを用いることももちろん可能である。
【００９９】
［アプリケーションの起動処理（復旧処理を含む）］
次に、この実施の形態の入力デバイス３００のＣＰＵ３１１で実行される起動プログラムと復旧プログラムにより行われるアプリケーションの起動処理（復旧処理を含む）について、図１１のフローチャートを参照して説明する。
【０１００】
図１１は、入力デバイス３００のＣＰＵ３１１により実行される起動プログラムと復旧プログラムにより行われるアプリケーションの起動処理（復旧処理を含む）を説明するためのフローチャートである。この図１１に示すフローチャートは、図５〜図９を用いて説明した処理の内、アプリケーションの更新処理部分を除き、アプリケーションを起動させる場合の処理に特化して表したものである。
【０１０１】
すなわち、電源が投入するようにされたタブレット型情報端末１の入力デバイス３００のＣＰＵ３１１は、図１１に示す処理を行なう。電源が投入された入力デバイス３００においては、ＣＰＵ３１１が起動プログラムを実行し、不揮発性メモリ３１３のアプリケーション領域３２Ａに、アプリケーションが正常に書き込まれているか否かを判別する（ステップＳ１０１）。このステップＳ１０１の処理は、起動プログラムの機能により、例えば、図１０を用いて説明方法やその他のチェック方法を用いて、アプリケーションの全てが正常にアプリケーション領域３２Ａに記録されているか否かを確認する処理である。
【０１０２】
ステップＳ１０１の判別処理において、アプリケーション領域３２Ａにアプリケーションが正常に書き込まれていると判別したときには、ＣＰＵ３１１は、アプリケーションの更新が確定された状態か否かを判別する（ステップＳ１０２）。このステップＳ１０２の処理は、起動プログラムの機能により、起動フラグ領域３２Ｂの起動フラグと更新確定フラグ領域３２Ｃの更新確定フラグとが共に「オン」になっているか否かを判別する処理である。
【０１０３】
ステップＳ１０２の判別処理において、起動フラグと更新確定フラグとが共に「オン」となっており（即ち、起動状態が第３の状態（ａ）であり）、アプリケーションの更新が確定した状態にあると判別したとする。この場合、起動プログラムを実行しているＣＰＵ３１１は、アプリケーション領域３２Ａに格納されているアプリケーションをＣＰＵ３１１おいて起動させ（ステップＳ１０３）、図１１に示す処理を終了させる。このステップＳ１０３の処理により、起動プログラムが実行されていたＣＰＵ３１１から、アプリケーションが起動されたＣＰＵ３１１が制御を行うことになり、入力デバイス３００がタブレット型情報端末１の入力装置として機能する。
【０１０４】
また、ステップＳ１０２の判別処理において、アプリケーションの更新が確定した状態にはないと判別したとする。この場合、起動プログラムを実行しているＣＰＵ３１１は、アプリケーション領域３２Ａのアプリケーションは、今回が初回起動か否かを判別する（ステップＳ１０４）。すなわち、ステップＳ１０４の判別処理は、更新されたアプリケーションが、更新後において１回も起動されていないものか否かを判別する処理である。具体的にステップＳ１０４では、起動フラグ領域３２Ｂの起動フラグと更新確定フラグ領域３２Ｃの更新確定フラグとが共に「オフ」になっているか否か（即ち、起動状態が第１の状態（ｃ）であるか否か）を確認する処理である。
【０１０５】
ステップＳ１０４の判別処理において、起動フラグと更新確定フラグとが共に「オフ」となっており、アプリケーション領域３２Ａのアプリケーションは今回が初回起動（１回も起動されていないもの）であると判別したとする。この場合、起動プログラムを実行しているＣＰＵ３１１は、起動フラグ領域３２Ｂの起動フラグを「オン」にする（ステップＳ１０５）。この後、起動プログラムを実行しているＣＰＵ３１１は、アプリケーション領域３２Ａに格納されているアプリケーションを起動させる（ステップＳ１０６）。
【０１０６】
このステップＳ１０３の処理により、起動プログラムが実行されていたＣＰＵ３１１から、アプリケーションが起動されたＣＰＵ３１１が制御を行うことになり、入力デバイス３００がタブレット型情報端末１の入力装置として機能する。なお、このステップＳ１０６においては、起動させたアプリケーションが正常に動作した場合には、上述もしたように、ＣＰＵ３１１において実行される更新プログラムにより、更新確定フラグが「オン」にされる。また、起動させたアプリケーションが正常に動作しながった場合には、上述もしたように、更新確定フラグは「オン」にされないので、電源の再立ち上げによるハードウエアリセットにより、アプリケーションの復旧処理が行われることになる。
【０１０７】
また、ステップＳ１０１の判別処理において、起動プログラムを実行しているＣＰＵ３１１が、アプリケーション領域３２Ａにアプリケーションが正常に書き込まれていないと判別したとする。この場合、ＣＰＵ３１１は復旧プログラムを実行し、アプリケーションの復旧処理を行う（ステップＳ１０７）。同様に、ステップＳ１０４の判別処理において、起動プログラムを実行しているＣＰＵ３１１が、アプリケーション領域３２Ａのアプリケーションは起動済みのものであると判別したとする。この場合にも、ＣＰＵ３１１は復旧プログラムを実行し、アプリケーションの復旧処理を行う（ステップＳ１０７）。
【０１０８】
ステップＳ１０７において、復旧プログラムを実行したＣＰＵ３１１は、（１）アプリケーションバックアップ領域３３に退避した旧アプリケーションを、アプリケーション領域３２Ａに格納し直す。更に、復旧プログラムを実行したＣＰＵ３１１は、（２）起動フラグ領域３２Ｂの起動フラグを「オン」にし、更新確定フラグ領域３２Ｃの更新確定フラグを「オン」にする。
【０１０９】
この後、例えば、情報処理装置部１００から提供されるリセットコマンドに応じて、入力デバイス３００のＣＰＵ３１１は、起動プログラムを実行し、復旧した旧アプリケーションを起動させることになる。この場合の起動処理は、上述したステップＳ１０３のアプリケーションの起動処理の場合と同様の処理となる。
【０１１０】
このように、入力デバイス３００においては、自機が入力装置として機能するためのアプリケーションを自機の不揮発性メモリ３１３内に保持させている。この保持されるアプリケーションは、更新の対象となり、更新が正常に終了しなかったり、更新されたアプリケーションが正常に機能しなかったりする場合がある。
【０１１１】
しかし、入力デバイス３００のＣＰＵ３１１は、起動プログラムの機能により、正常に動作したアプリケーションだけを実行する。そして、入力デバイス３００のＣＰＵ３１１は、アプリケーションの更新処理やアプリケーション自体に不具合が生じた場合には、起動プログラムや復旧プログラムの機能により、ＣＰＵ３１１が自発的にアプリケーションを復旧させることができる。この復旧処理は、タブレット型情報端末１の電源断と再投入を行ういわゆるハードリセット操作を契機として行うことができる。
【０１１２】
［変形例等］
なお、上述したように、アプリケーションは、タッチ処理プログラムと通信処理等プログラムとを含む。そして、上述した実施の形態では、通信処理等プログラムに不具合が生じて情報処理装置部１００からの復旧が不能な場合にも、電源のオン／オフ（ハードリセット）を契機として、入力デバイス３００のＣＰＵ３１１がアプリケーションの復旧を行うものとして説明した。しかし、これに限るものではない。
【０１１３】
例えば、アプリケーションの内、タッチ処理プログラムに不具合があり、タッチ位置の検出が不能になっているが、通信処理等プログラムは正常に機能しているとする。この場合には、図８のステップＳ３３において、情報処理装置部１００から提供されるリセットコマンドを適切に受信できる。このため、タイムアウトによるリセットコマンドを受信した場合、ＣＰＵ３１１は、起動プログラムを呼び出して実行するように、図８のステップＳ３５からの処理を行なうようにすることができる。
【０１１４】
この場合には、タブレット型情報端末１の電源のオン／オフといったいわゆるハードリセットを、復旧処理に繋がる起動プログラムの実行の契機としなくてもよい。すなわち、図８のステップＳ３３のリセットコマンド（ソフトリセット）を復旧処理に繋がる起動プログラムの実行の契機とすることができる。
【０１１５】
また、上述した実施の形態では、起動プログラムを実行したＣＰＵ３１１は、ユーザ領域３２のアプリケーション領域３２Ａに格納されているアプリケーションを実行するものとして説明した。このため、アプリケーションの復旧処理は、アプリケーションバックアップ領域３３に退避した、旧アプリケーションをアプリケーション領域３２Ａに書き戻す処理を含むものとした。しかし、これに限るものではない。
【０１１６】
アプリケーションがいわゆるアドレス依存のないものであり、入力デバイス３００のＣＰＵ３１１が、アドレス依存のないプログラムを実行可能なものである場合には、復旧処理としてＣＰＵ３１１が、アプリケーションバックアップ領域３３の旧アプリケーションを直接に実行するようにしてもよい。この場合には、旧アプリケーションをアプリケーション領域３２Ａに書き戻す処理を行う必要がなくなる。
【０１１７】
また、上述した実施の形態では、起動プログラムと更新プログラムと復旧プログラムとは、不揮発性メモリ３１３の更新対象とはならない起動プログラム群格納領域３１に格納されているものとして説明したが、これに限るものではない。起動プログラムと更新プログラムと復旧プログラムとは、更新対象とはならないものであるので、入力デバイス３００内に設けられる、いわゆるマスクＲＯＭに記録しておくようにしてもよい。
【０１１８】
また、図１１の説明では、第１の状態〜第３の状態の起動状態をＳ１０２とＳ１０４の順に判定するとしたが、この順は逆順であってもよいし１回の判定で行うものであってもよい。
【符号の説明】
【０１１９】
１…タブレット型情報端末、１００…情報処理装置部、１０１Ａ…送受信アンテナ、１０１…無線通信部、１０２…ＣＰＵ、１０３…ＲＡＭ、１０４…不揮発性メモリ、１０５…バス、１１０…Ｉ／Ｏポート、１２０…Ｉ／Ｏポート、２００…表示デバイス、３００…タッチ入力デバイス、３１０…コントローラ、３１１…ＣＰＵ、３１２…ＲＡＭ、３１３…不揮発性メモリ、３１…起動プログラム群格納領域、３１Ａ…起動プログラム領域、３１Ｂ…更新プログラム領域、３１Ｃ…復旧プログラム領域、３２…ユーザ領域、３２Ａ…アプリケーション領域、３２Ｂ…起動フラグ領域、３２Ｃ…更新確定フラグ領域、３３…アプリケーションバックアップ領域
【図１】
2015146102.tif 000003
【図２】
2015146102.tif 000004
【図３】
2015146102.tif 000005
【図４】
2015146102.tif 000006
【図５】
2015146102.tif 000007
【図６】
2015146102.tif 000008
【図７】
2015146102.tif 000009
【図８】
2015146102.tif 000010
【図９】
2015146102.tif 000011
【図１０】
2015146102.tif 000012
【図１１】
2015146102.tif 000013