【誤訳訂正書】
【提出日】平成19年9月9日(2007.9.9)
【誤訳訂正１】
【訂正対象書類名】明細書
【訂正対象項目名】全文
【訂正方法】変更
【訂正の内容】
【書類名】        明細書
【発明の名称】      堅牢な拡張性能を備えたモバイルコンピューターシステム
【特許請求の範囲】
【請求項１】  コンピューターシステムに挿入された周辺機器を検出し、
前記周辺機器上の第１のメモリスペースから前記コンピューターシステム内の第２のメモリスペースにセットアップアプリケーションをコピーし、
前記コピー後、前記セットアップアプリケーション内のインストールルーチンを実行すること
を特徴とする堅牢なコンピューター拡張を備える方法。
【請求項２】  前記方法はさらに、
前記セットアップアプリケーション内の前記インストールルーチンを実行した後に前記周辺機器上のウェルカムアプリケーションを実行すること
を含むことを特徴とする請求項１記載の方法。
【請求項３】  前記方法はさらに、
前記コンピューターシステムからの前記周辺機器の取り外しに際して、前記セットアップアプリケーション内の取り外しルーチンを実行すること
を含むことを特徴とする請求項１記載の方法。
【請求項４】  前記方法はさらに、
前記セットアップアプリケーション内の前記インストールルーチンから前記コンピューターシステムへドライバープログラムをインストールし、前記ドライバープログラムは前記周辺機器と関連させること
を含むことを特徴とする請求項１記載の方法。
【請求項５】  前記方法はさらに、
前記セットアップアプリケーション内の前記インストールルーチンから前記コンピューターシステムへオペレーティングシステム拡張をインストールすること
を含むことを特徴とする請求項１記載の方法。
【請求項６】  前記方法はさらに、
前記周辺機器の前記第１のメモリスペースへのアクセスからバスエラーを発見することにより、前記コンピューターシステムからの前記周辺機器の取り外しを検出すること
を含むことを特徴とする請求項１記載の方法。
【請求項７】  前記方法はさらに、
拡張インタフェース上の信号からの立ち下がりエッジの検出により、前記コンピューターシステムからの前記周辺機器の取り外しを検出すること
を含むことを特徴とする請求項１記載の方法。
【請求項８】  コンピューターシステムに挿入された周辺機器の検出は、拡張インタフェース上の信号からの立ち上がりエッジを検出することを含むことを特徴とする請求項１記載の方法。
【請求項９】  前記方法はさらに、
前記モバイルコンピューターシステム内のプロセッサが前記周辺機器上の前記第１のメモリスペースを正当にアクセスすることができるように、チップ選択ポリシーを調節すること
を含むことを特徴とする請求項１記載の方法。
【請求項１０】  前記方法はさらに、
前記周辺機器上の前記第１のメモリスペース中の既知の位置からメモリアクセス時間定義フィールドにアクセスし、
前記メモリアクセス時間定義フィールドによってメモリ待ち状態ポリシーを調節すること
を含むことを特徴とする請求項１記載の方法。
【請求項１１】  前記方法はさらに、
前記セットアップアプリケーション内の前記インストールルーチンから前記コンピューターシステムへオペレーティングシステムパッチをインストールすること
を含むことを特徴とする請求項１記載の方法。
【請求項１２】  前記方法はさらに、
前記コンピューターシステムからの前記周辺機器の取り外しに際して前記セットアップアプリケーション内の取り外しルーチンを実行することを含むことを特徴とする請求項１１記載の方法。
【請求項１３】  前記取り外しルーチンは前記コンピューターシステムからの前記周辺機器の取り外しの後に前記オペレーティングシステムパッチを除外すること
を特徴とする請求項１２記載の方法。
【請求項１４】  前記ウェルカムアプリケーションはバックアッププログラムを含み、前記バックアッププログラムは前記モバイルコンピューター内のメモリから前記周辺機器上の不揮発性記憶装置システムに情報をコピーすることを特徴とする請求項２記載の方法。
【請求項１５】  前記不揮発性記憶装置システムはフラッシュメモリーを含むことを特徴とする請求項１４記載の方法。
【請求項１６】  前記方法はさらに、
前記モバイルコンピューターシステム内の前記メモリの後に、前記不揮発性記憶装置システムに格納されている情報をリストアすること
を含むことを特徴とする請求項１４記載の方法。
【請求項１７】  コンピューターシステムの拡張インタフェースからの周辺機器の取り外しを検出し、
前記周辺機器の取り外しを処理する前記コンピューターシステムのメインメモリ内の取り外しルーチンを実行すること
を含むことを特徴とする堅牢なコンピューター拡張を提供する方法。
【請求項１８】  前記取り外しルーチンは、前記コンピューターシステムから前記周辺機器に関連したドライバープログラムを取り外すことを特徴とする請求項１７記載の方法。
【請求項１９】  前記取り外しルーチンは、前記コンピューターシステムから前記周辺機器に関連したオペレーティングシステム拡張を取り外すことを特徴とする請求項１７記載の方法。
【請求項２０】  周辺機器の取り外しの検出は、前記周辺機器内の前記第１のメモリスペースへのアクセスからバスエラーを検出することを含むことを特徴とする請求項１７記載の方法。
【請求項２１】  周辺機器の取り外しの検出は、拡張インタフェース上の信号から立ち下がりエッジを検出することを含むことを特徴とする請求項１７記載の方法。
【請求項２２】  前記方法はさらに、
前記コンピューターシステム内のプロセッサが前記周辺機器上の第１のメモリスペースを正当にアクセスすることができないように、チップ選択ポリシーを調節すること
を含むことを特徴とする請求項１７記載の方法。
【請求項２３】  前記取り外しルーチンは、前記コンピューターシステムからの前記周辺機器の取り外しの後、前記周辺機器が挿入された時にインストールされたオペレーティングシステムパッチを除外することを特徴とする請求項１７記載の方法。
【請求項２４】  メインメモリを有するコンピューターシステム上の拡張インタフェースと、
前記拡張インタフェース内への挿入用の周辺機器であって、周辺機器メモリスペースを有する前記周辺機器と、
前記周辺機器メモリスペース内に存在するセットアップユーティリティープログラムと、
前記コンピューターシステム上の周辺機器の検波および処理プログラムであって、前記周辺機器が前記拡張インタフェースへいつ挿入されるか検出するための、および前記周辺機器が挿入される場合に前記メインメモリに前記セットアップユーティリティープログラムをコピーするための前記周辺機器の検波および処理プログラムと
を備えることを特徴とする拡張可能なコンピューター装置。
【請求項２５】  前記周辺機器の検波および処理プログラムは、メインメモリ内に前記セットアップユーティリティープログラムをコピーした後に前記セットアップユーティリィティを実行することを特徴とする請求項２４記載のコンピューター装置。
【請求項２６】  前記周辺機器の検波および処理のプログラムは、前記周辺機器メモリスペース内に格納されたウェルカムアプリケーションを実行することを特徴とする請求項２４記載のコンピューター装置。
【請求項２７】  前記セットアップユーティリティープログラムは、前記周辺機器に関連したドライバープログラムを前記メインメモリへインストールすることを特徴とする請求項２４記載のコンピューター装置。
【請求項２８】  前記セットアップユーティリティープログラムは、前記コンピューターシステムへオペレーティングシステム拡張をインストールすることを特徴とする請求項２４記載のコンピューター装置。
【請求項２９】  前記周辺機器の検波および処理プログラムは、前記周辺機器メモリスペースへのアクセスからバスエラーを検出することにより、前記コンピューターシステムからの前記周辺機器の取り外しを検出することを特徴とする請求項２４記載のコンピューター装置。
【請求項３０】  前記周辺機器の検波および処理プログラムは、前記拡張インタフェース上の信号からの立ち下がりエッジの検出により、前記コンピューターシステムからの前記周辺機器の取り外しを検出することを特徴とする請求項２４記載のコンピューター装置。
【請求項３１】  前記周辺機器の検波および処理プログラムは、前記拡張インタフェース上の信号から立ち上がりエッジを検出することにより、前記周辺機器が挿入されるときを検出することを特徴とする請求項２４記載のコンピューター装置。
【請求項３２】  前記周辺機器が取り外される場合、前記周辺機器の検波および処理プログラムは、前記セットアップユーティリィティ内の取り外しルーチンを実行することを特徴とする請求項２４記載のコンピューター装置。
【請求項３３】  前記取り外しルーチンは、前記セットアップユーティリティープログラムによってインストールされたドライバーを取り外すことを特徴とする請求項３２記載のコンピューター装置。
【請求項３４】  前記コンピューターシステム内のプロセッサが前記周辺機器上の前記周辺機器メモリスペースに正当にアクセスすることができるように、前記周辺機器の検波および処理プログラムは、チップ選択ポリシーを調節することを特徴とする請求項２４記載のコンピューター装置。
【請求項３５】  前記周辺機器の検波および処理プログラムは、前記周辺メモリスペースの既知の位置からメモリアクセス時間定義フィールドにアクセスし、前記メモリアクセス時間定義フィールドに従って前記コンピューターシステム内のプロセッサを調節することを特徴とする請求項２４記載のコンピューター装置。
【請求項３６】  前記メモリアクセス時間定義フィールドは、待ち状態の最小数を含むことを特徴とする請求項３５記載のコンピューター装置。
【請求項３７】  前記セットアップユーティリティープログラムは、前記コンピューターシステムへオペレーティングシステムパッチをインストールすることを特徴とする請求項２４記載のコンピューター装置。
【請求項３８】  前記セットアップユーティリティープログラムは、前記コンピューターシステムからの前記周辺機器の取り外しに際して前記周辺機器に関連したドライバーを取り外すための前記セットアップアプリケーション内の取り外しルーチンを含むことを特徴とする請求項３７記載のコンピューター装置。
【請求項３９】  前記取り外しルーチンは、前記コンピューターシステムからの前記周辺機器の取り外しの後に前記オペレーティングシステムパッチを除外することを特徴とする請求項３７記載のコンピューター装置。
【請求項４０】  前記ウェルカムアプリケーションはバックアッププログラムを含み、前記バックアッププログラムは前記モバイルコンピューター内のメモリから前記バックアップ周辺機器内の不揮発性記憶装置システムに情報をコピーすることを特徴とする請求項２６記載のコンピューター装置。
【請求項４１】  前記不揮発性記憶装置システムはフラッシュメモリーを含むことを特徴とする請求項４０記載のコンピューター装置。
【請求項４２】  コンピューターシステムの拡張インタフェースに挿入された、バックアッププログラムおよび不揮発性記憶装置システムを含むバックアップ周辺機器の挿入の検出し、
前記拡張インタフェースへの前記バックアップ周辺機器の挿入後に自動的に前記バックアッププログラムを実行し、
前記バックアッププログラムを使用して、前記バックアップ周辺機器内の前記不揮発性記憶装置システムに前記モバイルコンピューター内のメモリから情報をコピーすること
を特徴とするモバイルコンピューターシステムをバックアップする方法。
【請求項４３】  前記不揮発性記憶装置システムはフラッシュメモリーを含むことを特徴とする請求項４２記載の方法。
【請求項４４】  前記方法はさらに、
前記モバイルコンピューターシステム内の前記メモリの後に、前記不揮発性記憶装置システムに格納されている情報をリストアすること
を含むことを特徴とする請求項４２記載の方法。
【請求項４５】  代替クレードル検出ピンの検査により、インタフェースポートへの入力装置の結合を検出し、
前記インタフェースポートへの前記入力装置の結合の検出に際して、前記インタフェースポートを初期化し、
前記入力装置を介してユーザー入力のための前記インタフェースポートをモニターすること
を特徴とするモバイルコンピューターシステムへ入力を与える方法。
【請求項４６】  前記入力ポートはシリアルポートを含むことを特徴とする請求項４５記載の方法。
【請求項４７】  前記入力ポートはユニバーサルシリアルバスポートを含むことを特徴とする請求項４５記載の方法。
【請求項４８】  前記入力装置はキーボードを含むことを特徴とする請求項４５記載の方法。
【請求項４９】  代替クレードル検出ピンの検査は周期的に前記代替クレードル検出ピンをポーリングすることを含むことを特徴とする請求項４５記載の方法。
【請求項５０】  前記方法はさらに、
前記インタフェースポートを介して前記入力装置を処理するために、前記モバイルコンピューターシステム内のバックグラウンドタスクを開始すること
を含むことを特徴とする請求項４５記載の方法。
【請求項５１】  インタフェースポートと、
入力装置が前記インタフェースポートに連結される時アクティブにされる代替クレードル検出ピンと、
前記代替クレードル検出ピンをポーリングし、前記代替クレードル検出ピンがアクティブにされる場合に、前記入力装置を介してユーザー入力のために、前記インタフェースポートを初期化し前記インタフェース・ポートモニターするポーリングプログラムと
を備えることを特徴とするコンピューターシステム。
【請求項５２】  前記入力ポートはシリアルポートを含むことを特徴とする請求項５１記載のコンピューターシステム。
【請求項５３】  前記入力ポートはユニバーサルシリアルバスポートを含むことを特徴とする請求項５１記載のコンピューターシステム。
【請求項５４】  前記入力装置はキーボードを含むことを特徴とする請求項５１記載のコンピューターシステム。
【請求項５５】  前記ポーリングプログラムは、前記インタフェースポートを介して前記入力装置を処理するために、前記モバイルコンピューターシステム内のバックグラウンドタスクを開始することを特徴とする請求項５１記載のコンピューターシステム。
【請求項５６】  第１のデータインタフェースポートと、
第２のデータインタフェースポートと、
半複信方式パスが前記第２のインタフェースポートに連結される時アクティブにされる代替クレードル検出ピンと、
前記代替クレードル検出ピンがアクティブにされる場合に前記第２のデータインタフェースポートが使用されるべきであることを指定する同期ルーチンと
を備えることを特徴とするコンピューターシステム。
【請求項５７】  前記第１のデータインタフェースポートは、ユニバーサルシリアルバスポートを含むことを特徴とする請求項５６記載のコンピューターシステム。
【請求項５８】  前記第２のデータインタフェースポートはシリアルポートを含むことを特徴とする請求項５６記載のコンピューターシステム。
【請求項５９】  前記同期ルーチンは割り込みハンドラーを含むことを特徴とする請求項５６記載のコンピューターシステム。
【発明の詳細な説明】
【０００１】
発明の分野
本発明はモバイルコンピューターシステムの技術分野に関する。特に、本発明は、コンピューターシステムが作動している間、周辺装置が物理インタフェースに連結され分断されることを可能にする、外部の物理インタフェースおよび堅牢なコンピューターソフトウェアを有するコンピューターシステムを開示する。
【０００２】
発明の背景
モバイルコンピューターシステムは、非常にポピュラーな形式のコンピューター装置になった。モバイルコンピューターシステムは、アドレス帳、個人のカレンダーおよび予定事項リストのような、大量の個人情報にユーザーがアクセスすることを可能にする。特に、サンタクララ（カリフォルニア）のパームコンピューティング社からの手のひらのサイズのコンピューターシステム、パーム（登録商標）シリーズは、ハンドヘルドコンピューターシステムのデファクトスタンダードになった。
【０００３】
追加機能性を提供するために、モバイルコンピューターシステムの上に外部ハードウェアインタフェースを含むことは、望ましい。手のひらサイズのコンピューターシステムのパーム（登録商標）シリーズは、外部周辺装置と通信するための外部シリアルインタフェースを含んでいる。しかしながら、外部のシリアルインタフェースは、限定的なコミュニケーション帯域幅と限定的なインタフェース仕様によって制限されている。
【０００４】
したがって、より高い帯域幅およびより多くの機能を満載した外部インタフェースを提供することが望ましいであろう。理想的には、外部インタフェースは、ユーザーが少しのトレーニングも必要としないように使用するために非常に簡単であるべきである。更に、外部インタフェースは、適切であるか否かに関係なく、任意のタイプのユーザー行動を処理するように十分に堅牢であるべきである。
【０００５】
発明の開示
本発明は、コンピューターシステムのために堅牢な外部インタフェースを導入する。外部インタフェースは、ユーザーがどのようなあらかじめ用意した手続きにも慎重に従う必要はないように、ユーザーが外部インタフェースへの外部周辺装置をいつでも挿入するか、または取り外すことを可能にする。外部インタフェースソフトウェアは、挿入または取り外しを検出し、適切なやり方で作用する。
本発明の他の目的、特徴および利点は、添付図面、および以下の詳述から明白になる。
【０００６】
図面の簡単な説明
本発明の目的、特徴、および利点は、以下の詳細な説明を考慮すると当業者には明らかになる。
図１Ａおよび１Ｂは、モバイルコンピューターシステムのための外部の周辺インタフェースを図示している。図１Ｃは、モバイルコンピューターシステム用の１つの可能なソフトウェアアーキテクチャのブロックダイヤグラムを図示している。
図２は、周辺機器が拡張インタフェースへ差し込まれる時に行なわれるオペレーションのフローチャートを図示している。
図３は、周辺機器が拡張インタフェースから取り除かれる時に行なわれるオペレーションのフローチャートを図示している。
図４は、１つの可能な周辺機器の挿入／取り外し割り込みジェネレーターの状態図を図示している。
図５は、周辺機器挿入の処理のための割り込みルーチンについて記述するフローチャートを図示している。
図６は、周辺機器の挿入イベントの処理のためのイベント処理部について記述する流れ図を図示している。
図７は、周辺機器に伴って、周辺機器の挿入イベントで実行されるセットアップユーティリィティ用のインストールルーチンについて記述するフローチャートを図示している。
図８は、周辺機器取り外しの処理のための割り込みルーチンについて記述するフローチャートを図示している。
図９は、周辺の取り外しイベントの処理のためのイベント処理部について記述するフローチャートを図示している。
図１０は、周辺機器が差し込まれた時、セットアップユーティリィティのインストールルーチンによってコンピューターシステムに行なわれた変更を元に戻すセットアップユーティリィティ用の取り外しルーチンについて記述するフローチャートを図示している。
図１１は、コンピューターシステムから周辺機器を取り除くことにより引き起こされたバスエラーを処理するバスエラー例外ルーチンについて記述するフローチャートを図示している。
図１２は、外部入力装置を識別しサポートするためにどのように入力アラートピンを使用することができるか説明するフローチャートを図示している。
【０００７】
好適な実施例の詳細な説明
コンピューターシステムのための堅牢な外部インタフェースを実装する方法と装置が開示される。以下の記述では、説明の目的において、特定の用語体系は、本発明の完全な理解を提供するために詳しく説明される。しかしながら、これらの特定の詳細は本発明を実施するのに必要でないことが、当業者には明らかになる。例えば、本発明はハンドヘルドコンピューターシステムに関して記述されている。しかしながら、同じ技術は、容易に他のタイプのコンピューターシステムに適用することができる。
【０００８】
拡張可能なモバイルコンピューターシステム
図１Ａおよび１Ｂは、拡張インタフェース１１０を含んでいるモバイルコンピューターシステム１００を図示している。拡張インタフェースは、モバイルコンピューターシステム１００のバスに周辺機器が直接挿入され連結されることを可能にする。１つの実施例では、周辺機器がいつ挿入され取り外されるかプロセッサが検知することができるように、モバイルコンピューターシステム１００におけるプロセッサからの割込み回線が、拡張インタフェース１１０と結合される。拡張インタフェースに挿入された周辺機器がプロセッサのアテンションを求めることができるように、第２の割込み回線が拡張インタフェース１１０上の信号として提供される。
【０００９】
図１Ｃは、モバイルコンピューターシステム１００のソフトウェアアーキテクチャのための１つの可能な実施例を図示している。図１Ｃに示されるように、いくつかのデバイスドライバ１２１、１２３、１２５は、モバイルコンピューターシステム１００のハードウェア１１５をコントロールするために使用される。デバイスドライバは、オペレーティングシステム１５０によってアクセスされる。オペレーティングシステムは、イベントキュー１６１に配列された一連のイベントを処理するイベント処理部１６０を含んでいる。イベントは、ディジタイザパッド、ボタンのプレス、メニュー選択などにおけるスタイラスストロークのようなインターフェースイベントを含むことができる。オペレーティングシステムは、さらにプロセッサ割り込みの処理のための少なくとも１つの割り込みハンドラー１７０を有している。いつでも、追加割込みを導入できる。モバイルコンピューターシステム１００上で作動するアプリケーションプログラムは、ハードウェアと対話するためにオペレーティングシステム１５０のサービスを利用する。
【００１０】
挿入／取り外し概要
モバイルコンピューターシステム１００の操作を単純化するために、拡張インタフェース１１０は、操作することが簡単で非常に堅牢になるように設計されている。具体的には、拡張インタフェース１１０は、ユーザーがいつでも周辺装置を挿入し取り外すことを可能にするように設計されている。ユーザーが拡張インタフェース１１０に周辺機器を挿入するか、拡張インタフェース１１０から周辺機器を取り除く場合、モバイルコンピューターシステム１００は、自動的に適切なリアクションで応答する。ユーザーが拡張インタフェース１１０に周辺機器を挿入する場合、最初にモバイルコンピューターシステム１００は挿入する周辺機器を検出する。次に、モバイルコンピューターシステム１００は、任意の適切なデバイスドライバプログラムをインストールする。最後に、モバイルコンピューターシステム１００は、周辺機器に関連した指定のアプリケーション（指定のアプリケーションがある場合に）を実行する。ユーザーが拡張インタフェース１１０から周辺機器を取り外す場合、モバイルコンピューターシステム１００は、自動的にあらゆる関連するデバイスドライバプログラムを取り外し、取り外す周辺機器を要求するあらゆるアプリケーションを終了する。
【００１１】
周辺機器挿入の概要
図２は、モバイルコンピューターシステム１００がどのように周辺の挿入を処理するかの概要を示す。図２に示されるように、ステップ２１０において、周辺機器は周辺機器の拡張インタフェースへ差し込まれる。割り込みハンドラーは、周辺機器の拡張インタフェースへの周辺機器の挿入を識別し、次に、ステップ２２０において、イベントキュー上に周辺機器の挿入イベントをキューイングする。
【００１２】
ステップ２４０において、イベントハンドラーは、周辺機器の挿入イベントを検出し、周辺機器の挿入ルーチンを実行する。ステップ２５０において、周辺機器の挿入ルーチンは、周辺機器上のメモリスペース内に指定のセットアップユーティリィティを配置することを試みる。指定のセットアップユーティリィティが配置される場合、周辺機器の挿入ルーチンは、周辺機器メモリからモバイルコンピューターシステムのメインメモリに指定のセットアップユーティリィティをコピーする。その後、周辺機器の挿入ルーチンは、ステップ２５５において、セットアップユーティリィティを実行する。
【００１３】
セットアップユーティリィティ（１つあった場合）を実行した後、周辺機器の挿入イベントハンドラールーチンは、ステップ２６０において、周辺機器上のメモリスペース内に指定の「ウェルカムアプリケーション」を配置することを試みる。指定のウェルカムアプリケーションが配置される場合、周辺機器の挿入ルーチンは、ステップ２６５において、ウェルカムアプリケーションを開始する。この時点では、周辺機器は初期化され、また、挿入する周辺機器に関連したあらゆるデフォルトアプリケーションもここでは実行している。したがって、周辺機器の挿入で、モバイルコンピューターシステムは、挿入する周辺機器の使用のための準備をした。
【００１４】
周辺取り外しの概要
図３は、モバイルコンピューターシステムがどのように周辺機器取り外しを処理するかの概要を示している。ユーザーがステップ３０５において周辺機器の拡張インタフェースから周辺機器を取り外すときに、図３のフローチャートは開始する。割り込みハンドラーは、ステップ３２０において、周辺機器の拡張インタフェースからの周辺機器の取り外しを識別し、イベントキュー上に周辺機器取り外しイベントをキューイングする。
ステップ３４０において、イベントハンドラーは周辺機器取り外しイベントを処理する。イベントハンドラーは、周辺機器の取り外しを示すために、システムデータ構造を更新することにより、周辺機器取り外しイベントを処理する。
【００１５】
ステップ３７０では、イベントハンドラーは、セットアップユーティリィティが、取り外す周辺機器に関連するメインメモリ内にあるか否かを判断する。指定のセットアップユーティリィティが配置されている場合、イベントハンドラーの周辺機器取り外しルーチンは、セットアップユーティリィティ内の取り外しルーチンを実行する。１つの実施例では、イベントハンドラーは、セットアップユーティリティがそれ自体をアンインストールするべきであることを示す「削除」指示と取り外された周辺装置に関連するすべてのドライバーと共に、ステップ３７５においてセットアップユーティリティを実行する。ステップ３８０においては、周辺機器用のセットアップユーティリィティはもはや必要ではないため、セットアップユーティリィティはモバイルコンピューターシステムのメモリから取り外される。この時点で、取り外す周辺機器に関連したすべてのドライバプログラム（それはもはや必要でない）は、モバイルコンピューターシステムから取り外された。
ステップ３９０において、イベントハンドラーは解放されるアプリケーションイベントをキューに入れる。このように、現在実行しているアプリケーション（それは周辺機器を使用していてもよい）は、潔く実行を止めるだろう。
【００１６】
周辺機器の挿入
ユーザーが拡張インタフェース１１０に周辺機器を挿入する場合に、モバイルコンピューターシステム１００を適切に反応することの後の詳細は些細でない。モバイルコンピューターシステム１００の拡張インタフェース１１０内への周辺機器の挿入に応じたモバイルコンピューターシステム１００の操作は、図２、５、６および７に関して示されるだろう。図２に述べられるように、モバイルコンピューターシステム１００の１つの実施例は、周辺機器挿入のモバイルコンピューターシステムに通知するために割込信号を使用する。
【００１７】
周辺機器挿入の割り込み生成
モバイルコンピューターシステム１００の１つの実施例は、周辺機器挿入割込信号を生成するために割り込み生成回路を使用する。割り込み生成回路は、割込信号上の立ち上がりエッジを探すことによって、カード挿入機構が周辺の拡張インタフェース１１０を連結したことを検知する。割り込み生成回路は、実際に拡張インタフェースから信号につながれた割り込み生成回路が割り込み生成回路の現在状態に依存する異なるやり方で動作する状態ベースの検出器である。
【００１８】
図４は、周辺機器の挿入／取り外し割り込み生成回路の状態図を示している。最初に、モバイルコンピューターシステムの電源が切られている場合、割り込み生成回路は、オフ状態４１０である。モバイルコンピューターシステムの電源が入れられる場合、周辺の挿入／取り外し割り込み生成回路は、周辺機器が現在拡張インタフェースにあるか否かを割り込み生成回路が判断するブート状態４３０に入る。周辺の挿入／取り外し割り込み生成回路が拡張インタフェースにつながれた周辺機器を検出した場合、割り込み生成回路はその後「周辺機器の挿入」状態４６０に移る。その逆で、周辺機器の挿入／取り外し割り込み生成回路が拡張インタフェースにつながれた周辺機器を検出しない場合、割り込み生成回路は「周辺機器がない」状態４８０に移る。
【００１９】
周辺機器の挿入状態４６０において、周辺機器の挿入／取り外し割り込み生成回路は、周辺機器の拡張インタフェースからの信号の立ち下がりエッジを探す。立ち下がりエッジ信号が検出された場合、周辺機器の挿入／取り外し割り込み生成回路は、周辺機器の取り外し割り込みを生成し、周辺機器がない状態４８０に移る。周辺機器がない状態４８０で、周辺機器の挿入／取り外し割り込み生成回路は、周辺機器の拡張インタフェースからの信号の立ち上がりエッジを探す。立ち上がりエッジ信号が検出された場合、周辺機器の挿入／取り外し割り込み生成回路は、周辺機器の挿入割り込みを生成し、周辺機器の挿入状態４６０に移る。
【００２０】
周辺挿入割り込み処理
図５を参照して、ステップ５１０において、ユーザーがいったん周辺機器を挿入すると、割込み信号が発生する。ステップ５２０において、割込みハンドラーは処理を引き継ぐ。ステップ５３０において、割り込みハンドラーは、周辺機器の挿入によって割り込みが引き起こされたか否か判断する。割り込みが別の装置によって引き起こされた場合、他の割り込みハンドラーは、ステップ５３５で述べられるような割り込み処理を行う。
【００２１】
周辺機器挿入が検出された場合、ステップ５４０において、割り込みハンドラーは、まず挿入された周辺機器ハードウェアのリセットを押し進める。周辺機器の機能がアクセスできるように、リセットで、挿入された周辺機器ハードウェアに動作状態に入る。次に、モバイルコンピューターシステム上で動くソフトウェアによって周辺機器のカード上のメモリおよび入出力をマップされたメモリがアクセスすることができるように、割り込みハンドラーはチップ選択ポリシーを調節する。１つの実施例では、割り込みハンドラーは、単に可能な限り大きな周辺機器メモリにアクセスするためにチップ選択ポリシーを調節する。ステップ５６０において、割り込みハンドラーは、イベントキューに周辺機器の挿入イベントを配列する。周辺機器の挿入イベントは、イベントハンドラーに周辺機器の構成を再開させる。イベントキューに周辺の挿入イベントを配列した後、割り込みハンドラーは、周辺機器の挿入割り込み処理を終了する。
【００２２】
周辺機器挿入イベント処理
オペレーティングシステム内のイベントハンドラーは、結局周辺機器の挿入イベントに遭遇する。図６は、イベントハンドラーがどのように周辺の挿入イベントを処理するかを示している。図６を参照して、イベントハンドラーは、挿入する周辺機器に関する情報を得るために、周辺機器メモリスペースのあらかじめ定められたセクションを最初に読み込む。メモリ読出しを実行する前に、イベントハンドラーは、最初に、最大の可能な番号の待ち状態で読出しを発行するようにプロセッサを設定する。この様に、メモリ読出しは、プロセッサで作動することができる最も遅い型に関するメモリのためにさえ作動する。
周辺の情報を含むセクションを読み込んだ後、ステップ６２０において、イベントハンドラーは、周辺機器メモリから読み込まれた情報を有効にする。周辺機器の情報が適切に有効にされない場合、イベントハンドラーは、無効の周辺機器についてユーザーに知らせることができる。その後、ステップ６２５において、イベントハンドラーは、無効の周辺機器の処理を中止してもよい。
【００２３】
周辺機器からの周辺の読取情報が適切に有効にされる場合、イベントハンドラーは新たに挿入される周辺機器との対話のためにハンドヘルドコンピューターを準備する。イベントハンドラーは、最初に、周辺機器内で使用されるメモリを処理するために必要とされる待ち状態の最小数を指定する値を周辺機器から読み込む。その後、ステップ６３０において、イベントハンドラーは、周辺機器上のメモリにアクセスする場合に待ち状態の最小数を待つために、プロセッサの動作を調節する。
その後、ステップ６５０において、イベントハンドラーは、挿入される周辺機器についてオペレーティングシステムに通知する。サンタクララ（カリフォルニア）のパーム・コンピューティングからＰａｌｍＯＳに基づく１つの実施例では、イベントハンドラーは、追加プログラムを含むことができる第２のメモリーカードの存在を示すためにシステムデータ構造を更新することにより、オペレーティングシステムに通知する。オペレーティングシステムは、追加メモリーカードを検査し、ファイルシステムリストに追加プログラムを加える。
【００２４】
次に、ステップ６６０において、イベントハンドラーは、関連するセットアップユーティリィティを周辺機器が有するか否か判断する。周辺機器が関連するセットアップユーティリィティを有する場合、イベントハンドラーは、イベントハンドラーがモバイルコンピューター装置のメインメモリに周辺機器のセットアップユーティリィティをコピーするステップ６６３に移る。モバイルコンピューター装置のメインメモリにセットアップユーティリィティをコピーすることによって、後にユーザーが周辺機器を引き抜いても、セットアップユーティリィティは引き続き利用可能になる。モバイルコンピューター装置のメインメモリにセットアップユーティリィティをコピーした後、ステップ６６５において、イベントハンドラーは「インストール」信号によりセットアップユーティリィティを実行する。インストール信号は、それが必要な周辺機器の特定のインストール作業をすべて行なうべきであるとセットアップユーティリィティに通知する。セットアップユーティリィティのインストールについての詳細は、以下のセクション中で提示されるだろう。
【００２５】
セットアップユーティリィティ（１つあった場合）を実行した後、ステップ６８０において、イベントハンドラーは、周辺機器が、関連する「ウェルカムアプリケーション」を有するか否か判断する。ウェルカムアプリケーションは、周辺機器がインストールされた後、常に実行し始めるべきアプリケーションとして周辺機器によって指定されたアプリケーションである。例えば、携帯電話周辺機器は、携帯電話周辺機器がインストールされている場合、実行されるべきウェルカムアプリケーションとして携帯電話アプリケーションを指定することができる。ウェルカムアプリケーションが指定されている場合、ウェルカムアプリケーションが実行を始めるように、ステップ６８５において、ウェルカムアプリケーションが現在のアプリケーションとして指定される。ウェルカムアプリケーションが指定されていない場合、デフォルトアプリケーションが実行を始めるように、ステップ６８３において、デフォルトアプリケーションが現在のアプリケーションとして指定される。
パーム・コンピューティング社からのＰａｌｍＯＳを使用する実施例では、ランチャアプリケーションがデフォルトアプリケーションとして設定される。このように、ウェルカムアプリケーションが指定されていない場合、ランチャアプリケーションが実行を始める。ステップ６５０においてオペレーティングシステムに新規の周辺機器について通知されるので、ランチャアプリケーションは周辺機器の挿入により新しく利用可能なあらゆる新規のアプリケーションを表示する。
【００２６】
周辺機器挿入セットアップユーティリィティのインストール操作
図６に示されるように、周辺機器の特定のインストール操作をすべて行なうために、イベントハンドラーは周辺機器上でセットアップユーティリィティを使用する。図７は、セットアップユーティリィティによって行なうことのできる操作のリストを提供している。読者は、すべてのセットアップユーティリィティ・アプリケーションによって、図７のすべてステップを行なう必要があるとは限らないことに注意するべきである。周辺機器の各セットアップユーティリィティは、操作のために、インストールされた周辺機器を準備するのに必要な操作のみを行なう。更に、セットアップユーティリィティは、図７にリストされない操作を行なってもよい。
【００２７】
図７を参照して、ステップ７０５において、セットアップ・ユーティリティー・プログラムが開始する。ステップ７１０において、セットアップユーティリィティは、挿入された周辺機器上のメモリをアドレス指定するために使用されるチップ選択の操作を調節することができる。セットアップ・ユーティリティー・プログラムは、メモリと周辺機器内に含まれるＩ／Ｏアドレススペースの実サイズを適切に処理するためのチップ選択ポリシーを修正する。チップ選択ポリシーは、メモリと周辺機器のソフトウェアによって要求されるＩ／Ｏアドレススペースの実サイズを使用して調節される。
ステップ７１５において、セットアップユーティリィティは、周辺機器が操作に必要とするメインメモリの量を割り付ける。メインメモリは周辺機器に関連した状態変数を格納するために使用される。いくつかのシステムでは割り込みルーチン内のメモリの割付けを許可しないため、メモリはセットアップユーティリィティによって割り当てられる。
ステップ７２０において、セットアップユーティリィティは、必要ならば、システムコールにパッチをあてる。１つの実施例では、システムコールは、システムコールへのベクトルのリストを含む分岐テーブルにリストされてもよい。セットアップユーティリィティは、メインメモリに新規のシステムコール・ルーチンをコピーし、次に、新規のシステムコールを指すための分岐テーブル内のベクトルを変更することにより、システムコールにパッチをあててもよい。
【００２８】
ステップ７３０において、セットアップユーティリィティは、新規のシステムコールをインストールすることができる。新規のシステムコールは、コンピューターシステムのオペレーティングシステムに追加機能性を供給してもよい。いくつかのアプリケーションは、もし周辺機器の挿入により利用可能になる場合には、この追加機能性を使用するように設計されてもよい。
ステップ７４０において、セットアップユーティリィティは、周辺機器割り込みハンドラーをインストールすることができる。１つの実施例では、割込み回線はモバイルコンピューターシステム上の拡張インタフェースに連結される。この拡張インタフェースの割込み回線は、周辺機器の挿入割込み回線とは異なるということが注目されるべきである。周辺機器のセットアップユーティリィティは、その割込み回線のための周辺機器割り込みハンドラーをインストールしてもよい。拡張インタフェース割込み回線の上の割り込みが主張される時はいつでも、新しくインストールされた周辺機器割り込みハンドラーは、プロセッサのコントロールを得るであろう。
【００２９】
電力を節約するために、ほとんどのモバイルコンピューター装置には、使用されていない回路および装置の電源を切ることにより、電力をセーブすることを可能にするパワーマネージメントシステムがある。消費電力を低減するために、ステップ７５０において、周辺機器は、適当な時期でオペレーティングシステムによって呼ばれるパワーマネージメントルーチンをインストールするべきである。例えば、モバイルコンピューティング装置の電源が切られる場合、パワーオフルーチンがコールされてもよい。同様に、モバイルコンピューティング装置が、予め定義された期間使用されていなかった場合、アイドルパワーダウンルーチンがコールされてもよい。低消費電力ルーチンは、バッテリーが低い場合に、オペレーティングシステムによってコールされるように選定されてもよい。
多くの周辺装置は、他のアプリケーションプログラムにサービスを提供する。例えば、無線ネットワーキング周辺機器は、ＴＣＰ／ＩＰのようなネットワーク・サービスを他のアプリケーションへ提供する。無線ネットワーキング周辺機器のように他のアプリケーションにサービスを提供することは、他のアプリケーションによってアクセスされることができる１セットの共有ライブラリを提供することができる。セットアップユーティリィティは、図７のステップ７６０で指定されたような共有ライブラリをインストールするべきである。
【００３０】
いくつかの周辺装置は、周辺機器上の活動を監視するためにバックグラウンドタスクを要求する。セットアップユーティリィティは、ステップ７７０において、そのようなバックグラウンドスレッドを開始するべきである。
一旦セットアップユーティリィティが実行を終えたならば、周辺機器は操作の準備ができている。周辺機器が共有サービスを提供する場合、それらのサービスが利用可能である。周辺機器が専用アプリケーションによってコントロールされれば、その専用アプリケーションは、図６のステップ６８０、６８５で描かれるような「ウェルカムアプリケーション」として開始される。
【００３１】
周辺機器の取り外し
周辺機器の取り外しは、周辺機器の挿入と同様のやり方で処理される。ほとんどの場合、その取り外しは、割り込みルーチンによる取り外しを最初に検出し、チップ選択ポリシーを修正し、割り込みルーチンからの取り外しイベントをキューに入れ、次に、イベントハンドラーによる取り外しイベントを処理することによって処理される。イベントハンドラーは、「取り外し」信号により、周辺機器に関係するセットアップユーティリィティをコールすることにより、取り外しイベントを処理する。
いずれかのアプリケーションプログラム、割り込みルーチンあるいは他のプログラムが、取り外されるカードにマップされたメモリスペースへのアクセスを試みる場合、周辺機器の取り外し処理は、ハードウェア例外によって中断されることができる。取り外し割り込みハンドラーによってなされたチップ選択ポリシーの変更は、そのようなハードウェア例外割り込みを引き起こす。
【００３２】
周辺の取り外し割り込み
図３に示されるように、周辺機器の取り外しは、ステップ３１０において、割り込みを生成する。その後、割り込みハンドラーは、周辺機器の取り外し割り込みを識別し、ステップ３２０において周辺機器の取り外し割り込みを処理する。図８は、周辺機器の取り外し割り込みハンドラーの１つの実施例を示している。
【００３３】
図８に示されるように、割り込みハンドラーは、ステップ８２０において開始する。ステップ８３０において、割り込みは、その割り込みが周辺機器の取り外しによって引き起こされたか否か判断する。そうでなければ、ステップ８３５に示すように、別の割り込みハンドラーが割り込みを処理する。
ステップ８３０において周辺機器の取り外し割り込みが識別された場合、周辺機器の取り外し割り込みルーチンは、最初にモバイルコンピューターシステムのためのチップ選択を再プログラムする。その再プログラミングは、ステップ８４０において、周辺機器のメモリスペースへの今後のあらゆるアクセスも不正アクセスであることを示している。このように、プログラムが周辺機器のカード上の記憶場所をアクセスすることを試みれば、バスエラー例外が生成されるであろう。バスエラー例外は、このドキュメントの後のセクションで述べられるバスエラールーチンによって処理される。
ステップ８４０においてチップ選択を再プログラムした後、周辺機器の取り外し割り込みルーチンは、ステップ８６０において、イベントキュー内に周辺機器の取り外しイベントを配列する。周辺機器の取り外しイベントは、イベントハンドラーに周辺機器の取り外しルーチンの実行を開始させる。イベントハンドラーの周辺機器の取り外しルーチンは、（もし、バスエラーが生じなければ）周辺機器の取り外し処理の残りを処理する。
【００３４】
周辺機器の取り外しイベント処理
オペレーティングシステム内のイベントハンドラーは、バスエラーが最初に生じない場合、割り込みルーチンによってイベントキューに入れられた周辺機器の取り外しイベントに結局遭遇する。図９は、イベントハンドラーがどのように周辺機器の取り外しイベントを処理するかを示している。
図９を参照して、イベントハンドラーは、ステップ９１０において、取り外す周辺機器についてオペレーティングシステムに最初に通知する。サンタクララ（カリフォルニア）のパーム・コンピューティングからのＰａｌｍＯＳに基づいた１つの実施例では、イベントハンドラーは、もう１つの少ないメモリーカードを示すためにシステムデータ構造を更新することにより、オペレーティングシステムに通知する。そして、以前はその周辺機器で利用可能であった追加プログラムおよびデータへのレファレンスをすべて取り外してもよいように、オペレーティングシステムは取り外すカードを意識するようになる。
ステップ９２０において、イベントハンドラーは、実行するべき次のアプリケーションを指定する位置に、現在実行しているアプリケーションの識別子を格納する。次に、ステップ９３０において、イベントハンドラーは、現在実行しているアプリケーションのためのイベント列に、解放されるイベントをキューイングする。このように、現在のアプリケーションが実行を再開する時、潔くそれ自体を終了する。それ自体を終了した後、オペレーティングシステムは、実行するべき次のアプリケーションの実行を始める。現在のアプリケーションの識別子が実行するべき次のアプリケーションとして指定されたため、そのアプリケーションはそれ自体を再開する。このように、アプリケーションは、周辺機器が取り外され、変更された環境で再開する。
【００３５】
例えば、無線ネットワーキング周辺機器が取り外される場合、ウェブブラウジングアプリケーションが現在無線ネットワーキング周辺機器を使用していれば、そのウェブブラウジングアプリケーションは自動的にシャットダウンされる。ウェブブラウジングアプリケーションが再開することを試みる場合、ネットワーク周辺機器がネットワーク要求を処理することは利用可能ではないため、実行を異常終了させてもよい。
ステップ９６０において、イベントハンドラーは、周辺機器が、関連するセットアップユーティリィティをインストールしたか否か判断する。周辺装置に関連セットアップユーティリティがある場合、イベントハンドラーは、イベントハンドラーが「取り外し」信号によりステップ９６５でセットアップユーティリティを実行するステップ９６５に進む。取り外し信号は、必要な周辺機器の特定の取り外し操作をすべて行なうべきであるとセットアップユーティリィティに通知する。例えば、セットアップユーティリィティの取り外し部は、取り外す周辺機器に関係している割り込みハンドラー、共有ライブラリ、デバイスドライバなどをすべて取り外す。セットアップユーティリィティの取り外し部についての詳細は、以下のセクションで提示される。
セットアップ・ユーティリィティ（１つあった場合）を実行した後に、イベントハンドラーは、現在のアプリケーションが実行を再開するようなものを返す。解放されるアプリケーションイベントがイベントハンドラールーチンによってスケジュールされていたため、現在のアプリケーションはそれ自体を終了する。更に、そのアプリケーションがステップ９２０において実行するべき「次の」アプリケーションとして指定されたため、オペレーティングシステムは、現在のアプリケーションを再開する。
【００３６】
セットアップユーティリィティの取り外し操作
図９に示されるように、イベントハンドラーは、周辺機器の特定の取り外し操作をすべて行なうためにメインメモリに存在するセットアップユーティリィティを使用する。図１０は、セットアップユーティリィティの取り外し部によって行なうことのできる操作のリストを提供する。再び、読者は、すべてのセットアップユーティリィティ・アプリケーションの取り外しルーチンによって、図１０のステップのすべてを行なう必要があるとは限らないことに注意するべきである。各セットアップユーティリィティ取り外しルーチンは、セットアップユーティリィティが周辺機器の操作の準備をするために実行された時に行なわれた変更を、元に戻すのに必要な取り外し操作のみを行なう。
【００３７】
図１０を参照して、セットアップユーティリティープログラムは、ステップ１００５において開始する。ステップ１０１０において、セットアップユーティリィティの取り外しルーチンは、周辺機器をコントロールするのを支援するためにスタートされたあらゆるバックグラウンドスレッドを終了するべきである。これらのスレッドは、周辺機器のスレッドが、取り外す周辺機器をアクセスすることを試みるのを防ぐために、速く終了するべきである。
ステップ１０２０において、必要ならば、セットアップユーティリィティの取り外しルーチンは、パッチをあてたあらゆるシステムコールを取り外す。周辺機器へのアクセスを必要とするあらゆるパッチも、コンピューターシステムから取り外される。１つの実施例では、取り外す周辺機器に直接関係していないあるシステムコールは、モバイルコンピューターシステムメモリ内に残されてもよい。このように、オペレーティングシステムの弱点をケアするためのパッチは、オペレーティングシステムパッチを得てインストールすることをユーザーに要求することのないオペレーティングシステムにすることができる。代わりに、ユーザーが新規の周辺機器を得る場合、パッチがまだあてられていないなら、周辺機器はオペレーティングシステムパッチを挿入してもよい。しかしながら、ユーザーは、もし必要でなければ、そのような不本意なパッチがなされないよう指示してもよい。
【００３８】
ステップ１０３０において、セットアップユーティリィティの取り外しルーチンは、システムコールあるいは必要なときに周辺機器のインストールの間に加えられたあらゆる新規のシステムコールになされたあらゆるパッチを取り外す。周辺機器へのアクセスを必要とするあらゆる追加システムコールも、コンピューターシステムから取り外される。前節中で述べられるように、取り外す周辺機器に直接関係していないある追加システムコールは、モバイルコンピューターシステムメモリ内に残されてもよい。このように、オペレーティングシステムに対する拡張は、そのオペレーティングシステムの拡張を得てインストールすることをユーザーに要求せずに、オペレーティングシステムに対してなされてもよい。したがって、ユーザーが新規の周辺機器を得る場合、周辺機器はさらにオペレーティングシステム拡張を提供してもよい。
ステップ１０４０において、セットアップユーティリィティの取り外しルーチンは、取り外す周辺機器に関連したあらゆる割り込みハンドラーを取り外す。周辺機器が取り外されたため、そのような割り込みハンドラーはもはや適切ではない。
ステップ１０５０において、セットアップユーティリィティの取り外しルーチンは、取り外す周辺機器に関連したあらゆるパワーマネージメントルーチンを取り外す。周辺機器が取り外されたため、そのようなパワーマネージメントルーチンはもはや適切ではない。
ステップ１０６０において、セットアップユーティリィティの取り外しルーチンは、周辺機器が差し込まれた時にインストールされた、周辺機器に関連した共有ライブラリを取り外す。ステップ１０７０でリストされるように、周辺機器の取り外しを処理する他の操作が行なわれてもよい。
【００３９】
一旦セットアップユーティリィティの取り外しルーチンが実行を終えたならば、周辺機器に関連したシステムソフトウェアがすべて取り外される。セットアップユーティリィティの取り外しルーチンがイベントハンドラーにリターンするとき、イベントハンドラーは、ステップ９７０において、メインメモリからセットアップユーティリィティを削除することにより、周辺機器ドライバー取り外し工程を終える。最後に、ステップ９９０において、オペレーティングシステムは、「次の」アプリケーションの実行により現在のアプリケーションを再開する。
【００４０】
周辺機器の取り外しによって引き起こされるバスエラー
ユーザーがモバイルコンピューター装置の拡張ポートから周辺機器を取り外す場合、実行アプリケーションは、周辺機器のメモリスペース内のメモリまたは入出力の位置にアクセスすることを誤って試みるかもしれない。これが生じる時、プロセッサは取り外す記憶場所からのレスポンスを受け取れないため、バス障害が生じる。そのような状況を処理するために、専門のバスエラー例外ルーチンがモバイル装置のオペレーティングシステム内に存在する。
図１１は、バスエラー例外ルーチンの１つの実施例が、どのように動作してよいかを示している。バスエラー例外ルーチンが開始する場合、バスエラー例外ルーチンは、ステップ１１１０において、バスエラーが周辺機器の取り外しによって引き起こされたか否かをまず判断する。そのような決定をなす単純な１つの方法は、バスエラー例外を引き起こしたメモリアクセスのアドレスを調査することである。アドレスが周辺機器メモリスペース内にあった場合、バスエラーは周辺機器取り外しによって恐らく引き起こされている。バスエラーが周辺の取り外しによって引き起こされなかった場合、他のバスエラー処理コードがステップ１１１５にて実行される。
【００４１】
バスエラー例外が周辺の取り外しによって引き起こされたことが決定した場合、その後、バスエラー例外ハンドラーは、バスエラー例外を引き起こしたアプリケーションプログラムを消滅させることを試みて、バスエラーを引き起こしたアプリケーションプログラムが開始する前のコンピューターシステムの状態にコンピューターシステムの状態を戻す。バスエラー例外ハンドラーは、反するアプリケーションがスタートされる前に、これらが登録する値への１セットのレジスター（スタックポインターを含む）を戻すことによって、ステップ１１３０にてこのプロセスを始める。それらの値のうちの１つは、スタートされているアプリケーションの識別子である。
ステップ１１４０において、バスエラー例外ハンドラーは、例外を引き起こしたアプリケーションによって割り当てられたメモリをすべて解放する。ＰａｌｍＯＳ環境では、すべてのメモリアロケーションがメモリを割り当てたアプリケーションの識別子によってマークされるので、メモリの解放は容易に行なわれる。したがって、バスエラー例外ハンドラーは、反するアプリケーションのアプリケーション識別子の印のあるすべてのメモリブロックを単に解放する。ＰａｌｍＯＳシステムでは、「ＳｙｓＡｐｐＥｘｉｔ（）」システムコールは、割り当てられたメモリを解放するために使用することができる。「ＳｙｓＡｐｐＥｘｉｔ（）」システムコールは、特定のアプリケーション識別子に関連したメモリブロックを探すメモリヒープの中を「歩き」、それらのメモリブロックを解放する。
【００４２】
ステップ１１５０において、バスエラー例外ハンドラーは、バスエラー例外を引き起こしたアプリケーションによって開かれたデータベースをすべて閉じる。ＰａｌｍＯＳシステムでの「ＳｙｓＡｐｐＥｘｉｔ（）」システムコールは、さらに開かれたデータベースの閉鎖タスクを行なう。開いたデータベースはアプリケーション識別子によって識別される。
ステップ１１６０において、バスエラー例外ハンドラーは、バスエラー例外を引き起こしたアプリケーションに割り付けられた他のシステムリソースも解放する。１つの実施例では、バスエラー例外を引き起こしたアプリケーションによって所有されたあらゆるセマフォも取り外される。この時点において、アプリケーションは本質的に消滅させられている。
次に、ステップ１１６５において、バスエラー例外ハンドラーは、オペレーティングシステムが周辺機器からのあらゆるリソースも使用することを試みないように、周辺機器が取り外されたことをオペレーティングシステムに通知する。サンタクララ（カリフォルニア）のパーム・コンピューティングからのＰａｌｍＯＳに基づいた１つの実施例では、バスエラー例外ハンドラーは、第２のメモリーカードがモバイルコンピューターシステムから取り外されたことを示すために、システムデータ構造を更新することにより、オペレーティングシステムに通知する。
【００４３】
ステップ１１７０において、バスエラー例外ハンドラーは、周辺機器が、関連するセットアップユーティリィティアプリケーションを有していたか否か判断する。セットアップユーティリィティアプリケーションが配置されている場合、バスエラー例外ハンドラーはステップ１１７５において、周辺機器に関連するドライバー、割り込みハンドラー、パッチなどをすべて取り外すためのセットアップユーティリィティの取り外しルーチンをコールする。セットアップユーティリィティアプリケーションの実行後、バスエラー例外ハンドラーは、ステップ１１８０において、モバイルコンピューターシステムメモリからセットアップユーティリィティを取り外す。
最後に、ステップ１１９０において、バスエラー例外ハンドラーは、次のアプリケーションを実行させる。バスエラー例外ハンドラーは、利用可能な周辺機器なしで、アプリケーションを新規の実行環境で再開させるようにするために、ちょうど終了したアプリケーションとしてアプリケーション識別子を使用することができる。再開されたアプリケーションは、周辺機器なしでどのように進まなければならないか決める。バスエラー例外ハンドラーは、さらに、終了したアプリケーション以外にアプリケーションを選択してもよい。１つの実施例では、バスエラー例外ハンドラーは、モバイルコンピューターシステムのためのランチャアプリケーションであるために動くように、次のアプリケーションを選定してもよい。
【００４４】
周辺機器例
本発明の堅牢な拡張システムがどのように使用されることができるかを完全に説明するために、２〜３の拡張周辺機器の拡張が提示される。
【００４５】
モデム周辺機器
作成することができる１つのタイプの周辺機器は、電話回線を介してシリアルデータ接続を生成するための周辺機器のモデムである。モデム周辺機器には、モデム周辺機器の操作をコントロールするデバイスドライバが伴われるはずである。
モデム周辺機器が本発明の教示によって構築されたコンピューターシステムの拡張インタフェースへ挿入される時、その挿入は割り込みを生成する。周辺機器の挿入イベントがイベントキュー上に配列されるように、その割り込みは周辺機器の挿入イベントとして分類される。
【００４６】
イベントハンドラーは、図６に指定されるように、周辺機器の挿入イベントを処理する。最初に、イベントハンドラーは、周辺機器のメモリスペースから周辺機器の機器構成情報を読み込み、有効にする。その周辺機器の機器構成情報を使用して、イベントハンドラーは、ステップ６４０で指定されるように、メモリ速度を調節する。その後、イベントハンドラーは、ステップ６５０で指定されるように、新規の周辺機器についてＯＳに通知する。
次に、イベントハンドラーは、周辺機器のメモリスペースにあるセットアップユーティリィティをメインメモリへコピーする。その後、イベントハンドラーは、セットアップユーティリィティに必要なドライバーソフトをインストールさせるインストール信号を備えたセットアップユーティリィティをコールする。
【００４７】
その後、モデム周辺機器のセットアップユーティリィティは、アプリケーションがモデム周辺機器を使用しアクセスすることを可能にするために必要なドライバーソフトをすべてインストールする。モデム周辺機器のセットアップユーティリィティは、モデムのための共有ライブラリおよびモデムのサービスのための割り込みハンドラーをインストールする。１つの実施例では、今後のシリアルアクセスがモデムを使用することを試みるように、モデムセットアップユーティリィティは、デフォルト・ＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ  Ｔｒａｎｓｍｉｔｔｅｒ）としてモデムを指定してもよい。
モデム周辺機器は、ターミナルエミュレーションプログラムのようなデフォルトアプリケーションプログラムを含むことができる。ターミナルエミュレーションアプリケーションが周辺機器のモデムを拡張インタフェースに挿入した後に自動的に開始するように、そのターミナルエミュレーションプログラムは、モデム周辺機器上の「ウェルカムアプリケーション」として指定されることができる。
【００４８】
モデム周辺機器が取り外される時、別の割り込みが生成され、周辺機器取り外しによって引き起こされた割り込みであると確認される。その取り外しは、割り込みハンドラーに周辺機器の取り外しイベントをキューイングさせる。その後、イベントハンドラーは、図９に指定されるように、周辺機器の取り外しイベントを処理する。具体的には、取り外しイベントハンドラーは、周辺機器が取り外されたことをＯＳに通知し、現在実行しているアプリケーションのために解放されるイベントをキューイングする。周辺の取り外しイベントハンドラーは、次に、セットアップユーティリィティ内のインストールルーチンによってインストールされたモデムドライバをすべて取り外すために、セットアップユーティリィティの取り外しルーチンをコールする。最後に、周辺機器の取り外しイベントハンドラーは、モバイルコンピューターシステムのメインメモリからセットアップユーティリィティを取り外す。
【００４９】
ターミナルのアプリケーションがその後モデム周辺機器上にマップされたメモリスペースをアクセスしている間に、ユーザーがモデム周辺機器を引き抜けば、バスエラー例外が生成されてもよい。バスエラー例外はバスエラー例外ハンドラーによって処理される。その後、そのバスエラー例外ハンドラーは、図１１に指定された操作を行なう。具体的には、バスエラー例外ハンドラーは手動で現在実行するアプリケーション（それはターミナルのアプリケーションでありえる）を消滅させるだろう。次に、バスエラー例外ハンドラーは、セットアップユーティリィティ内のインストールルーチンによってインストールされたモデムドライバをすべて取り外すために、セットアップユーティリィティの取り外しルーチンをコールする。その後、バスエラー例外ハンドラーは、モバイルコンピューターシステムのメインメモリからセットアップユーティリィティを取り外す。
【００５０】
バックアップ周辺機器
すべての周辺機器が高度なドライバーソフトを必要とするとは限らないだろう。例えば、単純なポータブルバックアップ周辺機器は、フラッシュメモリカード周辺機器およびバックアッププログラムを単に使用して、本発明の教示により実装することができる。具体的には、周辺機器が挿入される時、バックアップアプリケーションが自動的にスタートされるように、フラッシュメモリカード周辺機器は、ウェルカムアプリケーションとしてバックアッププログラムを指定する。
【００５１】
バックアップ周辺機器が挿入される時、割り込みルーチンは、イベントキュー上に周辺機器の挿入イベントを配列する。イベントハンドラーは、図６に指定されるように、周辺機器の挿入イベントを処理する。最初に、イベントハンドラーは、周辺機器のフラッシュメモリースペースから周辺機器の機器構成情報を読み込み、有効にする。具体的には、イベントハンドラーは、フラッシュメモリカードを適合するために、ステップ６４０で指定されるようにメモリ速度を調節する。その後、イベントハンドラーは、ステップ６６０で指定されるように、新規の周辺機器についてＯＳに通知する。
その後、イベントハンドラーは、フラッシュメモリー内のセットアップユーティリィティを探す。バックアップ周辺機器は特別のドライバーを必要としないため、イベントハンドラーは、セットアップユーティリィティを見つけることができず、ウェルカムアプリケーションを探し始めないだろう。その後、インストーラーは、ステップ６８０、６８５で指定されるように、実行するべき次のアプリケーションとして、バックアップウェルカムアプリケーションを指定する。
【００５２】
ウェルカムアプリケーション（バックアップアプリケーション）は、その後、実行し始める。１つの実施例では、バックアップアプリケーションは、彼／彼女がバックアップを望むかどうか、あるいはフラッシュメモリカードからのデータの回復を望むかどうか、ユーザーに問い合わせる。ユーザーがバックアップを選択すれば、バックアップアプリケーションは、モバイルコンピューティング装置のメインメモリのコンテンツをバックアップ周辺機器のフラッシュメモリー内へバックアップすることを続行する。インクリメントのバックアップのような標準技術は、時間と電源消費を節約するために行なわれてもよい。ユーザーがバックアップフラッシュ周辺機器からのデータの回復を望めば、バックアップアプリケーションは、ユーザーがロスト・データのすべてあるいはいくつかを回復することを可能にする一連のスクリーン表示装置を表示する。
【００５３】
Ｉ／Ｏサポートを備えた第２の外部インタフェース
図１Ａおよび１Ｂで示されたモバイルコンピューターシステムのようなモバイルコンピューターシステムは、データの入力のために単純な入力機構をしばしば利用する。例えば、図１Ａおよび１Ｂで示されたモバイルコンピューターシステムは、スタイラスを使用しながら書き続けることができるディジタイザパッドを備える。ＡＳＣＩＩ（情報交換用米国標準コード）かＵＮＩＣＯＤＥ文字値のような正常な文字データを生成するために、ユーザーの筆跡は、その後、インタフェースソフトウェアによって解釈される。いくつかのモバイルコンピューターシステムは、テキストの入力のためにディスプレイ上に示された小さなキーパッドを使用する。そのような単純な入力機構は移動の間において有用であるが、多くのユーザーは、モバイルコンピューターシステムがオフィスのような正常な作業環境の中で使用される場合、標準的な入力機構を持つことを望む。
最も標準的なコンピューター入力機構は、有名なＱＷＥＲＴＹキーボードである。ＱＷＥＲＴＹは、ユーザーに最も有名なユーザインターフェースを供給する。他の人気のある入力機構は、ユーザーが語ることを解釈する音声のテキストシステムで、テキストのストリームを生成する。Ｄｒａｇｏｎ  ＳｙｓｔｅｍのＮａｔｕｒａｌｌｙ  ＳｐｅａｋｉｎｇおよびＩＢＭのＶｉａＶｏｉｃｅは、テキストシステムへの音声の例である。
【００５４】
代替入力サポート
ほとんどのポータブルコンピューターシステムは、単にデータを入力するために１つの機構を備える。データ入力を可能にする柔軟なシステムを提供するために、本発明は代替の入力ポートを導入する。具体的には、本発明は、自動的に外部入力装置からの入力を認識し受理する入力ポートを開示する。
図１Ａを参照して、モバイルコンピューターシステムは、外部インタフェース１５０を含んでいる。以下の表は、外部インタフェース１５０のピン配列について記述している。
【００５５】
【表１】
2003507788.tif 000001
【００５６】
外部インタフェース１５０は、２つの異なる方式、ユニバーサルシリアルバスとシリアルポートで、別のコンピューターシステムに連結するために必要なコンタクトを含んでいる。表１に示されるように、外部インタフェース１５０は、ユニバーサルシリアルバスポートがあるコンピューターシステムと通信するために、１セットのユニバーサルシリアルバス（ＵＳＢ）信号を含んでいる。具体的には、外部インタフェース１５０には、ＵＳＢデータ＋信号、ＵＳＢデータ−信号、および共通グランドがある。（ＵＳＢ  ＶＢｕｓ電源信号は、他のインプリメンテーション（示されない）の中で使用されてもよい）。外部インタフェース１５０は、さらに標準シリアルポートを介してコンピューターシステムか周辺機器と通信するためにシリアル送信、シリアル受信、および共通グランドを含んでいる。外部インタフェース１５０は、モバイルコンピューターが割り込みを処理することができるように、モバイルコンピューターシステム上の割り込みを起動する同期割込み回線をさらに含んでいる。１つの実施例では、割り込みは別のコンピューターシステムをモバイルコンピューターシステムについての情報と同期させる同期プログラム使用を起動するために使用される。
外部インタフェース１５０は、さらに代替クレードル検出ピンを含んでいる。代替クレードル検出ピンは、外部インタフェース１５０に連結される、ある周辺装置によってアクティブにされる入力ピンである。代替クレードル検出ピンをアクティブにしてもよい１つのクラスの周辺機器は、外部インタフェース１５０に連結される入力装置である。代替クレードル検出ピンがアクティブにされる場合、オペレーティングシステムが外部インタフェース１５０からのユーザー入力を処理するためのハンドラーを起動するように、モバイルコンピューターシステム１００内のオペレーティングシステムは、周期的に代替クレードル検出ピンをポーリングする。
【００５７】
図１２は、モバイルコンピューターシステムの１つの実施例が、どのように代替クレードル検出ピンを処理することができるかを説明するフローチャートの１つの実施例を示している。図１２を参照して、モバイルコンピューターシステムは、ステップ１２１０において、代替クレードル検出ピンをポーリングする。ステップ１２２０において、モバイルコンピューターシステムは、代替クレードル検出ピンがアクティブにされたか否か判断する。代替クレードル検出ピンがアクティブにされなかった場合、モバイルコンピューターシステムは、ステップ１２１０にリターンすることにより、代替クレードル検出ピンをポーリングし続ける。代替クレードル検出ピンがアクティブにされた場合、モバイルコンピューターシステムは、ステップ１２３０に移る。
ステップ１２３０において、モバイルコンピューターシステムは、最近接続された入力装置の処理のためにバックグラウンドタスクをスタートする。この時点から前に、この方法のステップを実行するためにバックグラウンドタスクを使用することができる。ステップ１２４０において、装置を接続した入力ポートが識別される。１つの実施例では、入力装置は、シリアルポートインタフェースあるいはユニバーサルシリアルバスインタフェースを使用することができる。プロトコルの定義されたセットは、ユニバーサルシリアルバスインタフェースに連結された入力装置を識別するために使用することができる。他の実施例では、入力インタフェースのうちの１つだけが入力装置に使用されてもよいので、ステップ１２４０は必要ではない。例えば、シリアルポートインタフェースだけが使用されてもよい。
【００５８】
ステップ１２５０において、バックグラウンドタスクは、入力装置が接続されたインタフェースポートを初期化する。ステップ１２６０において、バックグラウンドタスクは、現在入力装置が接続されたインタフェースポートをモニターする。モニターされたポート上のあらゆる入力あるいは変更が検出される場合、バックグラウンドタスクは、入力／変更を処理する。
ステップ１２７０において、バックグラウンドタスクは、入力装置が入力ポートから取り外されたか否か判断する。これは代替クレードル検出ピンを時々テストする（ポーリングする）ことにより検出することができる。入力装置が取り外された場合、バックグラウンドタスクは、入力ポートが閉じられ、バックグラウンドタスクがシャットダウンされるステップ１２７５に移る。その後、代替クレードル検出ピンがポーリングされる場合、この方法はステップ１２１０に進む。
ステップ１２８０において、バックグラウンドタスクは、データが入力装置から受信されたか否か判断する。データが入力装置から受信された場合、バックグラウンドタスクは、入力イベントをイベントキューにキューイングする。キューに入れられた入力イベントは、外部入力装置からデータが受信されたことを明示する。例えば、キーボード装置が外部インタフェースに連結された場合、バックグラウンドタスクは、キーボードイベントをイベントキューにキューイングしてもよい。
【００５９】
代替の同期
代替クレードル検出ピンは、他の目的に同様に使用されることができる。現在の実施例での代替の１つの使用は、代替クレードル検出ピンが代替同期データ経路を指定することを可能にする。表１を参照すると、外部インタフェースは、ＵＳＢデータ＋信号、ＵＳＢデータ−信号、および共通グランドを含んでいる。これらのＵＳＢデータ信号は、モバイルコンピューターシステムのパーソナルコンピュータシステムとの情報交換を可能にする。
ＵＳＢデータ信号のための主要な用途のうちの１つは、モバイルコンピューターシステムがパーソナルコンピュータシステムについての情報とその情報とを同期させることを可能にすることである。そのような同期システムはよく知られている。１つの例は、「Ｅｘｔｅｎｄａｂｌｅ  Ｍｅｔｈｏｄ  Ａｎｄ  Ａｐｐａｒａｔｕｓ  Ｆｏｒ  Ｓｙｎｃｈｒｏｎｉｚｉｎｇ  Ｍｕｌｔｉｐｌｅ  Ｆｉｌｅｓ  Ｏｎ  Ｔｗｏ  Ｄｉｆｆｅｒｅｎｔ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ」というタイトルで１９９９年３月１９日に発行された米国特許５，８８４，３２３号に開示されている。表１に以前に指定されているように、外部インタフェース１５０は、同期プログラムをアクティブにするために使用されることのできる同期割込み回線を含むことができる。通常は、同期プログラムは、ＵＳＢ接続を通じてつながれた他のコンピューターシステムと同期することを試みるだろう。
【００６０】
いくつかの状況では、ユーザーは、ＵＳＢ接続を通じて利用可能でないリモートコンピューターシステムと同期したいと望む。例えば、外部インタフェース上のシリアルデータ接続を使用するモデムは、モバイルコンピューターが電話回線を介して他のコンピューターシステムに遠隔に接続するのを可能にする。接続している１つ、モバイルコンピューターシステムは、リモートコンピューターシステムと同期することができる。そのようなアプリケーションの一例は、「Ｍｅｔｈｏｄ  Ａｎｄ  Ａｐｐａｒａｔｕｓ  Ｆｏｒ  Ｓｙｎｃｈｒｏｎｉｚｉｎｇ  Ａ  Ｐｏｒｔａｂｌｅ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｗｉｔｈ  Ａ  Ｄｅｓｋｔｏｐ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ」というタイトルで１９９７年１月３０日に申請された米国特許出願０８／７９２，１６６号で提示される。
そのような代替同期環境を処理するために、同期プログラムは、同期が始まる前に代替クレードル検出をテストしてもよい。特に、同期割込み要求を処理する割り込みルーチンが、代替のクレードルがアクティブか否か検知するために、代替クレードルピンをまずテストする場合である。代替クレードルピンがアクティブにされる場合、同期割り込みルーチンは、シリアルデータインタフェースのような代替同期パスを使用する代替同期プログラムを外部インタフェース上でスタートする。したがって、モデムのような外部インタフェースに連結されたハードウェアは、代替クレードル検出ピンをアクティブにするべきである。したがって、同期割込み要求がなされる場合、同期割り込みハンドラーは関連する代替同期プログラムをスタートすることができる。
前述のものは、コンピューターシステム用の堅牢な外部インタフェースを実装する方法と装置について記述した。当業者は、本発明の範囲から逸脱せずに、本発明の要素の材料および配置に変更および変形を行うことができると想定される。
【図面の簡単な説明】
【図１Ａ−Ｂ】
図１Ａおよび１Ｂは、モバイルコンピューターシステムのための外部の周辺インタフェースを図示している。
【図１Ｃ】
図１Ｃは、モバイルコンピューターシステム用の１つの可能なソフトウェアアーキテクチャのブロックダイヤグラムを図示している。
【図２】
図２は、周辺機器が拡張インタフェースへ差し込まれる時に行なわれるオペレーションのフローチャートを図示している。
【図３】
図３は、周辺機器が拡張インタフェースから取り除かれる時に行なわれるオペレーションのフローチャートを図示している。
【図４】
図４は、１つの可能な周辺機器の挿入／取り外し割り込みジェネレーターの状態図を図示している。
【図５】
図５は、周辺機器挿入の処理のための割り込みルーチンについて記述するフローチャートを図示している。
【図６】
図６は、周辺機器の挿入イベントの処理のためのイベント処理部について記述する流れ図を図示している。
【図７】
図７は、周辺機器に伴って、周辺機器の挿入イベントで実行されるセットアップユーティリィティ用のインストールルーチンについて記述するフローチャートを図示している。
【図８】
図８は、周辺機器取り外しの処理のための割り込みルーチンについて記述するフローチャートを図示している。
【図９】
図９は、周辺の取り外しイベントの処理のためのイベント処理部について記述するフローチャートを図示している。
【図１０】
図１０は、周辺機器が差し込まれた時、セットアップユーティリィティのインストールルーチンによってコンピューターシステムに行なわれた変更を元に戻すセットアップユーティリィティ用の取り外しルーチンについて記述するフローチャートを図示している。
【図１１】
図１１は、コンピューターシステムから周辺機器を取り除くことにより引き起こされたバスエラーを処理するバスエラー例外ルーチンについて記述するフローチャートを図示している。
【図１２】
図１２は、外部入力装置を識別しサポートするためにどのように入力アラートピンを使用することができるか説明するフローチャートを図示している。
【誤訳訂正２】
【訂正対象書類名】図面
【訂正対象項目名】図１Ｃ
【訂正方法】変更
【訂正の内容】
【図１Ｃ】
2003507788.tif 000002
【誤訳訂正３】
【訂正対象書類名】図面
【訂正対象項目名】図２
【訂正方法】変更
【訂正の内容】
【図２】
2003507788.tif 000003
【誤訳訂正４】
【訂正対象書類名】図面
【訂正対象項目名】図３
【訂正方法】変更
【訂正の内容】
【図３】
2003507788.tif 000004
【誤訳訂正５】
【訂正対象書類名】図面
【訂正対象項目名】図４
【訂正方法】変更
【訂正の内容】
【図４】
2003507788.tif 000005
【誤訳訂正６】
【訂正対象書類名】図面
【訂正対象項目名】図５
【訂正方法】変更
【訂正の内容】
【図５】
2003507788.tif 000006
【誤訳訂正７】
【訂正対象書類名】図面
【訂正対象項目名】図６
【訂正方法】変更
【訂正の内容】
【図６】
2003507788.tif 000007
【誤訳訂正８】
【訂正対象書類名】図面
【訂正対象項目名】図７
【訂正方法】変更
【訂正の内容】
【図７】
2003507788.tif 000008
【誤訳訂正９】
【訂正対象書類名】図面
【訂正対象項目名】図８
【訂正方法】変更
【訂正の内容】
【図８】
2003507788.tif 000009
【誤訳訂正１０】
【訂正対象書類名】図面
【訂正対象項目名】図９
【訂正方法】変更
【訂正の内容】
【図９】
2003507788.tif 000010
【誤訳訂正１１】
【訂正対象書類名】図面
【訂正対象項目名】図１０
【訂正方法】変更
【訂正の内容】
【図１０】
2003507788.tif 000011
【誤訳訂正１２】
【訂正対象書類名】図面
【訂正対象項目名】図１１
【訂正方法】変更
【訂正の内容】
【図１１】
2003507788.tif 000012
【誤訳訂正１３】
【訂正対象書類名】図面
【訂正対象項目名】図１２
【訂正方法】変更
【訂正の内容】
【図１２】
2003507788.tif 000013