端末装置並びにフリーズ検出方法及び端末装置の制御方法
【課題】細かい設定をすることなく、自動的にフリーズ状態を検出し、リセット処理等を行う端末装置の提供。
【解決手段】端末装置は、電源からCPUに供給される電流値を測定する電流測定部と、前記CPUをリセットするリセット制御部と、前記CPUと独立して動作し、動作モードに反した電流値の定常状態が観測された場合、前記リセット制御部に前記CPUをリセットさせる電流監視部と、を備える。
【解決手段】端末装置は、電源からCPUに供給される電流値を測定する電流測定部と、前記CPUをリセットするリセット制御部と、前記CPUと独立して動作し、動作モードに反した電流値の定常状態が観測された場合、前記リセット制御部に前記CPUをリセットさせる電流監視部と、を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、端末装置並びにフリーズ検出方法及び端末装置の制御方法に関し、特に、実行中のアプリケーションの暴走等によるフリーズ状態の発生を検出する機能を備えた端末装置並びにフリーズ検出方法及び端末装置の制御方法に関する。
【背景技術】
【0002】
実行中のアプリケーションの暴走やデッドロック等により、端末装置がフリーズ(「ハングアップ」とも呼ばれるが本明細書では「フリーズ」を用いる。)状態に陥った場合の復帰手段として、ウォッチドッグタイマによるリセット復帰を行う暴走監視機能が知られている。また、この種の機能が働かない場合に電池の脱着等を行わずに、専用のリセットボタンを押下することでリセット復帰できるものも知られている。
【0003】
特許文献1、2には、上記専用のリセットボタンではなく、既存のキー長押し検出によるリセット復帰できるようにした端末装置が開示されている。
【0004】
また、特許文献3には、電池から出力される出力電流監視抵抗に流れる電流を計測する電流計測部と、各種アプリケーションプログラムを実行する制御部と、前記制御部にて実行可能な複数のアプリケーションプログラム毎に設定される電流閾値を記憶する記憶部と、を備え、前記電流計測部により計測される電流値と、実行中のアプリケーションプログラムの種別とを監視し、前記電流計測部により計測された電流値が、現在実行中のアプリケーションプログラムの種別に対応する電流閾値を超えた場合にリセット処理を実行し、もしくは電源オフ処理を実行する携帯電子機器が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2004−140457号公報
【特許文献2】特開2010−267188号公報
【特許文献3】特開2009−181366号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
以下の分析は、本発明によって与えられたものである。上記したウォッチドッグタイマによる暴走監視機能は、OS(Operating System)によって提供され、暴走監視機能の監視が及ばないプログラム内部の不具合によるフリーズでは、前記暴走監視機能が検知できないためにウォッチドッグタイマのクリア動作が実行されてしまい、フリーズ状態から抜け出すことができないという問題点がある。
【0007】
また、上記特許文献1、2のようなユーザの操作によってリセット復帰を行なう方式では、ユーザがフリーズに気づくまでの間、フリーズ状態が継続されてしまうという問題点がある。
【0008】
また、特許文献3の技術によれば、自動的なリセット処理または電源オフ処理を実現できるが、同公報の図5に示されたとおり、アプリケーションプログラム毎に、電流しきい値を設定しなければならないという問題点がある。例えば、インターネット上の各種サイトから、アプリケーションプログラムを購入したような場合、これら新規にインストールしたアプリケーションプログラムについて電流しきい値を設定しなければ、リセット処理等の対象外となってしまう。
【0009】
本発明は、上記した事情に鑑みてなされたものであって、その目的とするところは、上記した電流しきい値等の細かい設定をすることなく、フリーズ状態を検出することのできる方法およびこれを利用したリセット機能を備えた端末装置を提供することにある。
【課題を解決するための手段】
【0010】
本発明の第1の視点によれば、電源からCPU(Central Processing Unit)に供給される電流値を測定する電流測定部と、前記CPUをリセットするリセット制御部と、前記CPUと独立して動作し、動作モードに反した電流値の定常状態が観測された場合、前記リセット制御部に前記CPUをリセットさせる電流監視部と、を備える端末装置が提供される。
【0011】
本発明の第2の視点によれば、電源から端末装置のCPUに供給される電流値を監視するステップと、動作モードに反した電流値の定常状態が観測された場合、前記CPUがフリーズ状態になったものと判定するステップと、を含む端末装置のフリーズ検出方法が提供される。なお、本方法は、端末装置という特定の機械に結びつけられている。
【発明の効果】
【0012】
本発明によれば、細かい設定をすることなく、自動的にフリーズ状態を検出し、リセット処理等を行うことが可能となる。
【図面の簡単な説明】
【0013】
【図1】本発明の概要を説明するための図である。
【図2】本発明の第1の実施形態の端末装置の構成を表わしたブロック図である。
【図3】本発明の第1の実施形態の端末装置にて測定される電流値とカウンタの動きを説明するための図である。
【図4】本発明の第1の実施形態の端末装置にて測定される電流値とカウンタの動きを説明するための別の図である。
【図5】本発明の第1の実施形態の端末装置の動作を表したフローチャートである。
【図6】本発明の第2の実施形態の端末装置の構成を表わしたブロック図である。
【図7】本発明の第2の実施形態の端末装置の動作を表したフローチャートである。
【図8】本発明の第2の実施形態の端末装置のCPUの動作を表したフローチャートである。
【図9】本発明の第3の実施形態の端末装置の構成を表わしたブロック図である。
【図10】本発明の第3の実施形態の端末装置の動作を表したフローチャートである。
【図11】本発明の第3の実施形態の端末装置のCPUの動作を表したフローチャートである。
【発明を実施するための形態】
【0014】
はじめに、本発明の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
【0015】
本発明は、図1に示すように、電源からCPU(Central Processing Unit)に供給される電流値を測定する電流測定部を備えた電流監視部101と、CPU103をリセットするリセット制御部102と、を備えた端末装置により実現できる。前記電流監視部101は、CPU103と独立して動作し、現在の端末装置の動作モードに反した電流値の定常状態が観測された場合、リセット制御部102にCPU103をリセットさせる動作を行う。
【0016】
ここで、上記電流値の定常状態が観測された場合に、CPU103がフリーズ状態に陥ったと判断してよい理由について説明する。
【0017】
フリーズ状態の原因の一つとして無限ループの発生が挙げられる。とりわけ、電池等で動作する携帯端末では、消費電力を抑えるため、永続的に常駐動作するバックグラウンドタスクが少なく、かつ、イベントドリブンで動作するように設計されている。このため、フォアグラウンドで動作するアプリケーションタスクが無限ループに陥った場合に、他のタスクを呼び出すイベントが発生しにくい。そして、フォアグラウンドで動作するアプリケーションタスクから周辺回路へのアクセス(プロトコル)がタイムアウトし、一定時間周辺回路へのアクセスが途絶えると消費電流も一定状態に落ち着くことが多い。本発明は、この性質を利用して、端末装置がフリーズ状態に陥ったことを検出するものである。
【0018】
但し、端末装置には、一定期間操作がなされないこと等を契機として、省電力モードに遷移したり、スクリーンセーバーやデジタルフォトフレームのようにスライド等の表示を行う機能を備えたものがある。このような端末装置においては、これら各動作モードでCPUに流れる電流値を事前に測定しておき、電流値が定常状態になっても、リセット動作を抑止するようにする。その一方で、これら動作モードに反する電流値の定常状態が観測されたときに、リセット動作を行うことで、ユーザの手を煩わせることなく、リセット動作を行うことが可能になる。
【0019】
上記した原理にてフリーズ状態を検出する本発明は、種々の端末装置に適用することが可能であるが、多数のアプリケーションプログラムが実行されることによりフリーズ状態に陥りやすい傾向にある携帯端末装置に好適に適用することが可能である。
【0020】
[第1の実施形態]
続いて、本発明の第1の実施形態について図面を参照して詳細に説明する。図2は、本発明の第1の実施形態の端末装置の構成を表わしたブロック図である。図2を参照すると、電流監視部101と、リセット制御部102と、CPU103と、ROM(Read−Only Memory)104と、RAM(Random Access Memory)106と、を備えた構成が示されている。
【0021】
電流監視部101は、電源からCPU103に供給される電流値を測定する電流測定部を備え、CPU103と独立して動作して、前記測定した電流値の推移と、端末装置が省電力状態にあるか否かとに基づいてリセットの要否を判定する。ここで、リセット要と判定した場合、電流監視部101は、リセット制御部102にリセット動作を要求する。なお、端末装置が省電力モードであるか否かは、CPU103の省電力端子から出力される端末状態信号に基づいて判別される。なお、電流監視部101内の電流測定部の具体的構成としては特許文献3の電流監視抵抗と電流アンプとを用いた構成等を用いることができる。
【0022】
前記リセットの要否の判定は、例えば、以下のようにして行うことができる。電流監視部101は、図3に示すように、ある時点で測定された電流値が、前時点で測定された電流値に対し、クロック動作などから派生する所定の範囲の変動幅Xに収まっている場合(以下、このような状態を電流値の高低に拘らず「定常状態」と呼ぶ。)、内部に備えられたカウンタを増大させていく。そして、前記カウンタの値が所定のリセット判定しきい値Nを超えると、電流監視部101は、リセット制御部102にリセット信号を出力する。なお、前記変動幅を超えたか否かを判定するための変動幅Xおよびリセット判定しきい値Nについては、ROM104等に保存するようにし、適宜、変更できるようにしておいてもよい。
【0023】
例えば、図3の時刻t0から時刻t1の間は、各時点で測定された電流値がそれぞれ前時刻の電流値より前記所定の範囲を超えて変化しているため、カウンタは0のままである。時刻t2、t3では、それぞれ時刻t1、t2に対し、電流値の変化が前記所定の範囲X内であるため、カウンタが増大している。しかしながら、その後、電流値が前記所定の範囲Xを超えて変化したため、カウンタは0にクリアされる。さらに、その後、時刻t4、t5で再度カウンタが増大し、その傾向が継続したため、時刻t6では、カウンタがリセット判定しきい値Nとなりリセット信号が出力されている。
【0024】
図4は、端末装置が省電力状態(省電力モード)にある場合の電流値の変化とカウンタの動きを示した図である。時刻t11から時刻t13の間は、各時点で測定された電流値がそれぞれ前時刻の電流値より前記所定の範囲Xを超えて変化しているため、カウンタは0のままである。時刻t13から時刻t14までは、各時点で測定された電流値の変化が前記所定の範囲X内であるが、CPU103より省電力状態(省電力モード)であることが通知されているため、カウンタは増大しない。
【0025】
リセット制御部102は、端末装置のリセット制御を行うブロックである。具体的には、リセット制御部102は、CPU103のリセット端子(Reset端子)に、リセット信号を出力することによりCPUにリセット動作を行わせる。
【0026】
CPU103は、端末装置の各部を制御するユニットであり、リセット端子(Reset端子)からリセット信号が入力されると、リセット動作を行う。また、CPU103は、省電力端子を備え、電流監視部101に対し、省電力モードであるか否かを示す信号を出力する。
【0027】
ROM104は、CPU103に実行させるプログラム等が書き込まれた不揮発性のメモリであり、EEPROM(Electrically Erasable Programmable ROM)などによって構成される。
【0028】
RAM106は、CPU103が随時読み書きするデータ等を格納するためのメモリである。
【0029】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図5は、本実施形態の端末装置の動作を表したフローチャートである。図5を参照すると、まず、電流監視部101内の前記フリーズの判定に用いるカウンタが0に設定される(ステップ401)。
【0030】
次に、電流監視部101は、CPU103の省電力端子から出力される端末状態信号に基づいて省電力状態か否かを判定する(ステップ402)。省電力状態であるか否かは、CPUから出力される省電力端子の信号状態から判定する。ここで、省電力状態であると判定した場合(ステップ402のYes)、電流監視部101は、フローの先頭に戻る(図5のAへ)。
【0031】
一方、ステップ402で省電力状態でないと判定した場合(ステップ402のNo)、電流監視部101は、電流値を測定する(ステップ403)。
【0032】
次に、電流監視部101は、前回測定した電流値と、今回測定した電流値との比較を行う(ステップ404)。前回測定値と今回測定値との差をAとしたとき、Aが所定のしきい値(前記変動幅Xに相当。)以上ならば(ステップ404の「X以上」)、フリーズ状態ではないと判断し、フローの先頭に戻る(図5のAへ)。
【0033】
一方、Aが前記しきい値X未満である場合(ステップ404の「X未満」)、電流監視部101は、カウンタ(Count)の値を1つ増加させる(ステップ405)。
【0034】
次に、電流監視部101は、カウンタの値がリセット判定値(Nとする)以上となったか否かを判定する(ステップ406)。カウンタ値がN未満ならば(ステップ406の「N未満」)、電流監視部101は、省電力状態の判定に戻る(図5のBへ)。
【0035】
一方、カウンタ値がN以上となっている場合(ステップ406の「N以上」)、電流監視部101は、フリーズ状態と判断して、リセット制御部102に対しリセット信号を送り、リセット処理を実施させる(ステップ407)。
【0036】
以上のように、本実施形態によれば、電流値が、フリーズ状態であることを示す場合、速やかにリセット復帰処理が行われる。この結果、ユーザがフリーズ状態に気づかない場合でも、すばやく復旧処理をさせることが可能となる。
【0037】
[第2の実施形態]
続いて、前記リセット制御部に前記CPUをリセットさせる前に、前記CPUにフリーズ状態の検査を行わせるようにした本発明の第2の実施形態について図面を参照して詳細に説明する。図6は、本発明の第2の実施形態の端末装置の構成を表わしたブロック図である。図6を参照すると、電流監視部501と、リセット制御部502と、CPU503と、ROM504と、RAM506と、を備えた構成が示されている。
【0038】
上記電流監視部501〜RAM506は、上記した第1の実施形態の電流監視部101〜RAM106と略同等であるので、以下、相違点を中心に説明する。電流監視部501およびCPU503には、互いに通知を行うための用の汎用入出力端子(GPIO)が設けられている。
【0039】
また、ROM504には、フリーズしている実行中アプリケーション(プログラム)の有無を確認する検査プログラムが格納されている。このような検査プログラムとしては、タスクマネージャーやプロセス監視ツールと呼ばれるプログラムと同等のものを用いることができる。
【0040】
電流監視部501は、端末装置が省電力状態ではない場合、上記した第1の実施形態と同様に、定期的にCPUの電流値を測定している。そして、電流値が定常状態になったことを検出した場合、電流監視部501は、直ちに、リセット制御部502にリセット信号を送出するのではなく、CPU503に対して通知を行い、CPU503からの応答が返ってくるのを待つ。
【0041】
CPU503は、電流監視部501からの通知を受けると、実行中アプリケーション(プログラム)の動作状況を確認する検査プログラムを実行する。前記検査プログラムにより、フリーズしている実行中アプリケーション(プログラム)の存在を検出できた場合、CPU503は、そのアプリケーション(プログラム)の再起動を試みる。一方、フリーズしている実行中アプリケーション(プログラム)がないと判断したら、電流監視部501に対しその旨の応答を返す。
【0042】
電流監視部501は、CPU503からの応答が返ってきた場合は、フリーズ状態ではないと判断する。一方、一定時間過ぎても、CPU503からの応答が返らない場合、電流監視部501は、フリーズ状態と判断し、リセット制御部502にリセット信号を送出する。
【0043】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図7は、本実施形態の端末装置の動作を表したフローチャートである。図7を参照すると、まず、電流監視部501内の前記フリーズの判定に用いるカウンタが0に設定される(ステップ601)。
【0044】
次に、電流監視部501は、CPU503の省電力端子から出力される端末状態信号に基づいて省電力状態であるか否かを判定する(ステップ602)。ここで、省電力状態であると判定した場合(ステップ602のYes)、電流監視部501は、フローの先頭に戻る(図7のAへ)。
【0045】
一方、ステップ602で省電力状態でないと判定した場合(ステップ602のNo)、電流監視部501は、電流値を測定する(ステップ603)。
【0046】
次に、電流監視部501は、前回測定した電流値と、今回測定した電流値との比較を行う(ステップ604)。前回測定値と今回測定値との差をAとしたとき、Aが所定のしきい値(Xとする)以上ならば(ステップ604の「X以上」)、フリーズ状態ではないと判断し、フローの先頭に戻る(図7のAへ)。
【0047】
一方、Aが前記しきい値X未満である場合(ステップ604の「X未満」)、電流監視部501は、カウンタ(Count)の値を1つ増加させる(ステップ605)。
【0048】
次に、電流監視部501は、カウンタの値がリセット判定値(Nとする)以上か否かを判定する(ステップ606)。カウンタ値がN未満ならば(ステップ606の「N未満」)、電流監視部501は、省電力状態の判定に戻る(図7のBへ)。
【0049】
一方、カウンタ値がN以上の場合(ステップ606の「N以上」)、電流監視部501は、フリーズ状態と判断して、CPU503へ通知を送り(ステップ607)、CPU503からの応答を待つ(ステップ608)。
【0050】
前記通知に対し、CPU503からの応答があった場合、電流監視部501は、フリーズ状態では無いと判断し、フローの先頭に戻る(図7のAへ)。
【0051】
一方、一定時間経っても応答が無い場合、電流監視部501は、フリーズ状態であると判断し、リセット制御部502に対しリセット信号を送り、リセット処理を実施させる(ステップ609)。
【0052】
図8は、前記ステップ607で通知を受け取ったCPU503側の動作を表したフローチャートである。図8を参照すると、まず、電流監視部501からの通知を受信したCPU503は、検査プログラムを実行する(ステップ701)。
【0053】
なお、CPU503が、すでにフリーズ状態にあり、電流監視部501からの通知を認識できない場合、これ以降の処理は実施されず、ステップ704で実施する電流監視部501への応答を返せない。この結果、電流監視部501はフリーズ状態にあると判断し、リセット信号を送出することになる。
【0054】
前記検査プログラムを実行した結果、フリーズしている実行中アプリケーション(プログラム)が無いと判定した場合(ステップ702のNo)、CPU503は、電流監視部501へその旨の応答を返す(ステップ704)。
【0055】
一方、フリーズしている実行中アプリケーション(プログラム)があると判定した場合(ステップ702のYes)、CPU503は、当該フリーズしている実行中アプリケーション(プログラム)の再起動を試みる(ステップ703)。当該実行中アプリケーション(プログラム)の再起動を試みた後、CPU503は、再度検査プログラムを実行し、フリーズしている実行中アプリケーション(プログラム)があるか否かを確認する(ステップ701へ)。ここで、うまく再起動できない場合、CPU503は、ループに陥ることになる。この結果、電流監視部501に対する応答が返されないため、電流監視部501はフリーズと判断し、リセット信号を送出することになる。
【0056】
以上のように、本実施形態は、CPU503に対し通知を行い、CPU503から応答を待つようにしたため、上記した第1の実施形態と比較して、CPU503がフリーズ状態に陥ったのか否かを、より正確に判断することができる。また本実施形態によれば、フリーズしたソフトウェアの再起動を試みるようにしたため、リセットに至らずに正常復帰させる可能性を上げることができる。
【0057】
続いて、本発明を複数のCPUを搭載した端末装置に適用した本発明の第3の実施形態について図面を参照して詳細に説明する。近年の携帯端末装置に見られるように、端末装置が複数のCPUを搭載している場合、CPUが互いに他方がフリーズ状態に陥ったか否かを監視することが可能になる。そこで、本実施形態では、上記第1、2の実施形態の電流監視部101、501が行っていた定常状態の判定を、CPUで実施するようにしている。
【0058】
図9は、本発明の第3の実施形態の端末装置の構成を表わしたブロック図である。図9を参照すると、電流測定部801、802と、リセット制御部803と、CPU804、805と、ROM806と、RAM807と、を備えた構成が示されている。
【0059】
電流測定部801、802は、上記した第1、第2の実施形態の電流監視部101、501内の電流測定部に相当し、電流値の測定を行う電流測定回路によって構成される。電流測定部801、802は、上記した第1、第2の実施形態の電流監視部101、501とは異なり、電流の定常状態の判定やリセット制御部803へのリセット信号の送出を行わない。
【0060】
リセット制御部803は、CPU804またはCPU805の一方からリセット動作の要求を受けると、他方のCPUのリセット端子(Reset端子)に、リセット信号を出力することにより当該CPUにリセット動作を行わせる。
【0061】
CPU804、805は、端末装置の各部を制御するユニットであり、リセット端子(Reset端子)からリセット信号が入力されると、リセット動作を行う。また、CPU804、805は、省電力端子を備え、互いに自身が省電力モードであるか否かを示す信号を出力する。さらに、CPU804、805は、対向するCPUの電流測定部801、802にて測定された電流値の推移と、前記CPUが省電力モードであるか否かとに基づいて、端末装置がフリーズ状態になったか否かを確認する。前記確認の結果、フリーズ状態になった可能性があることを検出した場合、CPU804、805は、直ちに、リセット制御部803にリセット信号を送出するのではなく、他方のCPUに対して通知を行い、当該CPUからの応答が返ってくるのを待つ。
【0062】
前記通知を行ったCPUからの応答が返ってきた場合、CPU804、805は、フリーズ状態ではないと判断する。一方、一定時間過ぎても、当該CPUからの応答が返らない場合、CPU804、805は、フリーズ状態と判断し、リセット制御部803にリセット信号を送出する。
【0063】
ROM806およびRAM807は、上記した第1の実施形態のROM104およびRAM106と略同等である。
【0064】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図10は、本実施形態の端末装置の動作を表したフローチャートである。図10を参照すると、まず、CPU804、805それぞれで、前記フリーズの判定に用いるカウンタが0に設定される(ステップ901)。
【0065】
次に、CPU804、805は、他方のCPUの省電力端子から出力される端末状態信号に基づいて省電力状態か否かを判定する(ステップ902)。ここで、省電力状態であると判定した場合(ステップ902のYes)、CPU804、805は、フローの先頭に戻る(図10のAへ)。
【0066】
一方、ステップ902で省電力状態でないと判定した場合(ステップ902のNo)、CPU804、805は、電流値を測定する(ステップ903)。ここで、CPU804は、電流測定部802からCPU805に供給される電流値を測定し、CPU805は、電流測定部801からCPU804に供給される電流値を測定する。
【0067】
次に、CPU804、805は、それぞれ、前回測定した電流値と、今回測定した電流値との比較を行う(ステップ904)。前回測定値と今回測定値との差をAとしたとき、Aが所定のしきい値(Xとする)以上ならば(ステップ904の「X以上」)、フリーズ状態ではないと判断し、フローの先頭に戻る(図10のAへ)。
【0068】
一方、Aが前記しきい値X未満である場合(ステップ904の「X未満」)、CPU804、805は、カウンタ(Count)の値を1つ増加させる(ステップ905)。
【0069】
次に、CPU804、805は、それぞれ、カウンタの値がリセット判定値(Nとする)以上か否かを判定する(ステップ906)。カウンタ値がN未満ならば(ステップ906の「N未満」)、CPU804、805は、省電力状態の判定に戻る(図10のBへ)。
【0070】
一方、カウンタ値がN以上の場合(ステップ906の「N以上」)、CPU804、805は、フリーズ状態と判断して、他方のCPUへ通知を送り(ステップ907)、当該CPUからの応答を待つ(ステップ908)。
【0071】
前記通知に対し、前記他方のCPUからの応答があった場合、CPU804、805は、フリーズ状態では無いと判断し、フローの先頭に戻る(図10のAへ)。
【0072】
一方、一定時間経っても応答が無い場合、CPU804、805は、フリーズ状態であると判断し、リセット制御部803に対しリセット信号を送り、リセット処理を実施させる(ステップ909)。
【0073】
図11は、前記ステップ907で通知を受け取ったCPU側の動作を表したフローチャートである。図11を参照すると、まず、CPU804または805からの通知を受信したCPU805または804は、検査プログラムを実行する(ステップ1001)。
【0074】
なお、前記通知を受けたCPUが、すでにフリーズ状態にあり、図10のステップ907にて送出される通知を認識できない場合、これ以降の処理は実施されず、ステップ1004で応答を返せない。この場合、前記通知の送信元のCPUはフリーズ状態にあると判断し、リセット信号を送出することになる。
【0075】
前記検査プログラムを実行した結果、フリーズしている実行中アプリケーション(プログラム)が無いと判定した場合(ステップ1002のNo)、前記通知を受信したCPU805または804は、前記通知の送信元のCPU804または805に対し、その旨の応答を返す(ステップ1004)。
【0076】
一方、フリーズしている実行中アプリケーション(プログラム)があると判定した場合(ステップ1002のYes)、前記通知を受信したCPU805または804は、当該フリーズしている実行中アプリケーション(プログラム)の再起動を試みる(ステップ1003)。前記実行中アプリケーション(プログラム)の再起動を試みた後、前記通知を受信したCPU805または804は、再度検査プログラムを実行し、フリーズしている実行中アプリケーション(プログラム)があるか否か確認する(ステップ1001へ)。ここで、うまく再起動できない場合、前記通知を受信したCPU805または804は、ループに陥ることになる。この結果、前記通知の送信元のCPU804または805に対する応答が返されないため、前記通知の送信元のCPU804または805はフリーズと判断し、リセット信号を送出することになる。
【0077】
以上のように、本発明は、複数のCPUを持つ構成の端末装置にも適用することが可能である。また、この場合、既存のCPUに電流監視部としての機能を担わせることになるため、別途独立して動作する電流監視部は不要となる。
【0078】
以上、本発明の好適な実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した第1、第2の実施形態では、電流監視部101、501を設けて電流値の監視を行うものとして説明したが、リセット制御部102、502側が、電流監視部として動作するようにしてもよい。
【0079】
また、上記した実施形態では、前回測定値と今回測定値との差Aが所定のしきい値X未満である状態がNカウント以上継続したときに、フリーズ状態にあると判定するものとして説明したが、これらに加えて、当該区間の測定値が、端末装置のスリープ時消費電流を超え、かつ、最大消費電流未満の一定の範囲内にあることを確認するようにしてもよい。このようにすることで、特定のアプリケーションプログラムの暴走等によるフリーズ状態の発生を制度よく検出することができる。また、この場合に、前記リセット判定しきい値Nを短くするなどしてもよい。
【0080】
また、前記リセット判定しきい値Nとしては、端末装置の仕様や搭載するアプリケーションに応じて種々の値を設定することが可能であるが、例えば、周辺回路へのタイムアウト判定値以上とするなどの下限値を設けることも望ましい。
【0081】
また、上記した各実施形態では、省電力状態(省電力モード)である場合に、電流値の測定自体を行わないものとして説明したが、電流値の測定は継続して行って、リセット制御部102、502、CPU804、805によるリセット動作を抑止するようにしてもよい。
【0082】
また、上記した各実施形態では、省電力状態(省電力モード)では、電流値が定常状態になっても、リセット動作を行わないものとして説明したが、端末装置が備えるその他動作モードにおいても正常に働いていると判定できる限り、リセット動作を抑止するよう設定してもよい。例えば、省電力状態(省電力モード)にはならないものの、一定期間の経過等を契機として、スクリーンセーバーやデジタルフォトフレームのようなスライド表示、楽曲の再生等の表示を行う機能を備えた端末装置がある。このような端末装置においては、これら各動作モードでCPUに流れる電流値を事前に測定し、あるいは、CPUから端末状態信号としてこれらの動作モードであることを把握できるようにしておき、電流値が定常状態になっても、リセット動作を抑止するようにすればよい。その一方で、これら動作モードに反する電流値の定常状態が観測されたときに、リセット動作を行うことで、ユーザの手を煩わせることなく、リセット動作を行うことが可能になる。
【符号の説明】
【0083】
101、501 電流監視部
102、502、803 リセット制御部
103、503、804、805 CPU
104、504、806 ROM
106、506、807 RAM
801、802 電流測定部
【技術分野】
【0001】
本発明は、端末装置並びにフリーズ検出方法及び端末装置の制御方法に関し、特に、実行中のアプリケーションの暴走等によるフリーズ状態の発生を検出する機能を備えた端末装置並びにフリーズ検出方法及び端末装置の制御方法に関する。
【背景技術】
【0002】
実行中のアプリケーションの暴走やデッドロック等により、端末装置がフリーズ(「ハングアップ」とも呼ばれるが本明細書では「フリーズ」を用いる。)状態に陥った場合の復帰手段として、ウォッチドッグタイマによるリセット復帰を行う暴走監視機能が知られている。また、この種の機能が働かない場合に電池の脱着等を行わずに、専用のリセットボタンを押下することでリセット復帰できるものも知られている。
【0003】
特許文献1、2には、上記専用のリセットボタンではなく、既存のキー長押し検出によるリセット復帰できるようにした端末装置が開示されている。
【0004】
また、特許文献3には、電池から出力される出力電流監視抵抗に流れる電流を計測する電流計測部と、各種アプリケーションプログラムを実行する制御部と、前記制御部にて実行可能な複数のアプリケーションプログラム毎に設定される電流閾値を記憶する記憶部と、を備え、前記電流計測部により計測される電流値と、実行中のアプリケーションプログラムの種別とを監視し、前記電流計測部により計測された電流値が、現在実行中のアプリケーションプログラムの種別に対応する電流閾値を超えた場合にリセット処理を実行し、もしくは電源オフ処理を実行する携帯電子機器が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2004−140457号公報
【特許文献2】特開2010−267188号公報
【特許文献3】特開2009−181366号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
以下の分析は、本発明によって与えられたものである。上記したウォッチドッグタイマによる暴走監視機能は、OS(Operating System)によって提供され、暴走監視機能の監視が及ばないプログラム内部の不具合によるフリーズでは、前記暴走監視機能が検知できないためにウォッチドッグタイマのクリア動作が実行されてしまい、フリーズ状態から抜け出すことができないという問題点がある。
【0007】
また、上記特許文献1、2のようなユーザの操作によってリセット復帰を行なう方式では、ユーザがフリーズに気づくまでの間、フリーズ状態が継続されてしまうという問題点がある。
【0008】
また、特許文献3の技術によれば、自動的なリセット処理または電源オフ処理を実現できるが、同公報の図5に示されたとおり、アプリケーションプログラム毎に、電流しきい値を設定しなければならないという問題点がある。例えば、インターネット上の各種サイトから、アプリケーションプログラムを購入したような場合、これら新規にインストールしたアプリケーションプログラムについて電流しきい値を設定しなければ、リセット処理等の対象外となってしまう。
【0009】
本発明は、上記した事情に鑑みてなされたものであって、その目的とするところは、上記した電流しきい値等の細かい設定をすることなく、フリーズ状態を検出することのできる方法およびこれを利用したリセット機能を備えた端末装置を提供することにある。
【課題を解決するための手段】
【0010】
本発明の第1の視点によれば、電源からCPU(Central Processing Unit)に供給される電流値を測定する電流測定部と、前記CPUをリセットするリセット制御部と、前記CPUと独立して動作し、動作モードに反した電流値の定常状態が観測された場合、前記リセット制御部に前記CPUをリセットさせる電流監視部と、を備える端末装置が提供される。
【0011】
本発明の第2の視点によれば、電源から端末装置のCPUに供給される電流値を監視するステップと、動作モードに反した電流値の定常状態が観測された場合、前記CPUがフリーズ状態になったものと判定するステップと、を含む端末装置のフリーズ検出方法が提供される。なお、本方法は、端末装置という特定の機械に結びつけられている。
【発明の効果】
【0012】
本発明によれば、細かい設定をすることなく、自動的にフリーズ状態を検出し、リセット処理等を行うことが可能となる。
【図面の簡単な説明】
【0013】
【図1】本発明の概要を説明するための図である。
【図2】本発明の第1の実施形態の端末装置の構成を表わしたブロック図である。
【図3】本発明の第1の実施形態の端末装置にて測定される電流値とカウンタの動きを説明するための図である。
【図4】本発明の第1の実施形態の端末装置にて測定される電流値とカウンタの動きを説明するための別の図である。
【図5】本発明の第1の実施形態の端末装置の動作を表したフローチャートである。
【図6】本発明の第2の実施形態の端末装置の構成を表わしたブロック図である。
【図7】本発明の第2の実施形態の端末装置の動作を表したフローチャートである。
【図8】本発明の第2の実施形態の端末装置のCPUの動作を表したフローチャートである。
【図9】本発明の第3の実施形態の端末装置の構成を表わしたブロック図である。
【図10】本発明の第3の実施形態の端末装置の動作を表したフローチャートである。
【図11】本発明の第3の実施形態の端末装置のCPUの動作を表したフローチャートである。
【発明を実施するための形態】
【0014】
はじめに、本発明の概要について図面を参照して説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
【0015】
本発明は、図1に示すように、電源からCPU(Central Processing Unit)に供給される電流値を測定する電流測定部を備えた電流監視部101と、CPU103をリセットするリセット制御部102と、を備えた端末装置により実現できる。前記電流監視部101は、CPU103と独立して動作し、現在の端末装置の動作モードに反した電流値の定常状態が観測された場合、リセット制御部102にCPU103をリセットさせる動作を行う。
【0016】
ここで、上記電流値の定常状態が観測された場合に、CPU103がフリーズ状態に陥ったと判断してよい理由について説明する。
【0017】
フリーズ状態の原因の一つとして無限ループの発生が挙げられる。とりわけ、電池等で動作する携帯端末では、消費電力を抑えるため、永続的に常駐動作するバックグラウンドタスクが少なく、かつ、イベントドリブンで動作するように設計されている。このため、フォアグラウンドで動作するアプリケーションタスクが無限ループに陥った場合に、他のタスクを呼び出すイベントが発生しにくい。そして、フォアグラウンドで動作するアプリケーションタスクから周辺回路へのアクセス(プロトコル)がタイムアウトし、一定時間周辺回路へのアクセスが途絶えると消費電流も一定状態に落ち着くことが多い。本発明は、この性質を利用して、端末装置がフリーズ状態に陥ったことを検出するものである。
【0018】
但し、端末装置には、一定期間操作がなされないこと等を契機として、省電力モードに遷移したり、スクリーンセーバーやデジタルフォトフレームのようにスライド等の表示を行う機能を備えたものがある。このような端末装置においては、これら各動作モードでCPUに流れる電流値を事前に測定しておき、電流値が定常状態になっても、リセット動作を抑止するようにする。その一方で、これら動作モードに反する電流値の定常状態が観測されたときに、リセット動作を行うことで、ユーザの手を煩わせることなく、リセット動作を行うことが可能になる。
【0019】
上記した原理にてフリーズ状態を検出する本発明は、種々の端末装置に適用することが可能であるが、多数のアプリケーションプログラムが実行されることによりフリーズ状態に陥りやすい傾向にある携帯端末装置に好適に適用することが可能である。
【0020】
[第1の実施形態]
続いて、本発明の第1の実施形態について図面を参照して詳細に説明する。図2は、本発明の第1の実施形態の端末装置の構成を表わしたブロック図である。図2を参照すると、電流監視部101と、リセット制御部102と、CPU103と、ROM(Read−Only Memory)104と、RAM(Random Access Memory)106と、を備えた構成が示されている。
【0021】
電流監視部101は、電源からCPU103に供給される電流値を測定する電流測定部を備え、CPU103と独立して動作して、前記測定した電流値の推移と、端末装置が省電力状態にあるか否かとに基づいてリセットの要否を判定する。ここで、リセット要と判定した場合、電流監視部101は、リセット制御部102にリセット動作を要求する。なお、端末装置が省電力モードであるか否かは、CPU103の省電力端子から出力される端末状態信号に基づいて判別される。なお、電流監視部101内の電流測定部の具体的構成としては特許文献3の電流監視抵抗と電流アンプとを用いた構成等を用いることができる。
【0022】
前記リセットの要否の判定は、例えば、以下のようにして行うことができる。電流監視部101は、図3に示すように、ある時点で測定された電流値が、前時点で測定された電流値に対し、クロック動作などから派生する所定の範囲の変動幅Xに収まっている場合(以下、このような状態を電流値の高低に拘らず「定常状態」と呼ぶ。)、内部に備えられたカウンタを増大させていく。そして、前記カウンタの値が所定のリセット判定しきい値Nを超えると、電流監視部101は、リセット制御部102にリセット信号を出力する。なお、前記変動幅を超えたか否かを判定するための変動幅Xおよびリセット判定しきい値Nについては、ROM104等に保存するようにし、適宜、変更できるようにしておいてもよい。
【0023】
例えば、図3の時刻t0から時刻t1の間は、各時点で測定された電流値がそれぞれ前時刻の電流値より前記所定の範囲を超えて変化しているため、カウンタは0のままである。時刻t2、t3では、それぞれ時刻t1、t2に対し、電流値の変化が前記所定の範囲X内であるため、カウンタが増大している。しかしながら、その後、電流値が前記所定の範囲Xを超えて変化したため、カウンタは0にクリアされる。さらに、その後、時刻t4、t5で再度カウンタが増大し、その傾向が継続したため、時刻t6では、カウンタがリセット判定しきい値Nとなりリセット信号が出力されている。
【0024】
図4は、端末装置が省電力状態(省電力モード)にある場合の電流値の変化とカウンタの動きを示した図である。時刻t11から時刻t13の間は、各時点で測定された電流値がそれぞれ前時刻の電流値より前記所定の範囲Xを超えて変化しているため、カウンタは0のままである。時刻t13から時刻t14までは、各時点で測定された電流値の変化が前記所定の範囲X内であるが、CPU103より省電力状態(省電力モード)であることが通知されているため、カウンタは増大しない。
【0025】
リセット制御部102は、端末装置のリセット制御を行うブロックである。具体的には、リセット制御部102は、CPU103のリセット端子(Reset端子)に、リセット信号を出力することによりCPUにリセット動作を行わせる。
【0026】
CPU103は、端末装置の各部を制御するユニットであり、リセット端子(Reset端子)からリセット信号が入力されると、リセット動作を行う。また、CPU103は、省電力端子を備え、電流監視部101に対し、省電力モードであるか否かを示す信号を出力する。
【0027】
ROM104は、CPU103に実行させるプログラム等が書き込まれた不揮発性のメモリであり、EEPROM(Electrically Erasable Programmable ROM)などによって構成される。
【0028】
RAM106は、CPU103が随時読み書きするデータ等を格納するためのメモリである。
【0029】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図5は、本実施形態の端末装置の動作を表したフローチャートである。図5を参照すると、まず、電流監視部101内の前記フリーズの判定に用いるカウンタが0に設定される(ステップ401)。
【0030】
次に、電流監視部101は、CPU103の省電力端子から出力される端末状態信号に基づいて省電力状態か否かを判定する(ステップ402)。省電力状態であるか否かは、CPUから出力される省電力端子の信号状態から判定する。ここで、省電力状態であると判定した場合(ステップ402のYes)、電流監視部101は、フローの先頭に戻る(図5のAへ)。
【0031】
一方、ステップ402で省電力状態でないと判定した場合(ステップ402のNo)、電流監視部101は、電流値を測定する(ステップ403)。
【0032】
次に、電流監視部101は、前回測定した電流値と、今回測定した電流値との比較を行う(ステップ404)。前回測定値と今回測定値との差をAとしたとき、Aが所定のしきい値(前記変動幅Xに相当。)以上ならば(ステップ404の「X以上」)、フリーズ状態ではないと判断し、フローの先頭に戻る(図5のAへ)。
【0033】
一方、Aが前記しきい値X未満である場合(ステップ404の「X未満」)、電流監視部101は、カウンタ(Count)の値を1つ増加させる(ステップ405)。
【0034】
次に、電流監視部101は、カウンタの値がリセット判定値(Nとする)以上となったか否かを判定する(ステップ406)。カウンタ値がN未満ならば(ステップ406の「N未満」)、電流監視部101は、省電力状態の判定に戻る(図5のBへ)。
【0035】
一方、カウンタ値がN以上となっている場合(ステップ406の「N以上」)、電流監視部101は、フリーズ状態と判断して、リセット制御部102に対しリセット信号を送り、リセット処理を実施させる(ステップ407)。
【0036】
以上のように、本実施形態によれば、電流値が、フリーズ状態であることを示す場合、速やかにリセット復帰処理が行われる。この結果、ユーザがフリーズ状態に気づかない場合でも、すばやく復旧処理をさせることが可能となる。
【0037】
[第2の実施形態]
続いて、前記リセット制御部に前記CPUをリセットさせる前に、前記CPUにフリーズ状態の検査を行わせるようにした本発明の第2の実施形態について図面を参照して詳細に説明する。図6は、本発明の第2の実施形態の端末装置の構成を表わしたブロック図である。図6を参照すると、電流監視部501と、リセット制御部502と、CPU503と、ROM504と、RAM506と、を備えた構成が示されている。
【0038】
上記電流監視部501〜RAM506は、上記した第1の実施形態の電流監視部101〜RAM106と略同等であるので、以下、相違点を中心に説明する。電流監視部501およびCPU503には、互いに通知を行うための用の汎用入出力端子(GPIO)が設けられている。
【0039】
また、ROM504には、フリーズしている実行中アプリケーション(プログラム)の有無を確認する検査プログラムが格納されている。このような検査プログラムとしては、タスクマネージャーやプロセス監視ツールと呼ばれるプログラムと同等のものを用いることができる。
【0040】
電流監視部501は、端末装置が省電力状態ではない場合、上記した第1の実施形態と同様に、定期的にCPUの電流値を測定している。そして、電流値が定常状態になったことを検出した場合、電流監視部501は、直ちに、リセット制御部502にリセット信号を送出するのではなく、CPU503に対して通知を行い、CPU503からの応答が返ってくるのを待つ。
【0041】
CPU503は、電流監視部501からの通知を受けると、実行中アプリケーション(プログラム)の動作状況を確認する検査プログラムを実行する。前記検査プログラムにより、フリーズしている実行中アプリケーション(プログラム)の存在を検出できた場合、CPU503は、そのアプリケーション(プログラム)の再起動を試みる。一方、フリーズしている実行中アプリケーション(プログラム)がないと判断したら、電流監視部501に対しその旨の応答を返す。
【0042】
電流監視部501は、CPU503からの応答が返ってきた場合は、フリーズ状態ではないと判断する。一方、一定時間過ぎても、CPU503からの応答が返らない場合、電流監視部501は、フリーズ状態と判断し、リセット制御部502にリセット信号を送出する。
【0043】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図7は、本実施形態の端末装置の動作を表したフローチャートである。図7を参照すると、まず、電流監視部501内の前記フリーズの判定に用いるカウンタが0に設定される(ステップ601)。
【0044】
次に、電流監視部501は、CPU503の省電力端子から出力される端末状態信号に基づいて省電力状態であるか否かを判定する(ステップ602)。ここで、省電力状態であると判定した場合(ステップ602のYes)、電流監視部501は、フローの先頭に戻る(図7のAへ)。
【0045】
一方、ステップ602で省電力状態でないと判定した場合(ステップ602のNo)、電流監視部501は、電流値を測定する(ステップ603)。
【0046】
次に、電流監視部501は、前回測定した電流値と、今回測定した電流値との比較を行う(ステップ604)。前回測定値と今回測定値との差をAとしたとき、Aが所定のしきい値(Xとする)以上ならば(ステップ604の「X以上」)、フリーズ状態ではないと判断し、フローの先頭に戻る(図7のAへ)。
【0047】
一方、Aが前記しきい値X未満である場合(ステップ604の「X未満」)、電流監視部501は、カウンタ(Count)の値を1つ増加させる(ステップ605)。
【0048】
次に、電流監視部501は、カウンタの値がリセット判定値(Nとする)以上か否かを判定する(ステップ606)。カウンタ値がN未満ならば(ステップ606の「N未満」)、電流監視部501は、省電力状態の判定に戻る(図7のBへ)。
【0049】
一方、カウンタ値がN以上の場合(ステップ606の「N以上」)、電流監視部501は、フリーズ状態と判断して、CPU503へ通知を送り(ステップ607)、CPU503からの応答を待つ(ステップ608)。
【0050】
前記通知に対し、CPU503からの応答があった場合、電流監視部501は、フリーズ状態では無いと判断し、フローの先頭に戻る(図7のAへ)。
【0051】
一方、一定時間経っても応答が無い場合、電流監視部501は、フリーズ状態であると判断し、リセット制御部502に対しリセット信号を送り、リセット処理を実施させる(ステップ609)。
【0052】
図8は、前記ステップ607で通知を受け取ったCPU503側の動作を表したフローチャートである。図8を参照すると、まず、電流監視部501からの通知を受信したCPU503は、検査プログラムを実行する(ステップ701)。
【0053】
なお、CPU503が、すでにフリーズ状態にあり、電流監視部501からの通知を認識できない場合、これ以降の処理は実施されず、ステップ704で実施する電流監視部501への応答を返せない。この結果、電流監視部501はフリーズ状態にあると判断し、リセット信号を送出することになる。
【0054】
前記検査プログラムを実行した結果、フリーズしている実行中アプリケーション(プログラム)が無いと判定した場合(ステップ702のNo)、CPU503は、電流監視部501へその旨の応答を返す(ステップ704)。
【0055】
一方、フリーズしている実行中アプリケーション(プログラム)があると判定した場合(ステップ702のYes)、CPU503は、当該フリーズしている実行中アプリケーション(プログラム)の再起動を試みる(ステップ703)。当該実行中アプリケーション(プログラム)の再起動を試みた後、CPU503は、再度検査プログラムを実行し、フリーズしている実行中アプリケーション(プログラム)があるか否かを確認する(ステップ701へ)。ここで、うまく再起動できない場合、CPU503は、ループに陥ることになる。この結果、電流監視部501に対する応答が返されないため、電流監視部501はフリーズと判断し、リセット信号を送出することになる。
【0056】
以上のように、本実施形態は、CPU503に対し通知を行い、CPU503から応答を待つようにしたため、上記した第1の実施形態と比較して、CPU503がフリーズ状態に陥ったのか否かを、より正確に判断することができる。また本実施形態によれば、フリーズしたソフトウェアの再起動を試みるようにしたため、リセットに至らずに正常復帰させる可能性を上げることができる。
【0057】
続いて、本発明を複数のCPUを搭載した端末装置に適用した本発明の第3の実施形態について図面を参照して詳細に説明する。近年の携帯端末装置に見られるように、端末装置が複数のCPUを搭載している場合、CPUが互いに他方がフリーズ状態に陥ったか否かを監視することが可能になる。そこで、本実施形態では、上記第1、2の実施形態の電流監視部101、501が行っていた定常状態の判定を、CPUで実施するようにしている。
【0058】
図9は、本発明の第3の実施形態の端末装置の構成を表わしたブロック図である。図9を参照すると、電流測定部801、802と、リセット制御部803と、CPU804、805と、ROM806と、RAM807と、を備えた構成が示されている。
【0059】
電流測定部801、802は、上記した第1、第2の実施形態の電流監視部101、501内の電流測定部に相当し、電流値の測定を行う電流測定回路によって構成される。電流測定部801、802は、上記した第1、第2の実施形態の電流監視部101、501とは異なり、電流の定常状態の判定やリセット制御部803へのリセット信号の送出を行わない。
【0060】
リセット制御部803は、CPU804またはCPU805の一方からリセット動作の要求を受けると、他方のCPUのリセット端子(Reset端子)に、リセット信号を出力することにより当該CPUにリセット動作を行わせる。
【0061】
CPU804、805は、端末装置の各部を制御するユニットであり、リセット端子(Reset端子)からリセット信号が入力されると、リセット動作を行う。また、CPU804、805は、省電力端子を備え、互いに自身が省電力モードであるか否かを示す信号を出力する。さらに、CPU804、805は、対向するCPUの電流測定部801、802にて測定された電流値の推移と、前記CPUが省電力モードであるか否かとに基づいて、端末装置がフリーズ状態になったか否かを確認する。前記確認の結果、フリーズ状態になった可能性があることを検出した場合、CPU804、805は、直ちに、リセット制御部803にリセット信号を送出するのではなく、他方のCPUに対して通知を行い、当該CPUからの応答が返ってくるのを待つ。
【0062】
前記通知を行ったCPUからの応答が返ってきた場合、CPU804、805は、フリーズ状態ではないと判断する。一方、一定時間過ぎても、当該CPUからの応答が返らない場合、CPU804、805は、フリーズ状態と判断し、リセット制御部803にリセット信号を送出する。
【0063】
ROM806およびRAM807は、上記した第1の実施形態のROM104およびRAM106と略同等である。
【0064】
続いて、本実施形態の動作について図面を参照して詳細に説明する。図10は、本実施形態の端末装置の動作を表したフローチャートである。図10を参照すると、まず、CPU804、805それぞれで、前記フリーズの判定に用いるカウンタが0に設定される(ステップ901)。
【0065】
次に、CPU804、805は、他方のCPUの省電力端子から出力される端末状態信号に基づいて省電力状態か否かを判定する(ステップ902)。ここで、省電力状態であると判定した場合(ステップ902のYes)、CPU804、805は、フローの先頭に戻る(図10のAへ)。
【0066】
一方、ステップ902で省電力状態でないと判定した場合(ステップ902のNo)、CPU804、805は、電流値を測定する(ステップ903)。ここで、CPU804は、電流測定部802からCPU805に供給される電流値を測定し、CPU805は、電流測定部801からCPU804に供給される電流値を測定する。
【0067】
次に、CPU804、805は、それぞれ、前回測定した電流値と、今回測定した電流値との比較を行う(ステップ904)。前回測定値と今回測定値との差をAとしたとき、Aが所定のしきい値(Xとする)以上ならば(ステップ904の「X以上」)、フリーズ状態ではないと判断し、フローの先頭に戻る(図10のAへ)。
【0068】
一方、Aが前記しきい値X未満である場合(ステップ904の「X未満」)、CPU804、805は、カウンタ(Count)の値を1つ増加させる(ステップ905)。
【0069】
次に、CPU804、805は、それぞれ、カウンタの値がリセット判定値(Nとする)以上か否かを判定する(ステップ906)。カウンタ値がN未満ならば(ステップ906の「N未満」)、CPU804、805は、省電力状態の判定に戻る(図10のBへ)。
【0070】
一方、カウンタ値がN以上の場合(ステップ906の「N以上」)、CPU804、805は、フリーズ状態と判断して、他方のCPUへ通知を送り(ステップ907)、当該CPUからの応答を待つ(ステップ908)。
【0071】
前記通知に対し、前記他方のCPUからの応答があった場合、CPU804、805は、フリーズ状態では無いと判断し、フローの先頭に戻る(図10のAへ)。
【0072】
一方、一定時間経っても応答が無い場合、CPU804、805は、フリーズ状態であると判断し、リセット制御部803に対しリセット信号を送り、リセット処理を実施させる(ステップ909)。
【0073】
図11は、前記ステップ907で通知を受け取ったCPU側の動作を表したフローチャートである。図11を参照すると、まず、CPU804または805からの通知を受信したCPU805または804は、検査プログラムを実行する(ステップ1001)。
【0074】
なお、前記通知を受けたCPUが、すでにフリーズ状態にあり、図10のステップ907にて送出される通知を認識できない場合、これ以降の処理は実施されず、ステップ1004で応答を返せない。この場合、前記通知の送信元のCPUはフリーズ状態にあると判断し、リセット信号を送出することになる。
【0075】
前記検査プログラムを実行した結果、フリーズしている実行中アプリケーション(プログラム)が無いと判定した場合(ステップ1002のNo)、前記通知を受信したCPU805または804は、前記通知の送信元のCPU804または805に対し、その旨の応答を返す(ステップ1004)。
【0076】
一方、フリーズしている実行中アプリケーション(プログラム)があると判定した場合(ステップ1002のYes)、前記通知を受信したCPU805または804は、当該フリーズしている実行中アプリケーション(プログラム)の再起動を試みる(ステップ1003)。前記実行中アプリケーション(プログラム)の再起動を試みた後、前記通知を受信したCPU805または804は、再度検査プログラムを実行し、フリーズしている実行中アプリケーション(プログラム)があるか否か確認する(ステップ1001へ)。ここで、うまく再起動できない場合、前記通知を受信したCPU805または804は、ループに陥ることになる。この結果、前記通知の送信元のCPU804または805に対する応答が返されないため、前記通知の送信元のCPU804または805はフリーズと判断し、リセット信号を送出することになる。
【0077】
以上のように、本発明は、複数のCPUを持つ構成の端末装置にも適用することが可能である。また、この場合、既存のCPUに電流監視部としての機能を担わせることになるため、別途独立して動作する電流監視部は不要となる。
【0078】
以上、本発明の好適な実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した第1、第2の実施形態では、電流監視部101、501を設けて電流値の監視を行うものとして説明したが、リセット制御部102、502側が、電流監視部として動作するようにしてもよい。
【0079】
また、上記した実施形態では、前回測定値と今回測定値との差Aが所定のしきい値X未満である状態がNカウント以上継続したときに、フリーズ状態にあると判定するものとして説明したが、これらに加えて、当該区間の測定値が、端末装置のスリープ時消費電流を超え、かつ、最大消費電流未満の一定の範囲内にあることを確認するようにしてもよい。このようにすることで、特定のアプリケーションプログラムの暴走等によるフリーズ状態の発生を制度よく検出することができる。また、この場合に、前記リセット判定しきい値Nを短くするなどしてもよい。
【0080】
また、前記リセット判定しきい値Nとしては、端末装置の仕様や搭載するアプリケーションに応じて種々の値を設定することが可能であるが、例えば、周辺回路へのタイムアウト判定値以上とするなどの下限値を設けることも望ましい。
【0081】
また、上記した各実施形態では、省電力状態(省電力モード)である場合に、電流値の測定自体を行わないものとして説明したが、電流値の測定は継続して行って、リセット制御部102、502、CPU804、805によるリセット動作を抑止するようにしてもよい。
【0082】
また、上記した各実施形態では、省電力状態(省電力モード)では、電流値が定常状態になっても、リセット動作を行わないものとして説明したが、端末装置が備えるその他動作モードにおいても正常に働いていると判定できる限り、リセット動作を抑止するよう設定してもよい。例えば、省電力状態(省電力モード)にはならないものの、一定期間の経過等を契機として、スクリーンセーバーやデジタルフォトフレームのようなスライド表示、楽曲の再生等の表示を行う機能を備えた端末装置がある。このような端末装置においては、これら各動作モードでCPUに流れる電流値を事前に測定し、あるいは、CPUから端末状態信号としてこれらの動作モードであることを把握できるようにしておき、電流値が定常状態になっても、リセット動作を抑止するようにすればよい。その一方で、これら動作モードに反する電流値の定常状態が観測されたときに、リセット動作を行うことで、ユーザの手を煩わせることなく、リセット動作を行うことが可能になる。
【符号の説明】
【0083】
101、501 電流監視部
102、502、803 リセット制御部
103、503、804、805 CPU
104、504、806 ROM
106、506、807 RAM
801、802 電流測定部
【特許請求の範囲】
【請求項1】
電源からCPUに供給される電流値を測定する電流測定部と、
前記CPUをリセットするリセット制御部と、
前記CPUと独立して動作し、動作モードに反した電流値の定常状態が観測された場合、前記リセット制御部に前記CPUをリセットさせる電流監視部と、を備える端末装置。
【請求項2】
前記電流監視部は、電流値の変動が所定の範囲に収まった状態が、所定の期間継続したときに、前記電流値が定常状態になったものと判定する請求項1の端末装置。
【請求項3】
前記電流監視部は、前記CPUから出力される端末状態信号が、予め定められた動作モードであることを示す場合、前記電流値の測定または前記CPUのリセット動作を抑止する請求項1または2の端末装置。
【請求項4】
前記電流監視部は、前記動作モードに反した電流値の定常状態が観測された場合、前記リセット制御部に前記CPUをリセットさせる前に、前記CPUにフリーズ状態の検査とフリーズ状態の解消動作を行わせ、
前記CPUから応答が無い場合に前記リセット制御部に前記CPUをリセットさせる請求項1から3いずれか一の端末装置。
【請求項5】
前記CPUによるフリーズ状態の検査は、フリーズしている実行中アプリケーションの有無を確認することによって行われ、
前記フリーズ状態の解消動作として、前記CPUは、前記フリーズしている実行中アプリケーションの再起動と、フリーズしている実行中アプリケーションの有無の再確認とを行う請求項4の端末装置。
【請求項6】
前記電流監視部は、端末装置に搭載された第2のCPUによって構成されている請求項1から5いずれか一の端末装置。
【請求項7】
前記CPUと第2のCPUとが互いに他方のCPUの電流監視部として動作する請求項6の端末装置。
【請求項8】
前記電流監視部は、動作モードに反した電流値の定常状態が観測され、さらに、前記電流値が、端末装置のスリープ時消費電流を超え、かつ、最大消費電流未満の一定の範囲内にある場合に、前記リセット制御部に前記CPUをリセットさせる請求項1から7いずれか一の端末装置。
【請求項9】
電源から端末装置のCPUに供給される電流値を監視するステップと、
動作モードに反した電流値の定常状態が観測された場合、前記CPUがフリーズ状態になったものと判定するステップと、
を含む端末装置のフリーズ検出方法。
【請求項10】
請求項9のフリーズ検出方法により、端末装置のCPUのフリーズを検出した場合、前記CPUをリセットする端末装置の制御方法。
【請求項1】
電源からCPUに供給される電流値を測定する電流測定部と、
前記CPUをリセットするリセット制御部と、
前記CPUと独立して動作し、動作モードに反した電流値の定常状態が観測された場合、前記リセット制御部に前記CPUをリセットさせる電流監視部と、を備える端末装置。
【請求項2】
前記電流監視部は、電流値の変動が所定の範囲に収まった状態が、所定の期間継続したときに、前記電流値が定常状態になったものと判定する請求項1の端末装置。
【請求項3】
前記電流監視部は、前記CPUから出力される端末状態信号が、予め定められた動作モードであることを示す場合、前記電流値の測定または前記CPUのリセット動作を抑止する請求項1または2の端末装置。
【請求項4】
前記電流監視部は、前記動作モードに反した電流値の定常状態が観測された場合、前記リセット制御部に前記CPUをリセットさせる前に、前記CPUにフリーズ状態の検査とフリーズ状態の解消動作を行わせ、
前記CPUから応答が無い場合に前記リセット制御部に前記CPUをリセットさせる請求項1から3いずれか一の端末装置。
【請求項5】
前記CPUによるフリーズ状態の検査は、フリーズしている実行中アプリケーションの有無を確認することによって行われ、
前記フリーズ状態の解消動作として、前記CPUは、前記フリーズしている実行中アプリケーションの再起動と、フリーズしている実行中アプリケーションの有無の再確認とを行う請求項4の端末装置。
【請求項6】
前記電流監視部は、端末装置に搭載された第2のCPUによって構成されている請求項1から5いずれか一の端末装置。
【請求項7】
前記CPUと第2のCPUとが互いに他方のCPUの電流監視部として動作する請求項6の端末装置。
【請求項8】
前記電流監視部は、動作モードに反した電流値の定常状態が観測され、さらに、前記電流値が、端末装置のスリープ時消費電流を超え、かつ、最大消費電流未満の一定の範囲内にある場合に、前記リセット制御部に前記CPUをリセットさせる請求項1から7いずれか一の端末装置。
【請求項9】
電源から端末装置のCPUに供給される電流値を監視するステップと、
動作モードに反した電流値の定常状態が観測された場合、前記CPUがフリーズ状態になったものと判定するステップと、
を含む端末装置のフリーズ検出方法。
【請求項10】
請求項9のフリーズ検出方法により、端末装置のCPUのフリーズを検出した場合、前記CPUをリセットする端末装置の制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2012−208739(P2012−208739A)
【公開日】平成24年10月25日(2012.10.25)
【国際特許分類】
【出願番号】特願2011−73982(P2011−73982)
【出願日】平成23年3月30日(2011.3.30)
【出願人】(390010179)埼玉日本電気株式会社 (1,228)
【Fターム(参考)】
【公開日】平成24年10月25日(2012.10.25)
【国際特許分類】
【出願日】平成23年3月30日(2011.3.30)
【出願人】(390010179)埼玉日本電気株式会社 (1,228)
【Fターム(参考)】
[ Back to top ]