(57)【特許請求の範囲】
【請求項１】
アドレス空間に配置されるデバイスのレジスタに対するアクセス保護を行なうメモリ保護ユニットを備え、オペレーティングシステムとプロセスとが動作する電子機器であって、
前記オペレーティングシステムは、前記メモリ保護ユニットを利用して前記オペレーティングシステム用の前記レジスタへのアクセス権限を設定し、
前記プロセスは、前記デバイスを操作する際に、前記オペレーティングシステムに操作依頼を行ない、前記オペレーティングシステムが、前記操作依頼に従って対応するレジスタにアクセスして、前記デバイスの操作を実行することを特徴とする電子機器。
【請求項２】
前記プロセスは、前記デバイスの操作に先立ち、前記オペレーティングシステムに前記デバイスの操作宣言を行ない、
前記オペレーティングシステムは、操作宣言を行なっていないプロセスからの操作依頼には応じないことを特徴とする請求項１に記載の電子機器。
【請求項３】
前記オペレーティングシステムは、同一のデバイスに対して複数のプロセスが操作宣言を行なった場合、最先に宣言を行なったプロセスからの操作宣言を排他的に受け付けることを特徴とする請求項２に記載の電子機器。
【請求項４】
前記プロセスは、前記デバイスの処理単位で操作宣言を行ない、
前記オペレーティングシステムは、前記デバイスの処理単位で前記デバイスの操作を実行することを特徴とする請求項２または３に記載の電子機器。
【請求項５】
前記デバイスは、汎用ＩＯであることを特徴とする請求項１〜４のいずれか１項に記載の電子機器。
【請求項６】
アドレス空間に配置されるデバイスのレジスタに対するアクセス保護を行なうメモリ保護ユニットを備えた電子機器で動作するオペレーティングシステムであって、
前記メモリ保護ユニットを利用して前記オペレーティングシステム用の前記レジスタへのアクセス権限を設定し、
オペレーティングシステム上で動作するプロセスから、前記デバイスの操作依頼を受け付けると、対応するレジスタにアクセスして、前記デバイスの操作を実行することを特徴とするオペレーティングシステム。
【請求項７】
アドレス空間に配置されるデバイスのレジスタに対するアクセス保護を行なうメモリ保護ユニットを備え、オペレーティングシステムとプロセスとが動作する電子機器におけるアクセス管理方法であって、
前記オペレーティングシステムが、前記メモリ保護ユニットを利用して前記オペレーティングシステム用の前記レジスタへのアクセス権限を設定するステップと、
前記プロセスが、前記デバイスを操作する際に、前記オペレーティングシステムに操作依頼を行なうステップと、
前記オペレーティングシステムが、前記操作依頼に従って対応するレジスタにアクセスして、前記デバイスの操作を実行するステップと、を有することを特徴とするアクセス管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アドレス空間に配置されるデバイスのレジスタに対するアクセス保護を行なうメモリ保護ユニットを備えた電子機器、この電子機器で動作するオペレーティングシステムおよびアクセス管理方法に関する。
【背景技術】
【０００２】
フィールド機器等の電子機器では、オペレーティングシステム上で動作しているプロセスが、アドレス空間にレジスタが配置されるデバイスを操作する処理が頻繁に行なわれる。ここでは、プロセスがＧＰＩＯ（General Purpose Input/Output）を操作する処理の従来例について説明する。なお、ＧＰＩＯは、汎用ＩＯであり、ソフトウェアで任意に入出力を操作できる端子である。
【０００３】
図１０は、マイクロコントローラ４１０とデバイス４２０を備えた電子機器４００の要部構成例を示すブロック図である。本図に示すように、マイクロコントローラ４１０は、ＣＰＵ  ＣＯＲＥ４１１とＲＡＭ４１２とＭＰＵ（Memory Protection Unit）４１３とＧＰＩＯ４１４とを備えており、バス４１５を介して相互に接続されている。バス４１５には、デバイス４２０も接続されている。デバイス４２０は、記憶装置、センサ、入出力装置等、電子機器４００の用途に応じた種々の装置を用いることができる。
【０００４】
ＣＰＵ  ＣＯＲＥ４１１上では、ＲＴＯＳ（Real-Time Operating System）が動作しており、ＲＴＯＳ上で複数のプロセスが動作しているものとする。ＲＴＯＳは、各プロセスに対して、プロセス管理やＡＰＩ（Application Programming Interface）経由で様々なサービスを提供する。
【０００５】
ＭＰＵ４１３は、メモリ保護ユニットであり、アドレス空間に配置されたＧＰＩＯ４１４等のレジスタへのアクセス保護を行なう。具体的には、プロセスからの依頼でＲＴＯＳがＭＰＵ４１３にアクセス権限を設定していれば、そのプロセスのアクセスを許可する。一方、アクセス権限が割り当てられていないプロセスに対しては、アクセス違反を検出して、アクセスを許可しない。なお、ＭＰＵ４１３に代えて、ＭＭＵ（Memory Management Unit）等のアクセス保護機能を備えた他のユニットを用いてもよい。
【０００６】
図１１は、上記構成の電子機器において、ＲＴＯＳ４３０上で動作するプロセスがＧＰＩＯ４１４を操作する手順について説明する図である。ここでは、プロセスａ４４０ａ、プロセスｂ４４０ｂが独立したプログラムとしてＲＴＯＳ４３０上で動作しているものとする。
【０００７】
また、ＧＰＩＯ４１４は、８ビット等の所定ビット数で区切られ、ＧＰＩＯ＿Ａ４１４ａとＧＰＩＯ＿Ｂ４１４ｂの２つのグループとして扱われるものとする。ここでは、プロセスａ４４０ａがＧＰＩＯ＿Ａ４１４ａを操作し、プロセスｂ４４０ｂがＧＰＩＯ＿Ｂ４１４ｂを操作するとする。すなわち、ＧＰＩＯ＿Ａ４１４ａをプロセスａ４４０ａの専用デバイスとして割り当て、ＧＰＩＯ＿Ｂ４１４ｂをプロセスｂ４４０ｂの専用デバイスとして割り当てるようにする。
【０００８】
ＲＴＯＳ４３０が用意するＡＰＩには、ＧＰＩＯ４１４を操作するためのレジスタであるＧＰＩＯレジスタへのアクセス権限の割り当てを依頼するためのＡＰＩ−１が含まれている。プロセスがＧＰＩＯ４１４を操作するためには、事前に、ＡＰＩ−１を利用してアクセス権限の割り当てを依頼する必要がある。この依頼に対してＡＰＩ−１は、ＭＰＵ４１３を操作して、アクセス権限の設定を行なう。
【０００９】
本図の例では、プロセスａ４４０ａが、ＡＰＩ−１経由でＲＴＯＳ４３０に、ＧＰＩＯ＿Ａレジスタが存在するアドレス空間をプロセスａ４４０ａに割り当てるように依頼する（Ｓ１）。
【００１０】
ＲＴＯＳ４３０のＡＰＩ−１は、ＧＰＩＯ＿Ａレジスタへのアクセス権限が未設定であれば、ＧＰＩＯ＿Ａレジスタが存在するアドレス空間にプロセスａ４４０ａ用のアクセス権限を設定する（Ｓ２）。図１２は、ＭＰＵ４１３において、ＧＰＩＯ＿Ａレジスタが存在するアドレス空間にプロセスａ４４０ａ用のアクセス権限が設定された様子を示している。
【００１１】
この状態で、プロセスａ４４０ａについてＧＩＰＯ＿Ａレジスタへのアクセス権限の設定があるため、ＭＰＵ４１３は、プロセスａ４４０ａに対してＧＰＩＯ＿Ａレジスタへのアクセスを許可する。このため、プロセスａ４４０ａは、ＧＰＩＯ＿ＡレジスタにアクセスしてＧＰＩＯ＿Ａ４１４ａを操作することができる（Ｓ３）。
【００１２】
プロセスｂ４４０ｂも同様の手順により、ＧＰＩＯ＿Ｂ４１４ｂを操作することができるようになる。一方、プロセスａ４４０ａが、ＧＰＩＯ＿Ｂレジスタにアクセスした場合、アクセス権限が設定されていないため、ＭＰＵ４１３により、アクセス違反が検出される。
【００１３】
なお、ＭＰＵ４１３によるアドレス空間へのアクセス権限設定とアクセス制御は、ＧＰＩＯレジスタのみならず、アドレス空間にレジスタが配置される種々のデバイス４２０に対しても行なうことができる。
【先行技術文献】
【非特許文献】
【００１４】
【非特許文献１】μITRON4.0仕様  保護機能拡張  2.3.2  メモリオブジェクトのアクセス保護、4.1  メモリオブジェクト管理機能（p.113〜ｐ.116）
【発明の概要】
【発明が解決しようとする課題】
【００１５】
上述のように、ＲＴＯＳ４３０が、プロセス４４０の依頼によりＭＰＵ４１３を操作することにより、アドレス空間に配置されたレジスタへのアクセス権限設定が行なわれる。そして、ＭＰＵ４１３は、アクセス権限が設定されたプロセス４４０からのアクセスを許可する。
【００１６】
しかしながら、アドレス空間に配置されたレジスタへのアクセス管理は、ハードウェアであるＭＰＵ４１３の仕様により制限され、自由度は必ずしも高くない。これは、コスト、サイズ等について限られた資源でＭＰＵ４１３を実現するに当たり、複雑化を避けて機能を制限せざるを得ない場合等があるためである。
【００１７】
例えば、一般的にＭＰＵ４１３は、境界制限が定められており、アクセス権限を設定する場合の開始アドレスやサイズに制限がある。このため、アドレス空間におけるレジスタの配置とＭＰＵ４１３の境界制限によっては、図１３に示すように、アクセス権の設定領域が、ＧＰＩＯ＿ＡレジスタとＧＰＩＯ＿Ｂレジスタとにまたがってしまい、ＧＰＩＯ＿Ａ４１４ａをプロセスａ４４０ａの専用デバイスとして割り当て、ＧＰＩＯ＿Ｂ４１４ｂをプロセスｂ４４０ｂの専用デバイスとして割り当てるようなことができない場合がある。なお、ＭＰＵ４１３に代えてＭＭＵを用いた場合にもページ境界制限により同様の問題が生じる場合がある。
【００１８】
また、一般的にＭＰＵ４１３は、設定可能なアクセス権限の数に制限があり、各プロセスからのアクセス権限の割り当て要求に応えられない場合も起こり得る。
【００１９】
そこで、本発明は、アドレス空間に配置されるデバイスのレジスタに対するアクセス保護を行なうメモリ保護ユニットを備えた電子機器において、メモリ保護ユニットの制約を受けずアクセス管理の自由度を高めることを目的とする。
【課題を解決するための手段】
【００２０】
上記課題を解決するため、本発明の第１の態様である電子機器は、アドレス空間に配置されるデバイスのレジスタに対するアクセス保護を行なうメモリ保護ユニットを備え、オペレーティングシステムとプロセスとが動作する電子機器であって、前記オペレーティングシステムは、前記メモリ保護ユニットを利用して前記レジスタへのアクセス権限を設定し、前記プロセスは、前記デバイスを操作する際に、前記オペレーティングシステムに操作依頼を行ない、前記オペレーティングシステムが、前記操作依頼に従って対応するレジスタにアクセスして、前記デバイスの操作を実行することを特徴とする。
ここで、前記プロセスは、前記デバイスの操作に先立ち、前記オペレーティングシステムに前記デバイスの操作宣言を行ない、前記オペレーティングシステムは、操作宣言を行なっていないプロセスからの操作依頼には応じないようにすることができる。
このとき、前記オペレーティングシステムは、同一のデバイスに対して複数のプロセスが操作宣言を行なった場合、最先に宣言を行なったプロセスからの操作宣言を排他的に受け付けるようにしてもよい。
また、前記プロセスは、前記デバイスの処理単位で操作宣言を行ない、前記オペレーティングシステムは、前記デバイスの処理単位で前記デバイスの操作を実行するようにしてもよい。
また、前記デバイスは、汎用ＩＯとすることができる。
上記課題を解決するため、本発明の第２の態様であるオペレーティングシステムは、アドレス空間に配置されるデバイスのレジスタに対するアクセス保護を行なうメモリ保護ユニットを備えた電子機器で動作するオペレーティングシステムであって、前記メモリ保護ユニットを利用して前記レジスタへのアクセス権限を設定し、オペレーティングシステム上で動作するプロセスから、前記デバイスの操作依頼を受け付けると、対応するレジスタにアクセスして、前記デバイスの操作を実行することを特徴とする。
上記課題を解決するため、本発明の第３の態様であるアクセス管理方法は、アドレス空間に配置されるデバイスのレジスタに対するアクセス保護を行なうメモリ保護ユニットを備え、オペレーティングシステムとプロセスとが動作する電子機器におけるアクセス管理方法であって、前記オペレーティングシステムが、前記メモリ保護ユニットを利用して前記レジスタへのアクセス権限を設定するステップと、前記プロセスが、前記デバイスを操作する際に、前記オペレーティングシステムに操作依頼を行なうステップと、前記オペレーティングシステムが、前記操作依頼に従って対応するレジスタにアクセスして、前記デバイスの操作を実行するステップと、を有することを特徴とする。
【発明の効果】
【００２１】
本発明によれば、アドレス空間に配置されるデバイスのレジスタに対するアクセス保護を行なうメモリ保護ユニットを備えた電子機器において、メモリ保護ユニットの制約を受けずアクセス管理の自由度を高めることができる。
【図面の簡単な説明】
【００２２】
【図１】マイクロコントローラとデバイスを備えた本実施形態の電子機器１００の要部構成例を示すブロック図である。
【図２】ＲＴＯＳの初期設定時の特徴的な動作を説明するフローチャートである。
【図３】ＲＴＯＳの初期設定時の動作を模式的に説明する図である。
【図４】初期設定後のＭＰＵ１１３のアクセス権限を説明する図である。
【図５】第１実施例において、プロセスがＧＰＩＯを操作するときの動作を模式的に示す図である。
【図６】プロセスからの直接的な操作実行を拒絶する動作を模式的に示す図である。
【図７】第２実施例の動作を模式的に示す図である。
【図８】第３実施例の動作を模式的に示す図である。
【図９】第４実施例の動作を模式的に示す図である。
【図１０】マイクロコントローラとデバイスを備えた電子機器の要部構成例を示すブロック図である。
【図１１】ＲＴＯＳ上で動作するプロセスがＧＰＩＯにアクセスする手順について説明する図である。
【図１２】ＭＰＵにおいて、ＧＰＩＯ＿Ａのレジスタが存在するアドレス空間にプロセスａ用のアクセス権限が設定された様子を示す図である。
【図１３】ＭＰＵの境界制限による問題点を説明する図である。
【発明を実施するための形態】
【００２３】
本発明の実施の形態について図面を参照して説明する。図１は、マイクロコントローラ１１０とデバイス１２０を備えた本実施形態の電子機器１００の要部構成例を示すブロック図である。電子機器１００は、例えば、フィールド機器とすることができる。本発明は、安全関連プロセスと非安全関連プロセスとが共存して動作している機能安全対応機器に特に効果的に適用することができるが、このようなフィールド機器に限られず種々の電子機器に適用することができる。
【００２４】
本図に示すように、マイクロコントローラ１１０は、ＣＰＵ  ＣＯＲＥ１１１とＲＡＭ１１２とＭＰＵ（Memory Protection Unit）１１３とＧＰＩＯ１１４とを備えており、バス１１５を介して相互に接続されている。バス１１５には、デバイス１２０も接続されている。デバイス１２０は、記憶装置、センサ、入出力装置等、電子機器１００の用途に応じた種々の装置を用いることができる。
【００２５】
ＣＰＵ  ＣＯＲＥ１１１上では、ＲＴＯＳ（Real-Time Operating System）が動作しており、ＲＴＯＳ上で複数のプロセスが動作しているものとする。ＲＴＯＳは、各プロセスに対して、プロセス管理やＡＰＩ（Application Programming Interface）経由で様々なサービスを提供する。ただし、ＲＴＯＳに代えて、一般的なＯＳを用いてもよい。
【００２６】
本実施形態の電子機器１００は、従来の電子機器４００と同様のハードウェアを用いて構成することができ、ソフトウェアであるＲＴＯＳとＲＴＯＳ上で動作するプロセスに新たな機能を持たせるようにしている。このため、ハードウェアの設計変更等が不要となり、ＭＰＵ１１３の制約を受けないアクセス管理を、コスト的に有利に実現することが可能である。
【００２７】
ＭＰＵ１１３は、メモリ保護ユニットであり、アドレス空間に配置されたＧＰＩＯ１１４等のレジスタへのアクセス保護を行なう。具体的には、ＭＰＵ１１３にアクセス権限が設定されていれば、その依頼元からのアクセスを許可する。アクセス権限が設定されていない場合には、アクセス違反を検出して、アクセスを許可しない。なお、ＭＰＵ１１３に代えて、ＭＭＵ（Memory Management Unit）等のアクセス保護機能を備えた他のユニットを用いてもよい。
【００２８】
＜第１実施例＞
上記構成の電子機器１００において、ＲＴＯＳ１３０上で動作するプロセスがＧＰＩＯ１１４を操作する手順の第１実施例について説明する。ここでは、プロセスａ１４０ａ、プロセスｂ１４０ｂが独立したプログラムとしてＲＴＯＳ１３０上で動作しており、ＧＰＩＯ１１４は、８ビット等の所定ビット数で区分けられ、ＧＰＩＯ＿Ａ１１４ａとＧＰＩＯ＿Ｂ１１４ｂの２つのグループとして扱われるものとする。
【００２９】
図２は、ＲＴＯＳ１３０の初期設定時の特徴的な動作を説明するフローチャートであり、図３は、初期設定時の動作を模式的に示す図である。後の実施例でも共通するが、第１実施例では、起動時等の初期設定において、ＲＴＯＳ１３０がＧＰＩＯ１１４の情報を取得し（Ｓ１０１）、ＭＰＵ１１３を操作して、各ＧＰＩＯレジスタが存在するアドレス空間に、ＲＴＯＳ１３０用のアクセス権を設定する（Ｓ１０２）。
【００３０】
この結果、初期設定後のＭＰＵ１１３のアクセス権は、図４に示すように、ＧＰＩＯ＿Ａレジスタ、ＧＰＩＯ＿ＢレジスタともＲＴＯＳ用に設定される。なお、ＧＰＩＯ１１４に加えて、プロセスの操作対象となるデバイス１２０の情報も収集して、デバイス１２０のレジスタが割り当てられたアドレス空間にＲＴＯＳ１３０用のアクセス権を設定するようにしてもよい。
【００３１】
図５は、第１実施例において、プロセス１４０がＧＰＩＯ１１４を操作するときの動作を模式的に示す図である。第１実施例では、ＲＴＯＳ１３０は、プロセス１４０からＧＰＩＯの操作依頼を受け付け、ＧＰＩＯの操作を実行するＡＰＩ−ａを用意している。
【００３２】
プロセスａ１４０ａがＧＰＩＯ＿Ａ１１４ａを操作する場合には、ＡＰＩ−ａを使用して、ＧＰＩＯ＿Ａの操作を依頼する（Ｓ１０３）。このように、第１実施例では、プロセス１４０は、ＲＴＯＳ１３０に対して、アクセス権限割り当て依頼は行なわない。また、直接ＧＰＩＯ＿Ａの操作は行なわず、ＡＰＩ−ａを使用して、ＧＰＩＯ＿Ａの操作を依頼する。この段階で、プロセスａ１４０ａの実行中からＲＴＯＳ１３０実行中にアクセス権限の設定が切り替わる。
【００３３】
そして、ＡＰＩ−ａが、依頼に従ってＧＰＩＯ＿Ａレジスタにアクセスし、ＧＰＩＯ＿Ａ１１４ａを操作する（Ｓ１０４）。このとき、ＲＴＯＳ１３０についてＧＩＰＯ＿Ａレジスタへのアクセス権限の設定があるため、ＭＰＵ１１３は、ＲＴＯＳ１３０のＧＰＩＯ＿Ａレジスタへのアクセスを許可する。
【００３４】
なお、プロセスａ１４０ａあるいはプロセスｂ１４０ｂが、直接ＧＰＩＯ＿Ａレジスタにアクセスしようとすると、アクセス権限が設定されていないため、図６に示すように、ＭＰＵ１１３によりアクセス違反として検出される。
【００３５】
このように、第１実施例によれば、個々のプロセス１４０に対してアクセス権限を割り当てるのではなく、ＲＴＯＳ１３０が一括してアクセス権限を設定し、プロセス１４０からの操作依頼に基づいてＧＰＩＯレジスタにアクセスする。このため、境界制限や設定可能なアクセス権限数の制限によるＭＰＵ１１３の制約を受けず、アクセス管理の自由度を高めることができる。
【００３６】
＜第２実施例＞
電子機器１００において、ＲＴＯＳ１３０上で動作するプロセスがＧＰＩＯ１１４を操作する手順の第２実施例について説明する。図７は、第２実施例の動作を模式的に示す図である。図７（ａ）に示すように、第２実施例においても、第１実施例と同様に、ＲＴＯＳ１３０がＧＰＩＯ１１４の情報を取得し、ＭＰＵ１１３を操作して、各ＧＰＩＯレジスタが存在するアドレス空間に、ＲＴＯＳ１３０用のアクセス権を設定する（Ｓ２０１）。
【００３７】
そして、プロセスａ１４０ａがＧＰＩＯ＿Ａ１１４ａを操作する場合には、図７（ｂ）に示すように、あらかじめ、ＲＴＯＳ１３０に対して、ＧＰＯＰ＿Ａ１１４ａの操作宣言を行なう（Ｓ２０２）。ＲＴＯＳ１３０には、この操作宣言を受け付けるためのＡＰＩ−ｃが用意されている。
【００３８】
また、ＲＴＯＳ１３０は、操作宣言を行なっているプロセス１４０からＧＰＩＯ１１４の操作依頼を受け付け、ＧＰＩＯ１１４の操作を実行するＡＰＩ−ｂを用意している。ＡＰＩ−ｂは、操作依頼を行なったプロセス１４０が、そのＧＰＩＯ１１４の操作宣言を行なっていない場合には、ＧＰＩＯ１１４の操作を実行しない。
【００３９】
プロセスａ１４０ａがＧＰＩＯ＿Ａ１１４ａを操作する場合には、図７（ｃ）に示すように、ＡＰＩ−ｂを使用して、ＧＰＩＯ＿Ａ１１４ａの操作を依頼する（Ｓ２０３）。プロセスａ１４０ａは、ＧＰＩＯ＿Ａ１１４ａの操作宣言を行なっているため、ＡＰＩ−ｂは、依頼に従ってＧＰＩＯ＿Ａレジスタにアクセスし、ＧＰＩＯ＿Ａ１１４ａを操作する（Ｓ２０４）。このとき、ＲＴＯＳ１３０についてＧＩＰＯ＿Ａレジスタへのアクセス権限の設定があるため、ＭＰＵ１１３は、ＲＴＯＳ１３０のＧＰＩＯ＿Ａレジスタへのアクセスを許可する。
【００４０】
一方、図７（ｄ）に示すように、ＡＰＩ−ｂは、ＧＰＩＯ＿Ａ１１４ａの操作宣言を行なっていないプロセスｂ１４０ｂからＧＰＩＯ＿Ａ１１４ａの操作依頼を受け付けた場合には、ＧＰＩＯ＿Ａレジスタへのアクセスは行なわず、ＧＰＩＯ＿Ａ１１４ａの操作は行なわない。
【００４１】
このように、第２実施例によれば、境界制限や設定可能なアクセス権限数の制限によるＭＰＵ１１３の制約を受けないことに加え、操作宣言を行なったプロセス１４０からの操作依頼に対してのみ操作を実行することにより、プロセス１４０毎にアクセス可能なＧＰＩＯ１１４を制限することができるため、アクセス管理の自由度がさらに高められる。
【００４２】
＜第３実施例＞
電子機器１００において、ＲＴＯＳ１３０上で動作するプロセスがＧＰＩＯ１１４を操作する手順の第３実施例について説明する。図８は、第３実施例の動作を模式的に示す図である。図８（ａ）に示すように、第３実施例においても、第１実施例と同様に、ＲＴＯＳ１３０がＧＰＩＯ１１４の情報を取得し、ＭＰＵ１１３を操作して、各ＧＰＩＯレジスタが存在するアドレス空間に、ＲＴＯＳ１３０用のアクセス権を設定する（Ｓ３０１）。
【００４３】
そして、第２実施例と同様に、プロセスａ１４０ａがＧＰＩＯ＿Ａ１１４ａを操作する場合には、図８（ｂ）に示すように、あらかじめ、ＲＴＯＳ１３０に対して、ＧＰＯＰ＿Ａ１１４ａの操作宣言を行なう（Ｓ３０２）。第３実施例では、ＲＴＯＳ１３０には、この操作宣言を受け付けるためのＡＰＩ−ｄが用意されている。
【００４４】
ここで、ＡＰＩ−ｄは、同一のＧＰＩＯ１１４に対しては、先に操作宣言をしたプロセス１４０に独占的に操作権限を与え、後から宣言した他のプロセス１４０からの操作宣言を拒否する。すなわち、操作権限の排他制御を行なう。
【００４５】
このため、図８（ｃ）に示すように、他のプロセスがＧＰＩＯ＿Ｂ１１４ｂに対する操作宣言を行なっていない状態で、プロセスｂ１４０ｂがＧＰＩＯ＿Ｂ１１４ｂに対する操作宣言を行なうと、プロセスｂ１４０ｂに対してＧＰＩＯ＿Ｂ１１４ｂの独占的な操作権限を与える。
【００４６】
一方、図８（ｄ）に示すように、プロセスａ１４０ａがＧＰＩＯ＿Ａ１１４ａに対する操作宣言を行なっている状態で、プロセスｂ１４０ｂがＧＰＩＯ＿Ａ１１４ａに対する操作宣言を行なうと、プロセスｂ１４０ｂからの操作宣言を拒否する。
【００４７】
操作宣言を行なったプロセス１４０がＧＰＩＯ１１４を操作する手順については第２実施例と同様である。すなわち、ＲＴＯＳ１３０は、第２実施例と同様に、操作宣言を行なっているプロセス１４０からＧＰＩＯ１１４の操作依頼を受け付け、ＧＰＩＯ１１４の操作を実行するＡＰＩ−ｂを用意している。ＡＰＩ−ｂは、操作依頼を行なったプロセス１４０が、そのＧＰＩＯ１１４の操作宣言を行なっていない場合には、ＧＰＩＯ１１４の操作を実行しない。
【００４８】
このように、第３実施例によれば、境界制限や設定可能なアクセス権限数の制限によるＭＰＵ１１３の制約を受けないことに加え、最先に操作宣言を行なったプロセス１４０からの操作依頼を独占的に受け付けることにより、プロセス１４０毎にアクセス可能なＧＰＩＯ１１４を制限することができるため、アクセス管理の自由度がさらに高められる。
【００４９】
＜第４実施例＞
電子機器１００において、ＲＴＯＳ１３０上で動作するプロセスがＧＰＩＯ１１４を操作する手順の第４実施例について説明する。図９は、第４実施例の動作を模式的に示す図である。図９（ａ）に示すように、第４実施例においても、第１実施例と同様に、ＲＴＯＳ１３０がＧＰＩＯ１１４の情報を取得し、ＭＰＵ１１３を操作して、各ＧＰＩＯレジスタが存在するアドレス空間に、ＲＴＯＳ１３０用のアクセス権を設定する（Ｓ４０１）。
【００５０】
そして、第２実施例と同様に、プロセスａ１４０ａがＧＰＩＯ＿Ａ１１４ａを操作する場合には、図９（ｂ）に示すように、あらかじめ、ＲＴＯＳ１３０に対して、ＧＰＩＯ＿Ａ１１４ａの操作宣言を行なう（Ｓ４０２）。
【００５１】
一般に、ＧＰＩＯは、８ビット幅等の単位でまとめて扱われており、従来、上記の実施例ともこのまとめられた単位でＧＰＩＯ１１４の操作を行なうようになっていたが、第４実施例では、操作宣言の際に対象とするＧＰＩＯ１１４をビット単位で指定できるようになっている。このため、ＲＴＯＳ１３０には、ビット単位の操作宣言を受け付けるためのＡＰＩ−ｆが用意されている。
【００５２】
例えば、プロセスａ１４０ａは、ビット０〜ビット７の８ビットで構成されるＧＰＩＯ＿Ａ１１４ａについて、ビット１に対して操作宣言を行なうことができる。操作宣言は任意のビットを指定することができ、宣言対象のビット数は複数個であってもよい。また、ビット単位に限られず、チャネル等のデバイスの処理単位で操作宣言を行なえるようにしてもよい。
【００５３】
さらに、第４実施例では、ＲＴＯＳ１３０は、プロセス１４０からＧＰＩＯのビット単位の操作依頼を受け付け、ＧＰＩＯ１１４の操作をビット単位で実行するＡＰＩ−ｅを用意している。
【００５４】
プロセスａ１４０ａが、操作宣言を行なったＧＰＩＯ＿Ａ１１４ａのビット１を操作する場合には、図９（ｃ）に示すように、ＡＰＩ−ｅを使用して、ＧＰＩＯ＿Ａ１１４ａのビット１の操作を依頼する（Ｓ４０３）。この段階で、プロセスａ１４０ａの実行中からＲＴＯＳ１３０実行中にアクセス権限の設定が切り替わる。
【００５５】
そして、ＡＰＩ−ｅが、依頼に従ってＧＰＩＯ＿Ａレジスタにアクセスし、ＧＰＩＯ＿Ａ１１４ａのビット１の操作を実行する（Ｓ４０４）。なお、図９（ｄ）に示すように、プロセスａ１４０ａが、例えば、ＧＰＩＯ＿Ａ１１４ａのビット７の操作を依頼した場合には、ビット７に対する操作宣言は行なっていないので、ＡＰＩ−ｅは、ＧＰＩＯ＿Ａレジスタへのアクセスは行なわず、ＧＰＩＯ＿Ａ１１４ａのビット７の操作は行なわない。
【００５６】
このように、第４実施例によれば、境界制限や設定可能なアクセス権限数の制限によるＭＰＵ１１３の制約を受けないことに加え、ビット単位の操作宣言を行なったプロセス１４０からの操作依頼に対してのみ、そのビットに対する操作を実行することにより、貴重なＧＰＩＯ資源を有効に活用することができ、アクセス管理の自由度がさらに高められる。
【００５７】
なお、各実施例は任意の組み合わせで実現することができる。例えば、第３実施例と第４実施例とを組み合わせて、ビット単位で排他的なアクセス管理を行なうようにしてもよい。
【符号の説明】
【００５８】
１００…電子機器、１１０…マイクロコントローラ、１１１…ＣＰＵ…ＣＯＲＥ、１１２…ＲＡＭ、１１３…ＭＰＵ、１１４…ＧＰＩＯ、１１５…バス、１２０…デバイス、１３０…ＲＴＯＳ、１４０…プロセス、４００…電子機器、４１０…マイクロコントローラ、４１１…ＣＰＵ…ＣＯＲＥ、４１２…ＲＡＭ、４１３…ＭＰＵ、４１４…ＧＰＩＯ、４１５…バス、４２０…デバイス、４３０…ＲＴＯＳ、４４０…プロセス
【図１】
0005920595.tif 000002
【図２】
0005920595.tif 000003
【図３】
0005920595.tif 000004
【図４】
0005920595.tif 000005
【図５】
0005920595.tif 000006
【図６】
0005920595.tif 000007
【図７】
0005920595.tif 000008
【図８】
0005920595.tif 000009
【図９】
0005920595.tif 000010
【図１０】
0005920595.tif 000011
【図１１】
0005920595.tif 000012
【図１２】
0005920595.tif 000013
【図１３】
0005920595.tif 000014