以下本発明に係る実施の形態を、図面を参照して説明する。
図1はノートブック型パーソナルコンピュータ(以下、コンピュータと称す。)1のディスプレイユニット3を本体2に対して開いた状態を示す図である。
コンピュータ1は本体2とディスプレイユニット3とから構成される。ディスプレイユニット3には、LCD(Liquid Crystal Display)4を有する表示装置が組み込まれており、LCD4はディスプレイユニット3のほぼ中央に位置される。
ディスプレイユニット3は、本体2に対して開放位置と閉塞位置との間を回動自在に取り付けられている。本体2は略箱形の形状を有しており、本体2の上面にはキーボードユニット5、コンピュータ1の電源をオン/オフするためのパワーボタン6等が配置されている。パワーボタン6はコンピュータ1を使用開始する際、押し下げ操作される。
本体2の前面には音楽再生用スイッチ7およびスピーカ8が配置される。音楽再生用スイッチ7は例えばスライドタイプのスイッチであり、音楽再生停止位置および音楽再生開始位置をとる。ユーザが音楽を聴かない場合、音楽再生用スイッチ7は再生停止位置に移動される。一方、ユーザが音楽を聴く場合、音楽再生用スイッチ7は再生開始位置に移動される。
スピーカ8はサウンドを出力する。
次に、図2を参照して、コンピュータ1のハードウェア構成について説明する。
ホストハブ(第1のブリッジ回路)11には、CPU10、メインメモリ13、グラフィックスコントローラ15およびI/Oハブ20が接続されている。
ホストハブ11はシステムバス12を介してCPU10と接続される。ホストハブ11はメインメモリ13へのアクセスを制御するメモリコントローラを内蔵する。
CPU10はコンピュータ1の動作を制御するメインプロセッサである。CPU10は外部記憶装置であるハードディスクドライブ(HDD)21からメモリバス14を介してメインメモリ13にロードされる、オペレーティングシステム(OS)13b、アプリケーションプログラム、ユーティリティプログラム13cを実行する。また、CPU10はBIOS−ROM29からメインメモリ13にロードされるBIOS(Basic Input Output System)13aを実行する。
ホストハブ11にAGP(Accelerated Graphics Port)バス16を介して接続されるグラフィクスコントローラ15はLCD4にデジタル表示信号を出力する。グラフィクスコントローラ15にはビデオメモリ(VRAM)17が接続されており、グラフィックスコントローラ15はOS/アプリケーションプログラムによってビデオメモリ17に描画されたデータをLCD4に表示する。
ホストハブ11と例えばハブインターフェイスといった専用バスで接続されるI/Oハブ(第二のブリッジ回路)20は、LPC(low pin count)バス26上の各デバイスを制御する。
I/Oハブ20にはパラレルATAコントローラ等が内蔵される。HDD21およびODD27はI/Oハブ20とパラレルATA21aを介して接続される。HDD21には、オペレーティングシステム(OS)、アプリケーションプログラム、ユーティリティプログラムおよびアプリケーションプログラムを使用することでユーザが作成したデータ等が記憶される。
オーディオコーディック23はI/Oハブ20とAC(Audio Codec)97(22)を介して接続される。オーディオコーディック23は、サウンド入出用のコーディックの一種である。オーディオコーディック23は、入出力されるサウンドのコーディック部とアナログモデムのデータ処理部等を有する。
オーディオコーディック23にはモデム24およびAMP25aが接続される。AMP25aはオーディオコーディック23にて生成されたサウンド信号を増幅する。AMP25aによって増幅されたサウンド信号はスピーカ8に送出され、スピーカ8は可聴周波数帯の音波を出力する。
モデム24はデジタル信号からアナログ信号への変調処理、およびアナログ信号からデジタル信号への復調処理等を行う。
LPCバス26上にはエンベデッドコントローラ/キーボードコントローラIC(EC/KBC)23とBIOS−ROM29とが接続される。
BIOS−ROM29には、BIOS(Basic Input Output System)13aが格納される。
エンベデッドコントローラ/キーボードコントローラIC(EC/KBC)28は、電力管理等を行うためのエンベデッドコントローラと、キーボード(KB)ユニット5を制御するためのキーボードコントローラとが集積された1チップマイクロコンピュータである。
EC/KBC28にはパワーボタン6と音楽再生ボタンとPSC(Power Supply Cotroller)30とキーボード5と3軸加速度センサ39と開閉検知部40とドッキングインターフェース41とが接続されている。さらに、PSC30には、ACアダプタ31と二次電池32とが接続される。
ユーザがパワーボタン6を操作すると、EC/KBC28はパワーボタン6が操作されたことを検出する。EC/KBC28は、パワーボタン6が操作されたことを検出すると、例えば本コンピュータ1のシステムに対して電源供給を開始するようにPSC30に通知する。PSC30はEC/KBC28から受け取った通知に基いて、ACアダプタ31または二次電池32からコンピュータ1のシステムに対して電源供給を開始するように制御する。
PSC30は、ACアダプタ31がコンピュータ1から取り外されたことを検出する。さらにPSC30はACアダプタ31がコンピュータ1から取り外されたことを、EC/KBC28に通知する。
音楽再生用スイッチ7は、音楽再生開始/停止等を制御するためのスイッチであり、ユーザによる音楽再生用スイッチ7の操作は。EC/KBC28によって検出される。EC/KBC28はスイッチ操作のイベントを検出した後、音楽再生用のアプリケーションを再生/停止制御する。また、EC/KBC28はスイッチ操作のイベントを検出した後、コンピュータ1の状態を音楽再生モードであると認識する。
3軸加速度センサ39は、検出した加速度をEC/KBCに出力する。3軸加速度センサ39については、後述にて詳細に説明する。
開閉検知部40は、ディスプレイユニット4の本体2に対する開閉を検知する。 開放検知部40は、ディスプレイユニット4が本体2に対して開放位置から閉塞位置に移行したこと、および閉塞位置から開放位置へと移行したことを検知し、EC/KBC28にその旨を通知する。
ドッキングインターフェース41には、機能拡張ユニットである所謂ドッカーが接続される。ドッキングインターフェース41にドッカーが接続されると、EC/KBC28はドッカーが接続されたことを認識する。
次に、3軸加速度センサ39の出力と空間座標軸の関係について説明する。
図3は、3軸加速度センサの出力と空間座標軸との関係を示す図である。
空間座標(X、Y、Z)にて、Z軸はX−Y平面に対して鉛直方向に位置する。また、重力gの力はZ軸マイナス方向に作用する。
空間座標(X、Y、Z)中に3軸加速度センサ39を設ける。3軸加速度センサ39が有する3軸の座標(Xs、Ys、Zs)と空間座標(X、Y、Z)との関係は次のとおりである。加速度センサ39が有するXs軸は空間座標(X、Y、Z)のX−Y平面とαの角度をなし、加速度センサ39が有するYs軸はX−Y平面とβの角度をなす。また加速度センサ39が有するZs軸は、空間座標(X、Y、Z)のZ軸とθの角度をなす。ここで、3軸加速度センサ39のX軸方向を短軸、Y軸方向を長軸とおく。
3軸加速度センサ39が静止している状態において、3軸加速度センサ39が出力する静的加速度は、重力gを加速度センサ39が有する3軸の座標(Xs,Ys,Zs)方向に夫々分解した加速度成分(Ax[G]、Ay[G]、Az[G])の計測値となる。
さて、ここで、加速度センサ39は以下に示される各加速度成分を出力する仕様であるとする。
Ax=g×sinα [G]
Ay=g×sinβ [G]
Az=g×cosθ [G]
また、加速度センサ39は静止している場合に、
合成加速度A=√(Ax2+Ay2+Az2)=g=1[G]
を満たす仕様であるとする。
さらに、3軸加速度センサ39が動いている状態において、3軸加速度センサ39が出力する動的加速度は、外力と重力の合成ベクトルを加速度センサ39が有する3軸の座標(Xs,Ys,Zs)方向に夫々分解した加速度成分(Ax[G]、Ay[G]、Az[G])の計測値となる。
ここで、外力Nを加速度センサ39が有する3軸の座標(Xs,Ys,Zs)方向に分解した成分を(Nx,Ny,Nz)とする。3軸加速度センサ39が出力する動的加速度の各加速度成分は、外力Nの各成分を考慮して
Ax=Nx+g×sinα [G]
Ay=Ny+g×sinβ [G]
Az=Nz+g×cosθ [G]
と表すことが可能な仕様であるとする。
また、3軸加速度センサ39が自由落下した場合に、
合成加速度A=√(Ax2+Ay2+Az2)=0[G]
を満たす仕様であるとする。次に、特定の軸を中心に3軸加速度センサ39を回転させた場合における、3軸加速度センサ39の回転角度と3軸加速度センサ39が出力する加速度値との関係について説明する。
図4は、Y軸を中心に3軸加速度センサ39を±180°回転させた場合における、3軸加速度センサ39の回転角度と3軸加速度センサ39がX軸方向に出力する静的加速度値との関係を示すグラフである。
Y軸を中心とした3軸加速度センサ39の回転角度と3軸加速度センサ39がX軸方向に出力する静的加速度値との関係を示す式を、図3を参照して以下に説明する。
まず、3軸加速度センサ39の有する座標軸(Xs,Ys,Zs)を空間座標軸(X,Y,Z)に合わせた状態にする。この場合、回転角度α=0°である。
次に、回転角度αを±90°の数値幅で変化させる。グラフの横軸を回転角度α[°]、縦軸を静的加速度Ax[G]とすると、Y軸を中心とした3軸加速度センサ39の回転角度と3軸加速度センサ39がX軸方向に出力する静的加速度値との間に次の関係式が成り立つ。
Ax=g×sinα [G] (図ではg=1[G])
次に、3軸加速度センサ39のX軸方向への出力である静的加速度Ax[G]について一定の加速度変化分ΔAxと一定の加速度変化分ΔAxを発生させるために必要となる傾斜角度変化分Δαの関係を説明する。
図5は、3軸加速度センサ39のX軸方向への出力である静的加速度Ax[G]について一定の加速度変化分ΔAxと一定の加速度変化分ΔAxを発生させるために必要となる傾斜角度変化分Δαとの関係を示すグラフである。図6は、コンピュータ1を水平設置および垂直設置した状態を示す図である。
図5のグラフを参照すると、例えばX軸の静的加速度変化ΔAx=0.04[G]を発生させるために要する傾斜角度変化分Δαについて、以下の関係が言える。
傾斜角度α 傾斜角度変化分Δα
水平設置 = 0° Δ 2.3°
45°傾斜設置 =±45° Δ 3.2°
垂直設置 = ±90° Δ16.3°
ここで、水平設置とは、図6に示される破線円sta1で囲まれたコンピュータ1の状態を指す。すなわち、ヒンジ3aがX−Y平面と平行の関係にあるコンピュータ1の状態を指す。
さらに、垂直設置とは、図6に示される破線円sta2で囲まれたコンピュータ1の状態を指す。すなわち、ヒンジ3aがX−Y平面と垂直関係にあるコンピュータ1の状態を指す。
上に示した傾斜角度αと傾斜角度変化分Δαとの関係を参照してX軸方向への静的加速度出力の特性を評価すると、傾斜角度α=−45°〜45°の範囲においてX軸方向への静的加速度変化ΔAx=0.04[G]を発生させるために要する傾斜角度変化分Δαの値はΔ2.3°〜Δ3.2°の値をとっていると評価できる。つまり、傾斜角度α=−45°〜45°の範囲においてX軸方向への静的加速度変化ΔAx=0.04[G]を発生させるために要する傾斜角度変化分Δαの値は略一定値をとると評価できる。
一方、傾斜角度が±90°に近づくにつれ、X軸方向への静的加速度変化ΔAx=0.04[G]を発生させるために要する傾斜角度変化分Δαは、例えば傾斜角度α=±45°の場合の傾斜角度変化分Δ3.2°と比較して大きい値(傾斜角度α=±90°の場合、傾斜角度変化分Δα=16.3°)をとると評価できる。
後述にて詳細に説明するが、HDDプロテクション機能がオン状態時において、EC/KBC28は、X軸方向への加速度センサ出力を一定のサンプリング周期T[s]で検出する。EC/KBC28は検出された加速度センサ出力値を用いてHDD21へ加えられる衝撃発生の予測を行う。衝撃発生の予測とは、サンプリング周期T[s]の間の加速度変化ΔAxが所定の閾値を越えた場合、「コンピュータ1に揺れが発生することで、コンピュータ1に内蔵されているHDD21に対して衝撃が加えられる可能性がある」と予測することである。
例えば、所定の閾値を0.04[G]と設定した場合、X軸方向への揺れに対する検出特性は以下に説明する特性を有すると評価できる。
(1)傾斜角α=−45°〜45°の場合、サンプリング周期の期間において約2°〜3°の角度変化に相当するX軸方向への加速度変化が生じると、EC/KBC28は「衝撃が発生する可能性がある」と予測する。
(2)傾斜角がα=90°に近づくにつれて、サンプリング周期の期間中に約16°の角度変化に相当するX軸方向への加速度変化が生じると、EC/KBC28は「衝撃が発生すると可能性がある」と予兆する。
なお、X軸方向を中心として3軸加速度センサ39を±180°回転させた場合に、3軸加速度センサ39がY軸方向に出力する加速度値Ay[g]、加速度変化分ΔAy[G]、および3軸加速度センサ39の傾斜角度β[°]との関係についても、上述にて説明したY軸方向を中心として3軸加速度センサ39を±180°回転させた場合の評価と同様の評価を行うことが可能である。
以上の評価に基づくと、2軸成分(X、Y)の特性について次のように言える。
(a)コンピュータ1が水平に近い状態で設置された場合(傾斜角度−45°〜+45°)、コンピュータ1への揺れに対する検出感度が非常に高い。
(b)コンピュータ1が不安定な縦置きになるに従い(傾斜角度±90°)、コンピュータ1への揺れに対する検出感度が非常に低い。
次に、3軸加速度センサ39のZ軸方向への出力である静的加速度Az[G]について一定の加速度変化分ΔAzと一定の加速度変化分ΔAzを発生させるために必要となる傾斜角度変化分Δθの関係を説明する。
図7は、Y軸を中心に3軸加速度センサ39を±180°回転させた場合における、3軸加速度センサ39の回転角度と3軸加速度センサ39がZ軸方向に出力する静的加速度値との関係を示すグラフである。
まず、3軸加速度センサ39の有する座標軸(Xs,Ys,Zs)を空間座標軸(X,Y,Z)に合わせた状態にする。この場合、回転角度θ=0°である。
次に、回転角度θを±90°の数値幅で変化させる。グラフの横軸を回転角度θ[°]、縦軸を静的加速度Az[G]とすると、Y軸を中心とした3軸加速度センサ39の回転角度と3軸加速度センサ39がZ軸方向に出力する静的加速度値との間に次の関係式が成り立つ。
Az=g×cosθ [G] (図ではg=1[G])
次に、3軸加速度センサ39のZ軸方向への出力である静的加速度Az[G]について一定の加速度変化分ΔAzと一定の加速度変化分ΔAzを発生させるために必要となる傾斜角度変化分Δθの関係を説明する。
図8は、3軸加速度センサ39のZ軸方向への出力である静的加速度Az[G]について一定の加速度変化分ΔAzと一定の加速度変化分ΔAzを発生させるために必要となる傾斜角度変化分Δθとの関係を示すグラフである。
図7のグラフを参照すると、例えばZ軸の静的加速度変化ΔAz=0.04[G]を発生させるために要する傾斜角度変化分Δθについて、以下の関係が言える。
傾斜角θ 傾斜角度変化分Δθ
水平設置 = 0[°] Δ16.3[°]
45°傾斜設置 =±45[°] Δ 3.2[°]
垂直設置 =±90[°] Δ 2.3[°]
上に示した傾斜角度θと傾斜角度変化分Δθとの関係を参照してZ軸方向への静的加速度出力の特性を評価すると、傾斜角度θ=−90°〜−45°、および45°〜90°の範囲においてZ軸方向への静的加速度変化ΔAz=0.04[G]を発生させるために要する傾斜角度変化分Δθの値はΔ2.3°〜Δ3.2°の値をとっていると評価できる。つまり、傾斜角度θが−90°〜−45°、および45°〜90°の範囲においてZ軸方向への静的加速度変化ΔAz=0.04[G]を発生させるために要する傾斜角度変化分Δθの値は略一定値をとると評価できる。
一方、傾斜角度θが±0°に近づくにつれ、Z軸方向への静的加速度変化ΔAz=0.04[G]を発生させるために要する傾斜角度変化分Δθは、例えば傾斜角度θ=±45°の場合の傾斜角度変化分Δ3.2°と比較して大きい値(傾斜角度θ=±0°の場合、傾斜角度変化分Δθ=16.3°)をとると評価できる。
後述にて詳細に説明するが、EC/KBC28はZ軸方向への加速度センサ出力を一定のサンプリング周期T[s]で検出する。EC/KBC28は検出された加速度センサ出力値を用いてHDD21へ加えられる衝撃発生の予測を行う。衝撃発生の予測とは、サンプリング周期T[s]の間の加速度変化ΔAzが所定の閾値を越えた場合、「コンピュータ1に揺れが発生することで、コンピュータ1に内蔵されているHDD21に対して衝撃が加えられる可能性がある」と予測することである。
例えば、所定の閾値を0.04[G]と設定した場合、Z軸方向への揺れに対する検出特性は以下に説明する特性を有すると評価できる。
(3)傾斜角θ=−90°〜−45°およびθ=45°〜90°の場合、サンプリング周期の期間において約2°〜3°の角度変化に相当するZ軸方向への加速度変化が生じると、EC/KBC28は「衝撃が発生する可能性がある」と予想する。
(4)傾斜角がθ=0°に近づくにつれて、サンプリング周期の期間中に約16°の角度変化に相当するZ軸方向への加速度変化が生じると、EC/KBC28は「衝撃が発生すると可能性がある」と予測する。
以上の評価(3)(4)に基づくと、Z軸成分の特性について次のように言える。
(c)コンピュータ1が水平に近い状態で設置された場合(傾斜角度0°)、コンピュータ1への揺れに対する検出感度が非常に低い。
(d)コンピュータ1が不安定な縦置きになるに従い(傾斜角度−90°〜−45°および45°〜90°)、コンピュータ1への揺れに対する検出感度が非常に高い。
Z軸成分の特性(c)(d)を利用することで、
(ア)コンピュータ1を比較的水平に設置して使用している場合に発生する弱い揺れに対して、衝撃発生の予測の誤検出を防止することが可能である。
(イ)コンピュータ1を比較的垂直に設置して使用している場合に発生する弱い揺れを、衝撃が発生する可能性を有する揺れであると予測することが可能となる。次に、HDDプロテクション機能についての概要について説明する。
図9は、HDDプロテクション機能を説明する概要図である。図10は、HDD21のハードウェア構成の一例を示した図である。
3軸加速度センサ39は、3軸(X,Y,Z)の加速度を検出する。3軸加速度センサ39は、検出した3軸(X、Y、Z)の加速度値をアナログ電圧値で、夫々、信号線39a、39b、39cを介してEC/KBC28へ送出する。
EC/KBC28中に内蔵されるA/Dコンバータ28aは3軸加速度センサ39から送出される3軸(X、Y、Z)の加速度値をデジタル値に変換する。
EC/KBC28は、一定のサンプリング周期T[s]で、3軸(X,Y、Z)の加速度を測定する。EC/KBC28は、測定した加速度値を用いて「コンピュータ1に内蔵されているHDD21に対して衝撃が加えられる可能性を有する程度の揺れがコンピュータ1に対して発生したか否か」または「コンピュータ1に内蔵されているHDD21に衝撃が加えられる可能性を有する程度の揺れが生じていない状態にあるか否か」を一定周期毎に判定する。
ここで、EC/KBC28が「コンピュータ1に内蔵されているHDD21に対して衝撃が加えられる可能性を有する程度の揺れがコンピュータ1に対して発生した」と判定することを「衝撃発生予測」と称し、「コンピュータ1に内蔵されているHDD21に衝撃が加えられる可能性を有する程度の揺れが生じていない状態にある」と判定することを「静止状態予測」と称す。
EC/KBC28は衝撃発生予測を行うと、EC/KBC28内に設けられるレジスタ28bに「衝撃発生予測」を行った結果に応じてビットを立てる。「衝撃発生予測」を行った結果としてビットがレジスタ28b内に立てられたことは、コンピュータ1が「これからHDD21に対して衝撃が発生する」ことを予測している状態にあることを示す。
一方、EC/KBC28は静止状態予測を行うと、「静止状態予測」を行った結果に応じて、EC/KBC28内に設けられるレジスタ28bに立てられているビットをクリアする。「静止状態予測」を行った結果としてレジスタ28b内のビットをクリアにすることは、「HDD21に衝撃が加えられる程度の揺れがコンピュータ1に対して発生していない」ことを示す。
EC/KBC28内のレジスタ28bの状態が変化すると、EC/KBC28はI/Oハブ20に対してSMI(System Management Interrupt)信号を送出する。CPU10にて実行されるBIOS13aはSMI(System Management Interrupt)処理を実行する。BIOS13aはSMI処理を行うことで、LPCバス20bを介してEC/KBC28内のレジスタ28bをリードする。
BIOS13aはイベントマネージャ13dを介してリードしたレジスタ28bの内容をOS13b上で起動しているユーティリティ13cに通知する。ユーティリティ13cは、HDDプロテクション機能を実現するために必要な設定等を行う際に用いるソフトウェアである。このユーティリティ13cの機能については後述にて詳細に説明する。
さらに、BIOS13aはリードしたレジスタ28bの内容が「衝撃発生を予測した」という内容であった場合、BIOS13aはイベントマネージャ13dへ「HDD21のヘッド退避の実行要求」をイベントとして通知する。
イベントマネージャ13dは「HDD21のヘッド退避の実行要求」を受け取ると、HDDファイルシステムが管理しているコマンド(例えばHDD21に対するデータライト処理)を出力させないようにする。
さらに、イベントマネージャ13dは「HDD21のヘッド退避の実行要求」を受け取ると、IDEドライブのドライバ13eに対して、ヘッド211高速退避処理のコマンド(Unload Immediate Command)を出力する。Unload Immediate Commandとは、キャッシュ213とディスク210間におけるデータのリード/ライト処理を例えばトラック単位で一時的に中断し、ヘッド211をランプ212へ退避させるためのコマンドである。ヘッド高速退避処理のコマンド(Unload Immediate Command)を利用すると、リード/ライト中にヘッド211をランプ212に一時退避していても、HDD21のキャッシュ213のデータをロストすることない。
IDEドライブのドライバ13eはヘッド高速退避処理のコマンドを受け取り、ヘッド211をランプ212に一時的に退避させる。
一方、BIOS13aはリードしたレジスタ28bの内容が「静止状態を予測した」という内容であった場合、BIOS13aはOS13bのイベントマネージャ13dへ「HDD21のヘッド退避の解除要求」をイベントとして通知する。
イベントマネージャ13dは「HDD21のヘッド退避の解除要求」を受け取ると、HDDファイルシステムが管理しているコマンド(例えばHDD21に対するデータライト処理)を出力させるようにする。
さらに、イベントマネージャ13dは「HDD21のヘッド退避の解除要求」を受け取ると、IDEドライブのドライバ13eに対して、例えばリードコマンドを出力する。IDEドライブのドライバ13eはリードコマンドを受け取り、ヘッド211が退避する直前の処理を再開する。次に、HDDプロテクション機能を実現するための制御フローの一例について説明する。
図11は、HDDプロテクション機能を実現するためのEC/KBCにて実行される制御フローの一例を説明するフローチャートである。
EC/KBC28は、レジスタ28cをリードし、HDDプロテクション機能がオンであるか否かを判定する(ステップ S101)。レジスタ28cについての説明は後述にて説明する。
HDDプロテクション機能がオンであり(ステップ S101 Yes)、EC/KBC28に内蔵されるA/Dコンバータ28aは、サンプリング周期である場合(ステップ S102 Yes)、3軸加速度センサ39から送出される3軸(X、Y、Z)の加速度値をデジタル値に変換し、3軸(X、Y、Z)の加速度値を電圧値として検出する(ステップ S103)。
一方、HDDプロテクション機能がオフである場合(ステップ S101 No)、本制御フローは終了する。
さて、一般に、3軸加速度センサ39の出力値は、0Gオフセット電圧値[V]と感度[V/G]で規定する特性値を有する。3軸加速度センサ39が有する特性値は、固体毎にバラツキ値を持つ。このバラツキ値を補正するために、例えばコンピュータ1を出荷する前の検査工程において、0Gオフセット電圧値[V]および感度[V/G]の補正値を例えば不揮発性メモリに保存しておく。
EC/KBC28は、0Gオフセット電圧値[V]および感度[V/G]の補正値を用いて、A/Dコンバータ28aによって検出された電圧値を補正する(ステップ S104)。EC/KBC28は、補正された電圧値を用いて、加速度値、加速度変化値、合成加速度値(図3、図5、図7等を参照)を算出する(ステップ S105)。
EC/KBC28は、ステップS105にて算出された値を用いて、衝撃発生を予測するルーチンを実行する(ステップ S106)。衝撃発生を予測するルーチンにて実行される処理内容については、後述にて詳細に説明する。
さらに、EC/KBC28は、ステップS105にて算出された値を用いて、静止状態を予測するルーチンを実行する(ステップ S107)。
衝撃発生予測ルーチンおよび静止状態予測ルーチンを実行した後、レジスタ28bに立てられているビット1をリードすることで、「HDD21のヘッド退避をBIOSへ要求中である」という状態を確認する(ステップ S108)(レジスタ28bをリードすることで、「HDD21のヘッド退避をBIOSへ要求中であるか否か」を確認する。)。
HDD21のヘッド退避をBIOSへ要求していない場合、すなわち、レジスタ28bのビットが0である場合(ステップ S108 No)、ステップS106にて実行される衝撃発生予測ルーチンの結果を参照する(ステップ S109)。
衝撃発生予測ルーチンを実行した結果、「HDD21への衝撃が発生する」と予測されている場合(ステップ S109 Yes)、EC/KBC28内に設けられるレジスタ28bにビット1をたてる(「HDD21のヘッド退避をBIOSへ要求中である」という状態にする)(ステップ S110)。
EC/KBC28は、レジスタ28bにビット1を立てるとともに、I/Oハブ20へSMI信号(ヘッド退避実行)を送出する(ステップ S111)。
一方、HDD21のヘッド退避をBIOSへ要求している場合(ステップ S108 Yes)、ステップS106にて実行される静止状態予測ルーチンの結果を参照する(ステップ S111)。
静止状態予測ルーチンを実行した結果、「コンピュータ1の状態は静止状態である」と予測されている場合(ステップ S111 Yes)、EC/KBC28内に設けられるレジスタ28bをクリアする(「HDD21のヘッド退避をBIOSへ要求中していない」という状態にする)(ステップ S112)。
EC/KBC28は、レジスタ28bのビットをクリアにするとともに、I/Oハブ20へSMI信号(ヘッド退避実行解除)を送出する(ステップ S113)。次に、衝撃発生予測ルーチンに関して説明する。まず、コンピュータ1に加えられた揺れの種類および、揺れの種類を判定するために用いられる加速度に関するデータについて説明する。
図12は、コンピュータ1に加えられた揺れの種類とその揺れの種類を判定するために要するデータとの関係を示すテーブルである。
コンピュータ1に加えられる揺れの種類として、「自由落下」「強い外力による揺れ」「Z軸に関する回転を伴う揺れ」「X軸に関する回転を伴う揺れ」「Y軸に関する回転を伴う揺れ」の5種類を定義する。
コンピュータ1に加えられる揺れの種類が「自由落下」であるか否かを判定するために、合成加速度の値を用いる。「自由落下」とは、コンピュータ1に対して重力が作用することで、コンピュータ1が落下することを指す。ここで、合成加速度とは、X軸方向に働く加速度とY軸方向に働く加速度とZ軸方向に働く加速度を合成した加速度である。「自由落下」であること判定するために合成加速度の値を用いるのは、コンピュータ1がどのような姿勢で重力方向に落下した場合においても、自由落下であることを検出するためである。
また、コンピュータ1に加えられる揺れの種類が「強い外力による揺れ」であるか否かを判定するために、合成加速度の値を用いる。「強い外力による揺れ」とは、コンピュータ1に対して例えばユーザによって加えられる力が作用することで生じる揺れのことを指す。「強い外力による揺れ」であることを判定するために合成加速度の値を用いるのは、(X、Y、Z)の全方向について「強い外力による揺れ」を検出するためである。
また、コンピュータ1に加えられる揺れの種類が「Z軸に関する回転を伴う揺れ」であるか否かを判定するために、Z軸方向に働く加速度値およびZ軸方向に働く加速度変化の値を用い、コンピュータ1に加えられた揺れの種類が「X軸に関する回転を伴う揺れ」であるか否かを判定するために、X軸方向に働く加速度値およびX軸方向に働く加速度変化の値を用い、コンピュータ1に加えられた揺れの種類が「Y軸に関する回転を伴う揺れ」であるか否かを判定するために、Y軸方向に働く加速度値およびY軸方向に働く加速度変化の値を用いる。次に、ステップS105にて実行される衝撃発生予測のルーチンについて説明する。
図13は、衝撃発生予測のルーチンの一例を説明するフローである。
EC/KBC28は合成加速度、加速度、加速度変化分に対する各閾値を用いて衝撃発生を予測する。EC/KBCへの各閾値の設定方法については、後述にて詳細に説明する。
EC/KBC28はHDD21への衝撃発生を予測するために、「自由落下」「強い力の印加」「X軸に関する回転を伴う揺れ」「Y軸に関する回転を伴う揺れ」「Z軸に関する回転を伴う揺れ」である5種類の揺れを検出する。
合成加速度A(n)の閾値として、「自由落下」を検出する閾値A_fall[G]、および「強い力の印加」ことを検出する閾値A_shuck[G]を用いる。 EC/KBC28が、「合成加速度A(n)の値が閾値A_fall[G]以下である、すなわち、コンピュータ1は自由落下している」と判定した場合(ステップ S201 Yes)、コンピュータ1の状態は、「これからHDD21に対して衝撃が発生する」ことを予測している状態となる(ステップ S210)。
EC/KBC28が、「合成加速度A(n)の値が閾値A_shuck[G]以上である、すなわち、コンピュータ1に強い力が印加された」と判定した場合(ステップ S202 Yes)、コンピュータ1の状態は「これからHDD21に対して衝撃が発生する」ことを予測している状態となる(ステップ S210)。
例えば、自由落下を検出する閾値としてA_fall=0.5[G]、および強い外力の印加を検出する閾値としてA_shuck=1.5[G]と設定することが可能である。
X軸方向の加速度成分の閾値として、HDD21に衝撃が加えられる可能性を有する程度の揺れを発生するX軸方向の加速度成分値の大きさを検出する閾値Ax_high[G]、およびHDD21に衝撃が加えられる可能性を有する程度の揺れを発生するX軸方向の加速度変化の値の大きさを検出する閾値ΔAx_high[G]を用いる。EC/KBC28が「X軸方向の加速度成分値|Ax(n)|の値が閾値Ax_high[G]以上である」と判定し(ステップ S203 Yes)、かつ、「X軸方向の加速度変化の値|ΔAx(n)|の値が閾値ΔAx_high[G]以上である」と判定した場合(ステップ S204 Yes)、コンピュータ1の状態は、「これからHDD21に対して衝撃が発生する」ことを予測している状態となる(ステップ S210)。
例えばΔAx_high=0.04[G]に設定することで、コンピュータ1がX軸回りに約2.3°回転する程度の揺れの発生を検出できる。
Y軸方向の加速度成分の閾値として、HDD21に衝撃が加えられる可能性を有する程度の揺れを発生するY軸方向の加速度成分値の大きさを検出する閾値Ay_high[G]、およびHDD21に衝撃が加えられる可能性を有する程度の揺れを発生するY軸方向の加速度変化の値の大きさを検出する閾値ΔAy_high[G]を用いる。EC/KBC28が「Y軸方向の加速度成分値|Ay(n)|の値が閾値Ay_high[G]以上である」と判定し(ステップ S205 Yes)、かつ、「Y軸方向の加速度変化の値|ΔAy(n)|の値が閾値ΔAy_high[G]以上である」と判定した場合(ステップ S206 Yes)、コンピュータ1の状態は、「これからHDD21に対して衝撃が発生する」ことを予測している状態となる(ステップ S210)。
Z軸方向の加速度成分の閾値として、HDD21に衝撃が加えられる可能性を有する程度の揺れを発生するZ軸方向の加速度成分値の大きさを検出する閾値Az_high[G]、およびHDD21に衝撃が加えられる可能性を有する程度の揺れを発生するZ軸方向の加速度変化の値の大きさを検出する閾値ΔAz_high[G]を用いる。EC/KBC28が「Z軸方向の加速度成分値|Az(n)|の値が閾値Az_high[G]以下である」と判定し(ステップ S207 Yes)、かつ、「Z軸方向の加速度変化の値|ΔAz(n)|の値が閾値ΔAz_high[G]以上である」と判定した場合(ステップ S208 Yes)、コンピュータ1の状態は、「これからHDD21に対して衝撃が発生する」ことを予測している状態となる(ステップ S210)。
一方、「Z軸方向の加速度変化の値|ΔAz(n)|の値が閾値ΔAz_high[G]以上である」と判定しなかった場合(ステップ S208 No)、コンピュータ1に対して、HDD21に衝撃が加えられる可能性を有する程度の揺れが生じなかった、と判定される。次に、コンピュータ1に加えられる揺れの種類と感度レベルとの関係について説明する。
図14は、コンピュータ1に加えられる揺れの種類と感度レベルとの関係の一例を説明するテーブルである。
コンピュータ1に加えられる加速度が所定の条件を満たした場合、コンピュータ1は「これからHDD21に対して衝撃が発生する」と予測する。図8を用いてHDDプロテクション機能を説明した際、「コンピュータ1に内蔵されているHDD21に対して衝撃が加えられる可能性を有する程度の揺れがコンピュータ1に対して発生した、と判定する」ことを「衝撃発生予測」と定義した。ここで、「衝撃発生を予測する際に考慮される揺れの種類の許容数」を規定するパラメータとして「感度レベル」を設ける。
例えば、図14に示されるように、感度レベルとして「レベル3」「レベル2」「レベル1」を設ける。
感度レベル「レベル3」は、コンピュータ1に対して「自由落下」「強い外力の印加」「Z軸に関する回転を伴う揺れ」「X軸に関する回転を伴う揺れ」「Y軸に関する回転を伴う揺れ」の5種類の揺れの中から何れかの揺れが生じた場合に衝撃発生予測を行う、ことを意味する。感度レベル「レベル2」は、コンピュータ1に対して「自由落下」「強い外力の印加」「Z軸に関する回転を伴う揺れ」の3種類の揺れの中から何れかの揺れが生じた場合に衝撃発生予測を行う、ことを意味する。感度レベル「レベル1」は、コンピュータ1に対して「自由落下」「強い外力の印加」の2種類の揺れの仲から何れかの揺れが生じた場合に衝撃発生予測を行う、ことを意味する。
例えば、感度レベル「レベル3」と「レベル1」とを比較すると、感度レベル「レベル3」は衝撃発生を予測する際に考慮される揺れの種類として5種類の揺れを許容しており、感度レベル「レベル1」は衝撃発生を予測する際に考慮される揺れの種類として2種類の揺れを許容している。したがって、感度レベル「レベル3」と「レベル1」とを比較すると、感度レベル「レベル3」のほうが「レベル1」よりも感度が高いと言える。
例えば「X軸に関する回転を伴う揺れ」が生じた場合、「レベル3」は衝撃発生を予測する際に考慮される揺れの種類として「X軸に関する回転を伴う揺れ」を許容しているので、衝撃発生を予測するものの、「レベル1」では衝撃発生を予測する際に考慮される揺れの種類として「X軸に関する回転を伴う揺れ」を許容していないので衝撃発生の予測をしない。すなわち、「X軸に関する回転を伴う揺れ」に基づいて衝撃発生の予測を行う「レベル3」のほうが「X軸に関する回転を伴う揺れ」に基づいて衝撃発生の予測を行わない「レベル1」よりも感度が高いということがいえる。次に、コンピュータ1の実用シーンに応じて感度レベルを選択することについて説明する。
図15は、コンピュータ1の使用シーンに応じた感度レベルの選択の一例を説明するテーブルである。
コンピュータ1にACアダプタを接続して机の上で据え置きして使用する場合、感度レベルを「レベル3」と選択設定することが好ましい。つまり、コンピュータ1を机の上で据え置きして使用する場合、コンピュータ1に対して揺れが発生しにくい、と考えられるので、図13を用いて説明した感度レベルの中で、一番感度の高い「レベル3」を選択設定することが好ましい。コンピュータ1を机の上で据え置きして使用する場合に、感度レベルを「レベル3」に選択設定しておくと、コンピュータ1は、コンピュータ1の持ち運び時にコンピュータ1に対して発生する揺れに応じて、「これからHDD21に対して衝撃が発生する」ことを予測している状態に移行する。
バッテリ駆動中であるコンピュータ1を膝上、または車内で使用する場合、感度レベルを「レベル2」と選択設定することが好ましい。コンピュータ1を膝上、または車内で使用する場合、すなわち、コンピュータ1を略水平状態(図6参照)にして使用する場合、「X軸に関する回転を伴う揺れ」および「Y軸に関する回転を伴う揺れ」が頻繁に発生すると考えられるので、もし、コンピュータ1を膝上、または車内で使用する場合に、「X軸に関する回転を伴う揺れ」または「Y軸に関する回転を伴う揺れ」が生じると衝撃発生予測を行うレベルを設定していれば、コンピュータ1の状態が「これからHDD21に対して衝撃が発生する」ことを予測している状態に保たれる可能性が高くなる。そこで、図12を用いて説明した感度レベルの中で、「レベル2」を選択設定することが好ましい。
コンピュータ1を略垂直方向(図6参照)に傾けて使用する場合、感度レベルを「レベル1」と設定することが好ましい。コンピュータ1を略垂直方向に傾けて使用するシーンとして、例えば、コンピュータ1を片手で持って、音楽を聴きながら持ち運ぶシーン等が考えられる。
コンピュータ1を縦方向に傾けて使用する場合、「X軸に関する回転を伴う揺れ」「Y軸に関する回転を伴う揺れ」および「Z軸に関する回転を伴う揺れ」が頻繁に発生すると考えられるので、もし、コンピュータ1を縦方向に傾けて使用する場合に「X軸に関する回転を伴う揺れ」「Y軸に関する回転を伴う揺れ」および「Z軸に関する回転を伴う揺れ」が生じると衝撃発生予測を行うレベルを設定していれば、コンピュータ1の状態が「これからHDD21に対して衝撃が発生する」ことを予測している状態に保たれる可能性が高くなる。
そこで、図11を用いて説明した感度レベルの中で、「レベル1」を選択設定することが好ましい。次に、コンピュータ1の電源オン後におけるHDDプロテクション機能のオン/オフ制御について説明する。
図16は、HDDプロテクション機能のオン/オフ制御の一例を説明する第一のフローチャートである。図17は、HDDプロテクション機能のオン/オフ制御の一例を説明する第二のフローチャートである。図18は、ユーティリティ13cからBIOS13aを介してEC/KBC28に各種加速度の閾値を保存する手順の一例を示す図である。
ユーザが電源ボタン6を操作すると、コンピュータ1のシステムに対して電源が投入される(ステップ S401 Yes)。コンピュータ1のシステムに対して電源が投入されない場合(ステップ S401 No)、本制御フローは終了する。
コンピュータ1に対して電源が投入された後、BIOS13aおよびOS13bが起動される。OS13bが起動後、ユーティリティ13cがOS13b上にて起動開始するならば(ステップ S402 Yes)、OS13b上にて起動開始したユーティリティ13cは、ユーティリティ13cに予め設定されている感度レベル(図14を参照)の値をBIOS13aに通知する(ステップ S403)(図18のno1)。
BIOS13aはユーティリティ13cから受け取った感度レベルの値に対応する、各種加速度(図14を参照)に関する閾値をEC/KBC28に通知する(ステップ S404)(図18のno2)。ここで、BIOS13aは感度レベルの値に対応する、各種加速度に関する閾値を予め有する構成とする。
EC/KBC28は、BIOS13aから通知された閾値を特定のレジスタに保存する(ステップ S405)。さらに、ユーティリティ13cはBIOS13aを介して、HDDプロテクション機能をオンにするために、EC/KBC28内に設けられるレジスタ28cに「HDDプロテクション機能がオンになった」ことを示すビットを立てる(ステップ S406)。
OS13bが起動後、ユーティリティ13cがOS13b上に起動済みの状態において(ステップ S402 No)、コンピュータ1のシステムの停止処理が実行中であるならば(ステップ S407 Yes)、ユーティリティ13cはBIOS13aを介して、HDDプロテクション機能をオフにするために、EC/KBC28内に設けられるレジスタ28cに「HDDプロテクション機能がオンになった」ことを示すビットをクリアする(ステップ S408)。
一方、ステップS407の処理にて、コンピュータ1のシステムの停止処理を行わない場合、つまり、ユーティリティ13cがOS13b上にて起動済み状態において(ステップ S407 No)、ユーザがユーティリティ13cを用いて感度レベルを選択設定したならば(ステップ S409 Yes)、ユーティリティ13cはBIOS13aを介して、HDDプロテクション機能を一旦オフにするために、EC/KBC28内に設けられるレジスタ28cに「HDDプロテクション機能がオンになった」ことを示すビットをクリアする(ステップ S410)。
その後、ユーティリティ13cは、ユーザによって選択設定された感度レベルの値をBIOS13aに通知する(ステップ S411)。
BIOS13aはユーティリティ13cから受け取った感度レベルの値に対応する各種加速度に関する閾値をEC/KBC28に通知する(ステップ S412)。
EC/KBC23は、BIOS13aから通知された加速度に関する閾値を特定のレジスタに保存する(ステップ S413)。さらに、ユーティリティ13cはBIOS13aを介して、HDDプロテクション機能をオンにするために、EC/KBC28内に設けられるレジスタ28cに「HDDプロテクション機能がオンになった」ことを示すビットを立てる(ステップ S414)。次に、ユーザが感度レベル等を設定する際に表示されるユーティリティ13cの設定画面の一例について説明する。
図19は、ユーザが感度レベル等を設定する際に表示されるユーティリティの設定画面の一例を示す図である。
ユーザは感度レベルを選択設定するために図19に示す設定画面をLCD4に表示させる。HDDプロテクション機能をオフにしたい場合、チェックch2をチェックする。なお、HDDプロテクション機能をデフォルトでオンにする場合は、デフォルトとしてチェックch1にチェックされている。
HDDプロテクション機能のオン/オフをチェックし、適用ボタンbt1を押下げることで設定内容に変更が生じた場合、ユーティリティ13cからBIOS13aを介してEC/KBC28にHDDプロテクション機能のオン/オフ内容が通知される。
さらに、コンピュータ1の使用ケースに応じた、ユーザによる感度レベルの選択設定について以下に説明する。ACアダプタをコンピュータ1に接続してコンピュータ1を使用するケースに応じた感度レベルをユーザが選択設定する場合、bar1を移動させることで感度レベルを例えば、「レベル1」「レベル2」「レベル3」の中から選択設定する。
また、バッテリ駆動のコンピュータ1を使用するケースに応じた感度レベルをユーザが選択設定する場合、bar2を移動させることで、感度レベルを例えば「レベル1」「レベル2」「レベル3」の中から選択設定する。
また、バッテリで駆動するコンピュータ1をタブレットモードで使用するケースに応じた感度レベルをユーザが選択設定する場合、bar3を移動させることで、感度レベルを例えば「レベル1」「レベル2」「レベル3」の中から選択設定する。
ここで、タブレットモードとは、例えばユーザがコンピュータ1を持ちながらペン入力で入力するモードをさす。タブレットモードであるか否かの判別として、ヒンジ軸に対するディスプレイユニット状態を判別することが可能である。ユーザがコンピュータ1をタブレットモードで使用する場合、例えばコンピュータ1の傾斜角度を気にせずに持ち歩きながら、ペンにより入力することが考えられる。このような使用方法を前提とすると、タブレットモード時における感度レベルのデフォルト値として「レベル1」を選択する、つまり3軸分の合成加速度(X,Y,Z)でのみ衝撃発生を予測すれば、回転を伴う弱い揺れについて誤検出を防止できる。
また、バッテリで駆動するコンピュータ1を音楽再生モードで使用するケースに応じた感度レベルをユーザが選択設定する場合、bar3を移動させることで、感度レベルを例えば「レベル1」「レベル2」「レベル3」の中から選択設定する。
音楽再生モードとは、例えば、ユーザはコンピュータ1をカバンに入れてコンピュータ1の傾斜角度を気にせずに持ち歩きながら、イヤホンを用いてコンピュータ1で再生される音楽を聴くモードをさす。音楽再生モードの使用方法としてこのような使用方法を前提とすると、3軸分の合成加速度(X,Y,Z)でのみ衝撃発生を予測すれば、回転を伴う弱い揺れについて誤検出が防止できる。
なお、図20に示すテーブルのとおり、デフォルト値として、コンピュータ1にACアダプタを接続して使用する場合の感度レベルを「レベル3」、コンピュータ1をバッテリ駆動させて使用する場合の感度レベルを「レベル2」、バッテリで駆動するコンピュータ1をタブレットモードで使用する場合の感度レベルを「レベル1」、バッテリで駆動するコンピュータ1を音楽再生モードで使用する場合の感度レベルを「レベル1」と選択(許可)設定しておくことが可能である。次に、コンピュータ1の感度レベルを一時的にアップさせるための設定を行う際に表示されるユーティリティ13cの設定画面の一例について説明する。
図21は、コンピュータ1の感度レベルを一時的にアップさせるための設定を行う際に表示されるユーティリティ13cの設定画面の一例を説明する図である。
ユーザは図21に示す設定画面をLCD4に表示させ、コンピュータ1に所定のイベントが発生した場合に感度レベルを一時的にアップさせる、ように設定可能である。
感度レベルを一時的にアップさせるための所定のイベントとして、「ACアダプタがコンピュータ1からとりはずされた」「ディスプレイユニット2が閉じられた」というイベントをユーザは選択設定(許可設定)することが可能である。
例えば「ディスプレイユニット2が閉じられた」というイベントを、感度レベルを一時的にアップさせるためのイベントとしてユーザが選択したい場合、ユーザはch3にチェックを入れる。ユーザはch3にチェックを入れた後、適用ボタンbt2を押下げする。
「ディスプレイユニット2が閉じられた」というイベントが感度レベルを一時的にアップさせるためのイベントとして選択されると、例えば、コンピュータ1がバッテリで駆動している状態において(この状態での感度レベルは「レベル2」)、ユーザがディスプレイユニット2を閉じると、感度レベルが一時的に「レベル3」にアップする。
なお、図22に示すテーブルのとおり、デフォルト値として「ACアダプタがコンピュータ1からとりはずされた」「ディスプレイユニット2が閉じられた」というイベントを感度レベルを一時的にアップさせるためのイベントとして選択(許可)設定しておくことが可能である。次に、感度レベルを一時的にアップさせる制御フロー、および、コンピュータ1の使用ケースに応じた感度レベルを選択する制御フローについて説明する。
図23は、感度レベルを一時的にアップさせる制御フローの一例について説明するフローチャートである。図24は、コンピュータ1の使用ケースに応じた感度レベルを選択する制御フローの一例について説明するフローチャートである。
コンピュータ1に接続されているACアダプタが取り外されたことをEC/KBC28が検出された場合(ステップ S501 Yes)またはコンピュータ1のディスプレイユニットを本体に対して開放位置から閉塞位置に変化させたことをEC/KBC28が検出した場合(ステップ S502 Yes)、EC/KBC28は、I/Oハブ20にSMI(System Management Interrupt)信号を送出する。CPU10にて実行されるBIOS13aはSMI(System Management Interrupt)処理を実行し、BIOS13aはユーティリティ13cに、これらのイベントが発生した旨を通知する(ステップ S503)。
ユーティリティ13cはBIOS13aからの通知を受けると、ユーティリティ13cが有するタイマカウンタの動作を開始させる(ステップ S504)。
ユーティリティ13cはタイマカウンタの動作を開始させると、ユーティリティ13cはBIOS13aを介して、HDDプロテクション機能を一旦オフにするために、EC/KBC28内に設けられるレジスタ28cに「HDDプロテクション機能がオンになった」ことを示すビットをクリアする(ステップ S505)。
さらに、ユーティリティ13cは、「EC/KBC28に対してHDDプロテクション機能をオフにする旨を通知した」ことを確認すると、ユーティリティ13cは感度レベルが一番高い「レベル3」の値をBIOS13aに通知する(ステップ S506)。
BIOS13aはユーティリティ13cから受け取った感度レベル「レベル3」の値に対応し、各種加速度に関する閾値をEC/KBC28に通知する。EC/KBC23は、BIOS13aから通知された閾値を保存する(ステップ S507)。さらに、ユーティリティ13cはBIOS13aを介して、HDDプロテクション機能をオンにするために、EC/KBC28内に設けられるレジスタ28cに「HDDプロテクション機能がオンになった」ことを示すビットを立てる(ステップ S508)。
一方、コンピュータ1に接続されているACアダプタが取り外されたことを検出していない場合(ステップ S501 No)かつコンピュータ1のディスプレイユニットを本体に対して開放位置から閉塞位置に変化させたことを検出していない場合(ステップ S502 No)、ユーティリティ13cはタイマカウンタが動作中であるか否かを確認する(ステップ S509)。タイマカウントが動作中である場合(ステップ S509 Yes)、ユーティリティ13cはタイムアウトであるか否かを確認する(ステップ S510)。
タイムアウトである場合(ステップ S510 Yes)、ユーティリティ13cはタイマカウンタの動作を停止する(ステップ S511)。
ユーティリティ13cはタイマカウンタの動作を停止させると、ユーティリティ13cはBIOS13aを介して、HDDプロテクション機能をオフにするために、EC/KBC28内に設けられるレジスタ28cに「HDDプロテクション機能がオンになった」ことを示すビットをクリアする(ステップ S512)。
さらに、ユーティリティ13cは、「EC/KBC28に対してHDDプロテクション機能をオフにする旨を通知した」ことを確認すると、ユーティリティ13cは、ユーザによって選択設定されている感度レベルの値をBIOS13aに通知する(ステップ S513)。
BIOS13aはユーティリティ13cから受け取った感度レベルの値に対応し、各種加速度に関する閾値をEC/KBC28に通知する。EC/KBC23は、BIOS13aから通知された閾値を保存する(ステップ S514)。さらに、ユーティリティ13cはBIOS13aを介して、HDDプロテクション機能をオンにするために、EC/KBC28内に設けられるレジスタ28cに「HDDプロテクション機能がオンになった」ことを示すビットをたてる(ステップ S515)。
上述で説明したとおり、「ACアダプタをコンピュータ1から取り外すイベント」または「ディスプレイユニットを本体に対して開放位置から閉塞位置に変化させるイベント」が生じると、ユーザがコンピュータを持ち運ぶ可能性が高い。したがって、これらのイベント生じた後、所定の期間に渡って感度レベルをアップする制御にしておくことで、HDD21への衝撃発生に備えることが可能となる。
ユーティリティ13cがタイマカウンタが動作中ではないことを確認した場合において(ステップ S509 No)、コンピュータ1の駆動電源がAC駆動、またはバッテリ駆動に変更されたことをEC/KBC28が検出した場合(ステップ S516 Yes)、またはコンピュータ1のモードがタブレットモードに切り替えられたことをEC/KBC28が検出した場合(ステップ S517 Yes)または、コンピュータ1のモードが音楽再生モードに切り替えられたことをEC/KBC28が検出した場合(ステップ S518 Yes)、EC/KBC28は、I/Oハブ20に対してSMI(System Management Interrupt)信号を送出する。BIOS13aはSMI処理を行うことでユーティリティ13cにこれらのイベントが発生した旨を通知する(ステップ S519)。
ユーティリティ13cはBIOS13aを介して、HDDプロテクション機能をオフにするために、EC/KBC28内に設けられるレジスタ28cに「HDDプロテクション機能がオンになった」ことを示すビットをクリアする(ステップ S520)。
さらに、ユーティリティ13cは、「EC/KBC28に対してHDDプロテクション機能をオフにする旨を通知した」ことを確認すると、ユーティリティ13cは、ユーザがユーティリティ13cの設定画面を用いて設定した、コンピュータ1の使用状況に対応する感度レベルの値をBIOS13aに通知する(ステップ S521)。
BIOS13aはユーティリティ13cから受け取った感度レベルの値に対応し、各種加速度に関する閾値をEC/KBC28に通知する。EC/KBC23は、BIOS13aから通知された閾値を保存する(ステップ S522)。さらに、ユーティリティ13cはBIOS13aを介して、HDDプロテクション機能をオンにするために、EC/KBC28内に設けられるレジスタ28cに「HDDプロテクション機能がオンになった」ことを示すビットをたてる(ステップ S523)。次に、コンピュータ1にドッカーを接続した場合におけるHDDプロテクション機能の制御について説明する。
図25は、コンピュータ1にドッカーが接続された状態を示す図である。図26は、コンピュータ1にドッカーを接続した場合におけるHDDプロテクション機能の制御フローについて説明した図である。図27は、コンピュータ1にドッカーを接続した場合における、HDDプロテクション機能を実現するためにBIOS13aで選択されるテーブルの一例について説明する図である。
コンピュータ1にドッカーを接続するとコンピュータ1の状態は水平面から一定の傾斜角度を保つ状態となる(図25参照。)。そこで、各種加速度に関する閾値の値がコンピュータ1の傾きを考慮した閾値であるテーブルを別途設ける。(図27参照。)
ドッカーをコンピュータ1に接続する操作が行われると(ステップ S601 Yes)、BIOS13aからEC/KBC28にHDDプロテクション機能をオフにする旨が通知される(ステップ S602)。
BIOS13aはコンピュータ1の傾きを考慮した閾値をEC/KBC28に通知する(ステップ S603)。EC/KBC28は、BIOS13aから通知された閾値を保存する(ステップ S604)。BIOS13aはEC/KBC28にHDDプロテクションオンにする旨を通知する(ステップ S605)。
一方、ドッカを外す操作を行う場合(ステップ S606 Yes)、BIOS13aはコンピュータ1の傾きを考慮していない閾値(図18参照)をEC/KBC28に通知する(ステップ S607)。EC/KBC28は、BIOS13aから通知された閾値を保存する(ステップ S608)。BIOS13aはEC/KBC28にHDDプロテクションオンにする旨を通知する(ステップ S609)。
本発明は上記実施形態をそのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示されている全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。