(57)【特許請求の範囲】
【請求項１】
ＣＰＵと、
前記ＣＰＵで実行されるプログラムによるメモリ空間へのアクセス許可又は禁止の状態を指定するメモリ保護情報を格納する保護情報格納部と、
前記メモリ保護情報に基づいて、前記ＣＰＵによるメモリアクセス要求を許可するか否かを判定するメモリアクセス制御装置と、
前記ＣＰＵが出力するリセット要求信号に基づいて、前記保護情報格納部に格納されたメモリ保護情報を無効化するリセット装置と、
前記メモリ保護情報を無効化する権限の有無を示す識別情報を格納する格納部と、
前記格納部に格納された前記識別情報に基づいて、前記リセット装置の動作可否を判定する判定部と、
を備えるマイクロコンピュータ。
【請求項２】
ＣＰＵと、
前記ＣＰＵで実行されるプログラムによるメモリ空間へのアクセス許可又は禁止の状態を指定するメモリ保護情報を格納する保護情報格納部と、
前記メモリ保護情報に基づいて、前記ＣＰＵによるメモリアクセス要求を許可するか否かを判定するメモリアクセス制御装置と、
前記ＣＰＵが出力するリセット要求信号に基づいて、前記保護情報格納部に格納されたメモリ保護情報を無効化するリセット装置と、
前記保護情報格納部の設定内容の無効化が行われたことを示す識別情報を格納する格納部と、
前記格納部に格納された前記識別情報に基づいて、前記保護情報格納部への書込み可否を判定する判定部と、
を備えるマイクロコンピュータ。
【請求項３】
前記保護情報格納部は、保護対象とするメモリ空間を指定する領域指定部と、前記領域指定部の設定内容が有効であるか否かを示す第２の識別情報を格納する第２の格納部とを備え、
前記リセット装置は、前記第２の格納部に格納された第２の識別情報を更新することによって、前記保護情報格納部に格納されたメモリ保護情報を無効化する請求項１又は請求項２に記載のマイクロコンピュータ。
【請求項４】
前記保護情報格納部は、保護対象とするメモリ空間を指定する領域指定部と、前記領域指定部の設定内容が有効であるか否かを示す第２の識別情報を格納する第２の格納部とを備え、
前記リセット装置は、前記領域指定部の設定内容を消去し、前記第２の格納部に格納された第２の識別情報を更新することによって、前記保護情報格納部に格納されたメモリ保護情報を無効化する請求項１又は請求項２に記載のマイクロコンピュータ。
【請求項５】
複数のプログラムを切り替えて実行するＣＰＵと、
前記ＣＰＵで実行されるプログラムによるメモリ空間へのアクセス許可又は禁止の状態を指定するメモリ保護情報を格納する複数の保護情報格納部と、
前記メモリ保護情報に基づいて、前記ＣＰＵによるメモリアクセス要求を許可するか否かを判定するメモリアクセス制御部と、
前記メモリ保護情報を無効化する権限の有無に基づいて、前記メモリ保護情報の無効化を許可するか否かを判定する判定部と、
前記ＣＰＵで実行するプログラムの切り替えに応じて、前記複数の保護情報格納部に保持された過去の実行プログラム対するメモリ保護情報を無効化する無効化手段と、
前記無効化手段による無効化後に、前記ＣＰＵにおいて新たに実行されるプログラムに対応するメモリ保護情報によって、前記複数の保護情報格納部を更新する更新手段と、
を備えるマイクロコンピュータ。
【請求項６】
前記無効化手段による前記複数の保護情報格納部の設定内容の無効化が行われていない場合に、前記更新手段による前記複数の保護情報格納部の更新を禁止する第２の判定部を更に備える請求項５に記載のマイクロコンピュータ。
【請求項７】
前記ＣＰＵは、前記ＣＰＵで実行されるプログラムの切り替えに応じてリセット要求信号を出力し、
前記無効化手段は、前記リセット要求信号に応じて前記複数の保護情報格納部に格納された前記メモリ保護情報を無効化するリセット装置である請求項５に記載のマイクロコンピュータ。
【請求項８】
前記複数の保護情報格納部の各々は、保護対象とするメモリ空間を指定する領域指定部と、前記領域指定部の設定内容が有効であるか否かを示す第２の識別情報を格納する第２の格納部とを備え、
前記無効化手段は、前記第２の格納部に格納された第２の識別情報を更新することによって、前記保護情報格納部に格納されたメモリ保護情報を無効化する請求項５に記載のマイクロコンピュータ。
【請求項９】
前記複数の保護情報格納部の各々は、保護対象とするメモリ空間を指定する領域指定部と、前記領域指定部の設定内容が有効であるか否かを示す第２の識別情報を格納する第２の格納部とを備え、
前記無効化手段は、前記領域指定部の設定内容を消去し、前記第２の格納部に格納された第２の識別情報を更新することによって、前記保護情報格納部に格納されたメモリ保護情報を無効化する請求項５に記載のマイクロコンピュータ。
【請求項１０】
マイクロコンピュータのメモリアクセス制御方法であって、
前記マイクロコンピュータは、ＣＰＵと、前記ＣＰＵで実行されるプログラムによるメモリ空間へのアクセス許可又は禁止の状態を指定するメモリ保護情報を格納する複数の保護情報格納部と、前記メモリ保護情報に基づいて、前記ＣＰＵによるメモリアクセス要求を許可するか否かを判定するメモリアクセス制御部とを備え、
前記ＣＰＵで実行するプログラムの切り替えに応じて、前記メモリ保護情報を無効化する権限の有無に基づいて、前記メモリ保護情報の無効化を許可するか否かを判定し、
前記判定結果に基づいて前記複数の保護情報格納部に保持された過去のメモリ保護情報を無効化し、
前記メモリ保護情報の無効化後に、前記ＣＰＵにおいて新たに実行されるプログラムに対応するメモリ保護情報によって前記複数の保護情報格納部を更新する、方法。
【請求項１１】
前記マイクロコンピュータは、前記ＣＰＵが出力するリセット要求信号に応じて前記複数の保護情報格納部に格納されたメモリ保護情報を無効化するリセット装置をさらに備えており、
前記メモリ保護情報の無効化は、前記ＣＰＵで実行するプログラムの切り替えに応じて前記リセット要求信号を前記リセット装置に送信することにより実行される請求項１０に記載の方法。
【請求項１２】
前記複数の保護情報格納部の更新の前に、前記メモリ保護情報の無効化が行われたか否かを判定し、前記メモリ保護情報の無効化が未完了の場合に、前記複数の保護情報格納部の更新を禁止する請求項１０に記載の方法。
【請求項１３】
前記複数の保護情報格納部の各々は、保護対象とするメモリ空間を指定する領域指定部と、前記領域指定部の設定内容が有効であるか否かを示す第２の識別情報を格納する第２の格納部とを備えており、
前記メモリ保護情報の無効化は、前記第２の格納部に格納された第２の識別情報を更新することにより行われる請求項１０に記載の方法。
【請求項１４】
前記複数の保護情報格納部の各々は、保護対象とするメモリ空間を指定する領域指定部と、前記領域指定部の設定内容が有効であるか否かを示す第２の識別情報を格納する第２の格納部とを備え、
前記メモリ保護情報の無効化は、前記領域指定部の設定内容を消去し、前記第２の格納部に格納された第２の識別情報を更新することにより行われる請求項１０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵによるメモリアクセスを許可するか否かを決定するメモリアクセス制御機構を備えたマイクロコンピュータに関する。
【背景技術】
【０００２】
自動車、航空機等の輸送機械や、携帯電話機、交換機等の通信機器に組み込まれ、これらの機械、機器の制御を行うマイクロコンピュータは組み込みシステムと呼ばれている。組み込みシステムは、処理時間の向上、リアルタイム性の確保、プログラムのソフトウェア部品化による生産性向上等を実現するため、一般にマルチプログラミング環境を備えている。マルチプログラミング環境とは、複数のアプリケーションプログラムを定期的に切り替えて実行したり、あるイベントの発生に応じて実行するアプリケーションプログラムを切り替えたりすることによって、複数のアプリケーションプログラムがあたかも並列実行されているような環境を意味する。このようなマルチプログラミング環境は、ＣＰＵと、ＣＰＵで実行されるアプリケーションプログラムのスケジューリングを担うシステムプログラムによって実現される。なお、以下では、マルチプログラミング環境で並列実行されるプログラム単位をタスクと呼ぶこととする。
【０００３】
従来、組み込みシステムにおいては、各々のタスクがアクセス可能なメモリ空間を制限する、いわゆるメモリ保護機能は重要視されていなかった。しかしながら、近年、Ｊａｖａ（登録商標）プログラムをダウンロードして実行することが可能な携帯電話機など、信頼性が保証されていないプログラムを実行する組み込みシステムが登場している。このようなシステムでは、信頼性の保証されていないプログラムからシステムプログラムや他のアプリケーションプログラムを保護することが不可欠である。また、アプリケーションプログラム単位やこれを構成するソフトウェア部品単位で、アプリケーションプログラムが使用するメモリ空間を予め分離することで、ソフトウェア開発工程におけるデバッグを容易にしたいという要求もある。このような背景から、マイクロコンピュータにおけるメモリ保護機能の重要性が増大している。
【０００４】
マイクロコンピュータにおけるメモリ保護、つまりメモリアクセスの制御は、メモリ空間のうちアクセスを許可する領域又はアクセスを禁止する領域をメモリ保護情報として定めておき、ＣＰＵによるメモリアクセス要求をメモリ保護情報と照合することによって行われる。具体的には、メモリアクセス要求に含まれるメモリアドレスがアクセス許可領域に含まれる場合にメモリアクセスを許可し、アクセス禁止領域に含まれる場合にメモリアクセスを禁止する。また、アプリケーションプログラム単位又はタスク単位で、プログラム実行時に使用するメモリ領域を分離する場合には、実行されるプログラムの切り替えに応じて、アクセスを許可するメモリ領域を変更する必要がある。このため、ＣＰＵで実行されるプログラムの切り替え時には、メモリ保護情報の書換えが行われる。このようなメモリ保護機能を備えたマイクロコンピュータは、例えば、非特許文献１及び２に開示されている。
【０００５】
非特許文献１に開示されたマイクロコンピュータは、メモリ保護ユニットを備えている。さらに、メモリ保護ユニットは、メモリアクセスを許可する領域を定めるための１６個の保護設定レジスタを備えている。各々の保護設定レジスタには、アクセスを許可する領域のベースアドレス、アクセス許可領域のサイズ、及び当該保護設定レジスタによる設定内容の有効又は無効を示す有効ビットが格納される。メモリ保護ユニットは、ＣＰＵがアクセスを要求するメモリ領域のメモリアドレスと有効ビットが有効状態に設定された保護設定レジスタによって規定されたアクセス許可領域とを比較する。ＣＰＵがアクセスを要求するメモリアドレスが、有効ビットが有効状態に設定された保護設定レジスタによって規定されたアクセス許可領域に含まれるか否かによって、メモリアクセスの許可又は不許可を決定する。
【０００６】
一方、非特許文献２に開示されたマイクロコンピュータは、データ領域に対して４通り、及び命令領域に対して４通りのアクセス許可領域を定めることが可能な複数の保護設定レジスタを備えている。各々の保護設定レジスタには、アクセス許可領域の下限アドレス並びに上限アドレス、及び当該保護設定レジスタによる設定内容の保護モードを定めている。保護モードとは、ライトアクセスの許可／不許可、リードアクセスの許可／不許可、実行の許可／不許可を示す情報であり、非特許文献１に開示されたマイクロコンピュータにおける有効ビットに相当するものである。
【非特許文献１】"ARM1156T2F-S Technical Reference Manual Rev.r0p0"、[online]、2005年10月25日、ARM Ltd.、[2006年4月11日検索]、インターネット＜ＵＲＬ：http://www.arm.com/pdfs/DDI0290C_arm1156t2fs_r0p0_trm.pdf＞、Chapter3 p.61-69及びChapter5 p.7
【非特許文献２】"TriCore. 1 32-Bit Unified Processor Core Volume 1: V1.3 Core Architecture"、[online]、2005年10月、Infineon Technologies、[2006年4月11日検索]、インターネット＜ＵＲＬ：http://www.infineon.com/upload/Document/TriCore_1_um_vol1_Core_Architecture.pdf＞、Chapter8 p.4-10及びChapter8 p.13
【発明の開示】
【発明が解決しようとする課題】
【０００７】
非特許文献１及び２に開示されたマイクロコンピュータは、ＣＰＵで実行されるプログラムの切り替えに応じて保護設定レジスタの内容を順次更新することにより、新たに実行されるプログラムに対するメモリ保護情報を設定する。具体的には、保護設定レジスタの有効ビットを無効状態に設定する処理、保護設定レジスタに許可領域を設定する処理、及び許可領域を定めた保護設定レジスタの有効ビットを有効状態に設定する処理を、全ての保護設定レジスタに対して順次行うことによって、新たなに実行されるプログラムに対するアクセス許可領域を設定する。
【０００８】
上述したように、非特許文献１及び２に開示されたマイクロコンピュータは、実行するプログラムの切り替え時に保護設定レジスタを順次書換えていく。このため、保護設定レジスタの書換え漏れを生じ易いという問題がある。
【課題を解決するための手段】
【０００９】
本発明の第１の態様にかかるマイクロコンピュータは、ＣＰＵと、前記ＣＰＵで実行されるプログラムによるメモリ空間へのアクセス許可又は禁止の状態を指定するメモリ保護情報を格納する保護情報格納部と、前記メモリ保護情報に基づいて、前記ＣＰＵによるメモリアクセス要求を許可するか否かを判定するメモリアクセス制御装置と、前記ＣＰＵが出力するリセット要求信号に基づいて、前記保護情報格納部に格納されたメモリ保護情報を無効化するリセット装置とを備える。
【００１０】
このような構成により、ＣＰＵが出力するリセット要求信号に基づいて動作するリセット装置によって、保護情報格納部に格納されたメモリ保護情報を無効化することができる。プログラムの切り替え時の保護情報格納部の更新に先立ってリセット装置を動作させることとすれば、保護情報格納部の書換えもれによって、過去のメモリ保護情報が残存することを防止し、メモリアクセス制御の信頼性を向上させることができる。
【００１１】
また、本発明の第２の態様にかかるマイクロコンピュータは、複数のプログラムを切り替えて実行するＣＰＵと、前記ＣＰＵで実行されるプログラムによるメモリ空間へのアクセス許可又は禁止の状態を指定するメモリ保護情報を格納する複数の保護情報格納部と、前記メモリ保護情報に基づいて、前記ＣＰＵによるメモリアクセス要求を許可するか否かを判定するメモリアクセス制御部と、前記ＣＰＵで実行するプログラムの切り替えに応じて、前記複数の設定格納部に保持された過去のメモリ保護情報を無効化する無効化手段と、前記無効化手段による無効化後に、前記ＣＰＵにおいて新たに実行されるプログラムに対応するメモリ保護情報によって、前記複数の保護情報格納部を更新する更新手段とを備える。
【００１２】
このように、ＣＰＵで新たに実行されるプログラムに応じてメモリ保護情報を更新する処理に先立って、過去のメモリ保護情報を無効化することにより、保護情報格納部の書換えもれによって、過去のメモリ保護情報が残存することを防止し、メモリアクセス制御の信頼性を向上させることができる。
【００１３】
また、本発明の第３の態様は、マイクロコンピュータのメモリアクセス制御方法であって、前記マイクロコンピュータは、ＣＰＵと、前記ＣＰＵで実行されるプログラムによるメモリ空間へのアクセス許可又は禁止の状態を指定するメモリ保護情報を格納する複数の保護情報格納部と、前記メモリ保護情報に基づいて、前記ＣＰＵによるメモリアクセス要求を許可するか否かを判定するメモリアクセス制御部とを備える。本態様の制御方法は、前記ＣＰＵで実行するプログラムの切り替えに応じて、前記複数の保護情報格納部に保持された過去のメモリ保護情報を無効化し、前記メモリ保護情報の無効化後に、前記ＣＰＵにおいて新たに実行されるプログラムに対応するメモリ保護情報によって前記複数の保護情報格納部を更新するものである。
【００１４】
このように、ＣＰＵで新たに実行されるプログラムに応じてメモリ保護情報を更新する処理に先立って、過去のメモリ保護情報を無効化することにより、保護情報格納部の書換えもれによって、過去のメモリ保護情報が残存することを防止し、メモリアクセス制御の信頼性を向上させることができる。
【発明の効果】
【００１５】
本発明により、メモリアクセス制御の信頼性を向上させることが可能なコンピュータ、及びメモリアクセスの制御方法を提供できる。
【発明を実施するための最良の形態】
【００１６】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００１７】
発明の実施の形態１．
本実施の形態にかかるマイクロコンピュータ１の構成を図１に示す。図１において、ＣＰＵ（Central Processing Unit）１０は、メモリ１５から命令を読み出し、読み出した命令をデコードし、命令に応じた処理、例えば、算術演算及び論理演算等の演算処理や、メモリ１５に対するリードアクセス及びライトアクセスを実行する。
【００１８】
保護設定レジスタ群１１は、メモリ１５の保護設定を格納する保護設定格納部である。保護設定レジスタ群１１は、ｎ個の保護設定レジスタ１１１〜１１ｎを有する。本実施の形態では、１つの保護設定レジスタによって１つのアクセス許可領域を指定するものとする。具体的に述べると、保護設定レジスタ１１１〜１１ｎはそれぞれ、アクセスを許可する領域を指定するための領域指定部と、各保護設定レジスタによる設定内容の有効又は無効を示す有効ビットを格納する有効ビット格納部とを有している。例えば、保護設定レジスタ１１１は、領域指定部１１１Ａ、及び有効ビット格納部１１１Ｂを有する。なお、領域指定部１１１Ａ〜１１ｎＡによる許可領域の指定は、アクセスを許可する領域のベースアドレス及びアクセス許可領域のサイズを指定することによって行っても良いし、アクセスを許可する領域の下限アドレスと上限アドレスを指定することによって行っても良い。また、有効ビット格納部１１１Ｂ〜１１ｎＢはそれぞれ、１ビットの格納領域とし、例えば格納値"０"のとき無効状態を示し、格納値"１"のとき有効状態を示すものとすればよい。保護設定レジスタ群１１の書換えは、ＣＰＵ１０が出力する書込み要求に基づいて行われる。
【００１９】
メモリアクセス制御装置１２は、ＣＰＵ１０が生成するメモリ１５に対するメモリアクセス要求を入力する。ＣＰＵ１０が生成するメモリアクセス要求には、リード／ライト種別、アクセス先を指定するためのメモリアドレス、さらにライトアクセスの場合には書込みデータが含まれる。アクセス先を指定するメモリアドレスは、例えば、ベースアドレスと、転送を要求するデータサイズによって指定される。
【００２０】
メモリアクセス要求を受信したメモリアクセス制御装置１２は、ＣＰＵ１０がアクセスを要求するメモリアドレスと保護設定レジスタ群１１が備える各保護設定レジスタ１１１〜１１ｎの設定内容とを比較することによって、メモリアクセス要求を許可する否かを決定する。具体的には、ＣＰＵ１０がアクセスを要求するメモリアドレスが、保護設定レジスタ１１１〜１１ｎのうち有効ビットが有効状態に設定された保護設定レジスタによって規定されたアクセス許可領域に含まれる場合に、メモリアクセス制御装置１２はメモリアクセスを許可する。一方、ＣＰＵ１０がアクセスを要求するメモリアドレスが許可領域に含まれない場合には、メモリアクセス制御装置１２はメモリアクセスを許可せず、不正メモリアクセスの発生を示す違反検出信号をＣＰＵ１０に対して出力する。なお、図面が複雑となるため、図１では、保護設定レジスタ１１１〜１１ｎの各々とメモリアクセス制御装置１２との接続関係の記載を省略し、これらの接続関係を保護設定レジスタ群１１とメモリアクセス制御装置１２との接続線によって示している。
【００２１】
メモリコントローラ１３は、メモリアクセス制御装置１２によって許可されたメモリアクセス要求を入力し、メモリアクセス要求によって指定されたアドレスに対応するメモリ１５にアクセスする。リードアクセスであればメモリ１５から読み出したデータをＣＰＵ１０に転送し、ライトアクセスであればメモリ１５に対するデータ書込みを行う。
【００２２】
メモリ１５は、メモリバス１４を介してメモリコントローラ１３と接続されている。メモリ１５は、ＣＰＵ１０に読み出されて実行されるシステムプログラムやアプリケーションプログラムの格納領域、及びシステムプログラムやアプリケーションプログラムによって使用されるデータの格納領域として使用される。つまり、メモリ１５は、ＲＡＭ、ＲＯＭ、フラッシュメモリ等の組合せである。また、メモリバス１４は、アドレスバス及びデータバスの総称である。
【００２３】
リセット装置１６は、ＣＰＵ１０が出力するリセット要求信号に応じて、ｎ個の保護設定レジスタ１１１〜１１ｎの有効ビット格納部１１１Ｂ〜１１ｎＢを無効状態に設定する。本実施の形態では、有効ビット格納部１１１Ｂ〜１１ｎＢを有効状態に設定することによってメモリアクセスが許可されるため、有効ビット格納部１１１Ｂ〜１１ｎＢを無効状態に設定することは、メモリ１５の全ての領域に対するアクセスが禁止された状態を意味する。
【００２４】
ＣＰＵ１０で実行されるプログラムを切り替える処理は、システムプログラムによって行われる。例えば、アプリケーションプログラムＡからアプリケーションプログラムＢに切り替える際には、切り替え処理を担うシステムプログラムが起床され、システムプログラムをＣＰＵ１０で実行することにより、新たに実行されるプログラムＢに応じて保護設定レジスタ群１１の設定内容が更新される。
【００２５】
保護設定レジスタ群１１の設定内容の更新の具体例を、図２及び図３を用いて説明する。図２は、メモリ１５がＲＯＭ及びＲＡＭである場合のメモリマップの具体例を示している。図２（ａ）はＲＯＭのメモリマップ例を示しており、０００００〜００ＦＦＦ番地にシステムプログラムが格納され、０１０００〜０１ＦＦＦ番地にアプリケーションプログラムＡが格納され、０２０００〜０２ＦＦＦ番地にアプリケーションプログラムＢが格納されているものとする。また、図２（ｂ）はＲＡＭのメモリマップ例を示しており、１００００〜１０ＦＦＦ番地がシステムプログラムのワーク領域として使用され、１２０００〜１２０ＦＦ番地及び１４０００〜１４１ＦＦ番地がアプリケーションプログラムＡのワーク領域として使用され、１３０００〜１３０ＦＦ番地がアプリケーションプログラムＢのワーク領域として使用されるものとする。
【００２６】
アプリケーションプログラムＡに対応する保護設定レジスタ群１１の設定内容を図３（ａ）に示す。図３（ａ）では、保護設定レジスタ１１１がＲＯＭのアプリケーションプログラムＡの格納領域へのアクセス許可を規定し、保護設定レジスタ１１２及び保護設定レジスタ１１３がＲＡＭのワーク領域へのアクセス許可を規定している。一方、アプリケーションプログラムＢに対応する保護設定レジスタ群１１の設定内容を図３（ｂ）に示す。図３（ｂ）では、保護設定レジスタ１１１がＲＯＭのアプリケーションプログラムＢの格納領域へのアクセス許可を規定し、保護設定レジスタ１１２がＲＡＭのワーク領域へのアクセス許可を規定している。
【００２７】
アプリケーションプログラムＡからアプリケーションプログラムＢに実行プログラムを切り替える際には、保護設定レジスタ１１３の有効ビット格納部１１３Ｂを、無効状態を示す値"０"に書換える必要がある。このとき、マイクロコンピュータ１では、リセット装置１６によって保護設定レジスタ群１１の設定内容を一括して無効化した後に、新たに実行するアプリケーションプログラムＢに対するメモリ保護情報、つまりアクセス許可領域の設定を書込むように動作する。以下では、マイクロコンピュータ１が行うメモリ保護情報の更新処理を図４のフローチャートを用いて詳細に説明する。
【００２８】
ステップＳ１０１では、システムプログラムによって、新たに実行されるプログラムに関するプログラム情報が取得される。ここでプログラム情報とは、ＣＰＵ１０で実行されるプログラムに使用を許可するメモリ領域を指定する情報である。ステップＳ１０２では、ＣＰＵ１０から送信されたリセット要求信号を受信したリセット装置１６が、有効ビットリセット信号を保護設定レジスタ１１１〜１１ｎに送信し、有効ビット格納部１１１Ｂ〜１１ｎＢを一括して無効状態にリセットする。
【００２９】
ステップＳ１０３〜Ｓ１０７では、システムプログラムによって、新たに実行されるプログラムに合わせたメモリ保護設定が行われる。なお、ここでは、メモリ１５対するメモリ空間がｎ個の領域に分割され、各領域に対するアクセス許可を設定するものとして説明する。具体的には、ステップＳ１０３では、変数Ｋの値を１に設定する。ステップＳ１０４では、ステップＳ１０１で取得した新たな実行プログラムに関する保護情報を参照し、Ｋ番目の領域Ｋに対するアクセスを許可するか否かを判定する。領域Ｋがメモリアクセスを許可する領域である場合は、保護設定レジスタ１１１〜１１ｎのいずれかに、領域Ｋを保護領域として設定し、設定した保護設定レジスタの有効ビットを有効状態にセットする（ステップＳ１０５）。
【００３０】
ステップＳ１０６では変数Ｋの値をインクリメントし、変数Ｋの値がｎより小さい場合は、ステップＳ１０４に戻ってＳ１０４以降の処理を繰り返す（ステップＳ１０７）。一方、ｎ個の領域全てに対する処理した場合は、メモリ保護情報の更新処理を終了する。
【００３１】
上述したように、従来のマイクロコンピュータは、実行するプログラムの切り替え時に保護設定レジスタを順次書換えていく。このため、保護設定レジスタの書換え漏れを生じ易いという問題がある。例えば、メモリアクセスを許可する領域をメモリ保護設定レジスタに設定する場合において、以前のプログラムに対する設定が、プログラムの切り替え後に残存していると、アクセスを許可すべきでないメモリ領域へのアクセスが可能となり、不正なメモリアクセスを検出できない状況を招く。また、メモリアクセスを禁止する領域をメモリ保護設定レジスタに設定する場合において、以前のプログラムに対する設定が、プログラムの切り替え後に残存していると、アクセス可能であるべきメモリ領域にアクセスできないことにより、アプリケーションプログラムの実行に不具合をもたらす可能性がある。
【００３２】
これに対して、本実施の形態にかかるマイクロコンピュータ１は、保護設定レジスタ群１１によって規定される過去の実行プログラムのメモリ保護情報を全て無効とした後、新たな実行プログラムに対するメモリ保護情報の設定を行うこととしている。これにより、以前のプログラムに対するメモリ保護情報がプログラムの切り替え後に残存することを防止し、メモリ保護の信頼性を向上させることができる。
【００３３】
発明の実施の形態２．
本実施の形態にかかるマイクロコンピュータ２の構成を図５に示す。マイクロコンピュータ２は、特権ビット格納部２１及び書込み禁止装置２２を備える点が、発明の実施の形態１にかかるマイクロコンピュータ１と相違している。
【００３４】
特権ビット格納部２１は、リセット装置１６の起動及び保護設定レジスタ群１１の更新が可能であるか否かを示す特権ビットを格納する。例えば、特権ビットを１ビットデータとし、リセット装置１６の起動及び保護設定レジスタ群１１の更新が可能な特権モードを値"１"とし、逆に、リセット装置１６の起動及び保護設定レジスタ群１１の更新が不可能な非特権モードを値"０"とすればよい。特権ビット格納部２１の値は、ＣＰＵ２０において実行されるシステムプログラムによって書換え可能であり、アプリケーションプログラムによる書換えは不可能とする。
【００３５】
書込み禁止装置２２は、リセット装置１６に対するリセット要求及び保護設定レジスタ群１１に対する書込み要求をＣＰＵ２０から入力し、特権ビット格納部２１に格納された値が特権モードを示す場合に限り、リセット要求及び書込み要求をリセット装置１６又は保護設定レジスタ群１１に転送する。
【００３６】
なお、ＣＰＵ２０は、特権ビット格納部２１の書換えを行うことを除いて、発明の実施の形態１のＣＰＵ１０と同様である。
【００３７】
特権ビット格納部２１、書込み禁止装置２２及びＣＰＵ２０を除く他の構成要素は、発明の実施の形態１のマイクロコンピュータ１が有する構成要素と同一であるため、詳細な説明を省略する。
【００３８】
次に、マイクロコンピュータ２が行うメモリ保護情報の更新処理を図６のフローチャートを用いて説明する。なお、図６において、図４のフローチャートと同様のステップについては、図４と同一の符号を付している。
【００３９】
ステップＳ２０１では、システムプログラムの命令によって特権ビット格納部２１の特権ビットを更新し、特権モードに遷移する。ステップＳ２０２では、システムプログラムの命令に応じて、ＣＰＵ２０からリセット装置１６に対して有効ビット格納部１１１Ｂ〜１１ｎＢのリセット要求が出力される。ステップＳ２０２では、書込み禁止装置２２が特権ビット格納部２１を参照し、特権モードを示す値（ここでは値"１"とする）が設定されている場合に限り、リセット装置１６に対してリセット要求を転送する（ステップＳ２０３）。書込み禁止装置２２からリセット要求を受信したリセット装置１６は、有効ビットリセット信号を保護設定レジスタ１１１〜１１ｎに送信し、有効ビット格納部１１１Ｂ〜１１ｎＢを一括して無効状態にリセットする（ステップＳ１０２）。
【００４０】
続く、ステップＳ１０３〜Ｓ１０７までの保護設定レジスタ群１１の書換え処理では、ステップＳ２０４が本実施の形態に特有の処理である。ステップＳ２０４では、書込み禁止装置２２が特権ビット格納部２１を参照し、特権モードを示す値（ここでは値"１"とする）が設定されている場合に限り、ＣＰＵ２０から入力した書込み要求を保護設定レジスタ群１１に転送する。最後のステップＳ２０５では、非特権モードを示す状態に特権ビット格納部２２を書換えることによって、非特権モードに遷移する。
【００４１】
発明の実施の形態１にかかるマイクロコンピュータ１は、保護設定レジスタ群１１に対する書込み要求を拒絶する条件が考慮されていないため、アプリケーションプログラムによって生成された書込み要求によって保護設定レジスタ群１１が書換えられる可能性がある。これに対して、本実施の形態のマイクロコンピュータ２では、特権モードに遷移していない状態で発行された書込み要求は書込み禁止装置２２によって拒絶され、かつ、特権モードのへの遷移はシステムプログラムによって特権ビット格納部２１を書換えることによって行われる。このため、非特権モードで動作するアプリケーションプログラムによる書込み要求では、保護設定レジスタ群１１の書換えは発生しない。これにより、悪意のあるアプリケーションプログラムによるメモリ保護設定の変更を防止することができる。
【００４２】
発明の実施の形態３．
本実施の形態にかかるマイクロコンピュータ３の構成を図７に示す。マイクロコンピュータ３は、書込み禁止ビット格納部３１及び書込み禁止装置３２を備える点が、発明の実施の形態２にかかるマイクロコンピュータ２と相違している。
【００４３】
書込み禁止ビット格納部３１は、保護設定レジスタ群１１に対する書込みが可能であるか否かを示す書込み禁止ビットを格納する。例えば、書込み禁止ビットを１ビットデータとし、保護設定レジスタ群１１に対する書込みが禁止された禁止状態を値"１"とし、逆に、保護設定レジスタ群１１に対する書込みが可能な許可状態を値"０"とすればよい。後述するように、保護設定レジスタ群１１に対する書込みを禁止する状態の設定は、ＣＰＵ２０において実行されるシステムプログラムによって行われる。また、保護設定レジスタ群１１に対する書込みを許可する状態の設定は、リセット装置３６によって行われる。
【００４４】
書込み禁止装置３２は、保護設定レジスタ群１１に対する書込み要求書込み禁止装置２２から入力し、書込み禁止ビット格納部３１に格納された値が書込み許可を示す場合に限り、書込み要求をリセット装置１６又は保護設定レジスタ群１１に転送する。
【００４５】
なお、ＣＰＵ３０は、書込み禁止ビット格納部３１の書換えを行うことを除いて、発明の実施の形態２のＣＰＵ２０と同様である。また、リセット装置３６は、書込み禁止ビット格納部３１の書換えを行うことを除いて、発明の実施の形態１のリセット装置１６と同様である。
【００４６】
書込み禁止ビット格納部３１、書込み禁止装置３２、ＣＰＵ３０及びリセット装置３６を除く他の構成要素は、上述したマイクロコンピュータ１又は２が有する構成要素と同一であるため、詳細な説明を省略する。
【００４７】
次に、マイクロコンピュータ３が行うメモリ保護情報の更新処理を図８のフローチャートを用いて説明する。なお、図８において、図４又は図６のフローチャートと同様のステップについては、図４又は図６と同一の符号を付している。
【００４８】
ステップＳ３０１では、システムプログラムの命令によって、書込み禁止ビット格納部３１が書込み禁止状態を示す値（ここでは値"１"とする）に設定される。ステップＳ３０２では、リセット装置３６によって有効ビット格納部１１１Ｂ〜１１ｎＢが一括して無効状態にリセットされたことに合わせて、書込み禁止ビット格納部３１の値が書込み許可を示す値（ここでは値"０"とする）にリセットされる（ステップＳ１０２及びＳ３０２）。なお、書込み禁止ビット格納部３１のリセットは、有効ビット格納部１１１Ｂ〜１１ｎＢをリセットするための有効ビットリセット信号を書込み禁ビット格納部３１に入力することによって行えば良い。
【００４９】
続く、ステップＳ１０３〜Ｓ１０７までの保護設定レジスタ群１１の書換え処理では、ステップＳ３０３が本実施の形態に特有の処理である。ステップＳ３０３では、書込み禁止装置３２が書込み禁止ビット格納部３１を参照し、保護設定レジスタ群１１に対する書込みが可能な許可状態である場合に限り、書込み禁止装置２２から入力した書込み要求を保護設定レジスタ群１１に転送する。
【００５０】
発明の実施の形態１又は２にかかるマイクロコンピュータ１及び２は、リセット装置１６によって有効ビット格納部１１１Ｂ〜１１ｎＢが全て無効状態とされたことを、保護設定レジスタ群１１に対する書込みを許可する条件としていない。このため、プログラム切り替え時の保護設定レジスタ群１１の更新において、無効状態とすべき保護設定レジスタに対する設定漏れが発生する可能性がある。
【００５１】
これに対して、マイクロコンピュータ３では、書込み禁止ビット格納部３１に格納された値が書込み禁止を示している状態で、保護設定レジスタ群１１に対する書込み要求が発行された場合、当該書込み要求は書込み禁止装置３２によって拒絶される。さらに、マイクロコンピュータ３において、書込み禁止ビット格納部３１の値が書込み許可状態となる条件は、リセット装置３６によって有効ビット格納部１１１Ｂ〜１１ｎＢを全て無効状態とするリセット動作が行われていることである。このため、マイクロコンピュータ３では、有効ビット格納部１１１Ｂ〜１１ｎＢを全て無効状態とされていない状態において、保護設定レジスタ群１１の書換えが行われることがなく、無効状態とすべき保護設定レジスタに対する設定漏れが発生することを防止できる。
【００５２】
発明の実施の形態４．
本実施の形態にかかるマイクロコンピュータ４の構成を図４に示す。マイクロコンピュータ４は、有効ビット格納部１１１Ｂ〜１１ｎＢだけでなく、領域指定部１１１Ａ〜１１ｎＡを含む保護設定レジスタ１１１〜１１ｎ全体を、リセット装置４６によるリセット対象とすることが特徴である。領域指定部１１１Ａ〜１１ｎＡのリセットは、予め定められた無効値に設定することによって行えば良い。無効値は、メモリ空間のどの領域とも対応しない値を選択すれば良く、例えば、領域指定部１１１Ａ〜１１ｎＡをオールゼロ又はオール１に設定すれば良い。また、領域指定部１１１Ａ〜１１ｎＡがアクセス許可領域のサイズ情報を含む場合は、アクセス許可領域のサイズをゼロに設定しても良い。
【００５３】
なお、リセット装置４６を除く他の構成要素は、上述したマイクロコンピュータ３が有する構成要素と同一であるため、詳細な説明を省略する。
【００５４】
上述したマイクロコンピュータ１乃至３は、リセット装置によるリセット範囲を有効ビット格納部１１１Ｂ〜１１ｎＢのみとしている。このため、ＣＰＵ１０乃至３０から出力される書込み要求に基づいて有効ビット格納部１１１Ｂ〜１１ｎＢが有効状態に更新されたにも関わらず、対応する領域指定部１１１Ａ〜１１ｎＡの値が設定されなかった場合に、誤ったメモリ保護情報が有効となる可能性がある。
【００５５】
これに対して、マイクロコンピュータ４では、有効ビット格納部１１１Ｂ〜１１ｎＢだけでなく、領域指定部１１１Ａ〜１１ｎＡを含む保護設定レジスタ１１１〜１１ｎ全体を、リセット装置４６によるリセット対象としている。このため、仮に、領域指定部１１１Ａ〜１１ｎＡが更新されずに有効ビット格納部１１１Ｂ〜１１ｎＢが有効とされる状況が発生しても、この場合の領域指定部１１１Ａ〜１１ｎＡの値は無効な値である。従って、不正なメモリアクセスが許可されることを防止することができる。
【００５６】
その他の実施の形態．
上述した発明の実施の形態１乃至４において、リセット装置１６、３６及び４６が行う処理は、ＣＰＵ１０、２０又は３０と、ＣＰＵ１０、２０又は３０で実行されるプログラムとによって実現することも可能である。具体的には、実行プログラムの切り替え処理における保護設定レジスタ１１１〜１１ｎの書換えを行う前に、ＣＰＵ１０に保護設定レジスタ１１１〜１１ｎを無効化する処理をさせるためのプログラムを実行すればよい。
【００５７】
しかしながら、マイクロコンピュータ１のように、ＣＰＵ１０と独立したリセット装置１６を設け、ＣＰＵ１０が出力するリセット要求信号に応じてリセット装置１６が保護設定レジスタ群１１を無効状態に設定する構成が望ましい。このような構成によって、少ない命令の実行、具合的にはリセット要求信号を送信するための１つの命令を実行することで、誤ったメモリ保護設定を排除することができる。
【００５８】
また、上述した発明の実施の形態１乃至４では、ＣＰＵ１０で実行されるプログラムによるメモリアクセスを許可する領域を保護設定レジスタ１１１〜１１ｎに設定することとした。しかしながら、保護設定レジスタ１１１〜１１ｎには、アクセスを禁止する領域を設定してもよいし、許可領域及び禁止領域を設定してもよい。
【００５９】
また、上述した発明の実施の形態１乃至４では、保護設定レジスタ１１１〜１１ｎの設定内容が有効であるか否かを有効ビット格納部１１１Ｂ〜１１ｎＢによって示す構成を説明した。しかしながら、保護設定レジスタ１１１〜１１ｎの設定内容が有効であるか否かを定めるための構成は、当該構成に限定されない。例えば、非特許文献２に記載されているように、ライトアクセスの許可／不許可、リードアクセスの許可／不許可、実行の許可／不許可を示す識別子によって、保護設定レジスタ１１１〜１１ｎの設定内容が有効であるか否かを定めても良い。この場合は、ライトアクセス、リードアクセス及び実行を共に不許可に設定することが、保護設定レジスタ１１１〜１１ｎの設定内容を無効状態に設定することに相当する。
【００６０】
また、上述した発明の実施の形態１乃至４では、保護設定レジスタ１１１〜１１ｎのそれぞれが、領域指定部１１１Ａ〜１１ｎＡ、及び有効ビット格納部１１１Ｂ〜１１ｎＢを備えることとした。しかしながら、メモリ保護情報を格納する領域と、当該保持後情報の有効性を規定する情報を格納する領域とは、物理的に独立した記憶装置に格納しても良い。
【００６１】
また、上述した発明の実施の形態１乃至４において、リセット装置１６、３６又は４６の制御対象である保護設定レジスタ１１１〜１１ｎによってアクセス制御を行うメモリ空間は、メモリ１５の全てに対応するメモリ空間に限られない。例えば、システムプログラムの格納領域など、アプリケーションプログラムによるアクセスを一律に禁止する領域をメモリ１５に規定する場合には、このような一律に禁止される領域を除外した領域を、保護設定レジスタ１１１〜１１ｎによるアクセス制御の対象とすれば良い。
【００６２】
また、上述した発明の実施の形態１乃至４において、メモリ１５は、マイクロコンピュータ１乃至４の外部に設けられていても良い。また、メモリアクセス制御装置１２にメモリコントローラ１３を介してメモリ１５が接続された構成は一例である。例えば、ＤＭＡ転送を行う場合には、メモリアクセス制御装置１２とメモリ１６は、ＤＭＡ転送を制御するＤＭＡコントローラを介して接続されても良い。
【００６３】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００６４】
【図１】発明の実施の形態１にかかるマイクロコンピュータの構成図である。
【図２】メモリマップの具体例を示す図である。
【図３】保護設定レジスタ群の設定例を示す図である。
【図４】発明の実施の形態１にかかるマイクロコンピュータが行うメモリ保護情報の更新処理を示すフローチャートである。
【図５】発明の実施の形態２にかかるマイクロコンピュータの構成図である。
【図６】発明の実施の形態２にかかるマイクロコンピュータが行うメモリ保護情報の更新処理を示すフローチャートである。
【図７】発明の実施の形態３にかかるマイクロコンピュータの構成図である。
【図８】発明の実施の形態３にかかるマイクロコンピュータが行うメモリ保護情報の更新処理を示すフローチャートである。
【図９】発明の実施の形態４にかかるマイクロコンピュータの構成図である。
【符号の説明】
【００６５】
１、２、３、４  マイクロコンピュータ
１０、２０、３０  ＣＰＵ（Central Processing Unit）
１１  保護設定レジスタ群
１１１〜１１ｎ  保護設定レジスタ
１１１Ａ〜１１ｎＡ  領域指定部
１１１Ｂ〜１１ｎＢ  有効ビット格納部
１２  メモリアクセス制御装置
１３  メモリコントローラ
１４  メモリバス
１５  メモリ
１６、３６、４６  リセット装置
２１  特権ビット格納部
２２  書込み禁止装置
３１  書込み禁止ビット格納部
３２  書込み禁止装置
【図１】
0004818793.tif 000002
【図２】
0004818793.tif 000003
【図３】
0004818793.tif 000004
【図４】
0004818793.tif 000005
【図５】
0004818793.tif 000006
【図６】
0004818793.tif 000007
【図７】
0004818793.tif 000008
【図８】
0004818793.tif 000009
【図９】
0004818793.tif 000010